El descenso gradual es posiblemente la estrategia de optimización más reconocida que se utiliza en el aprendizaje profundo y el aprendizaje automático. Los científicos de los datos a menudo la utilizan cuando existe la posibilidad de combinar cada algoritmo con modelos de entrenamiento. La comprensión del algoritmo de descenso de gradiente es relativamente sencilla, y su implementación es aún más simple. Discutamos el funcionamiento interno del descenso de gradiente, sus diferentes tipos y sus ventajas.

Qué es el descenso de gradiente?

Los programadores utilizan el descenso de gradiente como un algoritmo de optimización cuando entrenan modelos de aprendizaje de máquinas. Basado en funciones convexas, el descenso de gradiente ajusta iterativamente algunos de sus parámetros para minimizar una función particular al mínimo.
Los científicos de los datos utilizan el descenso de gradiente para encontrar los valores de los parámetros de una función que reduzcan las funciones de costo tanto como sea posible. Comienzan estableciendo los valores del parámetro inicial. El descenso de gradiente utiliza el cálculo para ajustar iterativamente los valores para minimizar una función de costo específica. Debes saber qué gradientes son para comprender plenamente el descenso de gradientes.

Comprender el gradiente

La función principal de un gradiente es medir los cambios en cada peso con respecto a los cambios en los errores. Piense en los gradientes como la pendiente de una función. La pendiente será más pronunciada en función de la altura del gradiente – es una condición favorable para los modelos ya que pueden aprender rápidamente. Sin embargo, el modelo dejará de aprender si la pendiente se convierte en cero. Matemáticamente hablando, un gradiente podría describirse mejor como una derivada limitada en lo que respecta a sus entradas.
Piense en una persona con los ojos vendados que quiere subir a la cima de una colina con un mínimo esfuerzo. Lo más probable es que dé largos pasos hacia la dirección más empinada posible. Sin embargo, los pasos de esta persona se volverán más pequeños para evitar que se pase de la raya. Puedes usar el gradiente para describir este proceso matemáticamente.
Los gradientes que comienzan en X0 y terminan en X1 son significativamente más largos que los que comienzan en X3 y terminan en X4. ¿Por qué? Porque la pendiente/escalada de la colina determina la longitud del vector. Proporciona una representación ideal de la analogía de la colina discutida anteriormente ya que se vuelve menos empinada a medida que la persona sube más alto.

Cómo funciona el descenso de gradiente?

En lugar de subir una colina, imagina que el descenso en pendiente es como bajar al fondo de un valle. Entender esta analogía es más simple, ya que es un algoritmo de minimización que disminuye una función específica. Entendamos el descenso de gradientes con la ayuda de una ecuación:
b representa la siguiente posición del escalador
a significa su posición actual
El menos se refiere a la parte de minimización del descenso del gradiente
La gamma ubicada en el centro representa un factor de espera
(Δf a) ) significa la dirección del descenso más pronunciado

Esta fórmula puede confundirte inicialmente, pero es más directa de lo que crees. Nos informa sobre la siguiente posición a la que debemos ir: la dirección del descenso.

Por qué es tan importante el ritmo de aprendizaje?

Es esencial fijar los índices de aprendizaje a sus valores apropiados para ayudar a que el descenso del gradiente alcance los mínimos locales. Por lo tanto, sería mejor no fijarlos excesivamente altos o bajos. Es fundamental porque alcanzar el mínimo podría complicarse con pasos demasiado largos. Por lo tanto, si fijamos las tasas de aprendizaje en valores más pequeños, el descenso del gradiente podría llegar finalmente a sus mínimos locales. Sin embargo, puede llevar algún tiempo.

Cómo asegurarse de que funciona de forma óptima

Una excelente manera de asegurar las funciones de descenso de gradiente de manera óptima es organizando la función de costo mientras la optimización está en marcha. Introduzca la cantidad de repeticiones en el eje X, y el valor de la función de costo entrará en el eje Y. Le ayudará a ver el valor de la función de costo después de cada iteración de descenso de gradiente y le permitirá ver la precisión de la tasa de aprendizaje. También puedes probar varios valores y graficarlos juntos.
La función de costo se reducirá después de cada iteración si el descenso del gradiente funciona de manera óptima. El descenso del gradiente converge cuando no puede reducir la función de costo y permanece en el mismo nivel. La cantidad de iteraciones que requiere el descenso del gradiente para la convergencia varía drásticamente. A veces se necesitan cincuenta iteraciones, y otras veces puede llegar hasta dos o tres millones. Causa dificultades cuando se estiman las iteraciones con antelación.
Algunos algoritmos pueden informar automáticamente si ha habido una convergencia en el descenso del gradiente. Sin embargo, sería mejor establecer un umbral de convergencia por adelantado, que también es bastante difícil de estimar. Es una razón significativa por la que los gráficos simples son mejores para las pruebas de convergencia.

Diferentes tipos de descenso de gradiente

Encontrará tres tipos de descenso de gradiente bien reconocidos. Echemos un vistazo a ellos:

Descenso de gradiente por lotes

También conocido como descenso de gradiente de vainilla, el descenso de gradiente de lote calcula los errores de cada ejemplo del conjunto de datos de entrenamiento. Sin embargo, lo hace sólo después de que cada ejemplo de entrenamiento pasa por una evaluación rigurosa. Es justo comparar este proceso con un ciclo. Algunos individuos también se refieren a esto como una época de entrenamiento.
El descenso del gradiente del lote tiene varias ventajas. Su eficiencia computacional, en particular, es extremadamente útil ya que desarrolla una convergencia estable y un gradiente de error estable. Dicho esto, el descenso de gradiente por lotes también tiene algunas desventajas. A veces, su gradiente de error estable puede resultar en un estado de convergencia desfavorable. Además, también necesita la presencia del conjunto de datos de entrenamiento en su algoritmo y memoria.

Descenso de gradiente estocástico

El SGD proporciona actualizaciones de los parámetros individuales para cada ejemplo de entrenamiento. Ayuda a prestar atención a cada ejemplo, asegurando que el proceso esté libre de errores. Dependiendo del problema, esto puede ayudar a que el SGD sea más rápido comparado con el descenso de gradientes por lotes. Sus actualizaciones regulares nos proporcionan índices de mejora detallados.
Dicho esto, estas actualizaciones son computacionalmente costosas, especialmente cuando se comparan con el enfoque utilizado por el descenso de gradiente por lotes. Además, la frecuencia de la actualización puede causar gradientes ruidosos y podría evitar que la tasa de error disminuya. En cambio, la tasa de error salta y se vuelve problemática a largo plazo.

Descenso de gradiente por lotes

Los científicos de los datos utilizan el descenso de gradientes de mini lotes como un método de entrada. ¿Por qué? Porque es una mezcla perfecta de los conceptos de descenso de gradiente estocástico y de descenso de gradiente por lotes. Divide los conjuntos de datos (formación) en lotes y ejecuta una actualización para cada lote, creando un equilibrio entre la eficiencia del BGD y la robustez del SCD.
Los mini lotes más populares oscilan entre cincuenta y doscientos cincuenta y seis, pero al igual que otros métodos de aprendizaje de máquinas, no hay reglas claras ya que varía de una aplicación a otra. La gente lo usa como una opción para entrenar las redes neuronales. También es un tipo de descenso de gradiente popular dentro del panorama de aprendizaje profundo.