Stochastic Gradient Descent/es: Difference between revisions
(Force re-parse after Math source-mode rollout (v1.2.0)) Tags: ci-deploy Reverted |
([deploy-bot] Deploy from CI (8c92aeb)) Tags: ci-deploy Manual revert |
||
| (One intermediate revision by the same user not shown) | |||
| Line 112: | Line 112: | ||
[[Category:Algoritmos de optimización]] | [[Category:Algoritmos de optimización]] | ||
[[Category:Métodos de gradiente]] | [[Category:Métodos de gradiente]] | ||
Latest revision as of 07:09, 24 April 2026
El descenso de gradiente estocástico (a menudo abreviado SGD, del inglés stochastic gradient descent) es un algoritmo de optimización iterativa utilizado para minimizar una función objetivo expresada como la suma de subfunciones diferenciables. Es el motor principal del entrenamiento moderno de aprendizaje automático, impulsando desde la regresión logística hasta las redes neuronales profundas.
Motivación
En el descenso de gradiente clásico, el gradiente completo de la función de pérdida se calcula sobre todo el conjunto de entrenamiento antes de cada actualización de parámetros. Cuando el conjunto de datos es grande, esto resulta prohibitivamente costoso. El SGD aborda este problema estimando el gradiente a partir de una sola muestra seleccionada aleatoriamente (o un pequeño mini-lote) en cada paso, intercambiando una estimación más ruidosa por un costo por iteración drásticamente menor.
Algoritmo
Dada una función de pérdida parametrizada
- $ L(\theta) = \frac{1}{N}\sum_{i=1}^{N} \ell(\theta;\, x_i,\, y_i) $
la regla de actualización del SGD en el paso $ t $ es:
- $ \theta_{t+1} = \theta_t - \eta_t \,\nabla_\theta \ell(\theta_t;\, x_{i_t},\, y_{i_t}) $
donde $ \eta_t $ es la tasa de aprendizaje (tamaño de paso) e $ i_t $ es un índice seleccionado aleatoriamente.
Variante con mini-lotes
En la práctica se utiliza un mini-lote de $ B $ muestras:
- $ \theta_{t+1} = \theta_t - \frac{\eta_t}{B}\sum_{j=1}^{B} \nabla_\theta \ell(\theta_t;\, x_{i_j},\, y_{i_j}) $
Los tamaños de lote habituales oscilan entre 32 y 512. Lotes más grandes reducen la varianza del gradiente, pero incrementan el uso de memoria.
Pseudocódigo
inicializar parámetros θ
para época = 1, 2, … hacer
mezclar conjunto de entrenamiento
para cada mini-lote B ⊂ conjunto de entrenamiento hacer
g ← (1/|B|) Σ ∇ℓ(θ; xᵢ, yᵢ) # estimar gradiente
θ ← θ − η · g # actualizar parámetros
fin para
fin para
Programas de tasa de aprendizaje
La tasa de aprendizaje $ \eta_t $ influye fuertemente en la convergencia. Las estrategias más comunes incluyen:
- Constante — sencilla, pero puede sobrepasar el mínimo o estancarse.
- Decaimiento por pasos — multiplicar $ \eta $ por un factor (por ejemplo, 0.1) cada $ k $ épocas.
- Decaimiento exponencial — $ \eta_t = \eta_0 \, e^{-\lambda t} $.
- Recocido coseno — reduce suavemente la tasa siguiendo una curva coseno, a menudo con reinicios.
- Calentamiento lineal — aumentar gradualmente desde un $ \eta $ pequeño durante las primeras iteraciones para estabilizar el entrenamiento inicial.
Propiedades de convergencia
Para objetivos convexos con gradientes Lipschitz-continuos, el SGD con una tasa de aprendizaje decreciente que satisfaga
- $ \sum_{t=1}^{\infty} \eta_t = \infty, \qquad \sum_{t=1}^{\infty} \eta_t^2 < \infty $
converge casi seguramente al mínimo global (condiciones de Robbins–Monro). Para problemas no convexos —el régimen típico en aprendizaje profundo— el SGD converge a un punto estacionario, y la evidencia empírica muestra que a menudo encuentra buenos mínimos locales.
Variantes populares
Varias extensiones reducen la varianza de la estimación del gradiente o adaptan el tamaño de paso por parámetro:
| Método | Idea clave | Referencia |
|---|---|---|
| Momentum | Acumula un promedio móvil con decaimiento exponencial de gradientes pasados | Polyak, 1964 |
| Gradiente acelerado de Nesterov | Evalúa el gradiente en una posición "anticipada" | Nesterov, 1983 |
| Adagrad | Tasas por parámetro que disminuyen para características actualizadas frecuentemente | Duchi et al., 2011 |
| RMSProp | Corrige las tasas decrecientes de Adagrad usando un promedio móvil de gradientes al cuadrado | Hinton (notas de clase), 2012 |
| Adam | Combina momentum con tasas adaptativas al estilo RMSProp | Kingma y Ba, 2015 |
| AdamW | Desacopla la regularización de pesos del paso de gradiente adaptativo | Loshchilov y Hutter, 2019 |
Consideraciones prácticas
- Mezcla de datos — Reordenar aleatoriamente el conjunto de datos en cada época para evitar patrones cíclicos.
- Recorte de gradiente — Limitar la norma del gradiente para prevenir actualizaciones explosivas, especialmente en redes recurrentes.
- Normalización por lotes — Normalizar las entradas de cada capa reduce la sensibilidad a la tasa de aprendizaje.
- Entrenamiento con precisión mixta — Usar punto flotante de media precisión acelera el SGD en GPUs modernas con una pérdida mínima de exactitud.
Aplicaciones
El SGD y sus variantes se utilizan en prácticamente todas las áreas del aprendizaje automático:
- Entrenamiento de redes neuronales profundas (visión por computadora, PLN, reconocimiento de voz)
- Modelos lineales a gran escala (regresión logística, SVM mediante SGD)
- Optimización de políticas en aprendizaje por refuerzo
- Sistemas de recomendación y filtrado colaborativo
- Escenarios de aprendizaje en línea donde los datos llegan en flujo continuo
Véase también
Referencias
- Robbins, H. y Monro, S. (1951). "A Stochastic Approximation Method". Annals of Mathematical Statistics.
- Bottou, L. (2010). "Large-Scale Machine Learning with Stochastic Gradient Descent". COMPSTAT.
- Kingma, D. P. y Ba, J. (2015). "Adam: A Method for Stochastic Optimization". ICLR.
- Ruder, S. (2016). "An overview of gradient descent optimization algorithms". arXiv:1609.04747.