Inicio · Parte 12 — Optimización matemática y computacional
Eₖ = ρ·Eₖ₋₁ + (1−ρ)·∇f(xₖ)²
xₖ₊₁ = xₖ − lr·∇f(xₖ) / (√Eₖ + ε)
ρ = 0,9 equivale a recordar unos 10 pasos
RMSProp aplica una corrección mínima a AdaGrad con consecuencias grandes: en vez de sumar todos los gradientes al cuadrado, mantiene una media móvil exponencial. Los gradientes antiguos se descuentan geométricamente y el acumulador puede bajar además de subir.
Eso resuelve el apagado. Si una coordenada tuvo gradientes grandes al principio y luego se calmó, AdaGrad la mantiene penalizada para siempre mientras que RMSProp la libera. El método se adapta al régimen actual del entrenamiento en vez de a toda su historia, que es lo apropiado en problemas no estacionarios como el aprendizaje profundo.
El parámetro ρ fija la longitud de la memoria: con ρ = 0,9 la ventana efectiva es de unos 10 pasos, con 0,99 de unos 100. El valor por defecto funciona en la mayoría de los casos y rara vez merece ajustarse. El ε en el denominador evita divisiones por cero y típicamente vale 10⁻⁸.
RMSProp tiene una peculiaridad histórica: nunca se publicó como artículo. Apareció en una diapositiva del curso de Hinton en Coursera en 2012 y se citó así durante años. Su combinación con momentum es lo que da Adam, que es la clase siguiente.
RMSProp y AdaGrad con el mismo learning rate.
ρ = 0,9 ε = 1e-8 mismo lr para ambos
RMSProp:
x final = (0,02310943 ; 0,01786889)
f final = 0,00692
AdaGrad con el mismo lr:
x final = (−0,85543159 ; 1,78114968)
f final = 64,18
AdaGrad se quedó atascado: su paso se apagó antes
de llegar al mínimo.
Diferencia única entre ambos:
AdaGrad: G += g² suma que solo crece
RMSProp: E = ρE + (1−ρ)g² media que puede bajar
RMSProp: media móvil del gradiente al cuadrado.
python classes/part-12-optimizacion-matematica-y-computacional/249-rmsprop/lab.py
compmath run 249
rhoepsilonrmspropadagrad_mismo_lrrmsprop_mejordiferenciael_paso_no_se_apaga{
"rho": 0.9,
"epsilon": 1e-08,
"rmsprop": {
"x_final": [
0.02310943,
0.01786889
],
"f_final": 0.0069199898,
"grad_norm_final": 0.716248356998,
"historial": [
{
"iter": 1,
"f": 164.9188785163,
"|∇f|": 113.7351172743
},
{
"iter": 10,
"f": 96.5034733978,
"|∇f|": 87.232992701
},
{
"iter": 50,
"f": 6.4799384772,
"|∇f|": 22.7638190226
},
{
"iter": 200,
"f": 0.0069199898,
"|∇f|": 0.716248357
}
]
},
"adagrad_mismo_lr": {
"x_final": [
-0.85543159,
1.78114968
],
"f_final": 64.181646587267,
"grad_norm_final": 71.26652596864,
"historial": [
{
"iter": 1,
"f": 177.852500001,
"|∇f|": 118.0644315619
},
{
"iter": 10,
"f": 154.6712872777,
"|∇f|": 110.1796578053
},
{
"iter": 50,
"f": 116.173506485,
"|∇f|": 95.6241445694
},
{
"iter": 200,
"f": 64.1816465873,
"|∇f|": 71.2665259686
}
]
},
"rmsprop_mejor": true,
"diferencia": "media móvil frente a suma acumulada"
}
Entrenamiento de redes recurrentes, aprendizaje por refuerzo, objetivos no estacionarios y componente de segundo momento en Adam.
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).