Quelles sont les différences entre 'epoch', 'batch' et 'minibatch'?

38

Autant que je sache, lors de l'adoption de l'algorithme d'apprentissage de Stochastic Gradient Descent, quelqu'un utilise 'epoch' pour l'ensemble de données complet, et 'batch' pour les données utilisées dans une seule étape de mise à jour, tandis qu'une autre utilise respectivement 'batch' et 'minibatch', et les autres utilisent 'epoch' et 'minibatch'. Cela apporte beaucoup de confusion en discutant.

Alors, quel est le dicton correct? Ou ce ne sont que des dialectes qui sont tous acceptables?

Tim
la source

Réponses:

25
  • Epoch signifie un passage sur le set d'entraînement complet
  • Batch signifie que vous utilisez toutes vos données pour calculer le gradient au cours d'une itération.
  • Mini-lot signifie que vous ne prenez qu'un sous-ensemble de toutes vos données au cours d'une itération.
Cette
la source
15

n

n

bbnn/b

nn

utilisateur1036719
la source
4

"Époque" signifie généralement exposer un algorithme d'apprentissage à l'ensemble des données d'apprentissage. Cela n'a pas toujours de sens car nous générons parfois des données.

"Lot" et "Minibatch" peuvent être déroutants.

Les exemples d'apprentissage doivent parfois être «groupés», car toutes les données ne peuvent pas nécessairement être exposées simultanément à l'algorithme (en raison de contraintes de mémoire en général).

Dans le contexte de SGD, "Minibatch" signifie que le gradient est calculé sur l’ensemble du lot avant la mise à jour des poids. Si vous n'utilisez pas de "minibatch", chaque exemple d'apprentissage d'un "lot" met à jour les paramètres de l'algorithme d'apprentissage de manière indépendante.

roue ferreuse
la source
Êtes-vous sûr du dernier paragraphe? Je pensais que "groupé" SGD utilisait toutes les données d'une époque pour calculer lentement un gradient très précis. Votre dernière phrase ressemble à un mini-lot de taille 1.
Matt Krause
Aussi, bienvenue dans Cross Validated!
Matt Krause
Eh oui, le SGD original a un mini-lot de taille 1. Je pense que cela dépend finalement de l'interprétation de l'auteur du logiciel. Très souvent batch == mini-batch, sans documentation mentionnant jamais "mini-batch".
roue ferreuse
Euh, je pense que je voulais dire que GD en lot utilise toutes les données. J'utilise d'habitude batch et minibatch de manière interchangeable, mais "mini-batch" quand je veux signaler que c'est vraiment petit ...
Matt Krause