🧮 Computational Mathematics

Inicio · Parte 12 — Optimización matemática y computacional

251 — AdamW

avanzado clase 11 de 20 4 horas demostración adamw

En Adam, sumar L2 al gradiente no es lo mismo que decaer el peso: AdamW los separa.

Fórmulas

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

Desarrollo

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.

Ejemplo trabajado

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.

Qué calcula el laboratorio

AdamW desacopla el weight decay del gradiente adaptativo.

python classes/part-12-optimizacion-matematica-y-computacional/251-adamw/lab.py
compmath run 251

Salidas del laboratorio (9)

Muestra de la ejecución real

{
  "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
}

Errores comunes

Dónde se usa

Entrenamiento de transformers, ajuste fino de modelos de lenguaje, recetas de regularización moderna y reproducción de resultados publicados.

Idea rectora de la parte

En un problema convexo todo mínimo local es global; fuera de él no hay garantía.

Error a evitar

Aplicar weight decay dentro del gradiente en Adam (y no como AdamW).

Conexión con IA

AdamW es el optimizador por defecto del entrenamiento moderno; entender su actualización explica el weight decay, el warmup y el gradient clipping.

Bibliografía de la clase

Archivos de la clase