Descenso de gradiente


El descenso de gradiente es un algoritmo de optimización iterativo de primer orden para encontrar un mínimo local de una función diferenciable . La idea es dar pasos repetidos en la dirección opuesta al gradiente (o gradiente aproximado) de la función en el punto actual, porque esta es la dirección de descenso más pronunciado. Por el contrario, dar un paso en la dirección del gradiente conducirá a un máximo local de esa función; el procedimiento se conoce como ascenso en pendiente .

Descenso de gradiente en 2D

El descenso de gradiente se atribuye generalmente a Cauchy , quien lo sugirió por primera vez en 1847. [1] Hadamard propuso de forma independiente un método similar en 1907. [2] [3] Sus propiedades de convergencia para problemas de optimización no lineal fueron estudiadas por primera vez por Haskell Curry en 1944. , [4] con el método cada vez más estudiado y utilizado en las décadas siguientes, [5] [6] también llamado a menudo descenso más empinado.

Ilustración de descenso de gradiente en una serie de conjuntos de niveles

El descenso de gradiente se basa en la observación de que si la función multivariable está definido y diferenciable en una vecindad de un punto, luego Disminuye más rápido si se pasa de en la dirección del gradiente negativo de a . De ello se deduce que, si

para lo suficientemente pequeño, entonces . En otras palabras, el término se resta de porque queremos movernos en contra de la pendiente, hacia el mínimo local. Con esta observación en mente, uno comienza con una suposición por un mínimo local de , y considera la secuencia tal que

Tenemos una secuencia monótona

entonces, con suerte, la secuencia converge al mínimo local deseado. Tenga en cuenta que el valor del tamaño del paso se permite cambiar en cada iteración. Con ciertas suposiciones sobre la función (por ejemplo, convexo y Lipschitz ) y elecciones particulares de(p. ej., elegido mediante una búsqueda de líneas que satisfaga las condiciones de Wolfe o el método Barzilai-Borwein [7] [8] que se muestra a continuación),

se puede garantizar la convergencia a un mínimo local. Cuando la funciónes convexo , todos los mínimos locales también son mínimos globales, por lo que en este caso el descenso del gradiente puede converger a la solución global.

Este proceso se ilustra en la imagen adyacente. Aquí,se supone que está definido en el plano y que su gráfico tiene forma de cuenco . Las curvas azules son las curvas de nivel , es decir, las regiones en las que el valor dees constante. Una flecha roja que se origina en un punto muestra la dirección del gradiente negativo en ese punto. Tenga en cuenta que el gradiente (negativo) en un punto es ortogonal a la línea de contorno que pasa por ese punto. Vemos que el descenso de gradiente nos lleva al fondo del cuenco, es decir, al punto donde el valor de la función es mínimo.

Una analogía para comprender el descenso de gradientes

Niebla en las montañas

La intuición básica detrás del descenso de gradientes puede ilustrarse mediante un escenario hipotético. Una persona está atrapada en las montañas y está tratando de bajar (es decir, tratando de encontrar el mínimo global). Hay una densa niebla que hace que la visibilidad sea extremadamente baja. Por lo tanto, el camino de bajada de la montaña no es visible, por lo que deben usar la información local para encontrar el mínimo. Pueden usar el método de descenso en gradiente, que implica mirar la pendiente de la colina en su posición actual y luego proceder en la dirección con el descenso más empinado (es decir, cuesta abajo). Si estuvieran tratando de encontrar la cima de la montaña (es decir, el máximo), entonces continuarían en la dirección del ascenso más empinado (es decir, cuesta arriba). Usando este método, eventualmente encontrarían su camino hacia abajo de la montaña o posiblemente quedarían atrapados en algún agujero (es decir, el mínimo local o punto de silla ), como un lago de montaña. Sin embargo, suponga también que la pendiente de la colina no es inmediatamente obvia con una simple observación, sino que requiere un instrumento sofisticado para medir, que la persona tiene en ese momento. Se necesita bastante tiempo para medir la pendiente de la colina con el instrumento, por lo que deben minimizar el uso del instrumento si quieren bajar de la montaña antes de la puesta del sol. La dificultad entonces es elegir la frecuencia con la que deben medir la pendiente del cerro para no salirse de la pista.

En esta analogía, la persona representa el algoritmo y el camino recorrido por la montaña representa la secuencia de ajustes de parámetros que explorará el algoritmo. La pendiente de la colina representa la pendiente de la superficie de error en ese punto. El instrumento utilizado para medir la pendiente es la diferenciación (la pendiente de la superficie de error se puede calcular tomando la derivada de la función de error al cuadrado en ese punto). La dirección en la que eligen viajar se alinea con el gradiente de la superficie de error en ese punto. La cantidad de tiempo que viajan antes de tomar otra medida es el tamaño del paso.

Ejemplos de

El gradiente de descenso tiene problemas con funciones patológicas como la función de Rosenbrock que se muestra aquí.

La función Rosenbrock tiene un estrecho valle curvo que contiene el mínimo. El fondo del valle es muy plano. Debido al valle plano curvo, la optimización se realiza en zigzag lentamente con pasos pequeños hacia el mínimo.

Banana-SteepDesc.gif

La naturaleza en zigzag del método también es evidente a continuación, donde el método de descenso de gradiente se aplica a

The gradient descent algorithm in action. (1: contour)The gradient descent algorithm in action. (2: surface)

Elegir el tamaño del paso y la dirección de descenso

Desde que usó un tamaño de paso que es demasiado pequeño ralentizaría la convergencia, y una demasiado grande conduciría a la divergencia, encontrando un buen escenario de es un problema práctico importante. Philip Wolfe también abogó por utilizar "elecciones inteligentes de la dirección [de descenso]" en la práctica. [9] Si bien el uso de una dirección que se desvía de la dirección de descenso más pronunciada puede parecer contradictorio, la idea es que la pendiente más pequeña se puede compensar manteniéndose en una distancia mucho más larga.

Para razonar matemáticamente sobre esto, usemos una dirección y tamaño de paso y considere la actualización más general:

.

Encontrar una buena configuración de y requiere un poco de pensamiento. En primer lugar, nos gustaría que la dirección de actualización apunte cuesta abajo. Matemáticamente, dejando denotar el ángulo entre y , esto requiere que Para decir más, necesitamos más información sobre la función objetivo que estamos optimizando. Bajo el supuesto bastante débil de quees continuamente diferenciable, podemos probar que: [10]

Esta desigualdad implica que la cantidad por la que podemos estar seguros de que la función se reduce depende de una compensación entre los dos términos entre corchetes. El primer término entre corchetes mide el ángulo entre la dirección de descenso y la pendiente negativa. El segundo término mide la rapidez con que cambia el gradiente a lo largo de la dirección de descenso.

En principio, la desigualdad ( 1 ) podría optimizarse sobre y para elegir un tamaño y una dirección de paso óptimos. El problema es que evaluar el segundo término entre corchetes requiere evaluary las evaluaciones de gradientes adicionales son generalmente caras e indeseables. Algunas formas de solucionar este problema son:

  • Olvídese de los beneficios de una dirección de descenso inteligente estableciendo y utilice la búsqueda de líneas para encontrar un tamaño de paso adecuado, como uno que satisfaga las condiciones de Wolfe .
  • Asumiendo que es dos veces diferenciable, use su hessian para estimar Entonces escoge y optimizando la desigualdad ( 1 ).
  • Asumiendo que es Lipschitz , use su constante de Lipschitz al límite Entonces escoge y optimizando la desigualdad ( 1 ).
  • Construya un modelo personalizado de por . Entonces escoge y optimizando la desigualdad ( 1 ).
  • Bajo supuestos más sólidos sobre la función como la convexidad , pueden ser posibles técnicas más avanzadas .

Por lo general, siguiendo una de las recetas anteriores, se puede garantizar la convergencia a un mínimo local. Cuando la funciónes convexo , todos los mínimos locales también son mínimos globales, por lo que en este caso el descenso del gradiente puede converger a la solución global.

El algoritmo de descenso más pronunciado aplicado al filtro Wiener [11]

El descenso de gradiente se puede utilizar para resolver un sistema de ecuaciones lineales

reformulado como un problema de minimización cuadrática. Si la matriz del sistemaes simétrica real y definida positiva , la función cuadrática para minimizar comúnmente es

así que eso

Para una matriz real general , mínimos cuadrados lineales definen

En mínimos cuadrados lineales tradicionales de verdad y la norma euclidiana se utiliza, en cuyo caso

La búsqueda de línea de minimización, encontrar el tamaño óptimo de paso a nivel local en cada iteración, se puede realizar analíticamente para funciones cuadráticas y fórmulas explícitas para el óptimo localmente son conocidos. [5] [12]

Por ejemplo, para una matriz real simétrica y definida positiva, un algoritmo simple puede ser el siguiente, [5]

Para evitar multiplicar por dos veces por iteración, observamos que implica , que proporciona el algoritmo tradicional, [13]

El método rara vez se usa para resolver ecuaciones lineales, siendo el método de gradiente conjugado una de las alternativas más populares. El número de iteraciones de descenso de gradiente es comúnmente proporcional al número de condición espectral de la matriz del sistema (la relación entre los valores propios máximos y mínimos de) , mientras que la convergencia del método de gradiente conjugado generalmente se determina mediante una raíz cuadrada del número de condición, es decir, es mucho más rápido. Ambos métodos pueden beneficiarse del preacondicionamiento , donde el descenso del gradiente puede requerir menos suposiciones en el preacondicionador. [13]

El descenso de gradiente también se puede utilizar para resolver un sistema de ecuaciones no lineales . A continuación se muestra un ejemplo que muestra cómo usar el descenso de gradiente para resolver tres variables desconocidas, x 1 , x 2 y x 3 . Este ejemplo muestra una iteración del descenso de gradiente.

Considere el sistema de ecuaciones no lineal

Introducimos la función asociada

dónde

Ahora se podría definir la función objetivo

que intentaremos minimizar. Como conjetura inicial, usemos

Lo sabemos

donde la matriz jacobiana es dado por

Calculamos:

Por lo tanto

y

Una animación que muestra las primeras 83 iteraciones de descenso de gradiente aplicadas a este ejemplo. Las superficies son isosuperficies de en la suposición actual , y las flechas muestran la dirección de descenso. Debido a un tamaño de paso pequeño y constante, la convergencia es lenta.

Ahora, un adecuado debe ser encontrado de tal manera que

Esto se puede hacer con cualquiera de una variedad de algoritmos de búsqueda de líneas . También se podría simplemente adivinar lo que da

Al evaluar la función objetivo en este valor, se obtiene

La disminución de al valor del siguiente paso de

es una disminución considerable de la función objetivo. Más pasos reducirían su valor aún más, hasta que se encontrara una solución aproximada al sistema.

El descenso de gradiente funciona en espacios de cualquier número de dimensiones, incluso en dimensiones infinitas. En el último caso, el espacio de búsqueda es típicamente un espacio de función , y se calcula la derivada de Fréchet del funcional que se minimizará para determinar la dirección de descenso. [6]

Ese descenso de gradiente funciona en cualquier número de dimensiones (número finito al menos) puede verse como una consecuencia de la desigualdad de Cauchy-Schwarz . Ese artículo prueba que la magnitud del producto interno (punto) de dos vectores de cualquier dimensión se maximiza cuando son colineales. En el caso del descenso de gradiente, sería cuando el vector de ajustes de variables independientes es proporcional al vector de gradiente de derivadas parciales.

El descenso de gradiente puede tomar muchas iteraciones para calcular un mínimo local con la precisión requerida , si la curvatura en diferentes direcciones es muy diferente para la función dada. Para tales funciones, el preacondicionamiento , que cambia la geometría del espacio para dar forma a los conjuntos de niveles de función como círculos concéntricos , cura la convergencia lenta. Sin embargo, construir y aplicar el preacondicionamiento puede resultar computacionalmente costoso.

El descenso de gradiente se puede combinar con una búsqueda de línea , encontrando el tamaño de paso óptimo localmenteen cada iteración. Realizar la búsqueda de línea puede llevar mucho tiempo. Por el contrario, utilizando un pequeño fijo puede producir una convergencia deficiente.

Los métodos basados ​​en el método de Newton y la inversión del hessiano utilizando técnicas de gradiente conjugado pueden ser mejores alternativas. [14] [15] Generalmente, estos métodos convergen en menos iteraciones, pero el costo de cada iteración es mayor. Un ejemplo es el método BFGS que consiste en calcular en cada paso una matriz por la cual se multiplica el vector de gradiente para ir en una "mejor" dirección, combinado con un algoritmo de búsqueda de línea más sofisticado , para encontrar el "mejor" valor dePara problemas extremadamente grandes, donde dominan los problemas de memoria de la computadora, se debe usar un método de memoria limitada como L-BFGS en lugar de BFGS o el descenso más pronunciado.

El descenso de gradiente puede verse como la aplicación del método de Euler para resolver ecuaciones diferenciales ordinarias a un flujo de gradiente . A su vez, esta ecuación puede derivarse como un controlador óptimo [16] para el sistema de control. con dado en el formulario de comentarios .

El descenso en gradiente puede converger a un mínimo local y disminuir la velocidad en un vecindario de un punto de silla . Incluso para la minimización cuadrática sin restricciones, el descenso de gradiente desarrolla un patrón en zig-zag de iteraciones posteriores a medida que avanzan las iteraciones, lo que resulta en una convergencia lenta. Se han propuesto múltiples modificaciones del descenso de gradientes para abordar estas deficiencias.

Métodos de gradiente rápido

Yurii Nesterov ha propuesto [17] una modificación simple que permite una convergencia más rápida para problemas convexos y desde entonces se ha generalizado aún más. Para problemas suaves sin restricciones, el método se denomina método de gradiente rápido (FGM) o método de gradiente acelerado (AGM). Específicamente, si la función diferenciable es convexo y es Lipschitz , y no se asume quees fuertemente convexo , entonces el error en el valor objetivo generado en cada pasopor el método de descenso de gradiente estará delimitado por . Usando la técnica de aceleración de Nesterov, el error disminuye en. [18] Se sabe que la tasapara la disminución de la función de costo es óptima para los métodos de optimización de primer orden. Sin embargo, existe la oportunidad de mejorar el algoritmo reduciendo el factor constante. El método de gradiente optimizado (OGM) [19] reduce esa constante en un factor de dos y es un método óptimo de primer orden para problemas a gran escala. [20]

Para problemas restringidos o no suaves, la MGF de Nesterov se denomina método de gradiente proximal rápido (FPGM), una aceleración del método de gradiente proximal .

Momento o método de bola pesada

Tratando de romper el patrón en zig-zag del descenso de gradiente, el método de la cantidad de movimiento o bola pesada utiliza un término de cantidad de movimiento en analogía con una bola pesada que se desliza sobre la superficie de valores de la función que se minimiza, [5] o el movimiento de masas en la dinámica newtoniana a través de un medio viscoso en un campo de fuerza conservador. [21] El descenso de gradiente con impulso recuerda la actualización de la solución en cada iteración y determina la siguiente actualización como una combinación lineal del gradiente y la actualización anterior. Para la minimización cuadrática sin restricciones, una tasa de convergencia teórica límite del método de bola pesada es asintóticamente igual que la del método de gradiente conjugado óptimo . [5]

Esta técnica se utiliza en el descenso de gradiente estocástico # Momentum y como una extensión de los algoritmos de retropropagación utilizados para entrenar redes neuronales artificiales . [22] [23]

El descenso de gradiente se puede extender para manejar restricciones al incluir una proyección en el conjunto de restricciones. Este método solo es factible cuando la proyección se puede calcular de manera eficiente en una computadora. Bajo supuestos adecuados, este método converge. Este método es un caso específico del algoritmo hacia adelante y hacia atrás para inclusiones monótonas (que incluye programación convexa y desigualdades variacionales ). [24]

  • Búsqueda de línea de retroceso
  • Método de gradiente conjugado
  • Descenso de gradiente estocástico
  • Rprop
  • Regla delta
  • Condiciones de Wolfe
  • Preacondicionamiento
  • Algoritmo de Broyden-Fletcher-Goldfarb-Shanno
  • Fórmula de Davidon-Fletcher-Powell
  • Método de Nelder-Mead
  • Algoritmo de Gauss-Newton
  • Montañismo
  • Recocido cuántico

  1. ^ Lemaréchal, C. (2012). "Cauchy y el método de gradiente" (PDF) . Doc Math Extra : 251–254.
  2. ^ Hadamard, Jacques (1908). "Mémoire sur le problème d'analyse relatif à Véquilibre des plaques élastiques encastrées". Mémoires présentés par divers savants éstrangers à l'Académie des Sciences de l'Institut de France . 33 .
  3. ^ Courant, Richard (enero de 1943). "Métodos variacionales para la solución de problemas de equilibrio y vibraciones" . Toro. Amer. Matemáticas. Soc . 49 : 1-23. doi : 10.1090 / S0002-9904-1943-07818-4 - a través del Proyecto Euclid.
  4. ^ Curry, Haskell B. (1944). "El método de descenso más pronunciado para problemas de minimización no lineal" . Cuarto de galón. Apl. Matemáticas . 2 (3): 258–261. doi : 10.1090 / qam / 10667 .
  5. ^ a b c d e Polyak, Boris (1987). Introducción a la optimización .
  6. ^ a b Akilov, GP; Kantorovich, LV (1982). Análisis funcional (2ª ed.). Pergamon Press. ISBN 0-08-023036-9.
  7. ^ Barzilai, Jonathan; Borwein, Jonathan M. (1988). "Métodos de gradiente de tamaño de paso de dos puntos". Revista IMA de análisis numérico . 8 (1): 141-148. doi : 10.1093 / imanum / 8.1.141 .
  8. ^ Fletcher, R. (2005). "Sobre el método Barzilai-Borwein". En Qi, L .; Teo, K .; Yang, X. (eds.). Optimización y Control con Aplicaciones . Optimización aplicada. 96 . Boston: Springer. págs. 235-256. ISBN 0-387-24254-6.
  9. ^ Wolfe, Philip (1 de abril de 1969). "Condiciones de convergencia para métodos de ascenso" . Revisión SIAM . 11 (2): 226–235. doi : 10.1137 / 1011036 . ISSN  0036-1445 .
  10. ^ Bernstein, Jeremy; Vahdat, Arash; Yue, Yisong; Liu, Ming-Yu (12 de junio de 2020). "Sobre la distancia entre dos redes neuronales y la estabilidad del aprendizaje". arXiv : 2002.03432 [ cs.LG ].
  11. ^ Haykin, Simon S. Teoría del filtro adaptativo. Pearson Education India, 2008. - p. 108-142, 217-242
  12. ^ Saad, Yousef (2003). Métodos iterativos para sistemas lineales dispersos (2ª ed.). Filadelfia, Pa .: Sociedad de Matemáticas Industriales y Aplicadas. págs.  195 . ISBN 978-0-89871-534-7.
  13. ^ a b Bouwmeester, Henricus; Dougherty, Andrew; Knyazev, Andrew V. (2015). "Preacondicionamiento no simétrico para métodos de gradiente conjugado y descenso más pronunciado" . Procedia Informática . 51 : 276-285. doi : 10.1016 / j.procs.2015.05.241 .
  14. ^ Presione, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (1992). Recetas numéricas en C: El arte de la informática científica (2ª ed.). Nueva York: Cambridge University Press. ISBN 0-521-43108-5.
  15. ^ Strutz, T. (2016). Ajuste de datos e incertidumbre: una introducción práctica a los mínimos cuadrados ponderados y más allá (2ª ed.). Springer Vieweg. ISBN 978-3-658-11455-8.
  16. ^ Ross, MI (1 de julio de 2019). "Una teoría de control óptimo para la optimización no lineal" . Revista de Matemática Computacional y Aplicada . 354 : 39–51. doi : 10.1016 / j.cam.2018.12.044 . ISSN  0377-0427 .
  17. ^ Nesterov, Yu. (2004). Conferencias introductorias sobre optimización convexa: un curso básico . Saltador. ISBN 1-4020-7553-7.
  18. ^ Vandenberghe, Lieven (2019). "Métodos de gradiente rápido" (PDF) . Apuntes de conferencias para EE236C en UCLA .
  19. ^ Kim, D .; Fessler, JA (2016). "Métodos optimizados de primer orden para una minimización convexa suave" . Matemáticas. Prog. 151 (1–2): 81–107. arXiv : 1406.5468 . doi : 10.1007 / s10107-015-0949-3 . PMC  5067109 . PMID  27765996 . S2CID  207055414 .
  20. ^ Drori, Yoel (2017). "La complejidad basada en información exacta de la minimización convexa suave". Revista de complejidad . 39 : 1-16. arXiv : 1606.01424 . doi : 10.1016 / j.jco.2016.11.001 . S2CID  205861966 .
  21. ^ Qian, Ning (enero de 1999). "En el término de impulso en algoritmos de aprendizaje de descenso de gradientes" (PDF) . Redes neuronales . 12 (1): 145-151. CiteSeerX  10.1.1.57.5612 . doi : 10.1016 / S0893-6080 (98) 00116-6 . PMID  12662723 . Archivado desde el original (PDF) el 8 de mayo de 2014 . Consultado el 17 de octubre de 2014 .
  22. ^ "Adaptación del impulso y la tasa de aprendizaje" . Universidad de Willamette . Consultado el 17 de octubre de 2014 .
  23. ^ Geoffrey Hinton ; Nitish Srivastava; Kevin Swersky. "El método del impulso" . Coursera . Consultado el 2 de octubre de 2018 .Parte de una serie de conferencias para el curso en línea de Coursera Neural Networks for Machine Learning Archivado el 31 de diciembre de 2016 en Wayback Machine .
  24. ^ Combettes, PL; Pesquet, J.-C. (2011). "Métodos de división proximal en el procesamiento de señales". En Bauschke, HH; Burachik, RS ; Combettes, PL; Elser, V .; Luke, DR; Wolkowicz, H. (eds.). Algoritmos de punto fijo para problemas inversos en ciencia e ingeniería . Nueva York: Springer. págs. 185–212. arXiv : 0912.3522 . ISBN 978-1-4419-9568-1.

  • Boyd, Stephen ; Vandenberghe, Lieven (2004). "Minimización sin restricciones" (PDF) . Optimización convexa . Nueva York: Cambridge University Press. págs. 457–520. ISBN 0-521-83378-7.
  • Chong, Edwin KP; Żak, Stanislaw H. (2013). "Métodos de gradiente" . Introducción a la optimización (cuarta edición). Hoboken: Wiley. págs. 131–160. ISBN 978-1-118-27901-4.
  • Himmelblau, David M. (1972). "Procedimientos de minimización sin restricciones mediante derivados". Programación no lineal aplicada . Nueva York: McGraw-Hill. págs. 63-132. ISBN 0-07-028921-2.

  • Usando el descenso de gradiente en C ++, Boost, Ublas para regresión lineal
  • Una serie de videos de Khan Academy discute el ascenso en gradiente
  • Libro en línea que enseña el descenso de gradientes en el contexto de redes neuronales profundas
  • "Gradient Descent, cómo aprenden las redes neuronales" . 3Azul1Marrón . 16 de octubre de 2017 - a través de YouTube .