Époque vs itération lors de la formation de réseaux de neurones

Réponses:

574

Dans la terminologie du réseau neuronal:

  • une époque = une passe avant et une passe arrière de tous les exemples de formation
  • taille du lot = le nombre d'exemples de formation dans une passe avant / arrière. Plus la taille du lot est élevée, plus vous aurez besoin d'espace mémoire.
  • nombre d' itérations = nombre de passes, chaque passe utilisant [taille de lot] nombre d'exemples. Pour être clair, une passe = une passe avant + une passe arrière (nous ne comptons pas la passe avant et la passe arrière comme deux passes différentes).

Exemple: si vous avez 1000 exemples d'entraînement et que la taille de votre lot est de 500, alors il faudra 2 itérations pour terminer 1 époque.

FYI: taille du lot de compromis par rapport au nombre d'itérations pour former un réseau neuronal


Le terme "lot" est ambigu: certaines personnes l'utilisent pour désigner l'ensemble complet de la formation, et certaines personnes l'utilisent pour se référer au nombre d'exemples de formation dans une passe avant / arrière (comme je l'ai fait dans cette réponse). Pour éviter cette ambiguïté et indiquer clairement que le lot correspond au nombre d'exemples de formation dans une passe avant / arrière, on peut utiliser le terme mini-lot .

Franck Dernoncourt
la source
37
Je suis confus. Pourquoi vous entraîneriez-vous pour plus d'une époque - sur toutes les données plus d'une fois? Cela ne conduirait-il pas à un sur-ajustement?
Soubriquet
29
Les réseaux de neurones @Soubriquet sont généralement formés à l'aide d'une méthode d'optimisation itérative (la plupart du temps, descente de gradient), qui nécessite souvent d'effectuer plusieurs passes sur l'ensemble d'entraînement pour obtenir de bons résultats.
Franck Dernoncourt du
6
Mais s'il y a beaucoup d'échantillons d'entraînement, disons 1 million de dollars, une seule époque suffirait-elle? Que font généralement les gens si l'ensemble de formation est très vaste? Il suffit de diviser l'ensemble d'entraînement en lots et d'effectuer une seule époque?
pikachuchameleon
5
@pikachuchameleon Cela dépend de la complexité de la tâche: une époque peut en effet suffire dans certains cas.
Franck Dernoncourt
9
@MaxPower - généralement, l'étape est prise après chaque itération , comme l'indique la réponse de Franck Dernoncourt; c'est ce que nous faisons avec les informations de la passe arrière. Dans une descente de gradient en mini-batch avec m itérations par époque, nous mettons à jour les paramètres m fois par époque.
dan mackinlay
142

L'époque et l' itération décrivent des choses différentes.


Époque

Une époque décrit le nombre de fois où l'algorithme voit l' ensemble de données entier . Ainsi, chaque fois que l'algorithme a vu tous les échantillons dans l'ensemble de données, une époque s'est terminée.

Itération

Une itération décrit le nombre de fois qu'un lot de données a traversé l'algorithme. Dans le cas des réseaux de neurones, cela signifie la passe avant et la passe arrière . Ainsi, chaque fois que vous passez un lot de données via le NN, vous terminez une itération .


Exemple

Un exemple pourrait le rendre plus clair.

Supposons que vous ayez un ensemble de données de 10 exemples (ou échantillons). Vous avez une taille de lot de 2 et vous avez spécifié que vous voulez que l'algorithme s'exécute pendant 3 époques.

Par conséquent, à chaque époque, vous disposez de 5 lots (10/2 = 5). Chaque lot passe par l'algorithme, vous avez donc 5 itérations par époque. Puisque vous avez spécifié 3 époques, vous avez un total de 15 itérations (5 * 3 = 15) pour la formation.

Khon
la source
15
Pouvez-vous expliquer si les poids sont mis à jour après chaque époque ou après chaque itération?
Hérité Geek
7
@InheritedGeek les poids sont mis à jour après chaque lot, pas l'époque ou l'itération.
thisisbhavin
2
@bhavindhedhi 1 batch = 1 itération, n'est-ce pas?
Bee
2
@Bee Non, prenez par exemple 10000 échantillons d'apprentissage et 1000 échantillons par lot, puis il faudra 10 itérations pour terminer 1 époque.
thisisbhavin
4
@bhavindhedhi Je pense que ce que Bee demandait, c'est que dans votre exemple de 10000 échantillons au total avec 1000 par lot, vous avez effectivement 10 lots au total, ce qui équivaut à 10 itérations. Je pense que cela a du sens, mais je ne sais pas si c'est une bonne façon de l'interpréter.
Michael Du
24

De nombreux algorithmes d'apprentissage du réseau neuronal impliquent de faire plusieurs présentations de l'ensemble des données au réseau neuronal. Souvent, une seule présentation de l'ensemble de données est appelée «époque». En revanche, certains algorithmes présentent les données au réseau neuronal un seul cas à la fois.

"Itération" est un terme beaucoup plus général, mais puisque vous avez posé des questions à ce sujet avec "époque", je suppose que votre source fait référence à la présentation d'un cas unique à un réseau de neurones.

Predictor
la source
3
génial, pouvez-vous vous référer à une publication où cela est détaillé?
Alex
17

Pour comprendre la différence entre ceux-ci, vous devez comprendre l' algorithme de descente de gradient et ses variantes .

Avant de commencer avec la réponse, je voudrais construire un peu de contexte.

Un lot est l'ensemble de données complet. Sa taille est le nombre total d'exemples de formation dans l'ensemble de données disponible.

La taille d'un mini-lot est le nombre d'exemples que l'algorithme d'apprentissage traite en une seule passe (avant et arrière).

Un mini-lot est une petite partie de l'ensemble de données d'une taille de mini-lot donnée .

Les itérations sont le nombre de lots de données que l'algorithme a vus (ou simplement le nombre de passes que l'algorithme a effectuées sur l'ensemble de données).

Époques est le nombre de fois qu'un algorithme d'apprentissage voit l'ensemble de données complet. Maintenant, cela peut ne pas être égal au nombre d' itérations , car l'ensemble de données peut également être traité en mini-lots, en substance, un seul passage peut traiter uniquement une partie de l'ensemble de données. Dans de tels cas, le nombre d' itérations n'est pas égal au nombre d' époques .

Dans le cas de la descente en gradient de lot, le lot entier est traité à chaque passe d'entraînement. Par conséquent, l'optimiseur de descente de gradient entraîne une convergence plus douce que la descente de gradient en mini-lot, mais cela prend plus de temps. La descente en gradient de lots est garantie de trouver un optimum si elle existe.

La descente de gradient stochastique est un cas particulier de descente de gradient en mini-lot dans lequel la taille du mini-lot est de 1 .

Descente de gradient par lots vs Descente de gradient en mini-lots

Comparaison des descentes de gradient par lots, stochastiques et mini-lots.

nikhilbalwani
la source
12

Vous avez des données d'entraînement que vous mélangez et en choisissez des mini-lots. Lorsque vous ajustez vos poids et vos biais à l'aide d'un mini-lot, vous avez terminé une itération. Une fois que vous n'avez plus de mini-lots, vous avez terminé une époque. Ensuite, vous mélangez à nouveau vos données d'entraînement, sélectionnez à nouveau vos mini-lots et réitérez-les tous. Ce serait votre deuxième époque.

Milad P.
la source
Pourrait-il être lié à la validation croisée?
sk
8

En règle générale, vous diviserez votre ensemble de tests en petits lots pour que le réseau puisse en tirer des enseignements et vous ferez progresser la formation pas à pas à travers votre nombre de couches, en appliquant une descente de gradient jusqu'en bas. Toutes ces petites étapes peuvent être appelées itérations .

Une époque correspond à l'ensemble de la formation passant par le réseau entier une fois. Il peut être utile de limiter cela, par exemple pour lutter contre le sur-ajustement.

Nikana Reklawyks
la source
7

Une époque contient quelques itérations. C'est en fait ce qu'est cette «époque». Définissons «epoch» comme le nombre d'itérations sur l'ensemble de données afin de former le réseau neuronal.

Elijah Saounkine
la source
4
l'époque n'est pas un nombre ... cela pourrait faire avec la reformulation, je pense.
Nikana Reklawyks
Voté parce que c'est faux: une époque est le nombre d'épisodes ou de lots tels que le modèle a vu toutes les données d'entraînement une fois.
JohnAllen
7

À ma connaissance, lorsque vous devez former un NN, vous avez besoin d'un grand ensemble de données impliquant de nombreux éléments de données. lorsque NN est formé, les éléments de données entrent dans NN un par un, c'est-à-dire une itération; Lorsque l'ensemble de données passe, cela s'appelle une époque.

36Kr
la source
6

Je crois que l'itération équivaut à un seul lot avant + backprop en lot SGD. Epoch parcourt l'ensemble de données une fois (comme quelqu'un l'a mentionné).

Andrei Pokrovsky
la source
5

Je suppose que dans le contexte de la terminologie des réseaux de neurones:

  • Époque: Lorsque votre réseau finit par parcourir l'ensemble de la formation (c'est-à-dire une fois pour chaque instance de formation), il termine une époque .

Afin de définir l' itération (aka étapes ), vous devez d'abord connaître la taille du lot :

  • Taille du lot: vous n'aimeriez probablement pas traiter l'intégralité des instances de formation en une seule fois, car elle est inefficace et nécessite beaucoup de mémoire. Donc, ce qui est généralement fait est de diviser les instances de formation en sous-ensembles (c.-à-d. Des lots), d'effectuer une passe sur le sous-ensemble sélectionné (c.-à-d. Un lot), puis d'optimiser le réseau grâce à la rétropropagation. Le nombre d'instances de formation dans un sous-ensemble (c'est-à-dire, batch) est appelé batch_size .

  • Itération: (alias étapes de formation) Vous savez que votre réseau doit parcourir toutes les instances de formation en un seul passage afin de terminer une époque. Mais attendez! lorsque vous divisez vos instances de formation en lots, cela signifie que vous ne pouvez traiter qu'un seul lot (un sous-ensemble d'instances de formation) en une seule passe, alors qu'en est-il des autres lots? C'est là que le terme Itération entre en jeu:

    • Définition: Le nombre de passes avant (le nombre de lots que vous avez créés) que votre réseau doit faire pour terminer une époque (c'est-à-dire parcourir toutes les instances de formation) est appelé Itération .

Par exemple, lorsque vous avez 1000 instances de formation et que vous souhaitez effectuer un traitement par lots avec une taille de 10; vous devez faire 10000/10 = 1000 itérations pour terminer une époque.

J'espère que cela pourrait répondre à votre question!

index_inverti
la source
3

epoch est une itération d'un sous-ensemble des échantillons pour l'apprentissage, par exemple, l'algorithme de descente de gradient en réseau neutre. Une bonne référence est: http://neuralnetworksanddeeplearning.com/chap1.html

Notez que la page a un code pour l'algorithme de descente de gradient qui utilise epoch

def SGD(self, training_data, epochs, mini_batch_size, eta,
        test_data=None):
    """Train the neural network using mini-batch stochastic
    gradient descent.  The "training_data" is a list of tuples
    "(x, y)" representing the training inputs and the desired
    outputs.  The other non-optional parameters are
    self-explanatory.  If "test_data" is provided then the
    network will be evaluated against the test data after each
    epoch, and partial progress printed out.  This is useful for
    tracking progress, but slows things down substantially."""
    if test_data: n_test = len(test_data)
    n = len(training_data)
    for j in xrange(epochs):
        random.shuffle(training_data)
        mini_batches = [
            training_data[k:k+mini_batch_size]
            for k in xrange(0, n, mini_batch_size)]
        for mini_batch in mini_batches:
            self.update_mini_batch(mini_batch, eta)
        if test_data:
            print "Epoch {0}: {1} / {2}".format(
                j, self.evaluate(test_data), n_test)
        else:
            print "Epoch {0} complete".format(j)

Regardez le code. Pour chaque époque, nous générons aléatoirement un sous-ensemble des entrées pour l'algorithme de descente de gradient. Pourquoi epoch est efficace est également expliqué dans la page. S'il vous plaît, jetez un oeil.

Bonjour le monde
la source
1

époque

Un entraînement complet passe sur l'ensemble de données de manière à ce que chaque exemple ait été vu une fois. Ainsi, une époque représente N / itérations de formation de taille de lot , où N est le nombre total d'exemples.

itération

Une seule mise à jour des poids d'un modèle pendant l'entraînement. Une itération consiste à calculer les gradients des paramètres par rapport à la perte sur un seul lot de données.

en bonus:

lot

L'ensemble d'exemples utilisé dans une itération (c'est-à-dire une mise à jour de gradient ) de la formation du modèle .

Voir aussi taille de lot .

source: https://developers.google.com/machine-learning/glossary/

Mathieu Gemard
la source
0

1.Epoch est un cycle complet où le réseau neuronal a vu toutes les données.
2. On aurait pu dire 100 000 images pour former le modèle, mais l'espace mémoire pourrait ne pas être suffisant pour traiter toutes les images à la fois, c'est pourquoi nous avons divisé la formation du modèle sur de plus petits blocs de données appelés lots. Par exemple, la taille des lots est de 100.
3. Nous devons couvrir toutes les images en utilisant plusieurs lots. Nous aurons donc besoin de 1000 itérations pour couvrir toutes les 100 000 images. (100 lots de taille * 1000 itérations)
4. Une fois que le réseau neuronal examine des données entières, il est appelé 1 époque (point 1). On pourrait avoir besoin de plusieurs époques pour former le modèle. (disons 10 époques).

rishi jain
la source