🧮 Computational Mathematics

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

250 — Adam

avanzado clase 10 de 20 4 horas demostración adam

Adam combina momentum y escalado adaptativo, y corrige el sesgo del arranque.

Fórmulas

mₖ = β₁·mₖ₋₁ + (1−β₁)·g;   vₖ = β₂·vₖ₋₁ + (1−β₂)·g²
m̂ = mₖ/(1−β₁ᵏ);   v̂ = vₖ/(1−β₂ᵏ)
xₖ₊₁ = xₖ − lr·m̂ / (√v̂ + ε)

Desarrollo

Adam junta las dos ideas que funcionaban por separado: el primer momento m es la media móvil del gradiente, que es momentum, y el segundo momento v es la media móvil del gradiente al cuadrado, que es RMSProp. La actualización divide uno por la raíz del otro.

La aportación propia es la corrección de sesgo, y merece entenderse porque es la parte que más se copia sin comprender. Ambos acumuladores se inicializan a cero, así que en los primeros pasos están fuertemente sesgados hacia cero: con β₂ = 0,999, tras un paso v vale solo el 0,1 % del valor correcto. Dividir por 1 − βᵏ compensa exactamente ese arranque, y sin esa corrección los primeros pasos serían enormes.

Los valores por defecto —β₁ = 0,9, β₂ = 0,999, ε = 10⁻⁸— funcionan sorprendentemente bien en una variedad enorme de problemas, y esa robustez es la razón real de su dominio: se puede empezar a entrenar sin ajustar nada. Es el optimizador por defecto del aprendizaje profundo desde 2015.

No está libre de críticas. Hay problemas convexos donde Adam no converge, señalados por Reddi y otros en 2018, lo que motivó AMSGrad. Y en visión por computador el SGD con momentum bien ajustado suele generalizar mejor. Adam es el mejor punto de partida, no la respuesta final.

Ejemplo trabajado

Adam sobre el problema de referencia y la corrección de sesgo.

β₁ = 0,9    β₂ = 0,999    lr = 0,1    ε = 1e-8

resultado:
  x final = (−5,69e-05 ; −5,303e-05)
  f final = 5,95e-08

Por qué hace falta la corrección de sesgo:

  paso k    1 − β₂ᵏ      v subestima por factor
     1      0,001              1000×
    10      0,00995             100×
   100      0,0952               10×
  1000      0,632                1,6×

Sin corregir, los primeros pasos dividirían por una raíz
demasiado pequeña y el paso efectivo sería desmesurado.

Qué calcula el laboratorio

Adam: momentum de primer y segundo orden con corrección de sesgo.

python classes/part-12-optimizacion-matematica-y-computacional/250-adam/lab.py
compmath run 250

Salidas del laboratorio (9)

Muestra de la ejecución real

{
  "beta1": 0.9,
  "beta2": 0.999,
  "lr": 0.1,
  "eps": 1e-08,
  "resultado": {
    "x_final": [
      -5.69e-05,
      -5.303e-05
    ],
    "f_final": 5.9481e-08,
    "grad_norm_final": 0.002124240013,
    "historial": [
      {
        "iter": 1,
        "f": 171.8100000019,
        "|∇f|": 116.0622246904
      },
      {
        "iter": 10,
        "f": 82.1888770435,
        "|∇f|": 80.593591688
      },
      {
        "iter": 50,
        "f": 0.576217803,
        "|∇f|": 6.757304958
      },
      {
        "iter": 200,
        "f": 5.95e-08,
        "|∇f|": 0.00212424
      }
    ]
  },
  "por_que_la_correccion_de_sesgo": "m y v empiezan en 0 y subestiman los primeros pasos"
}

Errores comunes

Dónde se usa

Entrenamiento por defecto de redes profundas, ajuste fino de modelos de lenguaje, transformers y prácticamente todo el aprendizaje profundo actual.

Idea rectora de la parte

KKT generaliza Lagrange a restricciones de desigualdad.

Error a evitar

Comparar optimizadores sin fijar semilla ni presupuesto de iteraciones.

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