Réponses:
Dans la terminologie du réseau neuronal:
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 .
L'époque et l' itération décrivent des choses différentes.
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.
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 .
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.
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.
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 .
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.
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.
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.
À 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.
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é).
Je suppose que dans le contexte de la terminologie des réseaux de neurones:
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:
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!
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.
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.
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:
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/
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).