Ein früher Fehler wirkt bis zur Ausgabe weiter
Bei einem einzelnen Gewicht konnten wir seine Wirkung direkt untersuchen. In einem Netz liegt zwischen einem frühen Gewicht und der Endausgabe eine ganze Reihe weiterer Rechnungen. Trotzdem hängt der Endfehler von diesem Gewicht ab.
Wir nehmen absichtlich nur zwei hintereinanderliegende Multiplikationen. Sie sind für sich noch kein leistungsfähiges tiefes Netz, zeigen aber den Lernweg besonders klar. Die Eingabe ist 2. Das erste Gewicht ist 1, das zweite Gewicht 2. Der gewünschte Endwert ist 6.
Zuerst vollständig vorwärts rechnen
| Schritt | Rechnung | Ergebnis |
|---|---|---|
| Zwischenwert | Eingabe × erstes Gewicht | 2 × 1 = 2 |
| Vorhersage | Zwischenwert × zweites Gewicht | 2 × 2 = 4 |
| Unterschied | Vorhersage − Zielwert | 4 − 6 = −2 |
| Quadratischer Fehler | Unterschied × Unterschied | (−2) × (−2) = 4 |
Wir nennen die Eingabe x, das erste Gewicht w, den Zwischenwert h und das zweite Gewicht v. Die Vorhersage heißt wieder y-Dach. Damit lautet der Vorwärtsweg h=w×x und y-Dach=v×h. Die Buchstaben sind nur kurze Namen für die Zahlen der Tabelle.
Nun von hinten nach den Einflüssen fragen
Beginne bei der Vorhersage 4. Für den quadratischen Fehler ist seine Ableitung nach der Vorhersage zweimal der Unterschied: 2×(−2)=−4. Das bedeutet: Eine kleine Erhöhung der Vorhersage würde den Fehler lokal verringern.
Jetzt fragen wir nach dem zweiten Gewicht v. Die Vorhersage ist v×h. Der Zwischenwert h beträgt 2. Eine kleine Erhöhung von v erhöht die Vorhersage deshalb um das Zweifache dieser Änderung. Zusammengenommen ergibt sich die Ableitung des Fehlers nach v: −4×2=−8.
Die erste Zahl −4 beschreibt „Vorhersage beeinflusst Fehler“. Die zweite Zahl 2 beschreibt „zweites Gewicht beeinflusst Vorhersage“. Wir verbinden die beiden Einflüsse durch Multiplikation.
Einen Schritt weiter zurück
Der Zwischenwert h wird in der nächsten Rechnung mit v=2 multipliziert. Seine lokale Wirkung auf den Fehler ist daher ebenfalls −4×2=−8.
Dieser Zwischenwert entstand wiederum aus w×x. Weil x=2 ist, beeinflusst eine kleine Änderung von w den Zwischenwert mit Faktor 2. Die Ableitung des Fehlers nach dem ersten Gewicht w ist deshalb −8×2=−16.
| Gesuchte Ableitung | Zusammengesetzter Einfluss | Ergebnis |
|---|---|---|
| Nach zweitem Gewicht v | −4 × Zwischenwert 2 | −8 |
| Nach Zwischenwert h | −4 × zweites Gewicht 2 | −8 |
| Nach erstem Gewicht w | −8 × Eingabe 2 | −16 |
Damit wissen beide Gewichte, in welche Richtung sie lokal verändert werden sollten. Das Verfahren hat keine Bedeutung erraten und keine neuen Zielwerte für innere Neuronen erfunden. Es hat die bekannten Rechenschritte rückwärts auf ihre Änderungswirkung untersucht.
Das ist die Idee der Kettenregel
Die Kettenregel besagt vereinfacht: Wenn eine Änderung mehrere aufeinanderfolgende Rechenschritte durchläuft, multiplizieren wir deren lokale Änderungsfaktoren. Für unser erstes Gewicht lautet die Kurzform:
Von links nach rechts gelesen: Gesucht ist, wie w den Fehler L beeinflusst. Dafür verbinden wir den Einfluss der Vorhersage auf den Fehler, den Einfluss des Zwischenwerts auf die Vorhersage und den Einfluss des Gewichts auf den Zwischenwert.
Die konkrete Rechnung dazu ist −4×2×2=−16. Die Formel ist die Kurzbeschreibung genau dieses Weges. Hier liegt ein einzelner durchgehender Einflussweg vor; in größeren Netzen können mehrere Wege zusammenkommen.
Was passiert bei Verzweigungen?
Wenn ein Zwischenwert mehrere spätere Rechnungen beeinflusst, kann er den Fehler über mehrere Wege verändern. Die Beiträge dieser Wege werden addiert. Innerhalb eines Weges multiplizieren wir lokale Änderungsfaktoren, zwischen verschiedenen Wegen addieren wir ihre Beiträge.
Effizient wird das Verfahren, weil jede rückwärts berechnete Zwischenableitung, etwa −8 für h, nur einmal berechnet und dann für alle davorliegenden Gewichte wiederverwendet wird. Die Wege werden nicht einzeln aufgezählt. Backpropagation heißt diese Rückwärtsrechnung im Netz. Rechengraph nennt man die Darstellung der einzelnen Rechenschritte und ihrer Abhängigkeiten. Das Graphwort bezeichnet hier Verbindungen zwischen Operationen, keinen statistischen Kurvenplot.
Ableitungen erst sammeln, dann Gewichte ändern
Wir haben die Ableitungen −16 für w und −8 für v an den alten Werten berechnet. Bei Lernrate 0,01 ergeben sich w=1−0,01×(−16)=1,16 und v=2−0,01×(−8)=2,08.
Erst danach führen wir den nächsten Vorwärtsdurchlauf aus: Zwischenwert 1,16×2=2,32; Vorhersage 2,08×2,32=4,8256. Der Fehler ist ungefähr 1,3792, also kleiner als zuvor 4.
Würdest du ein Gewicht bereits mitten in der Rückwärtsrechnung ändern und andere Ableitungen dann mit neuen Werten berechnen, wäre das ein anderes, inkonsistentes Vorgehen. Ein normaler Schritt berechnet alle Gradienten am selben aktuellen Zustand und verändert die Gewichte anschließend.
Aktivierungsfunktionen passen ebenfalls in diesen Weg
Für ReLU ist der lokale Änderungsfaktor auf der positiven Seite 1: Eine kleine Eingabeänderung wird unverändert weitergegeben. Auf der negativen Seite ist er 0: Kleine Änderungen bleiben in dem Bereich, der auf null gesetzt wird. Genau bei null gibt es einen Knick; Programme verwenden dort eine festgelegte Konvention.
Deshalb beeinflusst eine Aktivierungsfunktion nicht nur den Vorwärtswert, sondern auch die Rückwärtsrechnung. Du brauchst nicht für jede Funktion die Ableitungsregel auswendig zu wissen. Du solltest aber erkennen, dass beide Rechenrichtungen zusammengehören.
Was später die Bibliothek übernimmt
PyTorch kann diese Ableitungsregeln automatisch zusammensetzen. Autograd ist der Name für diese automatische Ableitungsrechnung. Du legst den Vorwärtsweg fest; die Bibliothek protokolliert die erforderlichen Abhängigkeiten und berechnet beim Rückwärtsaufruf die Gradienten.
Im nächsten Kapitel richten wir diese Bibliothek ein. Jetzt weißt du bereits, welche Arbeit sie dir abnimmt und welche Entscheidungen — Bauplan, Daten und Lernziel — weiterhin bei dir liegen.