web-dev-qa-db-fra.com

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

Quelle est la différence entre Epoch et itération lors de la formation d'un perceptron multicouche?

362
mohammad

Dans la terminologie du réseau de neurones:

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

Exemple: si vous avez 1000 exemples de formation et que la taille de votre lot est de 500, 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 de neurones


Le terme "lot" est ambigu: certaines personnes l'utilisent pour désigner l'ensemble de la formation et d'autres personnes, pour désigner le 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 préciser que le lot correspond au nombre d'exemples d'apprentissage d'une passe en avant/en arrière, on peut utiliser le terme mini .

530
Franck Dernoncourt

Epoch et itération décrivent des choses différentes.


Époque

Un Epoch décrit le nombre de fois où l'algorithme voit le jeu de données entier. Ainsi, chaque fois que l'algorithme a vu tous les échantillons du jeu de données, une époque est terminée.

Itération

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


Exemple

Un exemple pourrait le rendre plus clair.

Supposons que vous ayez un jeu de données de 10 exemples (ou échantillons). Vous avez une taille de lot de 2 et vous avez indiqué que vous souhaitez que l'algorithme s'exécute sur 3 périodes.

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

127
Khon

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

"Itération" est un terme beaucoup plus général, mais puisque vous en avez parlé avec "Epoch", je suppose que votre source fait référence à la présentation d'un seul cas à un réseau de neurones.

23
Predictor

Vous avez des données d’entraînement que vous mélangez et choisissez dans des mini-lots. Lorsque vous ajustez vos poids et biais en utilisant un mini-lot, vous avez terminé une itération. Une fois que vous avez épuisé vos 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 parcourez-les à nouveau. Ce serait votre deuxième époque.

11
Milad P.

En règle générale, vous divisez votre ensemble de tests en petits lots pour que le réseau puisse en tirer des enseignements, puis vous fassiez suivre l'entraînement, étape par étape, en fonction du nombre de couches, en appliquant une descente par gradient. Toutes ces petites étapes peuvent être appelées itérations.

Un Epoch correspond à l'ensemble de l'entraînement passant par tout le réseau. Il peut être utile de limiter cela, par exemple. lutter contre la suralimentation.

8
Nikana Reklawyks

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 de neurones.

7
Elijah Saounkine

À ma connaissance, lorsque vous devez former un NN, vous avez besoin d’un ensemble de données volumineux comprenant de nombreux éléments de données. lors de la formation de NN, les données sont entrées dans NN une à une, ce qu’on appelle une itération; Lorsque tout le jeu de données est traité, cela s'appelle une époque.

7
36Kr

Je crois que l'itération est équivalente à un lot unique forward + backprop dans un lot SGD. Epoch parcourt une fois l'intégralité du jeu de données (comme quelqu'un l'a mentionné).

6
Andrei Pokrovsky

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

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

Un batch est l'ensemble de données complet. Sa taille correspond au nombre total d’exemples de formation dans l’ensemble de données disponible.

Taille du mini-lot ​​est le nombre d'exemples que l'algorithme d'apprentissage traite en un seul passage (en avant et en arrière).

Un mini-lot ​​est une petite partie du jeu de données donné taille du mini-lot.

Iterations est le nombre de lots de données que l'algorithme a vu (ou simplement le nombre de passages effectués par l'algorithme sur l'ensemble de données).

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

Dans le cas de la descente de gradient par lots, le lot entier est traité à chaque passe d’entraînement. Par conséquent, l’optimiseur de descente de gradient permet une convergence plus douce que la descente de gradient en mode Mini-batch, mais prend plus de temps. La descente en gradient de lots est garantie pour trouver un optimum s’il existe.

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

Batch gradient descent vs Mini-batch gradient descent

Comparison of batch, stochastic and mini-batch gradient descents.

6
nikhilbalwani

Epoch est une itération d'un sous-ensemble d'é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)

Regarde le code. Pour chaque époque, nous générons de manière aléatoire un sous-ensemble d'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.

3
SmallChess