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)1B∑b=0B−1∂L(θ,mb)∂θ
- Batch-Gefälle, B=|x|
- B=1
- B>1B<|x|
Beachten Sie, dass mit 1 die Verlustfunktion keine Zufallsvariable mehr ist und keine stochastische Näherung darstellt.
xm⊂xBmB=|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):RS→RD→RSTB
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
twhile tθt+1t←0<M←θt−ϵ(t)1B∑b=0B−1∂L(θ,mb)∂θ←t+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:
- ϵ
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):N→R
Wenn Sie die Lernrate festlegen möchten, definieren Sie epsilon einfach als konstante Funktion.
- 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:
- Einführung in das gradientenbasierte Lernen
- Praktische Empfehlungen für das gradientenbasierte Training tiefer Architekturen
- Effizientes Mini-Batch-Training zur stochastischen Optimierung