El algoritmo BFGS de memoria limitada ( L-BFGS o LM-BFGS ) es un algoritmo de optimización perteneciente a la colección de métodos cuasi-Newton que aproxima el algoritmo Broyden-Fletcher-Goldfarb-Shanno (BFGS) utilizando una cantidad limitada de memoria de computadora . [ 1 ] Es un algoritmo popular para la estimación de parámetros en aprendizaje automático . [ 2 ] [ 3 ] El problema objetivo del algoritmo es minimizarsobre valores no restringidos del vector realdóndees una función escalar diferenciable.
Al igual que el BFGS original, L-BFGS utiliza una estimación de la matriz hessiana inversa para dirigir su búsqueda a través del espacio de variables, pero mientras que BFGS almacena una matriz hessiana densaEn la aproximación a la inversa de la matriz hessiana ( donde n es el número de variables del problema), L-BFGS almacena solo unos pocos vectores que representan la aproximación implícitamente. Debido a su requerimiento de memoria lineal resultante, el método L-BFGS es particularmente adecuado para problemas de optimización con muchas variables. En lugar de la inversa de la matriz hessiana H k , L-BFGS mantiene un historial de las m actualizaciones pasadas de la posición x y el gradiente ∇ f ( x ), donde generalmente el tamaño del historial m puede ser pequeño (a menudoEstas actualizaciones se utilizan para realizar implícitamente operaciones que requieren el producto de vectores H k .
Algoritmo
El algoritmo comienza con una estimación inicial del valor óptimo,y procede iterativamente a refinar esa estimación con una secuencia de mejores estimaciones.. Las derivadas de la funciónse utilizan como un impulsor clave del algoritmo para identificar la dirección de descenso más pronunciado y también para formar una estimación de la matriz hessiana (segunda derivada) de.
L-BFGS comparte muchas características con otros algoritmos cuasi-Newton, pero es muy diferente en la forma en que se realiza la multiplicación matriz-vector.se lleva a cabo, dondees la dirección aproximada de Newton, es el gradiente actual, yes la inversa de la matriz hessiana. Existen varios enfoques publicados que utilizan un historial de actualizaciones para formar este vector de dirección. Aquí presentamos un enfoque común, la llamada "recursión de dos bucles". [ 4 ] [ 5 ]
Tomamos como dado, la posición en la k -ésima iteración, ydóndees la función que se está minimizando, y todos los vectores son vectores columna. También asumimos que hemos almacenado las últimas m actualizaciones de la forma
- .
Nosotros definimos, yserá la aproximación 'inicial' de la inversa de la matriz hessiana con la que comienza nuestra estimación en la iteración k .
El algoritmo se basa en la recursión BFGS para la inversa de la matriz hessiana como
Para un k fijo definimos una secuencia de vectorescomoy. Luego, un algoritmo recursivo para calculardees definiryTambién definimos otra secuencia de vectores.como. Existe otro algoritmo recursivo para calcular estos vectores que consiste en definiry luego definir recursivamentey. El valor deEsa es entonces nuestra dirección de ascenso.
Por lo tanto, podemos calcular la dirección de descenso de la siguiente manera:
Esta formulación da la dirección de búsqueda para el problema de minimización, es decir,Para problemas de maximización, se debe tomar -z en su lugar. Nótese que la inversa aproximada inicial del hessianoSe elige como una matriz diagonal o incluso un múltiplo de la matriz identidad, ya que esto es numéricamente eficiente.
El escalado de la matriz inicialasegura que la dirección de búsqueda esté bien escalada y, por lo tanto, la longitud del paso unitario se acepta en la mayoría de las iteraciones. Se utiliza una búsqueda lineal de Wolfe para asegurar que se cumpla la condición de curvatura y que la actualización BFGS sea estable. Tenga en cuenta que algunas implementaciones de software utilizan una búsqueda lineal de retroceso de Armijo , pero no pueden garantizar que se cumpla la condición de curvatura.se satisfará con el paso elegido ya que una longitud de paso mayor quepuede ser necesario para satisfacer esta condición. Algunas implementaciones abordan esto omitiendo la actualización de BFGS cuandoes negativo o demasiado cercano a cero, pero este enfoque no se recomienda generalmente ya que las actualizaciones pueden omitirse con demasiada frecuencia para permitir la aproximación de Hessiano.para capturar información importante sobre la curvatura. Algunos solucionadores emplean la llamada actualización (L)BFGS amortiguada que modifica cantidades.ypara satisfacer la condición de curvatura.
La fórmula de recursión de dos bucles es ampliamente utilizada por los optimizadores sin restricciones debido a su eficiencia en la multiplicación por la inversa de la matriz hessiana. Sin embargo, no permite la formación explícita de la matriz hessiana directa ni de la inversa, y es incompatible con restricciones que no sean de caja. Un enfoque alternativo es la representación compacta , que implica una representación de bajo rango para la matriz hessiana directa y/o inversa. [ 6 ] Esta representa la matriz hessiana como la suma de una matriz diagonal y una actualización de bajo rango. Dicha representación permite el uso de L-BFGS en entornos con restricciones, por ejemplo, como parte del método SQP.
Aplicaciones
L-BFGS ha sido denominado "el algoritmo de elección" para ajustar modelos log-lineales (MaxEnt) y campos aleatorios condicionales con-regularización . [ 2 ] [ 3 ]
Variantes
Dado que BFGS (y por ende L-BFGS) está diseñado para minimizar funciones suaves sin restricciones , el algoritmo L-BFGS debe modificarse para manejar funciones que incluyan componentes no diferenciables o restricciones. Una clase popular de modificaciones son los métodos de conjunto activo, basados en el concepto de conjunto activo . La idea es que, al restringirse a un entorno pequeño de la iteración actual, la función y las restricciones se pueden simplificar.
L-BFGS-B
El algoritmo L-BFGS-B extiende L-BFGS para manejar restricciones de caja simples ( también conocidas como restricciones de límites) en variables; es decir, restricciones de la forma l i ≤ x i ≤ u i donde l i y u i son límites inferiores y superiores constantes por variable, respectivamente (para cada x i , se pueden omitir uno o ambos límites). [ 7 ] [ 8 ] El método funciona identificando variables fijas y libres en cada paso (usando un método de gradiente simple), y luego usando el método L-BFGS solo en las variables libres para obtener una mayor precisión, y luego repitiendo el proceso.
BÚHO-QN
El método cuasi-Newton de memoria limitada por ortantes ( OWL-QN ) es una variante de L-BFGS para el ajuste.- modelos regularizados , explotando la escasez inherente de dichos modelos. [ 3 ] Minimiza funciones de la forma
dóndees una función de pérdida convexa diferenciable . El método es un método de tipo conjunto activo: en cada iteración, estima el signo de cada componente de la variable y restringe el paso subsiguiente para que tenga el mismo signo. Una vez que el signo está fijo, la no diferenciableEl término se convierte en un término lineal suave que puede ser procesado por L-BFGS. Después de un paso de L-BFGS, el método permite que algunas variables cambien de signo y repite el proceso.
O-LBFGS
Schraudolph et al. presentan una aproximación en línea tanto para BFGS como para L-BFGS. [ 9 ] De forma similar al descenso de gradiente estocástico , esto puede utilizarse para reducir la complejidad computacional evaluando la función de error y el gradiente en un subconjunto seleccionado aleatoriamente del conjunto de datos general en cada iteración. Se ha demostrado que O-LBFGS tiene una convergencia global casi segura [ 10 ] mientras que la aproximación en línea de BFGS (O-BFGS) no es necesariamente convergente. [ 11 ]
Implementación de variantes
Entre las implementaciones de código abierto más destacadas se incluyen:
- ALGLIB implementa L-BFGS en C++ y C#, así como una versión separada con restricciones lineales/de caja, BLEIC.
optimLa rutina de optimización de propósito general de R utiliza el método L-BFGS-B.- El método de minimización del módulo de optimización de SciPy también incluye la opción de utilizar L-BFGS-B.
- Julia también implementa
Optim.jlel algoritmo L-BFGS y L-BFGS-B. [ 12 ] - Stan implementa L-BFGS junto con la diferenciación automática como una opción para resolver problemas de estimación de máxima verosimilitud y estimación de máxima probabilidad a posteriori .
Entre las implementaciones no de código abierto más destacadas se incluyen:
- La variante L-BFGS-B también existe como algoritmo ACM TOMS 778. [ 8 ] [ 13 ] En febrero de 2011, algunos de los autores del código L-BFGS-B original publicaron una actualización importante (versión 3.0).
- Una implementación de referencia en Fortran 77 (y con una interfaz Fortran 90 ). [ 14 ] [ 15 ] Esta versión, así como versiones anteriores, se ha convertido a muchos otros lenguajes.
- Una implementación de OWL-QN en C++ por sus diseñadores. [ 3 ] [ 16 ]
Obras citadas
- ↑ Liu, DC; Nocedal, J. (1989). "Sobre el método de memoria limitada para la optimización a gran escala" . Mathematical Programming B. 45 ( 3): 503– 528. CiteSeerX 10.1.1.110.6443 . doi : 10.1007/BF01589116 . S2CID 5681609 .
- 1 2 Malouf, Robert (2002). "Una comparación de algoritmos para la estimación de parámetros de máxima entropía" . Actas de la Sexta Conferencia sobre Aprendizaje del Lenguaje Natural (CoNLL-2002) . págs. 49–55 . doi : 10.3115/1118853.1118871 .
- 1 2 3 4 Andrew, Galen; Gao, Jianfeng (2007). "Entrenamiento escalable de modelos log-lineales regularizados con L₁" . Actas de la 24.ª Conferencia Internacional sobre Aprendizaje Automático . doi : 10.1145/1273496.1273501 . ISBN 9781595937933. S2CID 5853259 .
- ↑ Matthies, H.; Strang, G. (1979). "La solución de ecuaciones de elementos finitos no lineales". International Journal for Numerical Methods in Engineering . 14 (11): 1613– 1626. Bibcode : 1979IJNME..14.1613M . doi : 10.1002/nme.1620141104 .
- ↑ Nocedal, J. (1980). "Actualización de matrices cuasi-Newton con almacenamiento limitado" . Matemáticas de la computación . 35 (151): 773– 782. doi : 10.1090/S0025-5718-1980-0572855-7 .
- ↑ Byrd, RH; Nocedal, J.; Schnabel, RB (1994). "Representaciones de matrices cuasi-Newton y su uso en métodos de memoria limitada". Mathematical Programming . 63 (4): 129– 156. doi : 10.1007/BF01582063 . S2CID 5581219 .
- ↑ Byrd, RH; Lu, P.; Nocedal, J.; Zhu, C. (1995). "Un algoritmo de memoria limitada para la optimización con restricciones de límites" . SIAM J. Sci. Comput. 16 (5): 1190– 1208. Bibcode : 1995SJSC...16.1190B . doi : 10.1137/0916069 . S2CID 6398414 .
- 1 2 Zhu, C.; Byrd, Richard H.; Lu, Peihuang; Nocedal, Jorge (1997). "L-BFGS-B: Algoritmo 778: L-BFGS-B, rutinas FORTRAN para optimización con restricciones de límites a gran escala" . ACM Transactions on Mathematical Software . 23 (4): 550– 560. doi : 10.1145/279232.279236 . S2CID 207228122 .
- ↑ Schraudolph, N.; Yu, J.; Günter, S. (2007). Un método cuasi-Newton estocástico para la optimización convexa en línea . AISTATS.
- ↑ Mokhtari, A.; Ribeiro, A. (2015). "Convergencia global de BFGS de memoria limitada en línea" (PDF) . Journal of Machine Learning Research . 16 : 3151–3181 . arXiv : 1409.2045 .
- ↑ Mokhtari, A.; Ribeiro, A. (2014). "RES: Algoritmo BFGS estocástico regularizado". IEEE Transactions on Signal Processing . 62 (23): 6089– 6104. arXiv : 1401.7625 . Bibcode : 2014ITSP...62.6089M . CiteSeerX 10.1.1.756.3003 . doi : 10.1109/TSP.2014.2357775 . S2CID 15214938 .
- ↑ "Documentación oficial de Optim.jl" . Documentación de Optim.jl .
- ↑ "Página principal de TOMS" . toms.acm.org .
- ↑ Morales, JL; Nocedal, J. (2011). "Comentario sobre el "algoritmo 778: L-BFGS-B: subrutinas Fortran para optimización a gran escala con restricciones de límites"". ACM Transactions on Mathematical Software . 38 : 1– 4. doi : 10.1145/2049662.2049669 . S2CID 16742561 .
- ↑ "Código de optimización no lineal L-BFGS-B" . users.iems.northwestern.edu .
- ↑ "Optimizador cuasi-Newton de memoria limitada Orthant-Wise para objetivos regularizados L1" . Centro de descargas de Microsoft .
Lecturas adicionales
- Liu, DC; Nocedal, J. (1989). "Sobre el método de memoria limitada para la optimización a gran escala" . Mathematical Programming B. 45 ( 3): 503– 528. CiteSeerX 10.1.1.110.6443 . doi : 10.1007/BF01589116 . S2CID 5681609 .
- Haghighi, Aria (2 de diciembre de 2014). "Optimización numérica: comprensión de L-BFGS" .
- Pytlak, Radoslaw (2009). «Algoritmos cuasi-Newton de memoria limitada» . Algoritmos de gradiente conjugado en optimización no convexa . Springer. pp. 159–190 . ISBN 978-3-540-85633-7.
- Algoritmos y métodos de optimización