Weight Decay
El decaimiento de los pesos es una técnica de regularización que reduce los pesos del modelo hacia cero, lo que ayuda a las redes neuronales a reducir el sobreajuste y generalizar a datos nuevos.
El decaimiento de los pesos es una técnica de regularización que acerca los pesos aprendidos de un modelo a cero durante el entrenamiento. Esta reducción repetida desincentiva los valores de parámetros innecesariamente grandes y ayuda a una red neuronal a generalizar a ejemplos que no ha visto. Resulta especialmente útil cuando un modelo tiene capacidad suficiente para memorizar el ruido de sus datos de entrenamiento.
Geoffrey Hinton introdujo el decaimiento de los pesos en su artículo de 1986 Aprendizaje de representaciones distribuidas de conceptos. En su experimento del árbol genealógico, redujo la magnitud de los pesos un 0,2 % después de cada actualización para facilitar la interpretación de las conexiones aprendidas. Posteriormente, el decaimiento de los pesos se utilizó ampliamente para controlar el sobreajuste.
Cómo funciona el decaimiento de los pesos#
Durante el descenso de gradiente, el optimizador modifica los parámetros utilizando gradientes: derivadas que describen cómo afecta cada parámetro a la función de pérdida. El decaimiento de los pesos los acerca a cero. Con la convención escalada por la tasa de aprendizaje que utilizan muchos optimizadores, una actualización de SGD simple, sin momento, es new weight = (1 - learning rate × decay) × old weight - learning rate × gradient. Esta combinación permite aprender de los errores de predicción y reducir los pesos proporcionalmente.
El coeficiente de decaimiento controla la intensidad de esa reducción. Un valor de cero la desactiva; los valores positivos más altos aumentan la reducción con una tasa de aprendizaje fija. El gradiente de la tarea puede seguir aumentando un peso si eso mejora las predicciones. La reducción de la tasa de aprendizaje disminuye progresivamente el tamaño del paso del optimizador; el decaimiento de los pesos actúa sobre los valores de los parámetros.
Decaimiento de los pesos frente a regularización L2#
La regularización L2 añade una suma escalada de los pesos al cuadrado al objetivo de entrenamiento. Con el descenso de gradiente estocástico simple, al derivar esta penalización se obtiene la misma reducción proporcional, si los coeficientes están ajustados adecuadamente. En la regresión lineal, el ajuste con esta penalización de los pesos al cuadrado se denomina regresión ridge.
Con el optimizador Adam, añadir una penalización L2 hace que el gradiente de la penalización pase por las medias móviles de Adam y por el escalado específico de cada parámetro. AdamW, en cambio, aplica la reducción por separado del cálculo adaptativo del gradiente. Ilya Loshchilov y Frank Hutter introdujeron AdamW en su artículo de 2017 Regularización del decaimiento de los pesos desacoplado, publicado en ICLR 2019. Esta separación hace que la intensidad del decaimiento sea independiente del escalado de Adam basado en el historial de gradientes.
Cómo elegir la intensidad del decaimiento#
El decaimiento de los pesos es un hiperparámetro que se selecciona usando datos de validación. Si es demasiado bajo, no limita suficientemente el sobreajuste. Un decaimiento excesivo provoca subajuste: el modelo no consigue ajustarse a patrones útiles y produce errores elevados en los ejemplos de entrenamiento y validación. Comparar las puntuaciones de validación con distintos valores de decaimiento permite determinar cuál es la intensidad adecuada para un modelo y un conjunto de datos concretos.
El efecto acumulado también depende del programa de la tasa de aprendizaje y del número de actualizaciones del optimizador. Cambiar el tamaño del lote o las épocas de entrenamiento puede cambiar el número de veces que se aplica el decaimiento; la acumulación de gradientes combina varios lotes antes de una actualización. Una capa de dropout regulariza poniendo a cero activaciones aleatoriamente, mientras que la parada temprana limita la duración del entrenamiento.
Ultralytics YOLO ofrece una configuración de entrenamiento weight_decay, cuyo valor predeterminado es 0.0005, para controlar la regularización al entrenar modelos como YOLO26. Sus grupos de parámetros del optimizador excluyen del decaimiento de los pesos los sesgos y los parámetros de las capas de normalización.
Decaimiento de los pesos en PyTorch#
El optimizador torch.optim.AdamW proporciona decaimiento de los pesos desacoplado en PyTorch. Instala el paquete con pip install torch; este ejemplo crea un gradiente de tarea nulo para que la actualización impresa aísle el efecto del decaimiento de los pesos:
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 salida es Weight: 2.00 -> 1.98: una actualización multiplica el peso por 1 - 0.1 × 0.1, es decir, por 0,99, y reduce su magnitud un 1 %.










