SGD con momento es una variante del descenso de gradiente estocástico (SGD) que incorpora un término de momento para acelerar la convergencia y estabilizar las actualizaciones. El SGD estándar actualiza los parámetros utilizando únicamente el gradiente del mini-lote actual, que puede ser ruidoso y provocar movimientos erráticos. El momento aborda esto manteniendo un promedio móvil de los gradientes pasados, suavizando efectivamente la dirección de actualización y amortiguando las oscilaciones. Esta técnica, inspirada en el momento físico, permite al optimizador ganar velocidad en direcciones consistentes y atravesar valles de manera más eficiente, particularmente en paisajes de pérdida mal condicionados comunes en el aprendizaje profundo.
La idea central se remonta a la optimización clásica y fue popularizada en el entrenamiento de redes neuronales por el investigador de Berkeley Bernard Widrow y otros en la década de 1980, aunque la formulación específica ampliamente utilizada hoy fue introducida por el profesor de Carnegie Mellon Geoffrey Hinton en su artículo de 1986 'Learning representations by back-propagating errors' y posteriormente refinada en sus notas de clase de 2012. El método se ha convertido en una herramienta estándar para entrenar redes neuronales profundas, sirviendo a menudo como línea base contra la cual se comparan optimizadores más nuevos como Adam.
Formulación Matemática
En el SGD estándar, la actualización de parámetros en la iteración \( t \) es:
\[ w_{t+1} = w_t - \eta \nabla Q_i(w_t) \]
donde \( \eta \) es la tasa de aprendizaje y \( \nabla Q_i(w_t) \) es el gradiente calculado a partir de un mini-lote de muestras. Con momento, se introduce una variable de velocidad adicional \( v \), y la actualización se convierte en:
\[ v_{t+1} = \mu v_t + \eta \nabla Q_i(w_t) \]
\[ w_{t+1} = w_t - v_{t+1} \]
Aquí, \( \mu \) (típicamente entre 0.5 y 0.9) es el coeficiente de momento, que controla cuánto de la velocidad anterior se retiene. Un \( \mu \) más alto da más peso a los gradientes pasados, lo que lleva a actualizaciones más suaves pero potencialmente más lentas en la adaptación a nuevas direcciones de gradiente. La velocidad acumula gradientes a lo largo del tiempo, por lo que si el gradiente apunta consistentemente en la misma dirección, el tamaño del paso crece, acelerando el progreso. Por el contrario, si los gradientes oscilan, el término de momento los promedia, reduciendo la vibración.
Intuición y Analogía
El nombre 'momento' proviene de la física: una bola que rueda cuesta abajo gana velocidad y resiste cambios de dirección debido a su masa. En optimización, el vector de velocidad actúa como el momento de la bola, permitiendo al optimizador 'rodar sobre' pequeñas fluctuaciones locales y continuar en una dirección consistente. Esto es particularmente útil en superficies de pérdida con valles largos y estrechos donde el SGD estándar zigzaguea a través de las paredes del valle. El momento ayuda al optimizador a moverse a lo largo del fondo del valle de manera más directa, reduciendo el número de iteraciones necesarias para alcanzar el mínimo.
Variantes y Extensiones
Se han desarrollado varias variantes del momento. El gradiente acelerado de Nesterov (NAG), introducido por Yurii Nesterov en 1983, es una versión de anticipación que calcula el gradiente en la posición después de aplicar la velocidad actual, en lugar de en la posición actual. Esta 'mirada' permite al NAG corregir su curso más rápidamente, a menudo llevando a una convergencia más rápida que el momento clásico. En el aprendizaje profundo, el NAG a veces se llama 'momento de Nesterov' y está implementado en bibliotecas como TensorFlow y PyTorch.
Otro concepto relacionado es el momento de bola pesada, que es esencialmente el momento clásico descrito anteriormente. El término 'bola pesada' proviene de la analogía de una bola pesada rodando sobre una superficie, y a veces se usa indistintamente con 'momento' en la literatura de optimización.
Papel en el Entrenamiento de Aprendizaje Profundo
En la práctica, el SGD con momento se usa ampliamente para entrenar redes neuronales, incluyendo modelos de lenguaje grandes y transformadores. Por ejemplo, OpenAI y Google DeepMind han informado el uso de optimizadores basados en momento en varios ejecuciones de entrenamiento. El método ayuda a estabilizar el entrenamiento cuando se usan mini-lotes grandes y programas de tasa de aprendizaje, ya que el término de velocidad suaviza el ruido del gradiente entre lotes. También es común combinar el momento con programas de tasa de aprendizaje que decaen la tasa de aprendizaje con el tiempo, permitiendo al optimizador dar pasos iniciales grandes y luego ajustar finamente.
Comparación con Adam
El optimizador Adam, introducido en 2015, extiende el momento manteniendo tasas de aprendizaje adaptativas separadas para cada parámetro, combinando el momento con un escalado por parámetro. Adam a menudo converge más rápido en la práctica, especialmente para gradientes dispersos u objetivos ruidosos, pero el SGD con momento puede generalizar mejor en algunas tareas, particularmente en visión por computadora. Muchos profesionales usan SGD con momento como opción predeterminada para redes convolucionales y Adam para transformadores, aunque la elección depende del problema específico. La investigación ha mostrado que el SGD con momento puede lograr una precisión de prueba comparable o superior cuando se ajusta adecuadamente, especialmente con inicialización de pesos y normalización por lotes.
Propiedades de Convergencia
Teóricamente, el SGD con momento conserva las garantías de convergencia del SGD estándar bajo supuestos de convexidad. Para objetivos convexos, con una tasa de aprendizaje decreciente que satisface las condiciones de Robbins-Monro, el algoritmo converge casi seguramente a un mínimo global. Para objetivos no convexos, converge a un mínimo local o punto estacionario. El término de momento no cambia la tasa de convergencia asintótica pero puede mejorar los factores constantes, lo que significa que a menudo alcanza una precisión dada en menos iteraciones. Sin embargo, elegir el coeficiente de momento correcto es crucial; un valor demasiado alto puede causar sobrepaso y divergencia, mientras que un valor demasiado bajo reduce el beneficio.
Consideraciones Prácticas
Al implementar SGD con momento, varios detalles prácticos importan. El coeficiente de momento a menudo se establece en 0.9 como valor predeterminado, pero valores como 0.95 o 0.99 se usan para redes muy profundas. Algunas implementaciones usan un programa de momento que aumenta \( \mu \) durante el entrenamiento, comenzando bajo y aumentando gradualmente. Además, el momento interactúa con recorte de gradiente: recortar los gradientes antes de aplicar la actualización de momento evita que la velocidad crezca demasiado, lo cual es importante para entrenar redes recurrentes o modelos con gradientes inestables. En el entrenamiento distribuido, el momento puede implementarse de manera síncrona o asíncrona, siendo el momento síncrono más común para la reproducibilidad.
Contexto Histórico
El concepto de momento en optimización precede al aprendizaje profundo. En la década de 1960, Bernard Widrow y Ted Hoff desarrollaron el filtro de mínimos cuadrados medios, que usaba una forma de momento en sus actualizaciones. La formulación moderna para redes neuronales a menudo se atribuye al trabajo de Geoffrey Hinton de 1986, donde describió el 'método de momento' como una forma de acelerar la retropropagación. Desde entonces, se ha convertido en un elemento básico en las bibliotecas de aprendizaje automático, con implementaciones en scikit-learn, TensorFlow y PyTorch. Su simplicidad y efectividad han asegurado su relevancia continua a pesar de la proliferación de optimizadores más complejos.