Ich verstehe, dass der stochastische Gradientenabstieg verwendet werden kann, um ein neuronales Netzwerk mithilfe von Backpropagation zu optimieren, indem jede Iteration mit einer anderen Stichprobe des Trainingsdatensatzes aktualisiert wird. Wie groß soll die Losgröße sein?
49
Antworten:
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 ]
Beachten Sie, dass mit 1 die Verlustfunktion keine Zufallsvariable mehr ist und keine stochastische Näherung darstellt.
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 .
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.
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 .
Wenn Sie die Lernrate festlegen möchten, definieren Sie epsilon einfach als konstante Funktion.
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:
quelle
For simplicity we can assume that D is evenly divisible by B
. Meinen Sie nicht, dass T durch B gleichmäßig teilbar sein soll?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)