Weight Decay
Weight Decay ist eine Regularisierungstechnik, die Modellgewichte in Richtung null verkleinert und neuronalen Netzen hilft, Overfitting zu reduzieren und auf neue Daten zu generalisieren.
Weight Decay ist eine Regularisierung, die die gelernten Gewichte eines Modells während des Trainings in Richtung null zieht. Dieses wiederholte Verkleinern verhindert unnötig große Parameterwerte und hilft einem neuronalen Netz, auf unbekannte Beispiele zu generalisieren. Das ist besonders nützlich, wenn ein Modell über genügend Kapazität verfügt, um Rauschen in seinen Trainingsdaten auswendig zu lernen.
Geoffrey Hinton führte Weight Decay 1986 in seiner Arbeit Verteilte Repräsentationen von Konzepten lernen ein. In seinem Familienstammbaum-Experiment verringerte er nach jedem Update die Gewichtsbeträge um 0,2 %, damit sich gelernte Verbindungen leichter interpretieren ließen. Weight Decay wurde anschließend weithin zur Kontrolle von Overfitting eingesetzt.
So funktioniert Weight Decay#
Beim Gradientenabstieg verändert der Optimierer Parameter anhand von Gradienten: Ableitungen, die beschreiben, wie sich jeder Parameter auf die Verlustfunktion auswirkt. Weight Decay zieht die Parameter zusätzlich in Richtung null. Bei der von vielen Optimierern verwendeten Konvention, die mit der Lernrate skaliert, lautet ein einfaches SGD-Update ohne Momentum new weight = (1 - learning rate × decay) × old weight - learning rate × gradient. Damit werden das Lernen aus Vorhersagefehlern und eine proportionale Verkleinerung kombiniert.
Der Zerfallskoeffizient bestimmt die Stärke dieser Zugkraft. Bei null ist die Wirkung deaktiviert; höhere positive Werte verstärken die Verkleinerung bei einer festen Lernrate. Der Task-Gradient kann ein Gewicht weiterhin erhöhen, wenn sich dadurch die Vorhersagen verbessern. Eine Verringerung der Lernrate reduziert schrittweise die Schrittweite des Optimierers; Weight Decay wirkt sich auf die Parameterwerte aus.
Weight Decay im Vergleich zur L2-Regularisierung#
Die L2-Regularisierung addiert eine skalierte Summe quadrierter Gewichte zum Trainingsziel. Bei einfachem stochastischem Gradientenabstieg ergibt die Ableitung dieser Strafe dieselbe proportionale Verkleinerung, sofern die Koeffizienten passend gewählt sind. In der linearen Regression wird die Anpassung mit dieser Strafe auf quadrierte Gewichte als Ridge-Regression bezeichnet.
Wird beim Adam-Optimierer eine L2-Strafe hinzugefügt, fließt der Gradient der Strafe in Adams gleitende Mittelwerte und parameterspezifische Skalierung ein. AdamW hingegen wendet die Verkleinerung getrennt von dieser adaptiven Gradientenberechnung an. Ilya Loshchilov und Frank Hutter führten AdamW 2017 in ihrer Arbeit Entkoppelte Regularisierung durch Weight Decay ein, die 2019 auf der ICLR veröffentlicht wurde. Durch diese Trennung ist die Stärke des Zerfalls unabhängig von der Skalierung anhand von Adams Gradientenverlauf.
Die Stärke des Zerfalls wählen#
Weight Decay ist ein Hyperparameter, der anhand von Validierungsdaten ausgewählt wird. Ein zu niedriger Wert schränkt Overfitting nicht ausreichend ein. Ein zu hoher Wert führt zu Underfitting: Das Modell kann nützliche Muster nicht lernen und erzielt hohe Fehler bei Trainings- und Validierungsbeispielen. Ein Vergleich der Validierungswerte bei verschiedenen Zerfallsstärken zeigt, welcher Wert für ein bestimmtes Modell und einen bestimmten Datensatz geeignet ist.
Die kumulierte Wirkung hängt außerdem vom Lernratenplan und der Anzahl der Optimierer-Updates ab. Eine Änderung der Batchgröße oder der Trainingsepochen kann die Anzahl der Anwendungen von Weight Decay verändern; bei der Gradientenakkumulation werden mehrere Batches vor einem Update zusammengefasst. Eine Dropout-Schicht regularisiert, indem sie Aktivierungen zufällig auf null setzt, während Early Stopping die Trainingsdauer begrenzt.
Ultralytics YOLO bietet eine Trainingseinstellung weight_decay mit einem Standardwert von 0.0005, um die Regularisierung beim Training von Modellen wie YOLO26 zu steuern. Die Parametergruppen des Optimierers schließen Biases und Parameter von Normalisierungsschichten von Weight Decay aus.
Weight Decay in PyTorch#
Der torch.optim.AdamW-Optimierer bietet entkoppeltes Weight Decay in PyTorch. Installiere das Paket mit pip install torch; dieses Beispiel erzeugt einen Gradienten für die Aufgabe von null, sodass die ausgegebene Aktualisierung ausschließlich Weight Decay zeigt:
import torch
weight = torch.nn.Parameter(torch.tensor([2.0]))
optimizer = torch.optim.AdamW([weight], lr=0.1, weight_decay=0.1)
before = weight.item()
# Create a zero gradient while keeping the parameter in the computation.
optimizer.zero_grad()
loss = (weight * 0).sum()
loss.backward()
optimizer.step()
print(f"Weight: {before:.2f} -> {weight.item():.2f}")Die Ausgabe lautet Weight: 2.00 -> 1.98: Bei einem Update wird das Gewicht mit 1 - 0.1 × 0.1 multipliziert, also mit 0.99, wodurch sein Betrag um 1 % sinkt.










