Wie groß sollte die Chargengröße für den stochastischen Gradientenabstieg sein?

Antworten:

72

Die „Stichprobengröße“ Sie sprechen als bezeichnet wird Losgröße , . Der Parameter für die Batchgröße ist nur einer der Hyperparameter, die Sie beim Trainieren eines neuronalen Netzwerks mit Mini-Batch Stochastic Gradient Descent (SGD) optimieren. Er ist datenabhängig. Die grundlegendste Methode der Hyperparametersuche besteht darin, eine Rastersuche über die Lernrate und die Stapelgröße durchzuführen, um ein Paar zu finden, das das Netzwerk konvergiert.B

Um zu verstehen, wie groß die Charge sein sollte, ist es wichtig, die Beziehung zwischen Batch-Gradientenabfall, Online-SGD und Mini-Batch-SGD zu kennen. Hier ist die allgemeine Formel für den Schritt zur Gewichtsaktualisierung bei SGD im Mini-Batch, bei dem es sich um eine Verallgemeinerung aller drei Typen handelt. [ 2 ]

θt+1θtϵ(t)1Bb=0B1L(θ,mb)θ
  1. Batch-Gefälle, B=|x|
  2. B=1
  3. B>1B<|x|

Beachten Sie, dass mit 1 die Verlustfunktion keine Zufallsvariable mehr ist und keine stochastische Näherung darstellt.

xmxBmB=|m|

θxmE[LSGD(θ,m)]=L(θ,x)

Jedes Mal, wenn wir eine Probe entnehmen und unsere Gewichte aktualisieren, spricht man von einer Mini-Charge . Jedes Mal, wenn wir den gesamten Datensatz durchlaufen, wird dies als Epoche bezeichnet .

x:RDθ0:RSL(θ,x):RSRDRSTB

C=T/B

Der Einfachheit halber können wir davon ausgehen, dass T gleichmäßig durch B teilbar ist. Wenn dies jedoch nicht der Fall ist, wie dies häufig nicht der Fall ist, sollte jedem Minibatch in Abhängigkeit von seiner Größe das richtige Gewicht zugewiesen werden.

M

t0while t<Mθt+1θtϵ(t)1Bb=0B1L(θ,mb)θtt+1

Hinweis: In der Praxis lesen wir diese Trainingsbeispieldaten aus dem Speicher. Aufgrund von Cache-Pre-Fetching und anderen von Ihrem Computer ausgeführten Speicher-Tricks wird Ihr Algorithmus schneller ausgeführt, wenn die Speicherzugriffe zusammengeführt werden , dh wenn Sie den Speicher lesen in Ordnung und nicht zufällig herumspringen. Daher mischen die meisten SGD-Implementierungen den Datensatz und laden die Beispiele in der Reihenfolge, in der sie gelesen werden, in den Speicher.

Die Hauptparameter für die oben beschriebene Vanille-SGD (keine Dynamik) sind:

  1. ϵ

Ich stelle mir Epsilon gerne als eine Funktion von der Zählung der Epochen bis zur Lernrate vor. Diese Funktion wird als Lernratenplan bezeichnet .

ϵ(t):NR

Wenn Sie die Lernrate festlegen möchten, definieren Sie epsilon einfach als konstante Funktion.

  1. Batch-Größe

Die Stapelgröße bestimmt, wie viele Beispiele Sie sich ansehen, bevor Sie eine Gewichtsaktualisierung durchführen. Je niedriger es ist, desto lauter wird das Trainingssignal. Je höher es ist, desto länger dauert die Berechnung des Gradienten für jeden Schritt.

Zitate & Literaturhinweise:

  1. Einführung in das gradientenbasierte Lernen
  2. Praktische Empfehlungen für das gradientenbasierte Training tiefer Architekturen
  3. Effizientes Mini-Batch-Training zur stochastischen Optimierung
Sabalaba
quelle
1
For simplicity we can assume that D is evenly divisible by B. Meinen Sie nicht, dass T durch B gleichmäßig teilbar sein soll?
Antoine
4
und um die Frage des OP tatsächlich zu beantworten, können Sie hinzufügen B is typically chosen between 1 and a few hundreds, e.g. B = 32 is a good default value, with values above 10 taking advantage of the speed-up of matrix-matrix products over matrix-vector products.(aus Bengios Arbeit von 2012)
Antoine
@ Sabalaba Schöne Antwort. Aber ist es nicht so, dass wir in der folgenden Gleichung "Ein iterativer Algorithmus für SGD mit M Epochen" das Gewicht aktualisieren, nachdem wir jede Mini-Charge durchlaufen haben? Mit anderen Worten, sollte es keine weitere Schleife (über die C-Mini-Chargen) innerhalb der Schleife über die Epoche geben, dh während t <M
Kaushik Acharya,
2
In der Statistik besteht eine Stichprobe aus mehreren Beobachtungen. Die Stichprobengröße wird also von den Statistikern korrekt interpretiert. In der Informatik (insbesondere beim maschinellen Lernen) ist eine Stichprobe eine einzelne Beobachtung und eine Charge eine Sammlung von Stichproben. Es könnte ein bisschen verwirrend sein. Eine Stichprobe für Statistiker ist eine Charge für Datenwissenschaftler;) Quelle: en.wikipedia.org/wiki/Sample_size_determination
Oleg Melnikov
nm