El LMA se utiliza en muchas aplicaciones de software para resolver problemas genéricos de ajuste de curvas. Al utilizar el algoritmo de Gauss-Newton, a menudo converge más rápido que los métodos de primer orden. [6] Sin embargo, al igual que otros algoritmos de optimización iterativos, el LMA solo encuentra un mínimo local , que no es necesariamente el mínimo global .
El problema
La aplicación principal del algoritmo de Levenberg-Marquardt es el problema de ajuste de curvas de mínimos cuadrados: dado un conjunto de pares empíricos de variables independientes y dependientes, encuentre los parámetros de la curva del modelo de modo que la suma de los cuadrados de las desviaciones se minimice:
que se supone que no está vacío.
La solución
Al igual que otros algoritmos de minimización numérica, el algoritmo de Levenberg-Marquardt es un procedimiento iterativo . Para iniciar una minimización, el usuario debe proporcionar una estimación inicial para el vector de parámetros . En los casos con un solo mínimo, una estimación estándar no informada como funcionará bien; en los casos con múltiples mínimos , el algoritmo converge al mínimo global solo si la estimación inicial ya está algo cerca de la solución final.
En cada paso de iteración, el vector de parámetros se reemplaza por una nueva estimación . Para determinar , la función se aproxima mediante su linealización :
dónde
es el gradiente (vector fila en este caso) de con respecto a .
La suma de las desviaciones cuadradas tiene su mínimo en un gradiente cero con respecto a . La aproximación de primer orden anterior de da
o en notación vectorial,
Tomando la derivada de esta aproximación de con respecto a y fijando el resultado en cero se obtiene
donde es la matriz jacobiana , cuya fila -ésima es igual a , y donde y son vectores con el componente -ésimo y respectivamente. La expresión anterior obtenida para se aplica al método de Gauss-Newton. La matriz jacobiana definida anteriormente no es (en general) una matriz cuadrada, sino una matriz rectangular de tamaño , donde es el número de parámetros (tamaño del vector ). La multiplicación de matrices produce la matriz cuadrada requerida y el producto matriz-vector en el lado derecho produce un vector de tamaño . El resultado es un conjunto de ecuaciones lineales, que se pueden resolver para .
La contribución de Levenberg es reemplazar esta ecuación por una "versión amortiguada":
donde es la matriz identidad, que da como incremento al vector de parámetros estimado .
El factor de amortiguamiento (no negativo) se ajusta en cada iteración. Si la reducción de es rápida, se puede usar un valor más pequeño, acercando el algoritmo al algoritmo de Gauss-Newton , mientras que si una iteración da una reducción insuficiente en el residuo, se puede aumentar, dando un paso más cercano a la dirección de descenso del gradiente. Tenga en cuenta que el gradiente de con respecto a es igual a . Por lo tanto, para valores grandes de , el paso se dará aproximadamente en la dirección opuesta al gradiente. Si la longitud del paso calculado o la reducción de la suma de cuadrados del último vector de parámetros caen por debajo de los límites predefinidos, la iteración se detiene y el último vector de parámetros se considera la solución.
Cuando el factor de amortiguamiento es grande en relación con , no es necesario invertir, ya que la actualización se aproxima bien mediante el pequeño paso de gradiente .
Para que la solución fuera invariante en escala, el algoritmo de Marquardt resolvió un problema modificado con cada componente del gradiente escalado de acuerdo con la curvatura. Esto proporciona un mayor movimiento a lo largo de las direcciones donde el gradiente es menor, lo que evita una convergencia lenta en la dirección del gradiente pequeño. Fletcher, en su artículo de 1971 A modified Marquardt subrutine for non-linear minimum squares (Una subrutina Marquardt modificada para mínimos cuadrados no lineales), simplificó la forma, reemplazando la matriz identidad por la matriz diagonal que consiste en los elementos diagonales de :
Se han propuesto varios argumentos más o menos heurísticos para la mejor elección del parámetro de amortiguamiento . Existen argumentos teóricos que muestran por qué algunas de estas elecciones garantizan la convergencia local del algoritmo; sin embargo, estas elecciones pueden hacer que la convergencia global del algoritmo sufra las propiedades indeseables del descenso más pronunciado , en particular, una convergencia muy lenta cerca del óptimo.
Los valores absolutos de cualquier elección dependen de qué tan bien escalado esté el problema inicial. Marquardt recomendó comenzar con un valor y un factor . Inicialmente, se establece y calcula la suma residual de cuadrados después de un paso desde el punto de partida con el factor de amortiguamiento de y, en segundo lugar, con . Si ambos son peores que el punto inicial, entonces el amortiguamiento se incrementa mediante multiplicaciones sucesivas por hasta que se encuentra un punto mejor con un nuevo factor de amortiguamiento de para algún .
Si el uso del factor de amortiguamiento da como resultado una reducción del cuadrado del residuo, entonces este se toma como el nuevo valor de (y la nueva ubicación óptima se toma como la obtenida con este factor de amortiguamiento) y el proceso continúa; si el uso de dio como resultado un residuo peor, pero el uso de dio como resultado un residuo mejor, entonces se deja sin cambios y el nuevo óptimo se toma como el valor obtenido con como factor de amortiguamiento.
Una estrategia eficaz para el control del parámetro de amortiguamiento, llamada gratificación retrasada , consiste en aumentar el parámetro en una pequeña cantidad para cada paso ascendente y disminuirlo en una gran cantidad para cada paso descendente. La idea detrás de esta estrategia es evitar moverse cuesta abajo demasiado rápido al comienzo de la optimización, restringiendo así los pasos disponibles en futuras iteraciones y, por lo tanto, ralentizando la convergencia. [7] Se ha demostrado que un aumento por un factor de 2 y una disminución por un factor de 3 son eficaces en la mayoría de los casos, mientras que para problemas grandes pueden funcionar mejor valores más extremos, con un aumento por un factor de 1,5 y una disminución por un factor de 5. [8]
Aceleración geodésica
Al interpretar el paso de Levenberg-Marquardt como la velocidad a lo largo de una trayectoria geodésica en el espacio de parámetros, es posible mejorar el método agregando un término de segundo orden que tenga en cuenta la aceleración a lo largo de la trayectoria geodésica.
¿Dónde está la solución de?
Dado que este término de aceleración geodésica depende únicamente de la derivada direccional a lo largo de la dirección de la velocidad , no requiere calcular la matriz de derivadas de segundo orden completa, lo que requiere solo una pequeña sobrecarga en términos de costo computacional. [9] Dado que la derivada de segundo orden puede ser una expresión bastante compleja, puede ser conveniente reemplazarla con una aproximación de diferencias finitas.
donde y ya han sido calculados por el algoritmo, por lo que se requiere solo una evaluación de función adicional para calcular . La elección del paso de diferencia finita puede afectar la estabilidad del algoritmo, y un valor de alrededor de 0,1 suele ser razonable en general. [8]
Dado que la aceleración puede apuntar en dirección opuesta a la velocidad, para evitar que se detenga el método en caso de que la amortiguación sea demasiado pequeña, se agrega un criterio adicional sobre la aceleración para aceptar un paso, que requiere que
donde generalmente se fija en un valor menor que 1, con valores más pequeños para problemas más difíciles. [8]
La adición de un término de aceleración geodésica puede permitir un aumento significativo en la velocidad de convergencia y es especialmente útil cuando el algoritmo se mueve a través de cañones estrechos en el paisaje de la función objetivo, donde los pasos permitidos son más pequeños y la mayor precisión debido al término de segundo orden brinda mejoras significativas. [8]
Ejemplo
En este ejemplo, intentamos ajustar la función utilizando el algoritmo Levenberg–Marquardt implementado en GNU Octave como la función leasqr . Los gráficos muestran un ajuste progresivamente mejor para los parámetros , utilizados en la curva inicial. Solo cuando los parámetros en el último gráfico se eligen más cercanos al original, las curvas se ajustan exactamente. Esta ecuación es un ejemplo de condiciones iniciales muy sensibles para el algoritmo Levenberg–Marquardt. Una razón para esta sensibilidad es la existencia de múltiples mínimos: la función tiene mínimos en el valor del parámetro y .
También se han utilizado variantes del algoritmo de Levenberg-Marquardt para resolver sistemas de ecuaciones no lineales. [10]
Referencias
^ Levenberg, Kenneth (1944). "Un método para la solución de ciertos problemas no lineales mediante mínimos cuadrados". Quarterly of Applied Mathematics . 2 (2): 164–168. doi : 10.1090/qam/10666 .
^ Marquardt, Donald (1963). "Un algoritmo para la estimación de parámetros no lineales por mínimos cuadrados". Revista SIAM de Matemáticas Aplicadas . 11 (2): 431–441. doi :10.1137/0111030. hdl : 10338.dmlcz/104299 .
^ Girard, André (1958). "Extracto de Revue d'optique théorique et instrumentale ". Rev. Optar . 37 : 225–241, 397–424.
^ Wynne, CG (1959). "Diseño de lentes mediante computadora digital electrónica: I". Proc. Phys. Soc. Lond . 73 (5): 777–787. Bibcode :1959PPS....73..777W. doi :10.1088/0370-1328/73/5/310.
^ Morrison, David D. (1960). "Métodos para problemas de mínimos cuadrados no lineales y pruebas de convergencia". Actas del Seminario del Laboratorio de Propulsión a Chorro sobre Programas de Seguimiento y Determinación de Órbitas : 1–9.
^ Wiliamowski, Bogdan; Yu, Hao (junio de 2010). "Computación mejorada para el entrenamiento de Levenberg–Marquardt" (PDF) . Transacciones IEEE sobre redes neuronales y sistemas de aprendizaje . 21 (6).
^ Transtrum, Mark K; Machta, Benjamin B; Sethna, James P (2011). "Geometría de mínimos cuadrados no lineales con aplicaciones a modelos descuidados y optimización". Physical Review E . 83 (3). APS: 036701. arXiv : 1010.1449 . Bibcode :2011PhRvE..83c6701T. doi :10.1103/PhysRevE.83.036701. PMID 21517619. S2CID 15361707.
^ abcd Transtrum, Mark K; Sethna, James P (2012). "Mejoras en el algoritmo Levenberg-Marquardt para la minimización de mínimos cuadrados no lineales". arXiv : 1201.5885 [physics.data-an].
^ "Ajuste de mínimos cuadrados no lineales". Biblioteca científica GNU. Archivado desde el original el 14 de abril de 2020.
^ Kanzow, Christian; Yamashita, Nobuo; Fukushima, Masao (2004). "Métodos de Levenberg-Marquardt con fuertes propiedades de convergencia local para resolver ecuaciones no lineales con restricciones convexas". Revista de Matemática Computacional y Aplicada . 172 (2): 375–397. Bibcode :2004JCoAM.172..375K. doi : 10.1016/j.cam.2004.02.013 .
Lectura adicional
Moré, Jorge J.; Sorensen, Daniel C. (1983). "Computing a Trust-Region Step" (PDF) . SIAM J. Sci. Stat. Comput . 4 (3): 553–572. doi :10.1137/0904038.
Gill, Philip E.; Murray, Walter (1978). "Algoritmos para la solución del problema de mínimos cuadrados no lineales". Revista SIAM de Análisis Numérico . 15 (5): 977–992. Bibcode :1978SJNA...15..977G. doi :10.1137/0715063.
Pujol, Jose (2007). "La solución de problemas inversos no lineales y el método de Levenberg-Marquardt". Geofísica . 72 (4). SEG: W1–W16. Bibcode :2007Geop...72W...1P. doi :10.1190/1.2732552.
Nocedal, Jorge; Wright, Stephen J. (2006). Optimización numérica (2.ª ed.). Springer. ISBN 978-0-387-30303-1.
Enlaces externos
Se puede encontrar una descripción detallada del algoritmo en Recetas numéricas en C, Capítulo 15.5: Modelos no lineales.
CT Kelley, Métodos iterativos para optimización , SIAM Frontiers in Applied Mathematics, n.º 18, 1999, ISBN 0-89871-433-8 . Copia en línea
Historia del algoritmo en las noticias de SIAM
Un tutorial de Ananth Ranganathan
K. Madsen, HB Nielsen, O. Tingleff, Métodos para problemas de mínimos cuadrados no lineales (tutorial de mínimos cuadrados no lineales; código LM: secante jacobiana analítica)
T. Strutz: Ajuste de datos e incertidumbre (Una introducción práctica a los mínimos cuadrados ponderados y más allá). 2.ª edición, Springer Vieweg, 2016, ISBN 978-3-658-11455-8 .
HP Gavin, El método Levenberg-Marquardt para problemas de ajuste de curvas por mínimos cuadrados no lineales ( implementación en MATLAB incluida)