Levenberg-Marquardt-Algorithmus
Der Levenberg-Marquardt-Algorithmus, benannt nach Kenneth Levenberg und Donald Marquardt, ist ein numerischer Optimierungsalgorithmus zur Lösung nichtlinearer Ausgleichs-Probleme mit Hilfe der Methode der kleinsten Quadrate. Das Verfahren kombiniert das Gauß-Newton-Verfahren mit einer Regularisierungstechnik, die absteigende Funktionswerte erzwingt.
Der Levenberg-Marquardt-Algorithmus ist deutlich robuster als das Gauß-Newton-Verfahren, das heißt, er konvergiert mit einer hohen Wahrscheinlichkeit auch bei schlechten Startbedingungen, allerdings ist auch hier Konvergenz nicht garantiert. Ferner ist er bei Anfangswerten, die nahe dem Minimum liegen, oft etwas langsamer.
Beschreibung
Für die nichtlineare Funktion soll das Kleinste-Quadrate-Minimierungsproblem (mit einer kleineren Anzahl von unabhängigen Variablen gegenüber der Zahl der Funktionskomponenten)
ausgehend von einer Startnäherung gelöst werden.
Wie beim Gauß-Newton-Verfahren wird F(x) in jedem Schritt durch eine Linearisierung ersetzt und das Ersatzproblem:
betrachtet. Dabei ist J die Jacobi-Matrix der Funktion F.
Der Standard Gauß-Newton-Schritt berechnet den neuen Punkt als Lösung eines linearen Gleichungssystems mit der Koeffizientenmatrix . Wenn diese Matrix schlecht konditioniert oder singulär ist, kann der Algorithmus nur einen suboptimalen (d. h. die Zielfunktion wird nicht verbessert) bzw. gar keinen Schritt machen. Besonders bei schlecht konditionierten und „fast singulären“ Matrizen ergeben sich zudem erhebliche numerische Schwierigkeiten. Der Levenberg-Marquardt-Algorithmus umgeht diese Probleme, indem er die Koeffizientenmatrix des linearen Gleichungssystems auf die Form erweitert, wobei eine Diagonalmatrix ist die sicherstellt, dass der gesamte Term positiv definit ist.
Der vollständige Levenberg-Marquardt-Iterationsschritt lautet
wobei eine Schrittweite ist.
Eine weit verbreitete Form für die Diagonalmatrix ist , mit und der Einheitsmatrix. Diese Form wurde auch in den originalen Artikeln von Levenberg und Marquardt vorgeschlagen. Für den Fall reduziert sich der Levenberg-Marquardt Iterationsschritt zum Gauß-Newton Schritt. Im Fall dominiert hingegen die Einheitsmatrix gegenüber dem Term , und der Levenberg-Marquardt-Iterationsschritt reduziert sich zu einem Gradientenschritt. Mit der Wahl von kann somit stufenlos zwischen Gradientenschritt und Gauß-Newton Schritt gewählt werden.
Eine alternative Sichtweise ergibt sich aus der Beobachtung, dass das linearisierte Ersatzproblem nur in einer kleinen Umgebung des Linearisierungspunkts eine gute Annäherung an das Originalproblem darstellt. Eine unrestringierte Minimierung macht jedoch unter Umständen sehr große Schritte, die diese kleine Umgebung verlassen. Aus diesem Grund ersetzt man die unrestringierte Optimierung durch die restringierte Optimierung mit , d. h. man beschränkt die Optimierung auf eine kleine Nachbarschaft um den Linearisierungspunkt. Aus diesem Grund werden Methoden dieser Art häufig Trust-Region-Verfahren genannt. Man kann zeigen, dass die restringierte Optimierung genau auf die Form für die Koeffizientenmatrix des linearen Gleichungssystems führt.
Der Levenberg-Marquardt-Algorithmus variiert adaptiv die Koeffizientenaktualisierungen zwischen dem Gradientenabstieg und dem Gauß-Newton-Verfahren
wobei kleine Werte des Dämpfungskoeffizienten zu einem Gauß-Newton-Update führen und große Werte von zu einem Update für den Gradientenabstieg führen. Wenn eine Iteration zu einer schlechteren Approximation führt, wird erhöht. Andernfalls nähert sich die Levenberg-Marquardt-Methode, wenn sich die Lösung verbessert, dem Gauß-Newton-Verfahren, und die Lösung beschleunigt typischerweise das lokale Minimum.[1]
Konvergenz
Das Levenberg-Marquardt-Verfahren geht lokal in das Gauß-Newton-Verfahren über. Damit ist die Konvergenz lokal linear und nahe dem Optimum sogar quadratisch.
Literatur
- K. Levenberg: A Method for the Solution of Certain Problems in Least Squares, Quart. Appl. Math. 2, 164-168, 1944.
- D. Marquardt: An Algorithm for Least-Squares Estimation of Nonlinear Parameters, SIAM J. Appl. Math. 11, 431-441, 1963.
- Jorge J. Moré: The Levenberg-Marquardt algorithm: Implementation and theory. In G. A. Watson (ed.): Numerical Analysis. Dundee 1977, Lecture Notes Math. 630, 1978, S. 105–116
- P. Gill, W. Murray und M. Wright: Practical Optimization, Academic Press 1981
- J. E. Dennis, Jr., und R. B. Schnabel: Numerical methods for unconstrained optimization and nonlinear equations. Prentice-Hall Series in Computational Mathematics, Englewood Cliffs 1983
Weblinks
Frei verfügbare Implementierungen des Levenberg-Marquardt-Algorithmus:
- gnuplot, freies Grafikprogramm
- lmdif, in Fortran, klassische Implementierung aus Netlib / Minpack. Lizenz: Public Domain
- lmfit, an Netlib::Minpack::lmfid angelehnte, in sich geschlossene C-Bibliothek, für allgemeine Minimierung und für Kurvenanpassung nach der Methode der kleinsten Quadrate. FreeBSD-Lizenz
- levmar, in C/C++, mit Schnittstellen für Matlab, Perl und Python. Lizenz: GPL
- mpfit, Implementierung in IDL
- csmpfit, C# Portierung von mpfit
- minpack.lm, Implementierung in R
- C/C++ Minpack, Implementierung in C/C++
Einzelnachweise
- ↑ Henri P. Gavin, Duke University: The Levenberg-Marquardt algorithm for nonlinear least squares curve-fitting problems