Algorytm Levenberga-Marquardta

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 pRn oznacza wektor parametrów. Zakładamy, że najlepszym dopasowaniem jest to, które minimalizuje funkcjonał:

χ2(f) = χ2(p) = ∑i=1N [yif(ti | p)]2.

Algorytm Levenberga-Marquardta ogólnie znajduje rozwiązanie problemu optymalizacji dla funkcji, którą można zapisać w formie:

Φ(x) = 1/2i=1N ri2(x),

gdzie xRn oraz zakładamy, że Nn. 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) + (xx0)T2Φ(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)].

Przeczytaj u przyjaciół: