Inicio Topics gradient descent ¿Qué es el descenso del gradiente?
Aplicar descenso de gradiente con watsonx.ai Suscríbase a las actualizaciones sobre el tema en torno a la IA
Ilustración con collage de pictogramas de nubes, gráficos circulares, pictogramas de gráficos en los siguientes
¿Qué es el descenso del gradiente?

El descenso de gradiente es un algoritmo de optimización que se utiliza habitualmente para entrenar modelos de machine learning y redes neuronales. Entrena modelos de machine learning minimizando los errores entre los resultados previstos y los reales.

Los datos de entrenamiento ayudan a estos modelos a aprender con el tiempo, y la función de coste 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. Mientras la función esté próxima o sea igual a cero, el modelo continuará ajustando sus parámetros para producir el menor error posible. Cuando los modelos de machine learning están optimizados para la precisión, pueden convertirse en potentes herramientas para aplicaciones de inteligencia artificial (IA) y informática.

IBM nombrada líder por Gartner

Descubra por qué IBM ha sido nombrada líder en el informe 2023 Gartner Magic Quadrant for Cloud AI Developer Services.

Contenido relacionado

Regístrese para obtener el libro electrónico en Presto

¿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 haber trazado un diagrama de dispersión en estadística y haber encontrado la línea de mejor ajuste, lo que requirió calcular el error entre la salida real y la salida pronosticada (y-hat) utilizando 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 evaluemos el rendimiento. A partir de ese punto de partida, encontraremos la derivada (o pendiente), y a partir de ahí, podemos usar una recta tangente para observar la inclinación de la pendiente. La pendiente dará cuenta de 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 llegar al punto más bajo de la curva, conocido como punto de convergencia.   

De forma similar a la búsqueda de la línea de mejor ajuste en la regresión lineal, el objetivo del descenso de gradiente es minimizar la función de coste, o el error entre la predicción y el valor real de y. Para ello, necesita dos datos: una dirección y un ritmo de aprendizaje. Estos factores determinan los cálculos de las derivadas parciales de las iteraciones futuras, lo que permite llegar gradualmente al mínimo local o global (es decir, al punto de convergencia).

  • La Tasa de aprendizaje (también conocida como tamaño de paso o alfa) es el tamaño de los pasos que se toman para alcanzar el mínimo. Normalmente, se trata de un valor pequeño y se evalúa y actualiza en función del comportamiento de la función de coste. Las altas tasas de aprendizaje dan como resultado pasos más grandes, pero se corre el riesgo de sobrepasar el mínimo. Por el contrario, una tasa de aprendizaje baja tiene pasos pequeños. Si bien tiene la ventaja de una mayor precisión, el número de iteraciones compromete la eficiencia general, ya que se necesita más tiempo y cálculos para alcanzar el mínimo.
  • La función de coste (o pérdida) mide la diferencia, o el error, entre y real e y pronosticado en su posición actual. Esto mejora la eficacia del modelo de machine learning al proporcionar retroalimentación al modelo para que pueda ajustar los parámetros para minimizar el error y encontrar el mínimo local o global. Itera continuamente, moviéndose en la dirección del descenso más pronunciado (o el gradiente negativo) hasta que la función de coste esté cerca o en cero. En este punto, el modelo dejará de aprender. Además, aunque los términos "función de coste" y "función de pérdida" se consideran sinónimos, hay 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 coste calcula el error promedio en todo un conjunto de entrenamiento.
Tipos de descenso de gradiente

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

Descenso de gradiente por lotes
 

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

Aunque este procesamiento por lotes proporciona eficiencia computacional, puede tener un tiempo de procesamiento largo para grandes conjuntos de datos de entrenamiento, ya que sigue siendo necesario almacenar todos los datos en la memoria. El descenso de gradiente por lotes también suele producir un gradiente de error y una convergencia estables, pero a veces ese punto de convergencia no es el más idóneo, encontrando 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 de cada ejemplo de entrenamiento de uno en uno. Como sólo es necesario tener un ejemplo de entrenamiento, es más fácil almacenarlo en la memoria. Si bien estas actualizaciones frecuentes pueden ofrecer más detalles y velocidad, pueden provocar pérdidas en la eficiencia computacional en comparación con el descenso de gradiente por lotes. Sus actualizaciones frecuentes pueden generar gradientes ruidosos, pero esto también puede ser útil para escapar del mínimo local y encontrar el mínimo global.

Descenso de gradiente de minilotes
 

El descenso del gradiente de minilote combina conceptos tanto del descenso del gradiente del lote como del descenso del 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 descenso de gradiente por lotes y la velocidad de descenso de gradiente estocástico.

Desafíos con el descenso de gradiente

Si bien el descenso de gradiente es el enfoque más común para los problemas de optimización, plantea una serie de desafíos propios. Algunos son:

Mínimos locales y puntos de silla
 

Para problemas convexos, el descenso del gradiente puede encontrar el mínimo global con facilidad, pero a medida que surgen problemas no convexos, el descenso del 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 coste 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 coste aumenta a ambos lados del punto actual. Sin embargo, con los puntos de silla, el gradiente negativo solo existe en un lado del punto y alcanza un máximo local en un lado y un mínimo local en el otro. Su nombre está inspirado en el de la silla de montar de un caballo.

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

Degradados que desaparecen y explotan
 

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

  • Gradientes de fuga: Esto ocurre cuando el gradiente es demasiado pequeño. A medida que retrocedemos 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 da como resultado un algoritmo que ya no aprende.
  • Explosión de gradientes: esto sucede cuando el gradiente es demasiado grande, lo que crea un modelo inestable. En este caso, los pesos del modelo crecerán demasiado y, finalmente, 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 impulsadas por IA

Desde los flujos de trabajo de su empresa hasta sus operaciones de TI, tenemos todo lo que necesita con la automatización basada en la IA. Descubra cómo se están transformando las compañías líderes.

Explorar las tecnologías impulsadas por IA
Recursos Un algoritmo de descenso de gradiente estocástico eficiente y distribuido para aplicaciones de deep learning

IBM Research propone un algoritmo de descenso de gradientes estocástico distribuido y sincrónico a granel que permite una agregación de gradientes dispersa de dispositivos de aprendizaje individuales.

Implementar XGBoost en R

Implemente decision trees potenciados por gradiente mediante el algoritmo XGBoost para realizar una tarea de clasificación.

Dé el siguiente paso

Entrene, valide, ajuste e implemente IA generativa, modelos fundacionales y capacidades de machine learning con IBM watsonx.ai, un estudio empresarial de próxima generación para constructores de IA. Cree aplicaciones de IA en menos tiempo y con menos datos.

Explore watsonx.ai Solicite una demostración en directo