Was ist der Unterschied zwischen Gradient Descent und Stochastic Gradient Descent?


Antworten:


26

Zur schnellen und einfachen Erklärung:

Sowohl beim Gradientenabstieg (GD) als auch beim stochastischen Gradientenabstieg (SGD) aktualisieren Sie einen Parametersatz iterativ, um eine Fehlerfunktion zu minimieren.

Während Sie sich in GD befinden, müssen Sie ALLE Beispiele in Ihrem Trainingssatz durchgehen, um ein einzelnes Update für einen Parameter in einer bestimmten Iteration durchzuführen. In SGD verwenden Sie dagegen NUR EIN oder EIN TEILSATZ von Trainingsbeispielen aus Ihrem Trainingssatz Aktualisieren eines Parameters in einer bestimmten Iteration. Wenn Sie SUBSET verwenden, heißt es Minibatch Stochastic gradient Descent.

Wenn also die Anzahl der Trainingsstichproben groß oder sogar sehr groß ist, kann die Verwendung des Gradientenabfalls zu lange dauern, da Sie bei jeder Iteration beim Aktualisieren der Parameterwerte den gesamten Trainingssatz durchlaufen. Auf der anderen Seite ist die Verwendung von SGD schneller, da Sie nur ein Trainingsmuster verwenden und es beginnt, sich ab dem ersten Muster zu verbessern.

SGD konvergiert oft viel schneller als GD, aber die Fehlerfunktion ist nicht so gut minimiert wie im Fall von GD. In den meisten Fällen reicht die genaue Annäherung, die Sie in SGD für die Parameterwerte erhalten, aus, weil sie die optimalen Werte erreichen und dort weiter oszillieren.

Wenn Sie ein Beispiel für einen praktischen Fall benötigen, lesen Sie hier die Notizen von Andrew NG, in denen er Ihnen die Schritte in beiden Fällen deutlich macht. cs229-notes

Quelle: Quora-Thread


danke, kurz so? Es gibt drei Varianten des Gradientenabfalls: Batch, Stochastic und Minibatch: Batch aktualisiert die Gewichte, nachdem alle Trainingsmuster ausgewertet wurden. Stochastisch, Gewichte werden nach jedem Trainingsmuster aktualisiert. Der Minibatch vereint das Beste aus beiden Welten. Wir verwenden nicht den gesamten Datensatz, aber nicht den einzelnen Datenpunkt. Wir verwenden einen zufällig ausgewählten Datensatz aus unserem Datensatz. Auf diese Weise reduzieren wir den Rechenaufwand und erzielen eine geringere Varianz als die stochastische Version.
Engin

5

Bei Gradient Descent oder Batch Gradient Descent verwenden wir die gesamten Trainingsdaten pro Epoche, während wir bei Stochastic Gradient Descent nur ein einzelnes Trainingsbeispiel pro Epoche verwenden und Mini-Batch Gradient Descent zwischen diesen beiden Extremen liegt, in denen wir verwenden können Ein Mini-Batch (kleiner Teil) der Trainingsdaten pro Epoche. Die Daumenregel für die Auswahl der Größe des Mini-Batch ist eine Potenz von 2 wie 32, 64, 128 usw.
Weitere Details: cs231n Vorlesungsnotizen


danke, kurz so? Es gibt drei Varianten des Gradientenabfalls: Batch, Stochastic und Minibatch: Batch aktualisiert die Gewichte, nachdem alle Trainingsmuster ausgewertet wurden. Stochastisch, Gewichte werden nach jedem Trainingsmuster aktualisiert. Der Minibatch vereint das Beste aus beiden Welten. Wir verwenden nicht den gesamten Datensatz, aber nicht den einzelnen Datenpunkt. Wir verwenden einen zufällig ausgewählten Datensatz aus unserem Datensatz. Auf diese Weise reduzieren wir den Rechenaufwand und erzielen eine geringere Varianz als die stochastische Version.
Engin

4

Die Einbeziehung des Wortes stochastisch bedeutet einfach, dass die Zufallsstichproben aus den Trainingsdaten in jedem Lauf ausgewählt werden, um die Parameter während der Optimierung im Rahmen des Gradientenabfalls zu aktualisieren .

Dies berechnet nicht nur Fehler und aktualisiert Gewichte in schnelleren Iterationen (da wir nur eine kleine Auswahl von Samples auf einmal verarbeiten), es hilft auch oft, schneller zu einem Optimum zu gelangen. Werfen Sie einen Blick auf den Antworten hier , um weitere Informationen darüber, warum Vorteile für die Ausbildung bietet stochastisches minibatches verwenden.

Ein Nachteil ist vielleicht, dass der Weg zum Optimum (vorausgesetzt, es ist immer dasselbe Optimum) viel lauter sein kann. Anstelle einer schönen glatten Verlustkurve, die zeigt, wie der Fehler bei jeder Iteration des Gradientenabfalls abnimmt, wird möglicherweise Folgendes angezeigt:

Rauschverlustkurve

Wir sehen deutlich, dass der Verlust mit der Zeit abnimmt, es gibt jedoch große Schwankungen von Epoche zu Epoche (Trainingsreihe zu Trainingsreihe), sodass die Kurve verrauscht ist.

Dies liegt einfach daran, dass wir den mittleren Fehler über unsere stochastisch / zufällig ausgewählte Teilmenge aus dem gesamten Datensatz in jeder Iteration berechnen. Einige Samples erzeugen einen hohen Fehler, andere einen niedrigen. Der Durchschnitt kann also variieren, abhängig davon, welche Stichproben wir zufällig für eine Iteration des Gradientenabfalls verwendet haben.


danke, kurz so? Es gibt drei Varianten des Gradientenabfalls: Batch, Stochastic und Minibatch: Batch aktualisiert die Gewichte, nachdem alle Trainingsmuster ausgewertet wurden. Stochastisch, Gewichte werden nach jedem Trainingsmuster aktualisiert. Der Minibatch vereint das Beste aus beiden Welten. Wir verwenden nicht den gesamten Datensatz, aber nicht den einzelnen Datenpunkt. Wir verwenden einen zufällig ausgewählten Datensatz aus unserem Datensatz. Auf diese Weise reduzieren wir den Rechenaufwand und erzielen eine geringere Varianz als die stochastische Version.
Engin

Nn=1

tks, das ist klar!
datdinhquoc
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.