Der stochastische Gradientenabstieg (SGD) ist ein Optimierungsalgorithmus, der häufig verwendet wird, um die Leistung von Modellen für maschinelles Lernen zu verbessern. Er ist eine Variante des traditionellen Gradientenabstiegs-Algorithmus mit einer wichtigen Änderung: Anstatt sich bei der Berechnung des Gradienten bei jedem Schritt auf den gesamten Datensatz zu verlassen, verwendet SGD jeweils eine einzelne Datenprobe.
Der Gradientenabstieg (GD) ist ein Optimierungsalgorithmus, der eine Zielfunktion iterativ minimiert. Im Zusammenhang mit dem maschinellen Lernen (ML) ist der Gradientenabstieg von grundlegender Bedeutung, um die Leistung von überwachten Lernmodellen während ihrer Trainingsphase zu verbessern. Modelle für maschinelles Lernen sind. wie neuronale Netze, komplex, nicht linear und hochdimensional. Daher gibt es für solche Modelle keine normale Gleichung, die die optimalen Gewichtungen berechnen kann, anders als bei der linearen Regression. Stattdessen können u. a. Näherungsmethoden wie die Varianten des Gradientenabstiegs, die Newton-Methoden und die Erwartungsmaximierung verwendet werden.
Jedes Modell hat eine Verlustfunktion, manchmal auch Kostenfunktion genannt. Diese Funktion misst, wie weit die Vorhersagen eines Modells von den wahren Datenpunkten entfernt sind. Dies ist als Maßstab dafür zu betrachten, wie „falsch“ die Vorhersagen des Modells sind. Beispielsweise dient der mittlere quadratische Fehler häufig als Verlustfunktion bei Regressionsproblemen. Die Modelltrainingsphase ist darauf ausgelegt, die Parameterwerte zu finden, die diesen Verlust minimieren. Der Gradientenabstieg ist aus diesem Grund oft die Optimierungstechnik, die im Training verwendet wird. Der Algorithmus berechnet den Gradienten oder die Steigung des Verlusts in Bezug auf die Parameter des Modells. Mit diesem Gradienten wird dann ein Schritt in die entgegengesetzte Richtung gemacht, um den Verlust zu verringern. Die Lernrate (auch als Schrittgröße oder Alpha bezeichnet) ist die Größe der Schritte und sie bleibt für alle Modellparameter unverändert. Dieser Vorgang wiederholt sich, bis das Modell eine Konvergenz in der Nähe eines Minimums erreicht.
Die Konvergenz findet idealerweise auf dem globalen Minimum statt. In der folgenden Visualisierung sehen Sie, dass der Verlustwert an einem lokalen Minimum niedriger ist als in der unmittelbaren Umgebung, aber nicht unbedingt der niedrigste Wert insgesamt. Das globale Minimum ist der absolut niedrigste Wert der Verlustfunktion in ihrem gesamten Bereich und stellt die bestmögliche Lösung für das Problem dar.
Wenn die Lernrate nicht klein genug ist, wird der Algorithmus oft bei einem lokalen Minimum konvergieren. Ein gut gewählter Zinssatz ist unerlässlich, um die Verlustfunktion zu minimieren und eine Konvergenz auf einem globalen Minimum zu erreichen.
Diese Visualisierung zeigt die Auswirkung der Lernrate auf die Konvergenz. Eine kleine Lernrate führt zu einer langsamen, aber stabilen Konvergenz (links), während eine hohe Lernrate zu Überschreitungen und Instabilität führen kann (rechts).
Das Hauptunterscheidungsmerkmal zwischen dem traditionellen Gradientenabstieg und dem stochastischen Gradientenabstieg besteht darin, dass SGD die Modellgewichtungen anhand jeweils eines einzelnen Trainingsbeispiels aktualisiert. Das Beispiel wird bei jeder Iteration nach dem Zufallsprinzip ausgewählt.1 Beim Gradientenabstieg wird der gesamte Datensatz verwendet, um den Gradienten vor jeder Parameteraktualisierung zu berechnen. Dieser Unterschied in der Datennutzung macht SGD viel kostengünstiger und einfacher für große Datensätze zu skalieren. Alternativ ist das Konvergenzverhalten von SGD stärker verrauscht als das Rauschen von GD, da der eine Beispieldatenpunkt möglicherweise keine gute Repräsentation des Datensatzes ist. Diese Fehlinterpretation führt zu einer Aktualisierung der Punkte in eine leicht „falsche“ Richtung. Diese Zufälligkeit macht SGD jedoch schneller und manchmal besser für nichtkonvexe Optimierungsprobleme, weil es flachen lokalen Minima oder Sattelpunkten entgehen kann.
Genau genommen wurde SGD ursprünglich definiert, um Parameter zu aktualisieren, indem jeweils nur ein Trainingsmuster verwendet wurde. Im modernen Sprachgebrauch wird der Begriff „SGD“ allgemein für „Minibatch-Gradientenabstieg“ verwendet, eine Variante des Gradientenabstiegs, bei der jeweils kleine Mengen an Trainingsdaten verwendet werden. Der größte Vorteil bei der Verwendung von Datenteilmengen anstelle einer einzelnen Stichprobe ist ein geringerer Rauschpegel, da der Gradient dem Durchschnitt der Verluste des Minibatchs entspricht. Aus diesem Grund ist der MiniBatch-Gradientenabstieg die Standardeinstellung beim Deep Learning. Im Gegensatz dazu wird eine strenge SGD in der Praxis nur selten angewendet. Diese Begriffe werden sogar von den meisten Bibliotheken für maschinelles Lernen wie PyTorch und TensorFlow zusammengeführt. Optimierer werden oft als „SGD“ bezeichnet, obwohl sie in der Regel Minibatches verwenden.
Die folgende Abbildung veranschaulicht deutlicher, wie die Vergrößerung der Stichprobengröße der Trainingsdaten Oszillationen und „Rauschen“ reduziert.
Es gibt mehrere andere Varianten von GD, die auf dem grundlegenden Gradientenabstieg aufbauen, indem sie Mechanismen zur Verbesserung von Geschwindigkeit, Stabilität und Konvergenz hinzufügen.
Durch die Akkumulation von Momentum in Dimensionen mit konsistenten Gradienten und die Dämpfung von Aktualisierungen in Dimensionen mit veränderlichen Gradienten trägt das Momentum dazu bei, dass SGD schneller und mit weniger Oszillationen konvergiert.2
Methoden mit adaptiver Lernrate wie AdaGrad und RMSProp sind insofern einzigartig, als dass sie die Lernrate für jeden Parameter einzeln anpassen. Dieser Ansatz steht im Gegensatz zu SGD-Methoden, die eine feste Lernrate für alle Parameter verwenden.
AdaGrad (adaptiver Gradientenalgorithmus): Passt die Lernrate für jeden Parameter basierend auf seinen vorherigen Gradienten an. Funktionen, die seltener vorkommen, erhalten höhere Lernraten, und häufige Funktionen erhalten niedrigere Raten. Dieser Ansatz bedeutet, dass seltene Funktionen schneller erlernt werden als bei SGD. Dank dieser adaptiven Lernrate eignet sie sich hervorragend für die Verarbeitung natürlicher Sprache (NLP) und Empfehlungssysteme mit geringer Datendichte, bei denen es eine große Diskrepanz in der Funktionshäufigkeit gibt.2
RMSProp (Root Mean Square Propagation): Eine weitere Technik zur Optimierung der adaptiven Lernrate, bei der die Lernrate für jeden Parameter mithilfe eines gleitenden Durchschnitts der aktuellen quadratischen Gradienten skaliert wird. Vergangenes Wissen über den Gradienten wird verworfen und nur das aktuelle Wissen über den Gradienten bleibt erhalten.4 Die Lernrate wird für Parameter mit kleinen Gradienten größer und kleiner für solche mit großen Gradienten. Diese Methode beseitigt das Problem der abnehmenden Lernrate bei AdaGrad. RMSProp hilft dabei, das Training im Deep Learning stabil zu halten, insbesondere für Modelle wie rekurrente neuronale Netze, und es funktioniert gut bei Problemen, bei denen sich das Ziel ständig ändert, wie z. B. beim verstärkenden Lernen.
SGD und andere GD-Varianten sind nützlich, wenn die Trainingszeit der limitierende Faktor ist.5
| Variante | Daten, die pro Schritt verwendet werden | Hauptmerkmal | Häufige Verwendung |
|---|---|---|---|
| GD | Alle Daten | Stabil, aber langsam | Kleine Datensätze |
| SGD | 1 Probe für klassische SGD | Laut, aber schnell | Online-Lernen |
| Mini-Batch GD | Wenige Proben | Ausgewogen und skalierbar | Deep Learning |
| Dynamik | Batch/Mini-Batch | Beschleunigt in die richtige Richtung | Neuronale Netze |
| NAG | Batch/Mini-Batch | Vorausschauendes Momentum | Schnellere Konvergenz |
| AdaGrad | Mini-Batch | Adaptive Lernraten | Spärliche Daten |
| RMSProps | Mini-Batch | Behebt den AdaGrad-Verfall | RNNs, tiefe Netze |
| Adam | Mini-Batch | Momentum + RMSProp | Standardauswahl heute |
Das Ziel von SGD ist es, Parameter zu finden, welche die Vorhersagen unseres Modells so nahe wie möglich an den wahren Werten vornehmen . Mit anderen Worten: Wir wollen die Verlustfunktion minimieren, .
Im Falle der linearen Regression sind diese Parameter (Gewichtung) und (Verzerrung). In diesem Fall ist also Minimieren das Gleiche wie Minimieren .
Eine häufig verwendete Analogie beim Erklären des Gradientenabstiegs ist, dass GD wie das Bergabgehen auf einem Berg ist, bis man ein Tal erreicht (der minimale Verlust). Stellen Sie sich den Gradienten der Verlustfunktion vor, der bergauf zeigt, und um bergab zu gehen, müssen wir den umgekehrten Weg gehen.
Die allgemeine Aktualisierungsregel für einen Parameter ist:
Wo ist die Lernrate und wo der Gradient des Verlusts in Bezug auf .
SGD verwendet nur eine einzige, zufällig ausgewählte Stichprobe, um den Gradienten anzunähern:
Hinweis: Kleinschreibung stellt den Verlust eines einzelnen Trainingsbeispiels dar. Großschreibung hingegen ist die Gesamtverlustfunktion (der Durchschnitt aller Einzelverluste im Datensatz). Diesen globalen Fehler versuchen wir im Training wirklich zu minimieren.
Lassen Sie uns das Beispiel der linearen Regression mit SGD noch durchgehen.
Für ein Beispiel lautet die Vorhersage:
Der lokale Verlust ist der quadratische Fehler für eine Stichprobe:
Während der Backpropagation werden die Parameter des Modells nun mithilfe der Kettenregel aktualisiert, die die Gradienten der Verlustfunktion in Bezug auf jeden Parameter berechnet.5 Die Gradienten (Ableitungen) sind:
Mit SGD aktualisieren wir jeden dieser Parameter und mithilfe der folgenden Regeln:
Anstatt einen starken durchschnittlichen Gradienten über den gesamten Datensatz zu berechnen, verwendet SGD eine leichte Zufallsschätzung.
Bei der Arbeit mit Frameworks für maschinelles Lernen gibt es integrierte SGD-Optimierungsklassen, die man verwenden kann. Zum Beispiel,
Lassen Sie uns zu Lernzwecken eine einfache Python-Implementierung von SGD von Grund auf durchgehen.
Wir wiederholen es noch einmal: Unser Ziel ist es, die besten Parameter (Modellgewichtungen) zu finden, welche die Verlustfunktion minimieren (ein Maß dafür, wie falsch unsere Vorhersagen sind). Wir aktualisieren jeweils eine Stichprobe oder eine sehr kleine Batch-Größe.
Zu Beginn können wir die Parameterwerte (Gewichtungen) zufällig initialisieren. Als Nächstes können wir einen zufälligen Datenpunkt auswählen . Von dort aus berechnen wir die Vorhersage und den Fehler. Für diese einfache Demonstration versuchen wir, eine einfache Linie anzupassen: . Der nächste Schritt in diesem Prozess ist die Backpropagation, bei der die Gradienten der Verlustfunktion in Bezug auf die Parameter berechnet werden. Diese Gradienten (Ableitungen) werden dann verwendet, um die Parameter während des SGD-Optimierungsprozesses zu aktualisieren. Da der Gradient auf die Zunahmerichtung der Verlustfunktion zeigt, subtrahiert SGD jeden Gradienten von seinem jeweiligen aktuellen Parameterwert. Wir können uns dies so vorstellen, dass wir uns in die entgegengesetzte Richtung des Gradienten bewegen, um die Verlustfunktion zu verringern. Daher der „Abstieg“ beim stochastischen Gradientenabstieg. Wir wiederholen diese Schritte, bis eine feste Anzahl von Epochen erreicht ist oder bis der Verlust unter der Toleranz liegt. Letzteres würde bedeuten, dass sich der Verlust kaum verändert und wir die Zielfunktion nicht mehr verbessern. Mit anderen Worten: Wir hören auf, sobald der Algorithmus konvergiert.
SGD ist die gängigste Optimierungsmethode für das Training tiefer neuronaler Netze. Beim Deep Learning, einem Teilbereich des maschinellen Lernens innerhalb des weiter gefassten Bereichs der Data Science, besteht das Ziel darin, dass Computer die komplexe Entscheidungsfindung des menschlichen Gehirns simulieren. Traditionelle ML-Modelle verwenden einfache neuronale Netze, die aus einer oder zwei Schichten bestehen. Deep-Learning-Modelle hingegen verwenden drei oder mehr Schichten. In der Regel sind Hunderte oder Tausende von Schichten erforderlich, um die Modelle zu trainieren. Da sich SGD für große Trainingssätze leicht skalieren lässt, ist es häufig der bevorzugte Ansatz für das Training von neuronalen Netzen. Weitere Anwendungsgebiete des SGD-Trainings sind Ridge-Regression, regularisierte logistische Regression und die Optimierung der Hinge-Verlustfunktion, die in Support-Vektor-Maschinen (SVM) mit einem linearen Kernel verwendet wird.
SGD ist eine Variante von GD, welche die Verlustfunktion eines maschinellen Lernmodells minimiert, indem jeweils eine einzelne Datenprobe verwendet wird. Dieser Ansatz unterscheidet sich von GD, das bei jedem Schritt auf den gesamten Datensatz angewiesen ist, um den Gradienten zu berechnen. Es gibt mehrere andere GD-Varianten, die als momentumbasierte oder adaptive Lernmethoden eingeteilt werden können. Der Momentum-Gradientenabstieg und der beschleunigte Nesterov-Gradient sind Beispiele für ersteres. Diese Methoden nutzen das akkumulierte Momentum in Dimensionen mit konsistenten Gradienten und gedämpften Aktualisierungen in Dimensionen mit wechselnden Gradienten. Dies trägt dazu bei, dass SGD schneller und mit weniger Oszillation konvergiert. Adaptive Lernratenmethoden wie AdaGrad und RMSProp passen die Lernrate für jeden Parameter individuell an, im Gegensatz zu traditionellem SGD, das eine feste Lernrate verwendet. Darüber hinaus bieten hybride Methoden wie Adam eine leistungsstarke Alternative, indem sie die Stärken von momentumbasiertem GD und RMSProp kombinieren.
Trainieren, validieren, optimieren und implementieren Sie generative KI, Foundation Models und maschinelle Lernfunktionen mit IBM watsonx.ai, einem Studio der nächsten Generation für AI Builder in Unternehmen. Erstellen Sie KI-Anwendungen mit einem Bruchteil der Zeit und Daten.
Setzen Sie KI in Ihrem Unternehmen ein – mit branchenführendem Fachwissen im Bereich KI und dem Lösungsportfolio von IBM an Ihrer Seite.
Erfinden Sie kritische Workflows und Abläufe neu, indem Sie KI einsetzen, um Erfahrungen, Entscheidungsfindung in Echtzeit und den geschäftlichen Nutzen zu maximieren.
1 Bottou, L. (2010). Large-Scale Machine Learning with Stochastic Gradient Descent. Lechevallier, Y., Saporta, G. (eds) Proceedings of COMPSTAT’2010. Physica-Verlag HD.
2 Ruder, S. (2016). An overview of gradient descent optimization algorithms.
3 Tian, Y., Zhang, Y., & Zhang, H. (2023). Recent Advances in Stochastic Gradient Descent in Deep Learning. Mathematics, 11(3), 682.
4 Haji, S. H., & Abdulazeez, A. M. (2021). Comparison of optimization techniques based on gradient descent algorithm: A review. PalArch’s Journal of Archaeology of Egypt/Egyptology, 18(4), 2715-2743.
5 Bottou, L. (2012). Stochastic Gradient Descent Tricks. Montavon, G., Orr, G.B., Müller, KR. (eds) Neural Networks: Tricks of the Trade. Lecture Notes in Computer Science, Band 7700. Springer, Berlin, Heidelberg.