Vorwärtsdurchlauf und Rückwärtsdurchlauf im Detail
Kurz: Im Vorwärtsdurchlauf wandern die Daten Schicht für Schicht durch das Netz und ergeben die Vorhersage. Im Rückwärtsdurchlauf wird mit der Kettenregel berechnet, wie jedes Gewicht den Fehler beeinflusst hat.
Genauer: Der Rückwärtsdurchlauf (Backpropagation) ist effizient, weil er Zwischenergebnisse des Vorwärtsdurchlaufs wiederverwendet. Frameworks wie PyTorch führen das automatisch durch („Autograd“).
Im Detail
- Forward:
x → Schicht 1 → Schicht 2 → … → Vorhersage ŷ. Zwischenwerte (Aktivierungen) werden gespeichert. - Verlust:
L = loss(ŷ, y). - Backward: Von hinten nach vorn:
∂L/∂Wfür jede Schicht mit der Kettenregel:∂L/∂x = ∂L/∂y · ∂y/∂x. - Update: Optimierer ändert Gewichte, siehe Optimierer: SGD, Momentum und Adam.
- Gradienten nullen, nächster Batch.
- Speicher: Die gespeicherten Aktivierungen sind ein großer Teil des Trainingsspeichers. Gradient Checkpointing speichert nur wenige und berechnet den Rest neu (spart Speicher, kostet Zeit).
- Rechenaufwand: Rückwärts etwa doppelt so teuer wie vorwärts. Training ≈ 3× Inferenz pro Token.
- Verschwindende/explodierende Gradienten: Bei vielen Schichten werden Gradienten winzig oder riesig. Gegenmittel: ReLU/GELU, Normalisierung, Skip-Verbindungen, Gradient Clipping.
- Code (PyTorch):
loss.backward()rechnet,optimizer.step()aktualisiert.
Siehe auch: neuronale-netze-und-backpropagation, Skip-Verbindungen und Residual-Netze