Algorytm Levenberga-Marquardta

Z testwiki
Przejdź do nawigacji Przejdź do wyszukiwania

Algorytm Levenberga-Marquardtaalgorytm optymalizacji nieliniowej. Jest to algorytm iteracyjny, łączący w sobie cechy metody największego spadku i metody Gaussa-Newtona.

Sformułowanie problemu

Mając daną serię danych (ti,yi)𝐑2, gdzie i=1,2,,N, szukamy dopasowania y¯=f(t|𝐩), gdzie 𝐩𝐑n – wektor parametrów. Zakładamy, że najlepszym dopasowaniem jest to minimalizujące funkcjonał:

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

Algorytm Levenberga-Marquardta w ogólności znajduje rozwiązanie zadania optymalizacji nieliniowej funkcji dającej się zapisać w postaci:

Φ(𝐱)=12i=1Nri2(𝐱),

gdzie 𝐱𝐑n i zakładamy, że Nn. Jak łatwo zauważyć, funkcjonał χ2 daje się zapisać w taki sposób. Dla uproszczenia, przedstawmy funkcje ri jako wektor 𝐫(𝐱)=(r1(𝐱),,rN(𝐱)) (zwany wektorem rezydualnym). Wtedy Φ(𝐱)=𝐫(𝐱)2. Pochodne funkcji Φ można zapisać przy użyciu Macierzy Jacobiego funkcji 𝐫, zdefiniowanego jako {𝖩(𝐱)}ij=rixj(𝐱). W ogólnym przypadku gradient funkcji Φ można zapisać:

Φ(𝐱)=i=1Nri(𝐱)ri(𝐱)=𝖩(𝐱)𝖳𝐫(𝐱),

a jej Macierz Hessego:

2Φ(𝐱)=𝖩(𝐱)𝖳𝖩(𝐱)+i=1Nrj(𝐱)2rj(𝐱).

W przypadku, gdy funkcje rj można aproksymować funkcjami liniowymi w otoczeniu interesującego nas punktu (wtedy 2rj(𝐱) jest bliskie zeru), lub gdy rj(𝐱) jest małe, hesjan funkcji Φ przyjmuje prostszą postać:

2Φ(𝐱)=𝖩(𝐱)𝖳𝖩(𝐱),

a więc hesjan można otrzymać wprost mając dany jakobian wektora rezydualnego 𝐫(𝐱), co jest charakterystyczne dla zadania najmniejszych kwadratów.

Opis metody

Najprostszym podejściem do problemu minimalizacji funkcji Φ jest metoda największego spadku, opisana schematem:

𝐱i+1=𝐱iλΦ(𝐱i),

która jest, w ogólnym przypadku, wolno zbieżna. Aby poprawić jej zbieżność, można skorzystać z wiedzy o drugiej pochodnej minimalizowanej funkcji w badanym punkcie. Jednym z możliwych podejść jest rozwinięcie gradientu minimalizowanej funkcji w szereg Taylora:

Φ(𝐱)=Φ(𝐱0)+(𝐱𝐱0)𝖳2Φ(𝐱0)+

i przyjęcie przybliżenia kwadratowego funkcji Φ w otoczeniu 𝐱0 do rozwiązania równania Φ(𝐱¯)=0. W ten sposób otrzymujemy metodę Gaussa-Newtona opisaną schematem:

𝐱i+1=𝐱i(2Φ(𝐱i))1Φ(𝐱i),

gdzie hesjan funkcji Φ nie musi być znany dokładnie i często wystarczy podane wcześniej przybliżenie. Niestety, szybkość zbieżności tej metody zależy od wyboru punktu początkowego, a konkretnie od liniowości minimalizowanej funkcji w otoczeniu punktu startowego. Kenneth Levenberg zauważył, że opisane metody (największego spadku i Gaussa-Newtona) nawzajem się uzupełniają i zaproponował następującą modyfikację kroku metody:

𝐱i+1=𝐱i(𝖧(𝐱i)+λ𝖨)1Φ(𝐱i),(*)

wraz z następującym algorytmem:

  1. oblicz wartość 𝐱i+1 na podstawie 𝐱i i równania (*),
  2. oblicz wartość błędu w punkcie 𝐱i+1,
  3. jeśli błąd wzrósł, wróć do wartości 𝐱i, zwiększ wartość λ k-krotnie i wróć do kroku 1 (przybliżenie liniowe minimalizowanej funkcji w otoczeniu 𝐱i okazało się nie dość ścisłe, więc zwiększamy „wpływ” metody największego spadku),
  4. jeśli błąd zmalał, zaakceptuj ten krok i zmniejsz wartość λ k-krotnie (założenie o liniowości minimalizowanej funkcji w otoczeniu 𝐱i okazało się wystarczająco ścisłe, więc zwiększamy „wpływ” metody Gaussa-Newtona).

W typowych zastosowaniach k=10. W przypadku, gdy λ jest duże, hesjan w zasadzie nie jest wykorzystywany. Donald Marquardt zauważył, że nawet w takiej sytuacji można wykorzystać informację zawartą w drugiej pochodnej minimalizowanej funkcji, poprzez skalowanie każdego komponentu wektora gradientu w zależności od krzywizny w danym kierunku (co pomaga w źle uwarunkowanych zadaniach minimalizacji typu error valley). Po uwzględnieniu poprawki Marquardta otrzymujemy następującą postać kroku metody:

𝐱i+1=𝐱i(𝖧(𝐱i)+λdiag[𝖧])1Φ(𝐱i),

gdzie:

diag[𝖧]=[h11000h22000hnn].

Największą zaletą algorytmu Levenberga-Marquardta jest jego szybka zbieżność, w porównaniu z konkurencyjnymi metodami. Najkosztowniejszą operacją jest natomiast wyznaczenie macierzy odwrotnej, które w praktyce jest przeprowadzane w sposób przybliżony, na przykład przy użyciu metody SVD. Tym niemniej, nawet w najoszczędniejszych przypadkach koszt jednego kroku rośnie niedopuszczalnie wraz ze wzrostem rozmiaru zadania powyżej tysiąca parametrów. Z drugiej dla zadań o umiarkowanej ilości parametrów (rzędu kilkuset), metoda Levenberga-Marquardta jest dużo szybsza od metody największego spadku.

Zobacz też

Linki zewnętrzne