Adam mantiene dos promedios móviles por parámetro: el primer momento (media de gradientes — momentum) y el segundo momento (media de gradientes al cuadrado — escalado adaptativo). La regla de actualización: parámetro -= lr × m̂ / (√v̂ + ε), donde m̂ y v̂ son momentos corregidos por sesgo. Los parámetros con gradientes consistentemente grandes reciben actualizaciones más pequeñas (ya están bien calibrados). Los parámetros con gradientes pequeños y ruidosos reciben actualizaciones más grandes (necesitan movimiento más agresivo).
El Adam original aplicaba weight decay agregándolo al gradiente antes de calcular los momentos, lo que causaba que el decay fuera escalado por la tasa de aprendizaje adaptativa — no lo que quieres. AdamW (Loshchilov & Hutter, 2017) desacopla el weight decay de la actualización de gradiente, aplicándolo directamente a los parámetros. Esto parece una corrección menor pero mejora significativamente la generalización. Todo el entrenamiento de LLMs modernos usa AdamW.
Adam almacena dos valores adicionales por parámetro (primer y segundo momentos), triplicando la memoria necesaria para el estado del optimizador: un modelo de 70B necesita ~140 GB para pesos (FP16) más ~280 GB para estados de Adam (FP32), totalizando ~420 GB. Por eso el sharding de estado del optimizador (DeepSpeed ZeRO, FSDP) es esencial para el entrenamiento de modelos grandes. Algunos optimizadores más nuevos (Adafactor, CAME, Lion) reducen esta sobrecarga de memoria a costa de cierta estabilidad.