Descenso de gradiente

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 17 de julio de 2021; la verificación requiere 1 edición .

Descenso de gradiente, el método de descenso de gradiente  es un método numérico para encontrar un mínimo o máximo local de una función moviéndose a lo largo de un gradiente , uno de los principales métodos numéricos de optimización moderna.

Se usa activamente en matemáticas computacionales no solo para la solución directa de problemas de optimización (minimización), sino también para problemas que pueden reescribirse en el lenguaje de optimización (solución de ecuaciones no lineales, búsqueda de equilibrios, problemas inversos, etc.). El método de descenso de gradiente se puede utilizar para problemas de optimización en espacios de dimensión infinita, por ejemplo, para la solución numérica de problemas de control óptimo.

El interés particularmente grande en los métodos de gradiente en los últimos años se debe al hecho de que los descensos de gradiente y sus variantes estocásticas/aleatorias son la base de casi todos los algoritmos de aprendizaje modernos desarrollados en el análisis de datos.

Descripción

Deje que la función objetivo se vea como:

.

Y el problema de optimización queda dado de la siguiente manera:

En el caso de que se requiera encontrar el máximo, en lugar de usar

La idea principal del método es ir en la dirección de la bajada más empinada, y esta dirección viene dada por el anti - gradiente :

donde especifica la velocidad de descenso del gradiente y se puede elegir

Algoritmo

  1. Establecer la aproximación inicial y la precisión del cálculo
  2. cuenta donde
  3. Compruebe la condición de parada:
    • Si , o (elija una de las condiciones), vaya al paso 2.
    • De lo contrario , deténgase.

La relación de Kantorovich

Para una función cuadrática de la forma , el método de búsqueda del gradiente más pronunciado converge desde cualquier punto de partida a la velocidad de una progresión geométrica (linealmente) con un denominador que no excede . En este caso, las siguientes estimaciones son válidas:

, , ,

donde y son los valores propios  mínimo y máximo de la matriz de segundas derivadas .

Así, dado que la función está un poco cerca de su aproximación cuadrática, la tasa de convergencia, en la vecindad del punto mínimo, depende de la relación de los valores propios. Cuanto mayor sea esta relación, peor será la convergencia del método.

Ejemplo

Apliquemos el método del gradiente a la función . Entonces las aproximaciones sucesivas se verán así:

Este es un ejemplo típico de una función de barranco. El método del gradiente "salta" de una vertiente del barranco a otra y viceversa, a veces casi sin moverse en la dirección correcta, lo que ralentiza significativamente la convergencia. Otro ejemplo de una función de barranco de prueba es la función de Rosenbrock .

Mejoras, modificaciones

Para minimizar la función en la dirección del gradiente se utilizan métodos de optimización unidimensional , como el método de la sección áurea . También puede buscar no el mejor punto en la dirección del gradiente, sino algo mejor que el actual.

El método de descenso de gradiente es el más fácil de implementar de todos los métodos de optimización local. Tiene condiciones de convergencia bastante débiles, pero la tasa de convergencia es bastante pequeña (lineal). El paso del método de gradiente se usa a menudo como parte de otros métodos de optimización, como el método de Fletcher-Reeves .

El método de descenso de gradiente resulta muy lento al moverse a lo largo de un barranco, ya medida que aumenta el número de variables de la función objetivo, este comportamiento del método se vuelve típico. Para combatir este fenómeno, se utiliza el método del barranco , cuya esencia es muy simple. Habiendo dado dos pasos de descenso de pendiente y habiendo recibido tres puntos, el tercer paso se debe dar en la dirección del vector que conecta el primer y el tercer punto, a lo largo del fondo del barranco.

Para funciones cercanas a las cuadráticas, el método del gradiente conjugado es efectivo .

Aplicaciones en redes neuronales artificiales

El método de descenso de gradiente con algunas modificaciones se usa ampliamente para entrenar al perceptrón y se conoce en la teoría de las redes neuronales artificiales como el método de retropropagación . Cuando se entrena una red neuronal del tipo perceptrón, se requiere cambiar los coeficientes de peso de la red de tal manera que se minimice el error promedio en la salida de la red neuronal cuando se alimenta a la entrada una secuencia de datos de entrada de entrenamiento. . Formalmente, para dar solo un paso de acuerdo con el método de descenso de gradiente (hacer solo un cambio en los parámetros de la red), es necesario alimentar secuencialmente todo el conjunto de datos de entrenamiento a la entrada de la red, calcular el error para cada dato de entrenamiento objeto y calcule la corrección necesaria de los coeficientes de red (pero no haga esta corrección), y después de enviar todos los datos, calcule la suma en la corrección de cada coeficiente de red (suma de gradientes) y corrija los coeficientes "en un paso" . Obviamente, con un gran conjunto de datos de entrenamiento, el algoritmo funcionará extremadamente lento, por lo tanto, en la práctica, los coeficientes de red a menudo se ajustan después de cada elemento de entrenamiento, donde el valor del gradiente se aproxima por el gradiente de la función de costo calculada en solo uno. elemento de entrenamiento. Este método se denomina descenso de gradiente estocástico o descenso de gradiente operativo . El descenso de gradiente estocástico es una forma de aproximación estocástica. La teoría de las aproximaciones estocásticas proporciona condiciones para la convergencia del método de descenso del gradiente estocástico.

Enlaces

Literatura