Die Grundidee der Backpropagation
Forward Propagation berechnet eine Ausgabe. Aber woher weiß das Netz, ob die Ausgabe richtig ist? Und wie lernt es aus Fehlern? Die Antwort heißt Backpropagation — das Zurückrechnen des Fehlers durch das Netz.
Der Lernzyklus
flowchart TD
A["Eingabe"] --> B["Forward Propagation<br/>→ Vorhersage"]
B --> C["Vergleich mit<br/>echtem Label → Fehler"]
C --> D["Backpropagation<br/>→ Fehler zurückrechnen"]
D --> E["Gewichte anpassen<br/>(Lernrate)"]
E --> A
- Forward: Das Netz berechnet eine Vorhersage.
- Fehler: Vergleiche Vorhersage und echtes Label → wie weit liegt das Netz daneben?
- Backward: Rechne den Fehler rückwärts durch das Netz. Jedes Gewicht erfährt, wie viel es zum Fehler beigetragen hat.
- Anpassen: Jedes Gewicht wird ein kleines Stück in die Richtung korrigiert, die den Fehler verringert.
Backpropagation ist ein Verfahren, das den Fehler des Netzes von der Ausgabeschicht rückwärts bis zur Eingabeschicht zurückrechnet. Für jedes Gewicht bestimmt es, wie stark es zum Fehler beigetragen hat. Dann werden die Gewichte mit einer Lernrate angepasst.
Die Lernrate
Die Lernrate (learning rate) bestimmt, wie stark die Gewichte bei jedem Schritt angepasst werden:
- Zu klein: Das Netz lernt sehr langsam — viele Schritte nötig.
- Zu groß: Das Netz springt über das Optimum hinaus und kann instabil werden.
- Typischer Wert: 0.01 bis 0.1
Backpropagation ist die Grundidee, wie neuronale Netze lernen: Der Fehler wird rückwärts durch das Netz gereicht, und jedes Gewicht wird ein kleines Stück korrigiert. Die Lernrate steuert, wie groß diese Schritte sind. In diesem Lernpfad implementieren wir die Backpropagation nicht vollständig (das wäre Stoff für den Leistungskurs) — aber du verstehst die Grundidee.
Ein einfaches Beispiel am einzelnen Neuron
Ein Neuron hat ein Gewicht und gibt für die Eingabe die Ausgabe . Das echte Label ist . Der Fehler ist:
Mit Lernrate wird das Gewicht angepasst:
Nach der Anpassung ist die Ausgabe — näher an 1.5. Ein weiterer Schritt bringt uns noch näher.
Bevor du das Programm ausführst: Nach wie vielen Schritten ist die Ausgabe näher als 0.01 an 1.5? Schreibe deine Vermutung auf.
a) Führe das Programm aus. Nach wie vielen Schritten ist der Fehler zum ersten Mal kleiner als 0.01?
b) Setze die Lernrate auf 0.01. Mit 10 Schritten kommst du jetzt nicht mehr ans Ziel — erhöhe schritte so lange, bis der Fehler wieder unter 0.01 liegt. Wie viele brauchst du?
c) Setze die Lernrate auf 0.5 und lass 10 Schritte laufen. Was passiert mit y? Wird das Ergebnis besser oder schlechter?
Tipp zu a) und b)
Der Fehler steht in jeder Ausgabezeile. Suche die erste Zeile, in der davor eine 0 und danach höchstens eine 0 steht — also Fehler = 0.00….
Tipp zu c)
Mit einer zu großen Lernrate kann das Verfahren „oszillieren" — es springt über das Ziel hinaus und kommt nicht zur Ruhe. Schreibe die y-Werte der ersten vier Schritte untereinander und schau sie dir an.