stringtranslate.com

Algoritmo de Broyden-Fletcher-Goldfarb-Shanno

En optimización numérica , el algoritmo Broyden-Fletcher-Goldfarb-Shanno ( BFGS ) es un método iterativo para resolver problemas de optimización no lineal sin restricciones . [1] Al igual que el método relacionado de Davidon-Fletcher-Powell , BFGS determina la dirección de descenso preacondicionando el gradiente con información de curvatura. Lo hace mejorando gradualmente una aproximación a la matriz de Hesse de la función de pérdida , obtenida únicamente a partir de evaluaciones de gradiente (o evaluaciones de gradiente aproximadas) mediante un método secante generalizado . [2]

Dado que las actualizaciones de la matriz de curvatura BFGS no requieren inversión de la matriz , su complejidad computacional es única , en comparación con el método de Newton . También es de uso común L-BFGS , que es una versión de BFGS con memoria limitada que es particularmente adecuada para problemas con un gran número de variables (p. ej., >1000). La variante BFGS-B maneja restricciones de caja simples. [3]

El algoritmo lleva el nombre de Charles George Broyden , Roger Fletcher , Donald Goldfarb y David Shanno . [4] [5] [6] [7]

Razón fundamental

El problema de optimización es minimizar , donde es un vector en , y es una función escalar diferenciable. No hay restricciones sobre los valores que pueden tomar.

El algoritmo comienza con una estimación inicial del valor óptimo y procede de forma iterativa para obtener una mejor estimación en cada etapa.

La dirección de búsqueda p k en la etapa k viene dada por la solución del análogo de la ecuación de Newton:

donde es una aproximación a la matriz de Hesse en , que se actualiza iterativamente en cada etapa, y es el gradiente de la función evaluada en x k . Luego se utiliza una búsqueda lineal en la dirección p k para encontrar el siguiente punto x k +1 minimizando el escalar

La condición cuasi-Newton impuesta a la actualización de es

Deja y , luego satisface

,

que es la ecuación secante.

La condición de curvatura debe cumplirse para que sea definida positiva, lo que se puede verificar multiplicando previamente la ecuación secante por . Si la función no es fuertemente convexa , entonces la condición debe aplicarse explícitamente, por ejemplo, encontrando un punto x k +1 que satisfaga las condiciones de Wolfe , que implican la condición de curvatura, utilizando la búsqueda lineal.

En lugar de requerir que se calcule la matriz de Hesse completa en el punto como , la matriz de Hesse aproximada en la etapa k se actualiza mediante la suma de dos matrices:

Ambas y son matrices simétricas de rango uno, pero su suma es una matriz de actualización de rango dos. La matriz de actualización de BFGS y DFP se diferencia de su predecesora por una matriz de rango dos. Otro método de rango uno más simple se conoce como método de rango uno simétrico , que no garantiza la precisión positiva . Para mantener la simetría y la precisión positiva de , la forma de actualización se puede elegir como . Imponiendo la condición secante, . Eligiendo y , podemos obtener: [8]

Finalmente, sustituimos y y obtenemos la ecuación de actualización de :

Algoritmo

Considere el siguiente problema de optimización sin restricciones

A partir de una estimación inicial y una estimación inicial de la matriz de Hesse, se repiten los siguientes pasos hasta llegar a la solución:

  1. Obtenga una dirección resolviendo .
  2. Realice una optimización unidimensional ( búsqueda de líneas ) para encontrar un tamaño de paso aceptable en la dirección encontrada en el primer paso. Si se realiza una búsqueda de línea exacta, entonces . En la práctica, una búsqueda de línea inexacta suele ser suficiente, con condiciones de Wolfe aceptablemente satisfactorias .
  3. Configurar y actualizar .
  4. .
  5. .

La convergencia se puede determinar observando la norma del gradiente; dado algunos , uno puede detener el algoritmo cuando se inicializa con , el primer paso será equivalente a un descenso de gradiente , pero los pasos posteriores se refinan cada vez más mediante la aproximación al hessiano.

El primer paso del algoritmo se lleva a cabo utilizando la inversa de la matriz , que se puede obtener de manera eficiente aplicando la fórmula de Sherman-Morrison al paso 5 del algoritmo, dando

Esto se puede calcular de manera eficiente sin matrices temporales, reconociendo que es simétrico y que y son escalares, usando una expansión como

Por lo tanto, para evitar cualquier inversión de matriz, se puede aproximar la inversa del hessiano en lugar del propio hessiano: [9]

A partir de una suposición inicial y una matriz de Hesse invertida aproximada , se repiten los siguientes pasos hasta llegar a la solución:

  1. Obtenga una dirección resolviendo .
  2. Realice una optimización unidimensional ( búsqueda de líneas ) para encontrar un tamaño de paso aceptable en la dirección encontrada en el primer paso. Si se realiza una búsqueda de línea exacta, entonces . En la práctica, una búsqueda de línea inexacta suele ser suficiente, con condiciones de Wolfe aceptablemente satisfactorias .
  3. Configurar y actualizar .
  4. .
  5. .

En problemas de estimación estadística (como máxima verosimilitud o inferencia bayesiana), se pueden estimar intervalos creíbles o intervalos de confianza para la solución a partir de la inversa de la matriz de Hesse final [ cita necesaria ] . Sin embargo, estas cantidades están técnicamente definidas por la verdadera matriz de Hesse, y la aproximación BFGS puede no converger a la verdadera matriz de Hesse. [10]

Nuevos desarrollos

La fórmula de actualización de BFGS se basa en gran medida en que la curvatura sea estrictamente positiva y acotada desde cero. Esta condición se cumple cuando realizamos una búsqueda lineal con condiciones de Wolfe en un objetivo convexo. Sin embargo, algunas aplicaciones de la vida real (como los métodos de programación cuadrática secuencial) producen habitualmente curvaturas negativas o casi nulas. Esto puede ocurrir al optimizar un objetivo no convexo o al emplear un enfoque de región de confianza en lugar de una búsqueda de líneas. También es posible producir valores espurios debido al ruido en el objetivo.

En tales casos, se puede utilizar una de las llamadas actualizaciones BFGS amortiguadas (ver [11] ) que modifican y/o para obtener una actualización más robusta.

Implementaciones notables

Las implementaciones de código abierto notables son:

Las implementaciones propietarias notables incluyen:

Ver también

Referencias

  1. ^ Fletcher, Roger (1987), Métodos prácticos de optimización (2ª ed.), Nueva York: John Wiley & Sons , ISBN 978-0-471-91547-8
  2. ^ Dennis, JE Jr .; Schnabel, Robert B. (1983), "Métodos secantes para minimización sin restricciones", Métodos numéricos para optimización sin restricciones y ecuaciones no lineales , Englewood Cliffs, Nueva Jersey: Prentice-Hall, págs. 194-215, ISBN 0-13-627216-9
  3. ^ Byrd, Richard H.; Lu, Peihuang; Nocedal, Jorge; Zhu, Ciyou (1995), "Un algoritmo de memoria limitada para una optimización limitada", SIAM Journal on Scientific Computing , 16 (5): 1190–1208, CiteSeerX 10.1.1.645.5814 , doi :10.1137/0916069 
  4. ^ Broyden, CG (1970), "La convergencia de una clase de algoritmos de minimización de doble rango", Revista del Instituto de Matemáticas y sus Aplicaciones , 6 : 76–90, doi :10.1093/imamat/6.1.76
  5. ^ Fletcher, R. (1970), "Un nuevo enfoque para los algoritmos de métricas variables", Computer Journal , 13 (3): 317–322, doi : 10.1093/comjnl/13.3.317
  6. ^ Goldfarb, D. (1970), "Una familia de actualizaciones de métricas variables derivadas por medios variacionales", Matemáticas de la Computación , 24 (109): 23–26, doi : 10.1090/S0025-5718-1970-0258249-6
  7. ^ Shanno, David F. (julio de 1970), "Condicionamiento de métodos cuasi-Newton para la minimización de funciones", Matemáticas de la Computación , 24 (111): 647–656, doi : 10.1090/S0025-5718-1970-0274029-X , Señor  0274029
  8. ^ Fletcher, Roger (1987), Métodos prácticos de optimización (2ª ed.), Nueva York: John Wiley & Sons , ISBN 978-0-471-91547-8
  9. ^ Nocedal, Jorge; Wright, Stephen J. (2006), Optimización numérica (2ª ed.), Berlín, Nueva York: Springer-Verlag , ISBN 978-0-387-30303-1
  10. ^ Ge, Ren-pu; Powell, MJD (1983). "La convergencia de matrices de métricas variables en optimización sin restricciones". Programación Matemática . 27 (2). 123.doi : 10.1007 /BF02591941. S2CID  8113073.
  11. ^ Jorge Nocedal; Stephen J. Wright (2006), Optimización numérica
  12. ^ "Biblioteca científica GNU - documentación GSL 2.6". www.gnu.org . Consultado el 22 de noviembre de 2020 .
  13. ^ "R: Optimización de uso general". stat.ethz.ch. ​Consultado el 22 de noviembre de 2020 .
  14. ^ "scipy.optimize.fmin_bfgs - Guía de referencia de SciPy v1.5.4". docs.scipy.org . Consultado el 22 de noviembre de 2020 .
  15. ^ "Opciones configurables de Optim.jl". julianlsolvers .

Otras lecturas