El descenso de gradiente estocástico (SGD, por sus siglas en inglés) es un método de optimización iterativo que aproxima el descenso de gradiente utilizando un subconjunto de datos seleccionado aleatoriamente para estimar el gradiente. Se han desarrollado variantes de SGD para abordar sus limitaciones, como la convergencia lenta y la sensibilidad a la tasa de aprendizaje. Estas variantes incluyen el momento, el gradiente acelerado de Nesterov, AdaGrad, RMSProp y métodos adaptativos modernos como Adam, que se utilizan ampliamente en el Machine learning y el Deep learning para entrenar modelos de manera eficiente.
La idea central de SGD se remonta al algoritmo de Robbins-Monro de la década de 1950, que introdujo la aproximación estocástica para la búsqueda de raíces. En el aprendizaje automático, SGD minimiza una función de costo que típicamente es una suma de funciones de pérdida por ejemplo. La regla de actualización básica es \( w := w - \eta \
abla Q_i(w) \), donde \( \eta \) es la tasa de aprendizaje y \( Q_i \) es la pérdida para la \( i \)-ésima muestra. Aunque simple, esta actualización puede ser lenta para converger y puede oscilar, especialmente en regiones de la superficie de pérdida con forma de barranco. Las variantes abordan estos problemas modificando la dirección de actualización, la tasa de aprendizaje o ambos.
Momento
El momento es una técnica que acelera SGD acumulando un vector de velocidad en la dirección de los gradientes persistentes. Introducido por Boris Polyak en 1964, el momento imita la inercia física: la actualización en el paso \( t \) es \( v_t = \mu v_{t-1} - \eta \
abla Q_i(w_t) \) y \( w_{t+1} = w_t + v_t \), donde \( \mu \) es el coeficiente de momento (a menudo 0.9). Esto ayuda al optimizador a moverse más rápido a lo largo de direcciones consistentes y amortigua las oscilaciones en regiones de alta curvatura. El momento es particularmente efectivo para entrenar redes profundas, ya que suaviza las estimaciones de gradiente ruidosas.
Gradiente Acelerado de Nesterov
El gradiente acelerado de Nesterov (NAG, por sus siglas en inglés) es una variante que añade un paso de anticipación. Propuesto por Yurii Nesterov en 1983, NAG calcula el gradiente en la posición proyectada \( w_t + \mu v_{t-1} \) en lugar de en la posición actual. La actualización se convierte en \( v_t = \mu v_{t-1} - \eta \
abla Q_i(w_t + \mu v_{t-1}) \) y \( w_{t+1} = w_t + v_t \). Esta corrección reduce el sobreimpulso y proporciona una estimación más precisa del gradiente futuro, lo que lleva a una convergencia más rápida en entornos convexos. NAG se utiliza a menudo en el entrenamiento de redes neuronales y se ha incorporado en muchas bibliotecas.
AdaGrad
AdaGrad, introducido por John Duchi, Elad Hazan y Yoram Singer en 2011, adapta la tasa de aprendizaje por parámetro basándose en la suma histórica de los gradientes al cuadrado. Para cada parámetro \( w_j \), la actualización es \( w_j := w_j - \frac{\eta}{\sqrt{G_{j,j} + \epsilon}} \
abla Q_i(w_j) \), donde \( G_{j,j} \) acumula los gradientes al cuadrado y \( \epsilon \) es una pequeña constante para la estabilidad numérica. AdaGrad funciona bien con datos dispersos, ya que da actualizaciones más grandes a características poco frecuentes. Sin embargo, la acumulación de gradientes al cuadrado hace que la tasa de aprendizaje se reduzca con el tiempo, lo que puede detener el entrenamiento prematuramente.
RMSProp
RMSProp, propuesto por Geoffrey Hinton en sus notas de clase en 2012, aborda la tasa de aprendizaje decreciente de AdaGrad utilizando un promedio móvil exponencial de los gradientes al cuadrado. La actualización mantiene un promedio móvil \( E[g^2]_t = \rho E[g^2]_{t-1} + (1-\rho) g_t^2 \), donde \( \rho \) es la tasa de decaimiento (típicamente 0.9). La actualización del parámetro es \( w := w - \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} g_t \). RMSProp es efectivo en entornos no convexos y se ha utilizado ampliamente en el entrenamiento de redes recurrentes y modelos de aprendizaje profundo.
Adam
Adam (Estimación Adaptativa de Momentos), introducido por Diederik Kingma y Jimmy Ba en 2015, combina el momento y RMSProp. Mantiene tanto un primer momento (media) como un segundo momento (varianza) de los gradientes, con corrección de sesgo para los primeros pasos. Las actualizaciones son \( m_t = \beta_1 m_{t-1} + (1-\beta_1) g_t \), \( v_t = \beta_2 v_{t-1} + (1-\beta_2) g_t^2 \), y las versiones corregidas \( \hat{m}_t = m_t / (1-\beta_1^t) \), \( \hat{v}_t = v_t / (1-\beta_2^t) \). La actualización del parámetro es \( w := w - \eta \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} \). Adam se ha convertido en un optimizador predeterminado para muchas tareas de Deep learning debido a su robustez y rápida convergencia. Variantes como AdamW, que separa la regularización de pesos, y AMSGrad, que aborda problemas de convergencia, también se han desarrollado.
Métodos Adaptativos Modernos
Más allá de Adam, se han propuesto varios métodos adaptativos. AdaBelief (2020) ajusta el tamaño del paso basándose en la creencia en la dirección actual del gradiente. RAdam (Adam Rectificado) introduce un rectificador para estabilizar la fase inicial de entrenamiento. Lion (Momento Evolucionado con Signo), descubierto por Google Brain en 2023, utiliza operaciones de signo para reducir el uso de memoria y ha mostrado un rendimiento competitivo. Estos métodos se utilizan a menudo en el entrenamiento de grandes modelos de lenguaje y otros sistemas a gran escala, donde la eficiencia y la estabilidad son críticas.
Consideraciones Prácticas
Elegir la variante de SGD adecuada depende del problema. Para problemas convexos, NAG a menudo proporciona garantías teóricas. Para redes profundas, Adam o RMSProp son puntos de partida comunes. La programación de la tasa de aprendizaje, como el calentamiento y la disminución, a menudo se combina con estos optimizadores. El tamaño del mini-lote también afecta el rendimiento; los lotes más grandes proporcionan gradientes más suaves pero requieren más memoria. En el entrenamiento distribuido, variantes como LARS (Escalado de Tasa Adaptativa por Capa) y LAMB (Momentos Adaptativos por Capa) se utilizan para escalar a lotes grandes, como se ve en sistemas como AWS Trainium y Google Cloud.
Impacto en el Aprendizaje Automático
Las variantes de SGD han sido fundamentales en el éxito de la inteligencia artificial moderna. Permiten entrenar redes con millones de parámetros en conjuntos de datos masivos, como lo hacen organizaciones como OpenAI, Google DeepMind y Anthropic. La elección del optimizador puede afectar significativamente la precisión del modelo y la velocidad de entrenamiento. La investigación continúa refinando estos métodos, con nuevas variantes que surgen regularmente. Comprender sus propiedades es esencial para los profesionales del Machine learning y campos relacionados.
Véase También
- descenso de gradiente
- retropropagación
- tasa de aprendizaje
- optimización