Backpropagation
Der Algorithmus, der berechnet, wie stark jedes Gewicht in einem neuronalen Netz zum Gesamtfehler beiträgt – die Grundlage für das Training tiefer Netze.
Eine Technik zur Stabilisierung des Trainings, die zu große Gradienten begrenzt – verhindert das Exploding Gradient Problem in tiefen Netzen und RNNs.
Gradient Clipping verhindert, dass Gradienten zu groß werden und das Training destabilisieren.
Ohne Clipping:
Gradient: [1000, -500, 2000] → Gewichte explodieren!
Mit Clipping (max_norm=1):
Gradient: [0.45, -0.22, 0.89] → Stabil, Richtung erhalten
import torch
# Clip by Norm (empfohlen)
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
# Clip by Value
torch.nn.utils.clip_grad_value_(model.parameters(), clip_value=0.5)
# Training Loop
optimizer.zero_grad()
loss.backward()
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
optimizer.step()
def get_grad_norm(model):
total_norm = 0
for p in model.parameters():
if p.grad is not None:
total_norm += p.grad.data.norm(2).item() ** 2
return total_norm ** 0.5
# Logging
grad_norm = get_grad_norm(model)
wandb.log({"grad_norm": grad_norm}) Gradient Clipping ist wie ein Tempolimit: Egal wie steil der Berg (Gradient), du fährst nie schneller als erlaubt. Das verhindert Unfälle (instabiles Training).
Begrenzt Gradienten auf maximalen Wert
Zwei Varianten: Clip by Value oder Clip by Norm
Essentiell für RNNs, LSTMs und Transformer-Training
RNN/LSTM Training
Verhindert Exploding Gradients bei langen Sequenzen
Transformer Training
Standard bei LLM-Training
Instabiles Training
Wenn Loss plötzlich explodiert
By Value: Jeder Gradient einzeln begrenzt. By Norm: Gesamtnorm begrenzt, Richtung bleibt erhalten. Norm ist meist besser.
Typisch 1.0 für Norm-Clipping. Zu klein = langsames Lernen. Zu groß = kein Effekt. Monitoring der Gradient-Norm hilft.