¿Cómo funciona el L-BFGS?

14

El propósito del trabajo era optimizar algunos parámetros maximizando la probabilidad de registro regularizada. Luego calculan derivadas parciales. Y luego, los autores mencionan que optimizan la ecuación utilizando L-BFGS, un procedimiento estándar de cuasi-Newton para optimizar las funciones suaves de muchas variables (sin más detalles).

Como funciona ?

Abir
fuente
3
Que papel Poner en enlace al papel Necesita un contexto. Ponga enlaces a siglas, por ejemplo, L-BFGS Y explíquelas : L-BFGS = Algoritmo de memoria limitada Broyden – Fletcher – Goldfarb – Shanno (BFGS)
Carl
1
en.wikipedia.org/wiki/Limited-memory_BFGS Hay muchas variaciones, que pueden diferir mucho en capacidad y rendimiento.
Mark L. Stone
hola, gracias Sr. Mark :) echaré un vistazo. El documento es cs.stanford.edu/people/jure/pubs/circles-tkdd14.pdf (optimización de la ecuación 6)
Abir
Básicamente piense en L-BFGS como una forma de encontrar un mínimo (local) de una función objetivo, haciendo uso de los valores de la función objetivo y el gradiente de la función objetivo. Sin embargo, ese nivel de descripción cubre muchos métodos de optimización además de L-BFGS. Puedes leer más sobre esto en la sección 7.2 de springer.com/us/book/9780387303031 .
Mark L. Stone
1
BFGS es una forma de tratar de obtener un método de primer orden para imitar un método de segundo orden (newton) a través del método secante
user795305

Respuestas:

27

Básicamente piense en L-BFGS como una forma de encontrar un mínimo (local) de una función objetivo, haciendo uso de los valores de la función objetivo y el gradiente de la función objetivo. Sin embargo, ese nivel de descripción cubre muchos métodos de optimización además de L-BFGS. Puede leer más al respecto en la sección 7.2 de Nocedal y Wright "Optimización numérica, segunda edición" http://www.springer.com/us/book/9780387303031 . Se proporciona una discusión muy superficial de L-BFGS en https://en.wikipedia.org/wiki/Limited-memory_BFGS .

El método de primer orden significa que se utilizan gradientes (primeras derivadas) (y quizás valores de función objetivo), pero no Hessian (segundas derivadas). Piense, por ejemplo, en el descenso gradual y el descenso más pronunciado, entre muchos otros.

El método de segundo orden significa que se utilizan gradientes y arpillera (y tal vez valores de función objetivo). Los métodos de segundo orden pueden basarse en

  1. Matriz de arpillera "exacta" (o diferencias finitas de gradientes), en cuyo caso se conocen como métodos de Newton o

  2. Métodos cuasi-Newton, que se aproximan al hessiano en función de las diferencias de gradientes en varias iteraciones, imponiendo una condición "secante" (cuasi-Newton). Hay muchos métodos diferentes de Cuasi-Newton, que estiman el hessiano de diferentes maneras. Uno de los más populares es BFGS. La aproximación de Hesse BFGS puede basarse en el historial completo de gradientes, en cuyo caso se conoce como BFGS, o puede basarse solo en los gradientes m más recientes, en cuyo caso se conoce como BFGS de memoria limitada, abreviado como L-BFGS. La ventaja de L-BFGS es que solo requiere retener los gradientes m más recientes, donde m generalmente es de alrededor de 10 a 20, que es un requisito de almacenamiento mucho menor que n * (n + 1) / 2 elementos necesarios para almacenar el total (triángulo) de una estimación de Hesse, como se requiere con BFGS, donde n es la dimensión del problema. A diferencia de BFGS (completo), la estimación de Hessian nunca se forma explícitamente ni se almacena en L-BFGS (aunque algunas implementaciones de BFGS solo forman y actualizan el factor Choelsky de la aproximación de Hessian, en lugar de la propia aproximación de Hessian); más bien, los cálculos que se requerirían con la estimación del hessiano se realizan sin formarlo explícitamente. L-BFGS se usa en lugar de BFGS para problemas muy grandes (cuando n es muy grande), pero podría no funcionar tan bien como BFGS. Por lo tanto, se prefiere BFGS sobre L-BFGS cuando se pueden cumplir los requisitos de memoria de BFGS. Por otro lado, L-BFGS puede no ser mucho peor en rendimiento que BFGS. la estimación de Hessian nunca se forma o almacena explícitamente en L-BFGS (aunque algunas implementaciones de BFGS solo forman y actualizan el factor Choelsky de la aproximación de Hessian, en lugar de la aproximación de Hessian en sí); más bien, los cálculos que se requerirían con la estimación del hessiano se realizan sin formarlo explícitamente. L-BFGS se usa en lugar de BFGS para problemas muy grandes (cuando n es muy grande), pero podría no funcionar tan bien como BFGS. Por lo tanto, se prefiere BFGS sobre L-BFGS cuando se pueden cumplir los requisitos de memoria de BFGS. Por otro lado, L-BFGS puede no ser mucho peor en rendimiento que BFGS. la estimación de Hessian nunca se forma o almacena explícitamente en L-BFGS (aunque algunas implementaciones de BFGS solo forman y actualizan el factor Choelsky de la aproximación de Hessian, en lugar de la propia aproximación de Hessian); más bien, los cálculos que se requerirían con la estimación del hessiano se realizan sin formarlo explícitamente. L-BFGS se usa en lugar de BFGS para problemas muy grandes (cuando n es muy grande), pero podría no funcionar tan bien como BFGS. Por lo tanto, se prefiere BFGS sobre L-BFGS cuando se pueden cumplir los requisitos de memoria de BFGS. Por otro lado, L-BFGS puede no ser mucho peor en rendimiento que BFGS. los cálculos que se requerirían con la estimación del hessiano se realizan sin formarlo explícitamente. L-BFGS se usa en lugar de BFGS para problemas muy grandes (cuando n es muy grande), pero podría no funcionar tan bien como BFGS. Por lo tanto, se prefiere BFGS sobre L-BFGS cuando se pueden cumplir los requisitos de memoria de BFGS. Por otro lado, L-BFGS puede no ser mucho peor en rendimiento que BFGS. los cálculos que se requerirían con la estimación del hessiano se realizan sin formarlo explícitamente. L-BFGS se usa en lugar de BFGS para problemas muy grandes (cuando n es muy grande), pero podría no funcionar tan bien como BFGS. Por lo tanto, se prefiere BFGS sobre L-BFGS cuando se pueden cumplir los requisitos de memoria de BFGS. Por otro lado, L-BFGS puede no ser mucho peor en rendimiento que BFGS.

Incluso en este nivel de descripción, hay muchas variantes. Por ejemplo, los métodos pueden estar totalmente desprotegidos, en cuyo caso todo vale, y pueden no converger a nada, incluso en problemas convexos. O pueden ser salvaguardados. Los métodos protegidos generalmente se basan en regiones de confianza o búsqueda de línea, y están destinados a garantizar la convergencia a algo. Muy importante, el simple hecho de saber que un método es L-BFGS no le indica por sí mismo qué tipo de protección, si la hay, se utiliza. Es como decir que un automóvil es un sedán de 4 puertas, pero, por supuesto, no todos los sedanes de 4 puertas son iguales en rendimiento o confiabilidad. Es solo un atributo de un algoritmo de optimización.

Mark L. Stone
fuente
1
Hola Mark, necesito tu ayuda nuevamente, ¿podrías decirme brevemente la diferencia entre los métodos newton y newton quazi? gracias
Abir
3
Los métodos de Newton calculan la matriz de Hesse, "desde cero", en cada iteración del algoritmo, ya sea exactamente, o por diferencias finitas del gradiente en esa iteración. Los métodos cuasi-Newton construyen una aproximación de la matriz de Hesse utilizando el diferencias de gradiente entre iteraciones. Hay muchas formas diferentes de hacerlo, lo que da lugar a una variedad de diferentes métodos de Cuasi-Newton, como BFGS, DFP, SR1 y otros. Por lo general, los métodos de Newton requieren una gran cantidad de cómputo en cada iteración para calcular el Hessian, mucha más computación por iteración que los métodos de Cuasi-Newton.
Mark L. Stone