¿Qué es el descenso de gradiente?
Obtenga más información acerca del descenso de gradiente, un algoritmo de optimización que se utiliza para entrenar modelos de machine learning al minimizar los errores entre los resultados previstos y reales
Fondo negro y azul
¿Qué es el descenso de gradiente?

El descenso de gradiente es un algoritmo de optimización que se usa comúnmente para entrenar modelos de machine learning y redes neuronales.  Los datos de entrenamiento ayudan a que estos modelos aprendan con el tiempo, y la función de costo dentro del descenso de gradiente actúa específicamente como un barómetro, midiendo su precisión con cada iteración de actualizaciones de parámetros. Hasta que la función sea cercana o igual a cero, el modelo continuará ajustando sus parámetros para producir la menor cantidad de errores posible. Los modelos de machine learning, una vez optimizados para la precisión, pueden ser potentes herramientas para aplicaciones de inteligencia artificial (IA) y ciencias de la computación.

¿Cómo funciona el descenso de gradiente?

Antes de sumergirnos en el descenso de gradiente, puede ser útil revisar algunos conceptos de la regresión lineal. Puede recordar la siguiente fórmula para la pendiente de una línea, que es y = mx + b, donde m representa la pendiente y b es la intersección en el eje y.

También puede recordar trazar un diagrama de dispersión en estadísticas y encontrar la línea de mejor ajuste, lo que requirió calcular el error entre la salida real y la salida predicha (y-hat) usando la fórmula del error cuadrático medio. El algoritmo de descenso de gradiente se comporta de manera similar, pero se basa en una función convexa.

El punto de partida es solo un punto arbitrario para que podamos evaluar el rendimiento. Desde ese punto de partida, encontraremos la derivada (o pendiente), y desde allí, podemos usar una recta tangente para observar la inclinación de la pendiente. La pendiente informará las actualizaciones de los parámetros, es decir, los pesos y el sesgo. La pendiente en el punto de partida será más pronunciada, pero a medida que se generen nuevos parámetros, la pendiente debe reducirse gradualmente hasta alcanzar el punto más bajo de la curva, conocido como punto de convergencia.   

Del mismo modo que se detecta la mejor línea de ajuste en la regresión lineal, el objetivo del descenso de gradiente es minimizar la función de costo, o el error entre la "y" real y su valor pronosticado. Para hacer esto, se necesitan dos puntos de datos: una dirección y una tasa de aprendizaje. Estos factores determinan los cálculos de derivadas parciales de iteraciones futuras, lo que le permite llegar gradualmente al mínimo local o global (es decir, punto de convergencia).

  • Índice de aprendizaje (también conocida como tamaño de paso, o alfa) es el tamaño de los pasos que se dan para alcanzar el mínimo. Suele ser un valor pequeño y se evalúa y actualiza en función del comportamiento de la función de costos. Los índices de aprendizaje altos dan como resultado pasos más grandes, pero existe el riesgo de exceder el mínimo. Por el contrario, los índices de aprendizaje bajos generan tamaños de paso más pequeños. Si bien tiene la ventaja de una mayor precisión, el número de iteraciones compromete la eficiencia general, ya que esto requiere más tiempo y cálculos para alcanzar el mínimo.
  • La función de costo (o pérdida) mide la diferencia, o error, entre la "y" real y la "y" pronosticada en su posición actual. Esto mejora la eficacia del modelo de machine learning, ya que proporciona información al modelo para que pueda ajustar los parámetros para minimizar el error y encontrar el mínimo local o global. Repite continuamente, moviéndose a lo largo de la dirección de descenso más pronunciado (o el gradiente negativo) hasta que la función de costo se acerca o llega a cero. En este punto, el modelo dejará de aprender. Además, si bien los términos función de costo y función de pérdida se consideran sinónimos, existe una ligera diferencia entre ellos. Vale la pena señalar que una función de pérdida se refiere al error de un ejemplo de entrenamiento, mientras que una función de costo calcula el error promedio en todo un conjunto de entrenamiento.
Tipos de descenso de gradiente

Hay tres tipos de algoritmos de aprendizaje de descenso de gradiente: descenso de gradiente por lotes, descenso de gradiente estocástico y descenso de gradiente por mini lotes.

Descenso de gradiente por lotes 
 

El descenso de gradiente por lotes suma el error para cada punto en un conjunto de entrenamiento, actualizando el modelo solo después de que todos los ejemplos de entrenamiento han sido evaluados. Este proceso se conoce como época de entrenamiento.

Si bien este procesamiento por lotes proporciona eficiencia de cálculo, aún puede tener un tiempo de procesamiento prolongado para grandes conjuntos de datos de entrenamiento, ya que aún necesita almacenar todos los datos en la memoria. El descenso del gradiente por lotes también suele producir un gradiente de error estable y una convergencia, pero a veces ese punto de convergencia no es el ideal y encuentra el mínimo local frente al global.

Descenso de gradiente estocástico 
 

El descenso de gradiente estocástico (SGD) ejecuta una época de entrenamiento para cada ejemplo dentro del conjunto de datos y actualiza los parámetros del ejemplo de entrenamiento uno por uno. Dado que solo necesita mantener un ejemplo de entrenamiento, es más fácil almacenarlos en la memoria. Si bien estas actualizaciones frecuentes pueden ofrecer más detalles y velocidad, pueden resultar en pérdidas en la eficiencia computacional en comparación con el descenso de gradiente por lotes. Sus actualizaciones frecuentes pueden resultar en gradientes ruidosos, pero esto también puede ser útil para omitir el mínimo local y encontrar el global.

Descenso de gradiente por mini lotes 
 

El descenso de gradiente por mini lotes combina conceptos tanto del descenso de gradiente por lotes como del descenso de gradiente estocástico. Divide el conjunto de datos de entrenamiento en pequeños tamaños de lote y realiza actualizaciones en cada uno de esos lotes. Este enfoque logra un equilibrio entre la eficiencia computacional del lote de descenso de gradiente y la velocidad del descenso de gradiente estocástico.

Desafíos con el descenso de gradientes

Si bien el descenso de gradientes es el enfoque más común para los problemas de optimización, viene con su propio conjunto de desafíos. Algunos de estos incluyen:

Mínimos locales y puntos de silla
 

Para problemas convexos, el descenso de gradiente puede encontrar el mínimo global con facilidad, pero a medida que surgen problemas no convexos, el descenso de gradiente puede tener dificultades para encontrar el mínimo global, donde el modelo logra los mejores resultados.

Recuerde que cuando la pendiente de la función de costo es igual o cercana a cero, el modelo deja de aprender. Algunos escenarios más allá del mínimo global también pueden producir esta pendiente, que son mínimos locales y puntos de silla. Los mínimos locales imitan la forma de un mínimo global, donde la pendiente de la función de costo aumenta a ambos lados del punto actual. Sin embargo, con los puntos de silla, el gradiente negativo solo existe en un lado del punto, alcanzando un máximo local en un lado y un mínimo local en el otro. Su nombre está inspirado en las sillas de montar a caballo.

Los gradientes ruidosos pueden ayudar al gradiente a escapar de los mínimos locales y los puntos de silla.

Gradientes que desaparecen y explotan
 

En redes neuronales más profundas, en particular redes neuronales recurrentes, también podemos encontrarnos con otros dos problemas cuando el modelo se entrena con descenso de gradiente y retropropagación.

  • Desaparición de gradientes: esto ocurre cuando el gradiente es demasiado pequeño. A medida que nos movemos hacia atrás durante la retropropagación, el gradiente continúa haciéndose más pequeño, lo que hace que las capas anteriores de la red aprendan más lentamente que las capas posteriores. Cuando esto sucede, los parámetros de peso se actualizan hasta que se vuelven insignificantes, es decir, 0, lo que genera un algoritmo que ya no está aprendiendo.
  • Explosión de gradientes: esto sucede cuando el gradiente es demasiado grande, creando un modelo inestable. En este caso, los pesos del modelo crecerán demasiado y eventualmente se representarán como NaN. Una solución a este problema es aprovechar una técnica de reducción de dimensionalidad, que puede ayudar a minimizar la complejidad dentro del modelo.
  •  
Soluciones relacionadas
Tecnologías basadas en IA

Desde sus flujos de trabajo de negocios hasta sus operaciones de TI, le ayudamos con automatización basada en IA. Descubra cómo las empresas líderes se están transformando.

Explore las tecnologías basadas en IA
Recursos Un algoritmo de descenso de gradiente estocástico distribuido y eficiente para aplicaciones de deep learning

IBM Research propone un algoritmo de descenso de gradiente estocástico síncrono masivo distribuido que permite la agregación de gradiente escaso de estudiantes individuales.

Dé el siguiente paso

IBM ha sido líder en la promoción de tecnologías basadas en IA para empresas y pionera en el futuro de los sistemas de machine learning y deep learning en diversas industrias. Basados en décadas de investigación y años de experiencia, los productos y soluciones de IBM brindan a las empresas las herramientas de IA que necesitan para transformar sus flujos de trabajo de negocio y mejorar la automatización y la eficiencia. Si desea ejecutar modelos de machine learning en cualquier lugar, en cualquier nube, explore IBM Watson Machine Learning para llevar sus proyectos de ciencia de datos de código abierto a producción.

Explore las tecnologías basadas en IA