Weight Decay
La décroissance des poids est une technique de régularisation qui rapproche les poids du modèle de zéro, aidant les réseaux neuronaux à réduire le surapprentissage et à généraliser à de nouvelles données.
La décroissance des poids est une technique de régularisation qui rapproche les poids appris d’un modèle de zéro pendant l’entraînement. Cette réduction répétée décourage les valeurs de paramètres inutilement élevées et aide un réseau neuronal à généraliser à des exemples inédits. Elle est particulièrement utile lorsqu’un modèle a une capacité suffisante pour mémoriser le bruit présent dans ses données d’entraînement.
Geoffrey Hinton a introduit la décroissance des poids dans son article de 1986 Apprendre des représentations distribuées de concepts. Dans son expérience d’arbre généalogique, il a réduit la magnitude des poids de 0,2 % après chaque mise à jour afin de faciliter l’interprétation des connexions apprises. La décroissance des poids a ensuite été largement utilisée pour contrôler le surapprentissage.
Fonctionnement de la décroissance des poids#
Pendant la descente de gradient, l’optimiseur modifie les paramètres à l’aide des gradients : des dérivées qui décrivent l’effet de chaque paramètre sur la fonction de perte. La décroissance des poids ajoute une force qui les rapproche de zéro. Selon la convention mise à l’échelle par le taux d’apprentissage utilisée par de nombreux optimiseurs, une mise à jour SGD simple sans momentum est new weight = (1 - learning rate × decay) × old weight - learning rate × gradient. Cette approche combine l’apprentissage à partir des erreurs de prédiction et la réduction proportionnelle des poids.
Le coefficient de décroissance contrôle l’intensité de cette force. Une valeur nulle la désactive ; des valeurs positives plus élevées augmentent la réduction à taux d’apprentissage fixe. Le gradient de la tâche peut tout de même augmenter un poids si cela améliore les prédictions. La diminution du taux d’apprentissage réduit progressivement le pas de l’optimiseur ; la décroissance des poids agit sur les valeurs des paramètres.
Décroissance des poids et régularisation L2#
La régularisation L2 ajoute à l’objectif d’entraînement une somme pondérée des carrés des poids. Avec une descente de gradient stochastique simple, la dérivée de cette pénalité produit la même réduction proportionnelle, à condition d’utiliser des coefficients convenablement ajustés. En régression linéaire, l’ajustement avec cette pénalité sur les carrés des poids est appelé régression ridge.
Avec l’optimiseur Adam, l’ajout d’une pénalité L2 fait passer le gradient de pénalité par les moyennes mobiles et la mise à l’échelle propre à chaque paramètre d’Adam. AdamW applique plutôt la réduction séparément de ce calcul adaptatif du gradient. Ilya Loshchilov et Frank Hutter ont introduit AdamW dans leur article de 2017 Régularisation par décroissance des poids découplée, publié à ICLR 2019. Cette séparation rend l’intensité de la décroissance indépendante de la mise à l’échelle liée à l’historique des gradients d’Adam.
Choisir l’intensité de la décroissance#
La décroissance des poids est un hyperparamètre, choisi à l’aide des données de validation. Une valeur trop faible ne limite pas suffisamment le surapprentissage. Une décroissance excessive entraîne du sous-apprentissage : le modèle ne parvient pas à ajuster les motifs utiles, ce qui produit des erreurs élevées sur les exemples d’entraînement et de validation. Comparer les scores de validation pour différentes valeurs de décroissance permet de déterminer l’intensité adaptée à un modèle et à un jeu de données donnés.
L’effet cumulé dépend également du calendrier du taux d’apprentissage et du nombre de mises à jour de l’optimiseur. Modifier la taille des lots ou le nombre d’époques d’entraînement peut changer le nombre d’applications de la décroissance ; l’accumulation des gradients regroupe plusieurs lots avant une mise à jour. Une couche de dropout régularise le modèle en mettant aléatoirement des activations à zéro, tandis que l’arrêt anticipé limite la durée de l’entraînement.
Ultralytics YOLO propose un paramètre d’entraînement weight_decay, dont la valeur par défaut est 0,0005, pour contrôler la régularisation lors de l’entraînement de modèles tels que YOLO26. Ses groupes de paramètres de l’optimiseur excluent les biais et les paramètres des couches de normalisation de la décroissance des poids.
Décroissance des poids dans PyTorch#
L’optimiseur torch.optim.AdamW fournit une décroissance des poids découplée dans PyTorch. Installe le paquet avec pip install torch ; cet exemple crée un gradient de tâche nul afin que la mise à jour affichée isole l’effet de la décroissance des poids :
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}")La sortie est Weight: 2.00 -> 1.98 : une mise à jour multiplie le poids par 1 - 0.1 × 0.1, soit 0,99, ce qui réduit sa magnitude de 1 %.










