Regularization
La regularización limita un modelo durante el entrenamiento para que generalice en lugar de memorizar el ruido. Incluye L1, L2, decaimiento de pesos, dropout y parada temprana.
La regularización es cualquier cambio en la forma de entrenar un modelo cuyo objetivo es reducir su error con datos nuevos, aunque aumente su error en los datos de entrenamiento. Contrarresta el sobreajuste, que se produce cuando un modelo con capacidad suficiente memoriza el ruido y las particularidades de los ejemplos que ha visto. La regularización limita la complejidad efectiva de un modelo penalizando los pesos grandes, inyectando ruido, añadiendo datos variados o deteniendo el entrenamiento antes de tiempo. En términos de sesgo-varianza, acepta un ligero aumento del sesgo a cambio de una mayor reducción de la varianza.
Penalizaciones L1 y L2#
La forma clásica añade una penalización de los pesos a la función de pérdida: pérdida total = pérdida de datos + λ × penalización. La regularización L2 penaliza la suma de los cuadrados de los pesos, Σw², lo que atrae cada peso hacia cero en proporción a su magnitud; en los modelos lineales se denomina regresión ridge. La regularización L1 penaliza la suma de los valores absolutos de los pesos; su atracción constante lleva muchos pesos exactamente a cero, por lo que la regresión lineal penalizada con L1, el lasso, también sirve para seleccionar características. La red elástica combina ambas. La intensidad de la penalización λ, denominada alpha en scikit-learn, es un hiperparámetro: si es demasiado pequeña, el modelo sigue sobreajustándose; si es demasiado grande, subajusta. Un ajuste polinómico de grado 9 a 12 puntos ruidosos de una onda sinusoidal muestra ambos modos de fallo:
import numpy as np
from sklearn.linear_model import Ridge
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import PolynomialFeatures
rng = np.random.default_rng(0)
# 12 noisy training points from a sine wave, plus clean test points
x_train = rng.uniform(0, 1, (12, 1))
y_train = np.sin(2 * np.pi * x_train[:, 0]) + rng.normal(0, 0.2, 12)
x_test = np.linspace(0, 1, 200)[:, None]
y_test = np.sin(2 * np.pi * x_test[:, 0])
# The same degree-9 polynomial, fit with a growing L2 penalty on its coefficients
for alpha in (0.0, 1e-4, 1e-2, 1.0):
model = make_pipeline(PolynomialFeatures(9), Ridge(alpha=alpha)).fit(x_train, y_train)
train_mse = np.mean((model.predict(x_train) - y_train) ** 2)
test_mse = np.mean((model.predict(x_test) - y_test) ** 2)
weight_norm = np.linalg.norm(model[-1].coef_)
print(f"alpha {alpha:g}: train MSE {train_mse:.4f}, test MSE {test_mse:.4f}, |w| {weight_norm:.1f}")Sin penalización, el polinomio se curva para atravesar el ruido: la norma de sus coeficientes alcanza aproximadamente 425 000, su error de entrenamiento es 0.0148 y su error de prueba es 0.1859. Una penalización de 0.0001 reduce la norma de los coeficientes a 20.8 y divide por once el error de prueba, que pasa a 0.0170, mientras que el error de entrenamiento sube a 0.0334. Con un alfa de 1, la penalización domina y el modelo subajusta, con un error de prueba de 0.3998.
Decaimiento de pesos y dropout en redes neuronales#
En las redes neuronales, la regularización L2 suele adoptar la forma de decaimiento de pesos: cada actualización también reduce cada peso en una pequeña fracción de su valor. En el descenso de gradiente estocástico básico, ambos métodos son equivalentes. En optimizadores adaptativos como Adam, un término L2 añadido al gradiente se divide por el escalado de Adam para cada parámetro, por lo que los pesos con gradientes grandes apenas se regularizan. El decaimiento de pesos desacoplado aplica directamente la reducción; el optimizador AdamW resultante es la opción estándar para los Transformers.
Una capa dropout pone a cero la salida de cada unidad con probabilidad p en cada paso de entrenamiento y escala las salidas que se mantienen por 1/(1 − p), de modo que la red no puede depender de una única unidad y, en la práctica, entrena muchas subredes reducidas que comparten pesos. Durante la inferencia, todas las unidades permanecen activas. En los experimentos originales, una probabilidad de dropout de 0.5 para las unidades ocultas resultó casi óptima en una amplia variedad de redes y tareas.
El entrenamiento de Ultralytics YOLO ofrece ambas opciones: weight_decay, con un valor predeterminado de 0.0005, se aplica únicamente a los pesos de las capas convolucionales y lineales, y omite los sesgos y los parámetros de las capas de normalización; dropout, con un valor predeterminado de 0.0, actúa justo antes de la última capa lineal de los modelos de clasificación de YOLO26.
from ultralytics import YOLO
# Carga un modelo de clasificación YOLO26n preentrenado
model = YOLO("yolo26n-cls.pt")
# Entrena con dropout en la cabeza de clasificación y un decaimiento de pesos más intenso
results = model.train(data="mnist160", epochs=10, dropout=0.2, weight_decay=0.001)Otras técnicas de regularización#
- Aumento de datos: Los volteos, recortes, cambios de escala y color, y el mosaico amplían la variedad de las imágenes de entrenamiento, de modo que el modelo ve cada objeto en muchas más condiciones de las que contiene el conjunto de datos original.
- Suavizado de etiquetas: Sustituye los objetivos de clasificación one-hot por otros ligeramente suavizados, para que el modelo deje de llevar sus logits a valores de confianza extremos.
- Regularización implícita: El ruido del gradiente durante el entrenamiento con lotes pequeños y el ruido entre lotes de la normalización por lotes regularizan el modelo sin necesidad de ningún término explícito.
La parada temprana regulariza al limitar el tiempo de entrenamiento. Evalúa el modelo con los datos de validación después de cada época y se detiene cuando la puntuación no ha mejorado durante un número determinado de épocas, llamado paciencia, conservando los mejores pesos obtenidos hasta ese momento:
Regularización frente a términos relacionados#
- Normalización: Reescala las entradas o activaciones para acelerar y estabilizar el entrenamiento. La normalización por lotes solo regulariza como efecto secundario.
- Ajuste de hiperparámetros: Busca valores adecuados para los parámetros de regularización, como λ, la probabilidad de dropout y la paciencia, además de para todos los demás hiperparámetros.
- Ensamblados de modelos: Reducen la varianza promediando las predicciones de varios modelos entrenados de forma independiente. El dropout aproxima este tipo de ensamblado dentro de una única red: durante el entrenamiento, toma muestras de un número exponencial de subredes reducidas y, durante la prueba, ejecutar la red completa con todas las unidades activas aproxima el promedio de todas sus predicciones.










