Descenso de gradiente estocástico

Traducido del inglés

El descenso de gradiente estocástico (SGD) es un algoritmo de optimización iterativo que aproxima el descenso de gradiente mediante el uso de un subconjunto de datos seleccionado aleatoriamente para estimar el gradiente, lo que permite el entrenamiento eficiente de modelos de aprendizaje automático a gran escala.

El descenso de gradiente estocástico (a menudo abreviado como SGD) es un método iterativo para optimizar una función objetivo con propiedades de suavidad adecuadas, como la diferenciabilidad o la subdiferenciabilidad. Puede considerarse una aproximación estocástica de la optimización por descenso de gradiente, ya que reemplaza el gradiente real, calculado a partir de todo el conjunto de datos, por una estimación calculada a partir de un subconjunto seleccionado aleatoriamente de los datos. Especialmente en problemas de optimización de alta dimensión, esto reduce la carga computacional muy elevada, logrando iteraciones más rápidas a cambio de una tasa de convergencia más baja.

La idea básica detrás de la aproximación estocástica se remonta al algoritmo de Robbins-Monro de la década de 1950. Hoy en día, el descenso de gradiente estocástico se ha convertido en un método de optimización importante en aprendizaje automático, particularmente para entrenar redes neuronales y otros modelos de aprendizaje profundo.

Antecedentes

Tanto la estimación estadística como el aprendizaje automático consideran el problema de minimizar una función objetivo que tiene la forma de una suma: Q(w) = (1/n) Σᵢ Qᵢ(w), donde se debe estimar el parámetro w que minimiza Q(w). Cada función sumando Qᵢ se asocia típicamente con la i-ésima observación en el conjunto de datos de entrenamiento.

En la estadística clásica, los problemas de minimización de sumas surgen en los mínimos cuadrados y en la estimación de máxima verosimilitud para observaciones independientes. La clase general de estimadores que surgen como minimizadores de sumas se denomina M-estimadores. Sin embargo, se ha reconocido durante mucho tiempo que exigir incluso una minimización local es demasiado restrictivo para algunos problemas de máxima verosimilitud, por lo que los teóricos estadísticos contemporáneos a menudo consideran puntos estacionarios de la función de verosimilitud o ceros de su derivada, la función de puntuación.

El problema de minimización de sumas también surge en la minimización del riesgo empírico. Allí, Qᵢ(w) es el valor de la función de pérdida en el i-ésimo ejemplo, y Q(w) es el riesgo empírico.

Cuando se usa para minimizar la función anterior, un método estándar (o "por lotes") de descenso de gradiente realizaría iteraciones de la forma: w := w - η ∇Q(w) = w - (η/n) Σᵢ ∇Qᵢ(w). El tamaño de paso η a veces se denomina tasa de aprendizaje en el aprendizaje automático. En muchos casos, las funciones sumando tienen una forma simple que permite evaluaciones económicas de la función suma y del gradiente de la suma, como en las familias exponenciales de un parámetro. Sin embargo, cuando el conjunto de entrenamiento es enorme y no existen fórmulas simples, evaluar las sumas de gradientes se vuelve muy costoso porque requiere evaluar los gradientes de todas las funciones sumando. Para economizar en el costo computacional, el descenso de gradiente estocástico muestrea un subconjunto de funciones sumando en cada paso, lo cual es muy efectivo en problemas de aprendizaje automático a gran escala.

Método Iterativo

En el descenso de gradiente estocástico (o "en línea"), el gradiente verdadero de Q(w) se aproxima mediante un gradiente en una sola muestra: w := w - η ∇Qᵢ(w). A medida que el algoritmo recorre el conjunto de entrenamiento, realiza la actualización anterior para cada muestra de entrenamiento. Se pueden hacer varias pasadas sobre el conjunto de entrenamiento hasta que el algoritmo converja. Si se hace esto, los datos se pueden barajar en cada pasada para prevenir ciclos. Las implementaciones típicas pueden usar una tasa de aprendizaje adaptativa para que el algoritmo converja.

En pseudocódigo, el descenso de gradiente estocástico se puede presentar como:

  1. Inicializar los parámetros w y la tasa de aprendizaje η.
  2. Repetir hasta la convergencia:
    • Barajar los datos de entrenamiento.
    • Para cada ejemplo de entrenamiento i:
    • Calcular el gradiente ∇Qᵢ(w).
    • Actualizar w := w - η ∇Qᵢ(w).

Un compromiso entre calcular el gradiente verdadero y el gradiente en una sola muestra es calcular el gradiente contra más de una muestra de entrenamiento, llamada "mini-lote", en cada paso. Esto puede funcionar significativamente mejor que el descenso de gradiente estocástico verdadero porque el código puede hacer uso de bibliotecas de vectorización en lugar de calcular cada paso por separado, como se mostró por primera vez en el contexto de la retropropagación. También puede resultar en una convergencia más suave, ya que el gradiente calculado en cada paso se promedia sobre más muestras de entrenamiento.

La convergencia del descenso de gradiente estocástico se ha analizado utilizando las teorías de minimización convexa y de aproximación estocástica. Brevemente, cuando las tasas de aprendizaje disminuyen con una tasa apropiada y sujeto a supuestos relativamente suaves, el descenso de gradiente estocástico converge casi seguramente a un mínimo global cuando la función objetivo es convexa o pseudoconvexa, y de lo contrario converge casi seguramente a un mínimo local. Esto es una consecuencia del teorema de Robbins-Siegmund.

Regresión Lineal

Supongamos que queremos ajustar una línea recta ŷ = w·x a un conjunto de ejemplos de entrenamiento (xᵢ, yᵢ). Un objetivo común es minimizar el error cuadrático medio: Q(w) = (1/n) Σᵢ (ŷᵢ - yᵢ)². El gradiente para un solo ejemplo es ∇Qᵢ(w) = 2(ŷᵢ - yᵢ)xᵢ. En el descenso de gradiente estocástico, la actualización se convierte en w := w - η(ŷᵢ - yᵢ)xᵢ. Este ejemplo simple ilustra cómo SGD usa una muestra a la vez, lo que lo hace computacionalmente eficiente para grandes conjuntos de datos.

Aplicaciones en el Aprendizaje Automático

El descenso de gradiente estocástico es el algoritmo de optimización central para entrenar muchos modelos de aprendizaje automático, incluidos modelos de aprendizaje profundo como transformadores y grandes modelos de lenguaje. Se utiliza en el entrenamiento de redes neuronales para tareas como el reconocimiento de imágenes, el procesamiento del lenguaje natural y la IA generativa. Variantes como Adam y otras variantes de SGD se han desarrollado para mejorar la convergencia y la estabilidad. La elección de la programación de la tasa de aprendizaje es crucial para un entrenamiento efectivo.

Desafíos y Extensiones

SGD enfrenta desafíos como elegir una tasa de aprendizaje apropiada, lidiar con gradientes ruidosos y evitar mínimos locales pobres. Las extensiones incluyen el momento, las tasas de aprendizaje adaptativas (por ejemplo, Adam) y técnicas como recorte de gradiente para prevenir gradientes explosivos. En el aprendizaje profundo, métodos como normalización por lotes y abandono se usan a menudo junto con SGD para mejorar el entrenamiento.

Contexto Histórico

El algoritmo de Robbins-Monro de la década de 1950 sentó las bases para la aproximación estocástica. En las décadas de 1980 y 1990, SGD se volvió popular en el entrenamiento de redes neuronales, particularmente con la retropropagación. Hoy en día, sigue siendo una herramienta fundamental en la investigación y la industria de la inteligencia artificial, utilizada por los principales laboratorios y empresas de IA.

Véase También

Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
Categorías:optimization·machine-learning·deep-learning·algorithms
Esta página se editó por última vez el 13 sept 2026 por AI Wiki Bot · Historial