Moyenne annuelle des montants de fonctionnement

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

277
demandé sur kmario23 2011-01-21 00:11:16
la source

9 ответов

dans la terminologie des réseaux neuronaux:

  • un epoch = une passe en avant et un arrière passe de tous exemples destinés à la formation
  • lot size = le nombre d'exemples de formation dans une passe avant/arrière. Plus la taille du lot, plus d'espace vous aurez besoin.
  • nombre de itérations = nombre de passes, chaque passe utilisant le nombre [de taille de lot] d'exemples. Pour être clair, un passage = un passage vers l'avant + un passage vers l'arrière (nous ne comptons pas le passage vers l'avant et le passage vers l'arrière comme deux passages différents).

exemple: si vous avez 1000 exemples de formation, et la taille de votre lot est de 500, alors il faudra 2 itérations pour compléter 1 époque.

FYI: Compromis de la taille des lots 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 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 préciser que le lot correspond au nombre d'exemples de formation dans une passe avant/arrière, on peut utiliser le terme mini-lot .

425
répondu Franck Dernoncourt 2017-05-27 22:06:41
la source

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


Epoch

An epoch 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 a complété.

itération

Un l'itération décrit le nombre de fois qu'un lot de données est passé à travers l'algorithme. Dans le cas des réseaux de neurones, qui signifie le passe avant et à l'envers passer . Ainsi, chaque fois que vous passez un lot de données à travers le NN, vous avez complété une itération .


exemple

Un exemple pourrait le rendre plus clair.

dites que vous avez 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 l'algorithme pour 3 époques.

donc, dans chaque époque, vous avez 5 lots (10/2 = 5). Chaque lot est passé par l'algorithme, donc vous avez 5 itérations par époque. Puisque vous avez spécifié 3 epochs, vous avez un total de 15 itérations (5*3 = 15) pour la formation.

84
répondu Khon 2017-11-15 04:56:01
la source

de nombreux algorithmes de formation de réseaux neuronaux impliquent de multiples présentations de l'ensemble des données au réseau neuronal. Souvent, une seule présentation de l'ensemble des données est considéré comme une "époque". En revanche, certains algorithmes présentent des 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 demandé à ce sujet avec "époque", je suppose que votre source se réfère à la présentation d'un un seul cas sur un réseau neuronal.

17
répondu Predictor 2011-01-21 12:17:09
la source

Une époque contient quelques itérations. C'est effectivement ce que cette 'époque' est. Définissons "époque" comme le nombre d'itérations sur l'ensemble de données afin de former le réseau neuronal.

5
répondu Ilya Saunkin 2011-01-21 00:18:11
la source

typiquement, vous diviserez votre jeu de test en petits lots pour que le réseau puisse en tirer des leçons, et faire en sorte que la formation se déroule étape par étape à travers votre nombre de couches, en appliquant la descente par gradient jusqu'en bas. Toutes ces petites étapes peuvent être appelées itérations .

An epoch correspond à l'ensemble de la formation passant par l'ensemble du réseau une fois. Il peut être utile de limiter cela, par exemple pour lutter contre la surpêche.

5
répondu Nikana Reklawyks 2012-10-27 01:46:14
la source

vous avez des données de formation que vous mélangez et de choisir des mini-lots de celui-ci. Lorsque vous ajustez vos poids et vos biais en utilisant un mini-lot, vous avez complété une itération. Une fois que vous exécutez sur votre mini-lots, vous avez terminé une époque. Ensuite, vous mélangez de nouveau vos données d'entraînement, vous choisissez de nouveau vos mini-lots et vous les répétez tous. Ce serait ta deuxième époque.

5
répondu Milad P. 2016-09-06 09:51:51
la source

je crois que l'itération est équivalente à un lot simple forward+backprop dans le lot SGD. Epoch passe par l'ensemble des données une fois (comme quelqu'un d'autre l'a mentionné).

4
répondu Andrei Pokrovsky 2015-06-16 23:55:20
la source

à ma connaissance, quand vous avez besoin de former une NN, vous avez besoin d'un grand ensemble de données implique de nombreux éléments de données. lorsque NN est formé, les éléments de données vont à NN un par un, c'est ce qu'on appelle une itération; lorsque l'ensemble des données passe par, il est appelé une époque.

3
répondu 36Kr 2012-01-07 02:41:25
la source

epoch est une itération d'un sous-ensemble des échantillons pour la formation, par exemple, l'algorithme de pente de descente 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 gradient descent 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 au hasard un sous-ensemble des entrées pour la descente par gradient algorithme. Pourquoi époque est efficace est également expliqué dans la page. Veuillez prendre un coup d'oeil.

2
répondu SmallChess 2015-11-20 16:18:15
la source