¿La implementación del Momentum de Nesterov en PyTorch está equivocada?

¿Está mal la implementación del Momentum de Nesterov en PyTorch?

El momentum ayuda a que el SGD atraviese paisajes de pérdida complejos de manera más eficiente. Foto de Maxim Berg en Unsplash.

Introducción

Si observas detenidamente la documentación de SGD en PyTorch, encontrarás que su implementación del momentum de Nesterov tiene algunas diferencias con respecto a la formulación encontrada en el artículo original. En particular, la implementación de PyTorch evalúa el gradiente en los parámetros actuales, mientras que el objetivo principal del momentum de Nesterov es evaluar el gradiente en parámetros desplazados. Desafortunadamente, parece que hay escasa discusión sobre estas discrepancias en internet. En esta publicación, examinaremos y explicaremos las diferencias entre la implementación de PyTorch y la formulación original del momentum de Nesterov. En última instancia, veremos cómo la implementación de PyTorch no está equivocada, sino que es una aproximación, y especularemos sobre los beneficios de su implementación.

Las Formulaciones

El artículo original describe el momentum de Nesterov utilizando las siguientes reglas de actualización:

donde v_{t+1} y θ_{t+1} son el vector de velocidad y los parámetros del modelo respectivamente en el tiempo t, μ es el factor de momentum y ε es la tasa de aprendizaje. La nota en la documentación de SGD en PyTorch indica que utilizan las siguientes reglas de actualización:

donde g_{t+1} representa el gradiente utilizado para calcular v_{t+1}. Podemos expandir la regla de actualización para θ_{t+1} de la siguiente manera:

De esto podemos inferir que:

y las reglas de actualización se convierten en:

Estas son las reglas de actualización que teóricamente utiliza PyTorch. Mencioné anteriormente que en realidad PyTorch evalúa el gradiente en los parámetros actuales en lugar de los parámetros desplazados. Esto se puede ver al observar la descripción del algoritmo en la documentación de SGD en PyTorch. Investigaremos esto más a fondo más adelante.

Nótese que tanto en las formulaciones original (1, 2) como en las de PyTorch (3, 4), si v_0 = 0, entonces la primera actualización de θ se convierte en:

Aunque la nota en la documentación de SGD en PyTorch indica que el algoritmo inicializa el buffer de momentum con el gradiente en el primer paso, más adelante demostraremos que esto implica v_0 = 0.

Diferencias Preliminares

Existen dos diferencias inmediatas al pasar de la formulación original (1, 2) a la formulación de PyTorch (3, 4):

  1. La tasa de aprendizaje se mueve fuera de v_{t+1}.
  2. En la regla de actualización para v_{t+1}, se agrega en lugar de restar el término que involucra el gradiente, y en la regla de actualización para θ_{t+1}, se resta en lugar de agregar el término que involucra el vector de velocidad. La diferencia de signo dentro del término del gradiente es simplemente una consecuencia de esto, como se muestra en la sección anterior.

Para comprender estas diferencias, primero expandamos las reglas de actualización. Como se insinúa aquí, el efecto de la primera diferencia es más evidente si consideramos programas de tasas de aprendizaje. Por lo tanto, consideramos una generalización de las reglas de actualización donde ε ya no es fijo, sino que puede variar con el tiempo, y denotamos ε_t como la tasa de aprendizaje en el paso de tiempo t. Por brevedad, definamos:

Suponiendo v_0 = 0, la formulación original se convierte en:

y la formulación de PyTorch se convierte en:

En la formulación original (6), si la tasa de aprendizaje cambiara en el tiempo t, solo la magnitud del término en i = t en la suma se vería afectada, y las magnitudes de todos los demás términos permanecerían iguales. Como resultado, la influencia inmediata del cambio en la tasa de aprendizaje es bastante limitada, y tendríamos que esperar a que el cambio en la tasa de aprendizaje se “filtre” a lo largo de los pasos de tiempo posteriores para tener una influencia más fuerte en el tamaño general del paso. En contraste, en la formulación de PyTorch (7), si la tasa de aprendizaje cambiara en el tiempo t, toda la magnitud del paso se vería afectada inmediatamente.

Para v_0 = 0, es claro a partir de las reglas expandidas que la segunda diferencia no tiene efecto alguno; en cualquier formulación, el paso resulta ser una suma ponderada de gradientes que se resta de los parámetros actuales.

Diferencias Principales

Ignorando la decaída de peso y el amortiguamiento, al analizar el algoritmo SGD en la documentación de PyTorch, podemos ver que las reglas de actualización implementadas son:

donde θ’_{t+1} son los parámetros del modelo en el tiempo t y

Nos referiremos a las ecuaciones 3 y 4 como la formulación “nota” de PyTorch, y a las ecuaciones 8 y 9 como la formulación “implementada” de PyTorch. Hacemos una distinción entre θ y θ’ por una razón que se hará evidente pronto. La diferencia más notable con respecto a la formulación de la nota es que el gradiente se evalúa en los parámetros actuales en lugar de los parámetros desplazados. Solo con esto, puede parecer que las reglas de actualización que implementa el algoritmo no son una implementación adecuada del momento de Nesterov.

Ahora examinaremos cómo el algoritmo de PyTorch aproxima finalmente el momento de Nesterov. Las derivaciones para una versión anterior de PyTorch se pueden encontrar aquí, de Ivo Danihelka, referenciado en este problema de GitHub. Las derivaciones para la versión actual de PyTorch se pueden encontrar aquí, las cuales son un ajuste relativamente sencillo de las derivaciones anteriores. Proporcionamos una representación en LaTeX de estas derivaciones (rederivadas) aquí para mayor comodidad del lector. La formulación implementada se deriva mediante un simple cambio de variables. Específicamente, permitimos que:

De inmediato queda claro que la regla de actualización de la nota para v_{t+1} (3) se vuelve equivalente a la regla de actualización implementada para v_{t+1} (8) después del cambio de variables. Ahora queremos derivar una regla de actualización para θ’_{t+1} en términos de θ’_t:

Esta es exactamente la regla de actualización que vimos implementada en PyTorch (9). En términos generales, la implementación de PyTorch asume que los parámetros actuales θ’_t ya son la versión desplazada de los parámetros “reales” θ_t. Por lo tanto, en cada paso de tiempo, los parámetros “reales” θ_t están relacionados con los parámetros actuales θ’_t por:

Sin embargo, parece que la implementación de SGD de PyTorch no realiza ninguna corrección al final del algoritmo para recuperar los parámetros finales “reales”, por lo que la salida final es técnicamente una aproximación de los parámetros “reales”.

Finalmente, ahora mostramos que v_0 debe ser 0:

Además, podemos confirmar que la primera actualización de los parámetros “reales” es la misma primera actualización realizada en la formulación original cuando v_0 = 0:

Podemos ver que esto es equivalente a la ecuación 5.

El Beneficio de la Formulación Implementada

Por supuesto, la gran pregunta que queda es: ¿Por qué se molesta PyTorch en reformular el momento de Nesterov de las ecuaciones 3 y 4 a las ecuaciones 8 y 9? Una posible explicación es que la reformulación podría proporcionar algunos ahorros en el número de operaciones aritméticas requeridas. Para evaluar esta posible explicación, contemos el número de operaciones aritméticas. Para la formulación de la nota (3, 4), tenemos:

Aquí, hay un total de siete operaciones. Para la formulación implementada (8, 9), tenemos:

Aquí, hay un total de seis operaciones. El segundo gradiente en la implementación de PyTorch solo utiliza el resultado guardado de la primera computación del gradiente, por lo que solo se realiza una computación de gradiente en cada paso de tiempo. Por lo tanto, un beneficio evidente es que la implementación de PyTorch reduce una operación de multiplicación adicional en cada paso.

Conclusión

En resumen:

  1. Las reglas de actualización indicadas en la documentación de PyTorch para SGD (3, 4) tienen una ubicación diferente para la tasa de aprendizaje en comparación con las reglas de actualización del momento de Nesterov original (1, 2). Esto permite que las programaciones de la tasa de aprendizaje tengan un efecto inmediato en el tamaño general del paso, mientras que la formulación original tendría el efecto de que los cambios en la tasa de aprendizaje se “filtren” en los pasos de tiempo siguientes.
  2. Las reglas de actualización implementadas en el algoritmo SGD de PyTorch (8, 9) son una aproximación de las reglas de actualización indicadas en la nota de documentación (3, 4) después de un simple cambio de variables. Aunque los parámetros “reales” son fácilmente recuperables a partir de los parámetros actuales en cada paso de tiempo, la implementación de PyTorch no realiza ninguna corrección al final del algoritmo, por lo que los parámetros finales siguen siendo técnicamente una aproximación de los parámetros finales “reales”.
  3. Un beneficio aparente de la implementación de PyTorch es que evita una operación adicional de multiplicación en cada paso de tiempo.

Referencias

  1. “SGD.” SGD — Documentación de PyTorch 2.0, pytorch.org/docs/stable/generated/torch.optim.SGD.html. Accedido el 2 de septiembre de 2023.
  2. Sutskever, Ilya, et al. “Sobre la importancia de la inicialización y el momentum en el aprendizaje profundo.” Conferencia Internacional de Aprendizaje Automático. PMLR, 2013.
  3. Danihelka, Ivo. “El Momentum de Nesterov hecho simple.” 25 de agosto de 2012.
  4. Chintala, Soumith. “nesterov momentum is wrong in sgd · Issue #27 · torch/optim.” GitHub, 13 de octubre de 2014, github.com/torch/optim/issues/27.
  5. Gross, Sam. “Agregar una nota en la documentación sobre la formulación del momentum utilizada en optim · Issue #1099 · pytorch/pytorch.” GitHub, 25 de marzo de 2017, github.com/pytorch/pytorch/issues/1099#issuecomment-289190614.
  6. Zhao, Yilong. “Corregir el error del Momentum de Nesterov · Issue #5920 · pytorch/pytorch.” GitHub, 21 de marzo de 2018, https://github.com/pytorch/pytorch/pull/5920#issuecomment-375181908.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Conoce a RoboPianist una nueva suite de referencia para el control de alta dimensionalidad en el dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del dominio del

El proceso de medición en los dominios del control y el aprendizaje por refuerzo es bastante desafiante. Un área part...

Noticias de Inteligencia Artificial

La tecnología tiene como objetivo prevenir caídas en los ancianos.

El proyecto Move More Live More en Irlanda del Norte tiene como objetivo prevenir caídas en personas mayores al prede...

Inteligencia Artificial

Técnica de Machine Learning Mejor para Predecir Tasas de Cura del Cáncer

Un modelo de aprendizaje automático desarrollado por investigadores de la Universidad de Texas en Arlington (UTA) pue...

Inteligencia Artificial

Microsoft AI propone MM-REACT un paradigma del sistema que combina ChatGPT y expertos en visión para un razonamiento y acción multimodal avanzados.

Los Grandes Modelos de Lenguaje (LLMs) están avanzando rápidamente y contribuyendo a transformaciones económicas y so...

Investigación

Los investigadores utilizan la IA para identificar materiales similares en imágenes.

Este método de aprendizaje automático podría ayudar en la comprensión de escenas robóticas, la edición de imágenes o ...