Gradient Clipping (deutsch: Gradienten-Begrenzung) ist eine Technik, die verhindert, dass die Gradienten beim Training neuronaler Netze zu groß werden. Extrem große Gradienten lassen die Gewichts-Updates explodieren, das Modell divergiert oder die Gewichte werden zu NaN – ein bekanntes Problem bei rekurrenten neuronalen Netzen (RNNs) und sehr tiefen Netzen.
Das Problem: Exploding Gradients
Beim Backpropagation-Verfahren werden die Gradienten über viele Schichten multipliziert. Sind die Werte größer als 1, wächst das Produkt exponentiell an. Die daraus resultierenden riesigen Updates schleudern den Optimierer aus dem Minimum heraus, die Loss-Funktion springt auf unendlich.
Die zwei Varianten
- Clipping by Norm: Wird die Norm des gesamten Gradientenvektors größer als ein Schwellwert (z. B. 1,0), wird der Vektor proportional skaliert. Die Richtung bleibt erhalten, nur die Länge wird begrenzt – in PyTorch:
torch.nn.utils.clip_grad_norm_. - Clipping by Value: Jeder Gradient wird einzeln auf ein Intervall begrenzt, z. B. [−1, 1]. Einfach, aber die Richtung des Vektors kann sich ändern.
Wo Gradient Clipping hilft
Vor allem bei RNNs/LSTMs, Transformern und Generative Adversarial Networks (GANs). Ein typischer Schwellwert für Norm-Clipping liegt zwischen 0,5 und 5,0. Der Eingriff erfolgt nach dem Backward-Pass und vor dem Optimizer-Schritt.
Gradient Clipping wird oft zusammen mit Weight Decay eingesetzt: Während Weight Decay die Gewichte klein hält, begrenzt Gradient Clipping die Updates. Beide stabilisieren das Training und ergänzen Maßnahmen wie Label Smoothing.
Verwandte Grundlagen: Gradient Descent, Backpropagation, RNN, Learning Rate.