Inicio · Parte 12 — Optimización matemática y computacional
Gₖ = Gₖ₋₁ + ∇f(xₖ)² (por coordenada)
xₖ₊₁ = xₖ − lr·∇f(xₖ) / (√Gₖ + ε)
el paso decrece monótonamente
AdaGrad abandona la idea de un learning rate único para todas las coordenadas. Acumula para cada una la suma de sus gradientes al cuadrado y divide el paso por su raíz. Las coordenadas con gradientes históricamente grandes reciben pasos pequeños; las que apenas se han movido reciben pasos grandes.
Esto resuelve un problema real en datos dispersos. En procesamiento de lenguaje, unas pocas palabras aparecen constantemente y la mayoría casi nunca. Con learning rate único, los embeddings de las palabras raras apenas se actualizan. AdaGrad les da pasos grandes precisamente porque han acumulado poco, y por eso funcionó tan bien en su momento.
El defecto es estructural y no tiene arreglo dentro del método: el acumulador es una suma de términos no negativos y por tanto solo crece. El paso efectivo decrece monótonamente hacia cero, y en entrenamientos largos el aprendizaje se detiene aunque el modelo esté lejos del óptimo. No es un problema de ajuste; es una consecuencia de la fórmula.
El diagnóstico de ese defecto llevó directamente a RMSProp, que sustituye la suma por una media móvil exponencial y por tanto olvida el pasado lejano. AdaGrad conserva interés histórico y sigue siendo razonable en problemas convexos dispersos con horizontes cortos.
Evolución del tamaño de paso a lo largo de las iteraciones.
lr base = 0,5
iteración tamaño de paso efectivo
1 0,7071
50 0,1004
100 0,0710
200 0,0502
El paso cae como 1/√k y no vuelve a subir nunca.
Resultado sobre x² + 20y²:
x final = (−0,0 ; 2,2e-07) f final = 1e-12
Aquí converge porque el problema es fácil y corto.
En un entrenamiento de 100 000 pasos, el paso efectivo
caería a menos del 1 % del inicial.
AdaGrad adapta el paso por coordenada, pero se apaga.
python classes/part-12-optimizacion-matematica-y-computacional/248-adagrad/lab.py
compmath run 248
learning_rate_baseresultadotamaño_de_paso_por_iteracionel_paso_decrece_monotonamenteproblemasolucion{
"learning_rate_base": 0.5,
"resultado": {
"x_final": [
-0.0,
2.2e-07
],
"f_final": 1e-12,
"grad_norm_final": 8.920039e-06,
"historial": [
{
"iter": 1,
"f": 127.2500000079,
"|∇f|": 100.0449898813
},
{
"iter": 10,
"f": 19.775723857,
"|∇f|": 39.6932839328
},
{
"iter": 50,
"f": 0.0294453749,
"|∇f|": 1.5348019372
},
{
"iter": 200,
"f": 0.0,
"|∇f|": 8.92e-06
}
]
},
"tamaño_de_paso_por_iteracion": [
{
"iter": 1,
"tamaño_de_paso": 0.7071067803
},
{
"iter": 50,
"tamaño_de_paso": 0.003212382
},
{
"iter": 200,
"tamaño_de_paso": 1.87e-08
}
],
"el_paso_decrece_monotonamente": true,
"problema": "el acumulador solo crece: el aprendizaje termina deteniéndose",
"solucion": "RMSProp introduce olvido exponencial"
}
Modelos con datos dispersos, embeddings de vocabularios grandes, sistemas de recomendación y problemas convexos con horizonte corto.
AdamW es el optimizador por defecto del entrenamiento moderno; entender su actualización explica el weight decay, el warmup y el gradient clipping.
9780262337373 verificado en International ISBN Agency (2026-08-19).