El gradiente acelerado de Nesterov (NAG)
Índice de contenidos
- Puntos clave
- ¿Qué mejora Nesterov sobre el momentum?
- El paso de anticipación (lookahead)
- La fórmula
- La ventaja en la convergencia
- Nesterov frente al momentum clásico
- Preguntas frecuentes
- ¿En qué se diferencia Nesterov del momentum clásico?
- ¿Qué valor de β conviene usar?
- ¿Nesterov siempre converge más rápido?
- Conclusión
- Fuentes
El gradiente acelerado de Nesterov mejora el momentum clásico calculando el gradiente en un punto adelantado, el que la inercia va a alcanzar, en lugar del punto actual. Ese paso de anticipación corrige la trayectoria antes de pasarse y logra una convergencia O(1/k²) en problemas convexos suaves, la más rápida posible para un método de primer orden.
El gradiente acelerado de Nesterov mira un paso hacia delante antes de decidir hacia dónde ir. El momentum clásico acumula inercia y calcula el gradiente en la posición actual; Nesterov calcula ese gradiente en el punto que la inercia está a punto de alcanzar. Ese pequeño cambio de orden convierte la inercia en una fuerza que se corrige a sí misma antes de pasarse, y con ello acelera la convergencia sin coste adicional apreciable. Esta guía forma parte del mapa de matemáticas de las redes neuronales, y la misma explicación está disponible en inglés.
Puntos clave
- El gradiente acelerado de Nesterov (NAG) evalúa el gradiente en un punto de anticipación, $w-\eta\beta v$, en lugar de en el punto actual $w$.
- Ese paso de anticipación (lookahead) actúa como una corrección: frena antes de pasarse de largo cuando la inercia apunta en mala dirección.
- Yurii Nesterov lo presentó en 1983 con una garantía de convergencia $O(1/k^2)$ para funciones convexas suaves, frente al $O(1/k)$ del descenso de gradiente básico.
- Para funciones fuertemente convexas, NAG reduce el número de iteraciones de un factor proporcional al número de condición $\kappa$ a uno proporcional a su raíz cuadrada $\sqrt{\kappa}$.
- En la práctica se usa con un coeficiente de momentum $\beta$ en torno a 0,9 y comparte casi todo el código con el momentum clásico.
¿Qué mejora Nesterov sobre el momentum?
El momentum clásico, propuesto por Boris Polyak en 1964 y conocido como método de la bola pesada, añade inercia al descenso de gradiente. En cada iteración acumula una velocidad $v$ que mezcla el gradiente nuevo con la dirección anterior, y así atraviesa las zonas planas más rápido y amortigua las oscilaciones en los valles estrechos.
Su punto débil es que decide el paso mirando solo dónde está ahora. Si la inercia acumulada ya apunta hacia una zona donde el terreno cambia, el momentum clásico no lo sabe hasta que llega y, con frecuencia, se pasa de largo. Nesterov corrige justo eso: primero da el salto que dicta la inercia y solo entonces mide la pendiente, de modo que el gradiente ya refleja el terreno del destino y no el del origen.
El paso de anticipación (lookahead)
La idea intuitiva es sencilla. Antes de calcular el gradiente, Nesterov desplaza los pesos al punto que la inercia va a visitar de todas formas, $w-\eta\beta v$, y evalúa la pendiente ahí. Ese punto adelantado es una mirada al futuro inmediato de la trayectoria.
Cuando la anticipación revela que el descenso se está pasando de largo, el gradiente en ese punto apunta hacia atrás y frena la velocidad antes de acumular el error. Como resume Sebastian Ruder en su repaso de los métodos de optimización, «Nesterov accelerated gradient (NAG) is a way to give our momentum term this kind of prescience». Esa previsión es lo que evita las oscilaciones más aparatosas del momentum clásico.
La fórmula
Partiendo de la velocidad $v$, la tasa de aprendizaje $\eta$ y el coeficiente de momentum $\beta$, cada iteración de NAG se escribe así:
$$vt = \beta v{t-1} + \nabla L(w-\eta\beta v_{t-1})$$
$$w = w-\eta v_t$$
La primera línea evalúa el gradiente en el punto adelantado $w-\eta\beta v_{t-1}$ y la segunda actualiza los pesos con la velocidad ya corregida. Compara la segunda pieza con el momentum clásico, que evalúa $\nabla L(w)$ en el punto actual. El único cambio es el argumento del gradiente: $w-\eta\beta v$ en lugar de $w$. La tasa de aprendizaje $\eta$ sigue controlando el tamaño del paso, y $\beta$ pondera cuánta inercia se arrastra de una iteración a la siguiente.
En las bibliotecas modernas suele aparecer una versión reescrita (la forma de Sutskever y Bengio, popularizada en 2013) que evita recalcular los pesos en dos puntos distintos, pero es algebraicamente equivalente a esta.
La ventaja en la convergencia
La razón por la que Nesterov importa no es solo empírica. Para una función convexa y suave (con gradiente Lipschitz), el descenso de gradiente reduce el error a un ritmo $O(1/k)$ tras k iteraciones. El método de Nesterov lo baja a $O(1/k^2)$: con 100 iteraciones, la cota de error pasa de escalar como 1/100 a escalar como 1/10.000.
Ese $O(1/k^2)$ no es una mejora cualquiera. Nesterov demostró que es la velocidad óptima que puede alcanzar cualquier método que solo use gradientes de primer orden en esta clase de problemas, así que no hay margen para hacerlo mejor sin información adicional. Para funciones fuertemente convexas la ganancia se traduce en pasar de un número de iteraciones proporcional a $\kappa$ a uno proporcional a $\sqrt{\kappa}$, donde $\kappa$ es el número de condición: si $\kappa$ vale 10.000, la raíz lo reduce a 100.
El límite $O(1/k^2)$ es una cota en el peor caso para funciones convexas suaves; en una red neuronal real, que no es convexa, describe una tendencia práctica y no una garantía.
Nesterov frente al momentum clásico
En una red neuronal real la pérdida no es convexa, así que las garantías teóricas no se cumplen al pie de la letra. Aun así, la intuición del punto adelantado se traslada bien: NAG tiende a producir trayectorias más estables y a tolerar tasas de aprendizaje algo mayores, porque el freno anticipado contiene las oscilaciones.
La diferencia de código es mínima. Si ya tienes momentum, pasar a Nesterov es cambiar el punto donde evalúas el gradiente, nada más. Por eso muchos optimizadores lo ofrecen como una simple bandera, nesterov=True, y Adam incorpora la misma idea en su variante Nadam. Cuando el momentum clásico se queda corto por culpa de las oscilaciones, Nesterov suele ser el primer ajuste que conviene probar.
Preguntas frecuentes
¿En qué se diferencia Nesterov del momentum clásico?
En dónde se calcula el gradiente. El momentum clásico lo evalúa en la posición actual $w$; Nesterov lo evalúa en el punto adelantado $w-\eta\beta v$, el que la inercia va a alcanzar. Esa anticipación permite frenar antes de pasarse de largo.
¿Qué valor de β conviene usar?
Un coeficiente de momentum entre 0,9 y 0,99 funciona bien en la mayoría de los casos, siendo 0,9 el valor por defecto habitual. Cuanto más alto es $\beta$, más inercia se arrastra y más importante se vuelve la corrección anticipada de Nesterov.
¿Nesterov siempre converge más rápido?
En problemas convexos suaves sí, con la garantía $O(1/k^2)$. En redes neuronales, que no son convexas, la mejora es empírica y no está garantizada, aunque en la práctica suele ofrecer trayectorias más estables que el momentum clásico.
Conclusión
El gradiente acelerado de Nesterov es un ejemplo raro de mejora que casi no cuesta nada: un solo cambio en el argumento del gradiente convierte la inercia en una fuerza que se autocorrige y lleva la convergencia de $O(1/k)$ a $O(1/k^2)$ en el caso convexo. Es el puente natural entre el momentum clásico y optimizadores adaptativos como Adam, y encaja en el recorrido general del mapa de matemáticas de las redes neuronales.