Glosario

Descenso Gradiente Estocástico (SGD)

Descubre cómo el Descenso Gradiente Estocástico optimiza los modelos de aprendizaje automático, permitiendo un entrenamiento eficiente para grandes conjuntos de datos y tareas de aprendizaje profundo.

Entrena los modelos YOLO simplemente
con Ultralytics HUB

Saber más

El Descenso Gradiente Estocástico, comúnmente conocido como SGD, es un algoritmo de optimización popular y eficiente muy utilizado en el Aprendizaje Automático (AM) y, en particular, en el Aprendizaje Profundo (AD). Es una variación del algoritmo estándar de Descenso Gradiente, pero está diseñado específicamente para ser rápido y eficaz cuando se trabaja con conjuntos de datos muy grandes. En lugar de calcular el gradiente (la dirección de descenso más pronunciado para la función de pérdida) utilizando todo el conjunto de datos en cada paso, SGD aproxima el gradiente basándose en una única muestra de datos seleccionada aleatoriamente o en un pequeño subconjunto denominado minilote. Este enfoque reduce significativamente el coste computacional y los requisitos de memoria, haciendo factible el entrenamiento de modelos complejos en cantidades masivas de datos.

Relevancia en el aprendizaje automático

El SGD es una piedra angular para entrenar modelos de aprendizaje automático a gran escala, especialmente las complejas Redes Neuronales (RN ) que impulsan muchas aplicaciones modernas de IA. Su eficacia lo hace indispensable cuando se trabaja con conjuntos de datos que son demasiado grandes para caber en la memoria o que tardarían demasiado en procesarse utilizando el Descenso Gradiente por Lotes tradicional. Modelos como Ultralytics YOLO suelen utilizar SGD o sus variantes durante el proceso de entrenamiento para aprender patrones para tareas como la detección de objetos, la clasificación de imágenes y la segmentación de imágenes. Los principales marcos de aprendizaje profundo, como PyTorch y TensorFlow proporcionan implementaciones robustas de SGD, destacando su papel fundamental en el ecosistema de la IA.

Conceptos clave

Comprender la SGD implica algunas ideas básicas:

  • Naturaleza estocástica: El término "estocástico" se refiere a la aleatoriedad que se introduce al utilizar sólo una o unas pocas muestras para estimar el gradiente en cada paso. Esta aleatoriedad añade ruido al proceso de optimización, lo que a veces puede ayudar al modelo a escapar de los malos mínimos locales y encontrar mejores soluciones globales.
  • Minilotes: Mientras que la SGD pura utiliza una sola muestra por actualización, en la práctica es más habitual utilizar un pequeño "minilote" de muestras (por ejemplo, 32, 64, 128). Este enfoque, que a menudo se sigue denominando SGD, equilibra la eficacia de las actualizaciones de una sola muestra con la estabilidad obtenida al promediar los gradientes en un pequeño lote. El tamaño de este lote se controla mediante el hiperparámetro Tamaño del lote.
  • Tasa de aprendizaje: Este hiperparámetro crucial determina el tamaño de los pasos que se dan durante el proceso de optimización. Una Tasa de Aprendizaje bien elegida es vital para la convergencia; demasiado alta, y el proceso podría sobrepasar el mínimo, demasiado baja, y el entrenamiento se vuelve excesivamente lento. A menudo se utilizan técnicas como la programación de la Tasa de Aprendizaje junto con el SGD.
  • Función de Pérdida: El SGD pretende minimizar una Función de Pérdida, que mide la diferencia entre las predicciones del modelo y los valores objetivo reales de los datos de entrenamiento.

Diferencias con conceptos afines

El SGD es uno de varios algoritmos de optimización, y es importante distinguirlo de los demás:

  • Descenso del gradiente (DG por lotes): La principal diferencia radica en cómo se calcula el gradiente. La DG por lotes utiliza todo el conjunto de datos para cada actualización de los parámetros, lo que proporciona un gradiente preciso, pero resulta costosa y lenta desde el punto de vista informático para conjuntos de datos grandes. SGD utiliza una muestra (o un minilote), lo que hace que cada actualización sea mucho más rápida pero más ruidosa. Puedes obtener más información sobre el método estándar en la página del glosario de Descenso Gradiente.
  • Mini-lote de Descenso Gradiente: Es la aplicación práctica más habitual, a menudo denominada simplemente SGD. Calcula el gradiente en pequeños subconjuntos aleatorios (minilotes) de datos. Consigue un equilibrio entre la precisión de la GD por Lotes y la eficacia de la SGD pura.
  • Optimizador Adam: Adam es un algoritmo de optimización de la tasa de aprendizaje adaptativo, lo que significa que ajusta la tasa de aprendizaje de cada parámetro individualmente basándose en gradientes anteriores. Aunque Adam suele converger más rápido que el SGD básico, el SGD (especialmente con impulso) a veces puede generalizar mejor a datos no vistos, como se discute en investigaciones como "El valor marginal de los métodos de gradiente adaptativo en el aprendizaje automático".

Aplicaciones en el mundo real

La eficacia del SGD permite su uso en numerosas aplicaciones de IA a gran escala:

Ejemplo 1: Entrenamiento de grandes modelos lingüísticos (LLM)

El entrenamiento de modelos como los utilizados en el Procesamiento del Lenguaje Natural (PLN ) suele implicar conjuntos de datos de texto masivos (miles de millones de palabras). El SGD y sus variantes son esenciales para iterar a través de estos datos de forma eficiente, permitiendo que los modelos aprendan gramática, contexto y semántica. Plataformas como Hugging Face dependen en gran medida de estos optimizadores para entrenar modelos transformadores.

Ejemplo 2: Entrenamiento en detección de objetos en tiempo real

Para modelos como Ultralytics YOLO , diseñados para la inferencia en tiempo real, el entrenamiento debe ser eficiente. SGD permite a los desarrolladores entrenar estos modelos en grandes conjuntos de datos de imágenes como COCO o en conjuntos de datos personalizados gestionados mediante plataformas como Ultralytics HUB. Las actualizaciones rápidas permiten una convergencia más rápida en comparación con el SGD por lotes, crucial para iterar rápidamente durante el desarrollo del modelo y el ajuste de hiperparámetros.

Leer todo