El descenso del gradiente o gradiente descendiente es un algoritmo de optimización iterativo de primer orden que permite encontrar mínimos locales en una función diferenciable.
La idea es tomar pasos de manera repetida en dirección contraria al gradiente.
Esto se hace ya que esta dirección es la del descenso más empinado.
Este algoritmo es utilizado para entrenar modelos de aprendizaje máquina y redes neuronales.
El gradiente descendiente se le atribuye generalmente a Augustin-Louis Cauchy, quien fue el primero en sugerirlo en 1847.
[3] Desde entonces el método ha sido estudiado y utilizado a fondo.
[4] Para poder utilizar el algoritmo del gradiente descendiente la función de la cual se desea encontrar el mínimo local debe cumplir con lo siguiente: Una función f es convexa si:
Este punto es escalado con una razón de aprendizaje
Se tiene entonces que el gradiente descendiente utiliza la siguiente expresión:
El algoritmo del gradiente descendiente calcula iterativamente el siguiente punto usando el gradiente del punto en turno.
Lo escala con la razón de aprendizaje y resta este resultado a la posición actual.
Si la razón de aprendizaje es muy pequeña, el algoritmo tarda en converger.
Si la razón de aprendizaje es muy grande, el algoritmo puede no llegar a converger.
El algoritmo del gradiente descendiente consta de los siguientes pasos: El descenso de gradiente con sondeo lineal guarda una notable similitud con el algoritmo del gradiente descendiente convencional.
El gradiente descendiente batch suma el error para cada punto en un conjunto de entrenamiento, actualizando el modelo hasta que se hayan evaluado todos los ejemplos de entrenamiento disponibles.
El proceso de batch provee mayor eficiencia a nivel computacional para conjuntos de datos grandes.
Usualmente produce un error de gradiente estable y llega a converger.
Este problema se presenta cuando el gradiente es demasiado grande, creando un modelo inestable.
En este caso los pesos o ponderaciones asignados en el modelo crecerán demasiado.
Una solución a este problema es utilizar una técnica para reducir la dimensionalidad y así reducir la complejidad del modelo.
Durante el entrenamiento o ajuste de los parámetros de una red neuronal se utiliza la propagación hacia atrás con gradiente descendiente.
Con cada iteración o paso el gradiente se hace más y más pequeño conforme la propagación hacia atrás llega a capas más profundas; el gradiente se desvanece.
Esto trae como consecuencia que no se actualizan las conexiones de las capas más bajas o profundas y por lo tanto el entrenamiento no converge a una solución que sea de utilidad.