Algorytm Levenberga-Marquardta
Algorytm Levenberga-Marquardta to technika optymalizacji nieliniowej, która działa w sposób iteracyjny, łącząc aspekty metody największego spadku oraz metody Gaussa-Newtona.
Sformułowanie problemu
Rozważmy zestaw danych opisanych jako:
(ti, yi) ∈ R2, gdzie i = 1, 2, …, N. Szukamy dopasowania, które można zapisać jako:
ȳ = f(t | p),
gdzie p ∈ Rn oznacza wektor parametrów. Zakładamy, że najlepszym dopasowaniem jest to, które minimalizuje funkcjonał:
χ2(f) = χ2(p) = ∑i=1N [yi − f(ti | p)]2.
Algorytm Levenberga-Marquardta ogólnie znajduje rozwiązanie problemu optymalizacji dla funkcji, którą można zapisać w formie:
Φ(x) = 1/2 ∑i=1N ri2(x),
gdzie x ∈ Rn oraz zakładamy, że N ≥ n. Jak można zauważyć, funkcjonał χ2 można zapisać w ten sposób. Dla uproszczenia, przedstawmy funkcje ri jako wektor r(x) = (r1(x), …, rN(x)). Wtedy:
Φ(x) = ‖r(x)‖2.
Pochodne funkcji Φ można wyrazić za pomocą macierzy Jacobian funkcji r, zdefiniowanej jako:
{J(x)}ij = ∂ri/∂xj(x).
W ogólnym przypadku gradient funkcji Φ można zapisać:
∇Φ(x) = ∑i=1N ri(x) ∇ri(x) = J(x)Tr(x),
a jej macierz Hessego:
∇2Φ(x) = J(x)TJ(x) + ∑i=1N rj(x) ∇2rj(x).
W przypadku, gdy funkcje rj można aproksymować funkcjami liniowymi w otoczeniu interesującego nas punktu, to hesjan funkcji Φ przyjmuje prostszą postać:
∇2Φ(x) = J(x)TJ(x),
co jest charakterystyczne dla zadań najmniejszych kwadratów.
Opis metody
Najprostszym podejściem do minimalizacji funkcji Φ jest metoda największego spadku, opisana w następujący sposób:
xi+1 = xi − λ ∇Φ(xi),
która w ogólnym przypadku jest wolno zbieżna. Aby poprawić zbieżność, można wykorzystać wiedzę o drugiej pochodnej minimalizowanej funkcji w badanym punkcie. Jednym z podejść jest rozwinięcie gradientu minimalizowanej funkcji w szereg Taylora:
∇Φ(x) = ∇Φ(x0) + (x − x0)T∇2Φ(x0) + …
I przyjęcie przybliżenia kwadratowego funkcji Φ w otoczeniu x0 do rozwiązania równania:
∇Φ(x̄) = 0.
W ten sposób uzyskujemy metodę Gaussa-Newtona, opisaną jako:
xi+1 = xi − (∇2Φ(xi))−1∇Φ(xi),
gdzie hesjan funkcji Φ nie musi być znany dokładnie, a często wystarczy podane wcześniej przybliżenie. Niestety, szybkość zbieżności tej metody zależy od wyboru punktu startowego oraz liniowości minimalizowanej funkcji w tym otoczeniu. Kenneth Levenberg zauważył, że metody największego spadku i Gaussa-Newtona się uzupełniają, i zaproponował modyfikację kroku metody:
xi+1 = xi − (H(xi) + λI)−1∇Φ(xi),
gdzie λ to parametr regularyzacji, a I to macierz jednostkowa. W ten sposób uzyskujemy algorytm, w którym obliczamy wartość xi+1 na podstawie xi i równania.
Jeżeli błąd wzrasta, wracamy do wartości xi, zwiększamy wartość λ i powtarzamy krok. W przeciwnym przypadku, akceptujemy krok i zmniejszamy λ. W typowych zastosowaniach przyjmuje się k = 10. Gdy λ jest duże, hesjan nie jest wykorzystywany, a Donald Marquardt zauważył, że w takiej sytuacji można skalować każdy komponent wektora gradientu w zależności od krzywizny w danym kierunku, co jest korzystne w zadaniach minimizacji.
Zobacz też
optymalizacja (matematyka)
Linki zewnętrzne
Numerical Recipes in C, Chapter 15.5: Nonlinear models (en). [zarchiwizowane z tego adresu (2009-04-19)].