Was sind die Unterschiede zwischen "Epoche", "Batch" und "Minibatch"?

36

Soweit ich weiß, verwendet jemand bei der Übernahme von Stochastic Gradient Descent als Lernalgorithmus 'epoch' für den vollständigen Datensatz und 'batch' für Daten, die in einem einzelnen Aktualisierungsschritt verwendet werden, während ein anderer 'batch' bzw. 'minibatch' verwendet und Die anderen verwenden "Epoche" und "Minibatch". Dies bringt viel Verwirrung bei der Diskussion.

Also, was ist das richtige Sprichwort? Oder sind es nur Dialekte, die alle akzeptabel sind?

Tim
quelle

Antworten:

24
  • Epoche bedeutet einen Durchgang über den gesamten Trainingssatz
  • Batch bedeutet, dass Sie alle Ihre Daten verwenden, um den Farbverlauf während einer Iteration zu berechnen.
  • Mini-Batch bedeutet, dass Sie nur eine Teilmenge aller Ihrer Daten während einer Iteration erfassen.
Dies
quelle
15

Eine Epoche bedeutet normalerweise, dass Ihr Algorithmus jede Trainingsinstanz einmal sieht . Angenommen, Sie haben Trainingsinstanzen:n

Wenn Sie eine Stapelaktualisierung ausführen, muss Ihr Algorithmus für jede Parameteraktualisierung jede der Trainingsinstanzen genau einmal anzeigen, dh für jede Epoche werden Ihre Parameter einmal aktualisiert.n

Wenn Sie ein Mini-Batch-Update mit Batch-Größe = ausführen , erfordert jedes Parameter-Update, dass Ihr Algorithmus von Trainingsinstanzen anzeigt, dh, jede Epoche, in der Ihre Parameter aktualisiert werden, wird etwa Mal aktualisiert .b n n / bbbnn/b

Wenn Sie SGD-Aktualisierung ausführen, erfordert jede Parameteraktualisierung, dass Ihr Algorithmus eine von Trainingsinstanzen sieht , dh, jede Epoche, in der Ihre Parameter etwa mal aktualisiert werden .nnn

user1036719
quelle
3

"Epoche" bedeutet normalerweise, dass ein Lernalgorithmus dem gesamten Satz von Trainingsdaten ausgesetzt wird. Dies ist nicht immer sinnvoll, da wir manchmal Daten generieren.

"Batch" und "Minibatch" können verwirrend sein.

Trainingsbeispiele müssen manchmal "gestapelt" werden, da nicht unbedingt alle Daten gleichzeitig dem Algorithmus ausgesetzt werden können (in der Regel aufgrund von Speicherbeschränkungen).

Im Kontext von SGD bedeutet "Minibatch", dass der Gradient über die gesamte Charge berechnet wird, bevor die Gewichte aktualisiert werden. Wenn Sie kein "Minibatch" verwenden, aktualisiert jedes Trainingsbeispiel in einem "Batch" die Parameter des Lernalgorithmus unabhängig.

Eisenrad
quelle
Bist du dir bei dem letzten Absatz sicher? Ich dachte, dass "Batched" SGD alle Daten in einer Epoche verwendet, um langsam einen sehr präzisen Gradienten zu berechnen. Ihr letzter Satz klingt wie eine Mini-Charge der Größe 1.
Matt Krause
Willkommen auch bei Cross Validated!
Matt Krause
Ja, das Original-SGD hat eine Mini-Charge der Größe 1. Ich denke, es hängt letztendlich von der Interpretation des Software-Autors ab. Sehr oft Batch == Mini-Batch, ohne dass in der Dokumentation jemals "Mini-Batch" erwähnt wird.
Eisenrad
Ähm, ich denke, ich habe gemeint, dass Batched GD alle Daten verwendet. Ich benutze normalerweise Batch und Minibatch, aber "Mini-Batch", wenn ich darauf hinweisen möchte, dass es wirklich klein ist ...
Matt Krause