Inicio · Parte 12 — Optimización matemática y computacional
Adam + L2: g ← g + λ·w, luego se divide por √v̂
AdamW: xₖ₊₁ = xₖ − lr·m̂/(√v̂+ε) − lr·λ·xₖ
en SGD ambas formas coinciden; en Adam no
En el descenso de gradiente clásico, añadir λ‖w‖² al objetivo y decaer los pesos multiplicándolos por (1 − lr·λ) son operaciones idénticas. Esa equivalencia es tan familiar que se dio por válida también en Adam durante años, y era falsa.
La razón es el escalado adaptativo. En Adam, el término λ·w que se suma al gradiente pasa por la división entre √v̂, igual que el resto del gradiente. El resultado es que los pesos con gradientes históricamente grandes reciben menos regularización, exactamente al revés de lo que se pretendía. La intensidad de la regularización pasa a depender del historial de gradientes de cada coordenada.
AdamW aplica el decaimiento directamente sobre el peso, fuera del mecanismo adaptativo. Cada parámetro recibe la misma proporción de decaimiento independientemente de su gradiente, que es lo que se quería desde el principio. El cambio en el código es de una línea; el efecto en el rendimiento fue lo bastante grande como para convertirlo en el estándar.
Hoy AdamW es el optimizador por defecto para transformers y modelos de lenguaje. La lección metodológica va más allá del caso: una equivalencia válida en un algoritmo puede romperse en otro, y trasladar intuiciones sin verificarlas cuesta caro. Este error concreto estuvo en producción desde 2015 hasta 2019.
Mismo objetivo y mismo weight decay, dos implementaciones.
objetivo: (x−3)² + (y−4)² óptimo sin regularizar: (3, 4)
weight decay λ = 0,05
Adam con L2 dentro del gradiente:
solución = (2,926829 ; 3,902440) norma = 4,87805
AdamW con decay desacoplado:
solución = (2,918662 ; 3,830002) norma = 4,80800
AdamW regulariza más y de forma uniforme.
La diferencia crece con la dispersión de los gradientes:
aquí es del 1,4 %, en un transformer real es suficiente
para cambiar la calidad del modelo de forma medible.
AdamW desacopla el weight decay del gradiente adaptativo.
python classes/part-12-optimizacion-matematica-y-computacional/251-adamw/lab.py
compmath run 251
objetivooptimo_sin_regularizacionweight_decayadam_con_L2_en_el_gradienteadamw_desacopladonorma_adam_L2norma_adamwdiferenciareferencia{
"objetivo": "(x-3)² + (y-4)²",
"optimo_sin_regularizacion": [
3.0,
4.0
],
"weight_decay": 0.05,
"adam_con_L2_en_el_gradiente": [
2.926829,
3.90244
],
"adamw_desacoplado": [
2.918662,
3.830002
],
"norma_adam_L2": 4.87805
}
Entrenamiento de transformers, ajuste fino de modelos de lenguaje, recetas de regularización moderna y reproducción de resultados publicados.
AdamW es el optimizador por defecto del entrenamiento moderno; entender su actualización explica el weight decay, el warmup y el gradient clipping.
10.48550/arxiv.1711.05101 verificado en DataCite (2026-08-19).10.48550/arxiv.1412.6980 verificado en DataCite (2026-08-19).