4.2 Gradientenabstieg
Für die lineare Regression gibt es eine geschlossene Lösung (4.3). Trotzdem führen die Folien hier den Gradientenabstieg (gradient descent) ein, weil er ein sehr allgemeines Verfahren ist, das für viele ML- und praktisch alle DL-Algorithmen funktioniert 📄 04_linear_methods_ws26.pdf, Folie 9.
Das Bild: blind den Berg hinunter
Stell dir vor, du stehst mit verbundenen Augen an einem Hang und willst ins Tal. Du kannst nicht sehen, wo das Tal ist, aber du spürst mit den Füßen, in welche Richtung es bergab geht und wie steil es ist. Also machst du einen Schritt in Richtung des steilsten Abstiegs, tastest erneut, machst den nächsten Schritt usw.
Übersetzt: Die Höhe ist der Verlust, die Position sind die Parameter, die gefühlte Neigung ist die Ableitung des Verlusts nach den Parametern.
Für die Abbildung auf der Folie wird festgehalten und nur variiert. Der Verlust ist dann eine Parabel in .
Die Update-Regel
📄 04_linear_methods_ws26.pdf, Folie 10- zählt die Schritte (Iterationen).
- ist die Lernrate (learning rate), sie bestimmt die Schrittweite.
- Warum das Minus? Ist die Ableitung positiv, steigt der Verlust mit wachsendem . Man muss also verkleinern, um bergab zu gehen. Ist sie negativ, muss wachsen. Das Minuszeichen sorgt in beiden Fällen für die richtige Richtung.
- Automatische Schrittweitenanpassung: Die Schrittlänge ist . Weit weg vom Minimum ist der Hang steil und die Schritte sind groß, nahe am Minimum wird die Ableitung klein und die Schritte werden kürzer. Im Minimum selbst ist die Ableitung 0, das Verfahren bleibt stehen.
Die richtige Lernrate
Die rote Frage der Folie: Wie wählt man die Schrittweite, wenn man blind ist? 📄 04_linear_methods_ws26.pdf, Folie 11 zeigt drei Lernraten auf derselben Parabel:
| Lernrate | Verhalten |
|---|---|
| kleine Schritte, konvergiert stetig von einer Seite, aber langsam | |
| springt über das Minimum, pendelt aber schnell ein | |
| springt jedes Mal weiter auf die andere Seite: Divergenz, der Verlust wächst |
Es gibt keine universell richtige Lernrate. Sie hängt von der Krümmung der Verlustfunktion ab und damit auch von der Skalierung der Daten. In der Praxis probiert man aus (typisch in Zehnerpotenzen) und beobachtet die Verlustkurve. Zum Ausprobieren verweist die Folie auf den Google Machine Learning Crash Course.
Durchgerechnetes Beispiel
Ergänzung, nicht auf den Folien: Die drei Punkte , , aus 4.1. Wie auf der Folie halten wir fest, und zwar beim optimalen Wert . Dann ist
(Mit , , .) Das Minimum liegt bei .
Start , Lernrate :
| Gradient | |||
|---|---|---|---|
| 0 | 0 | ||
| 1 | 0,7 | ||
| 2 | 1,073 | ||
| 3 | 1,272 |
Der Abstand zum Optimum schrumpft jedes Mal um den Faktor .
Warum genau dieser Faktor? Der Gradient ist linear in : , wobei die zweite Ableitung (Krümmung) ist. Einsetzen in die Update-Regel:
| Faktor | Verhalten | |
|---|---|---|
| sehr langsam | ||
| zügig, von einer Seite | ||
| Minimum in einem Schritt | ||
| pendelt über das Minimum, konvergiert langsam | ||
| divergiert: , , … |
Konvergenz gibt es genau dann, wenn kleiner als 1 ist, also für kleiner als . Das ist genau das Muster der drei Bilder auf Folie 11.
Gradientenabstieg in zwei (und mehr) Dimensionen
Lässt man und gleichzeitig variieren, ist der Verlust eine Fläche über der -Ebene 📄 04_linear_methods_ws26.pdf, Folie 12. Zoomt man weit genug hinein, sieht sie lokal aus wie eine schiefe Ebene (rechtes Bild der Folie). Man berechnet die Ableitung in jede Richtung und geht in beide gleichzeitig:
Die beiden „Kräfte“ und addieren sich vektoriell zur Richtung des steilsten Abstiegs. In Vektorschreibweise mit allen Gewichten :
Komponentenweise 📄 04_linear_methods_ws26.pdf, Folie 13:
Der Gradient zeigt in Richtung des steilsten Anstiegs und steht senkrecht auf den Höhenlinien. Gradientenabstieg geht in die Gegenrichtung .
Warum senkrecht? Ergänzung: Entlang einer Höhenlinie ändert sich der Verlust nicht, die Richtungsableitung in Richtung der Höhenlinie ist also 0. Die Richtungsableitung in Richtung ist . Ist sie 0, stehen und senkrecht.
Auf 📄 04_linear_methods_ws26.pdf, Folie 13 sind die Höhenlinien Ellipsen. Der Gradient zeigt senkrecht zur Höhenlinie, aber nicht direkt auf das Minimum. Deshalb läuft der Weg gekrümmt. Ergänzung: Bei stark gestreckten Ellipsen (Merkmale auf sehr unterschiedlichen Skalen, z. B. Alter in Jahren und Einkommen in Euro) entsteht ein Zickzack und die Konvergenz wird langsam. Deshalb standardisiert man die Merkmale vor dem Gradientenabstieg.
Gefahren: lokale Minima
📄 04_linear_methods_ws26.pdf, Folie 14 zeigt den blinden Wanderer in einer Berglandschaft: Gradientenabstieg findet nur ein lokales Minimum. Landet man in einer Mulde, die nicht die tiefste ist, kommt man dort nicht mehr heraus.
- Viele Probleme im ML sind konvex (convex): Es gibt nur ein Tal, jedes lokale Minimum ist global. Das gilt für lineare Regression, Ridge-Regression und logistische Regression.
- Im Deep Learning sind die Verlustfunktionen nicht konvex. Gradientenabstieg funktioniert dort aber trotzdem erstaunlich gut („magisch“, wie die Folie sagt).
Ergänzung, nicht auf den Folien: Eine Funktion ist konvex, wenn die Verbindungsstrecke zwischen zwei Punkten ihres Graphen nie unterhalb des Graphen liegt. Für zweimal differenzierbare Funktionen heißt das: Die zweite Ableitung (bzw. die Hesse-Matrix) ist überall nichtnegativ (positiv semidefinit). Der MSE der linearen Regression hat die Hesse-Matrix , die immer positiv semidefinit ist.
Minimal-Implementierung
Ergänzung, nicht auf den Folien: Gradientenabstieg für die 1D-Regression in NumPy. Die Gradienten folgen aus .
import numpy as np
x = np.array([1.0, 2.0, 3.0])
y = np.array([2.0, 3.0, 5.0])
a, b, eta = 0.0, 0.0, 0.05
for t in range(2000):
r = y - (a * x + b) # Residuen
grad_a = -2 * np.mean(x * r)
grad_b = -2 * np.mean(r)
a -= eta * grad_a
b -= eta * grad_b
print(a, b) # -> ca. 1.5, 0.333