8 · Optimizadores: SGD → Momentum → AdaGrad → RMSProp → Adam
Construye Adam desde cero, visualiza momentum en una superficie de silla y entiende por qué Adam es el estándar moderno.
Los optimizadores perfeccionan el SGD puro: momentum añade velocidad, AdaGrad escala por parámetro, RMSProp corrige la caída de AdaGrad, Adam combina momentum + RMSProp. Adam es el estándar moderno.
Sin esto:
Entrenas con SGD puro y tasas de aprendizaje que funcionan para ALGUNOS parámetros pero no para todos.
El SGD puro actualiza cada peso con la misma tasa de aprendizaje: θ ← θ - lr * gradiente. Simple y correcto en teoría — pero en la práctica tiene dos problemas:
- Misma tasa de aprendizaje para todos los parámetros: los pesos conectados a características raras (en NLP: palabras poco frecuentes) necesitan actualizaciones más grandes; las características comunes necesitan más pequeñas.
- Sin memoria: cada paso ignora la dirección de los pasos anteriores. El optimizador zigzaguea en direcciones de alta curvatura en lugar de descender suavemente.
La evolución de los optimizadores resolvió ambos:
- SGD + Momentum — añade un vector de "velocidad" que acumula dirección. Menos oscilaciones, convergencia más rápida en superficies de pérdida suaves.
- AdaGrad — adapta lr por parámetro basándose en gradientes cuadrados acumulados. Parámetros que reciben gradientes grandes obtienen lr más pequeño. Problema: lr decae a ~0 con el tiempo.
- RMSProp — usa una media móvil exponencial de gradientes cuadrados en lugar de una suma. Corrige el lr decayente de AdaGrad.
- Adam (Estimación de Momento Adaptativo) — combina momentum (primer momento) con RMSProp (segundo momento) + corrección de sesgo. El estándar moderno para casi toda red.
- AdamW — Adam + regularización por peso correcta. Estándar actual para Transformers.
El árbol genealógico de optimizadores: SGD → Momentum → AdaGrad → RMSProp → Adam → AdamW
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Manual de selección de optimizadores: cuándo usar Adam, AdamW, SGD+Momentum, RMSProp
Descenso de gradiente — la base matemática sobre la que construye todo optimizador
El β₁ de Adam controla la media móvil de...?
- SGD es la base; momentum añade velocidad (reduce oscilaciones); AdaGrad adapta lr por parámetro; RMSProp corrige el decaimiento de AdaGrad; Adam = momentum + RMSProp + corrección de sesgo.
- La regla de actualización de Adam: `θ -= lr * (m/√v)` donde m es EMA del gradiente (β₁=0.9) y v es EMA del gradiente cuadrado (β₂=0.999), ambos con corrección de sesgo.
- Adam = estándar moderno para la mayoría de tareas; AdamW = estándar moderno para Transformers; SGD+Momentum sigue siendo competitivo para CV a gran escala.
- La corrección de sesgo (dividir por `1 - β^t`) es crítica en los primeros ~100 pasos para corregir el sesgo de inicialización en cero de m y v.
Todo script de entrenamiento de PyTorch comienza con `optim.Adam(model.parameters(), lr=1e-3)`. Saber qué hay DENTRO del optimizador te permite depurar 'por qué no converge mi modelo'.
Si lo quitas: Tratarías el optimizador como un botón mágico — incapaz de diagnosticar por qué la pérdida se estanca, por qué el modelo diverge en los primeros pasos o por qué diferentes parámetros necesitan distintas tasas de aprendizaje.