Stochastic Gradient Descent/es: Difference between revisions

    From Marovi AI
    ([deploy-bot] Deploy from CI (775ba6e))
    Tag: ci-deploy
     
    (Force re-parse after Math source-mode rollout (v1.2.0))
    Tags: ci-deploy Reverted
    Line 112: Line 112:
    [[Category:Algoritmos de optimización]]
    [[Category:Algoritmos de optimización]]
    [[Category:Métodos de gradiente]]
    [[Category:Métodos de gradiente]]
    <!--v1.2.0 cache-bust-->

    Revision as of 06:58, 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.