5. Metody Newtona Na ostatnich zajęciach zidentyfikowaliśmy ważny problem poznanych dotychczas metod (Gaussa-Seidel a, Cauchy iego, spadku wzdłuż gradientu, stochastycznego spadku wzdłuż gradientu): ich zbieżność staje się znacznie wolniejsza dla problemów o wysokim współczynniku uwarunkowania. Na dzisiejszych laboratoriach poznamy metodę która dobrze radzi sobie z tego typu problemami poprzez stosowanie odpowiedniego przybliżenia funkcji funkcją kwadratową. 5.1 Wzór Taylora Rozpocznijmy od przypomnienia aparatu matematycznego, który pozwala nam na przybliżanie funkcji wielomianem w danym punkcie - mowa tu oczywiście o wzorze Taylora. Ta technika była już wcześniej przez nas stosowana, chociaż nie wprost. Na przykład intuicje, że pochodna jest liniowym przybliżeniem funkcji w okolicach pewnego punktu x 0 można zbudować na podstawie tego wzoru (zamiast naszej długiej opowieści w skrypcie do drugich laboratoriów). Jak się okaże, dotychczas poznawane przez nas algorytmy można spostrzegać jako właśnie algorytmy przybliżające sobie lokalnie optymalizowaną funkcję funkcją liniową. Rozdział ten jest niezwykle ważny, ponieważ w niedalekiej przyszłości pozwoli nam na konstrukcje algorytmów optymalizacyjnych, które przybliżają funkcję lepiej niż linią prostą! Definicja 5.1 Twierdzenie Taylora. Niech K 1 będzie liczbą całkowitą, a funkcja f będzie K razy różniczkowalna w punkcie x 0, wtedy istnieje taka funkcja h K że f = K ( (x x0 ) k ) f (k) (x 0 ) + h K (x x 0 ) K k=0 k! a lim x x0 h K = 0 (reszta dąży do 0 gdy x dąży do x 0 przybliżenie lokalne).
2 Laboratorium 5. Metody Newtona Jak zbudować przybliżenie funkcji korzystając z tego twierdzenia? Na początku musisz ustalić jakiś punkt x 0 wokół którego budujesz przybliżenie. Pamiętaj, że tak zbudowane przybliżenie jest dobre tylko w okolicach tego punktu, powinieneś więc wybrać takie x 0 które jest stosunkowo najbliższe xom dla których będziesz chciał przybliżyć sobie wartość funkcji. Po wybraniu tego punktu obliczmy wartość pochodnej w punkcie x 0 oraz tyle pochodnych ile tylko jesteśmy w stanie obliczyć rozbudowując nasz wzór. Im więcej ich dodamy tym nasze przybliżenie będzie lepsze. f K ( (x x0 ) k ) f (k) (x 0 ) k=0 k! = (x x 0) 0 0! f (x 0 ) + (x x 0) 1 1! f (x 0 ) + (x x 0) 2 2! = f (x 0 ) + (x x 0 ) f (x 0 ) + 1 2 (x x 0) (x 0 ) +... f (x 0 ) +... = f (x 0 ) +x f (x }{{} 0 ) x }{{} 0 f (x 0 ) + 1 }{{} (x 0 ) x 2 xx 0 f (x 0 ) +x }{{}}{{} 0 (x 0 ) +... }{{} stała stała stała stała stała stała Zwróć uwagę, że po ustaleniu punktu x 0 wokół którego budujemy przybliżenie oraz obliczeniu jego pochodnych otrzymujemy przybliżenie funkcji wielomianem stopnia K! Jak podejrzewasz może być to niezwykle użyteczne, bo dowolną 1 funkcję możesz w taki sposób przybliżyć wielomianem, który najczęściej jest łatwiejszy w obliczeniach (i w optymalizacji, jeśli jest niskiego rzędu!). Ustalając K = 1 otrzymujemy przybliżenie funkcji poprzez pierwszą pochodną: f 1 k=0 ( (x x0 ) k k! ) f (k) (x 0 ) = (x x 0) 0 f (x 0 )+ (x x 0) 1 f (x 0 ) = f (x 0 )+ f (x 0 )(x x 0 ) 0! 1! Jest to przybliżeniem wielomianem stopnia 1 czyli funkcją liniową. Warto zauważyć, że jest to dokładnie wzór stycznej do funkcji, który wyprowadzaliśmy na poprzednich laboratoriach! Przykład 5.1 Przybliżmy sobie funkcję f = 5x 2 +10x+5 poprzez linię prostą wokół punktu x 0 = 1. Z treści zadania wynika, że K = 1. Otrzymujemy więc z twierdzenia Taylora f f (x 0 ) + f (x 0 )(x x 0 ) = f (1) + f (1)(x 1) Obliczamy pochodną oraz wartość funkcji w punkcie x 0 = 1 f (1) = 5 1 2 + 10 1 + 5 = 20 f = 10x + 10 f (1) = 10 + 10 = 20 Podstawiając do wzoru otrzymujemy: f 20 + 20(x 1) = 20 + 20x 20 = 20x 1 St. z o.o. stwierdzenie z ograniczoną odpowiedzialnością
5.1 Wzór Taylora 3 Przykład 5.2 Przybliżmy sobie tę samą funkcję f = 5x 2 + 10x + 5, ale tym razem przyjmując K = 2. Z twierdzenia Taylora: f f (x 0 ) + f (x 0 )(x x 0 ) + (x x 0) 2 f (x 0 ) = f (1) + f (1)(x 1) + 2! Obliczmy tylko brakującą wartość drugiej pochodnej: Podstawiając do wzoru otrzymujemy: f = (10x + 10) = 10 f (1) = 10 f f (1) + f (x 1)2 (1)(x 1) + f (1) 2 (x 1)2 = 20 + 20(x 1) + 10 2 = 20 + 20x 20 + 5(x 1) 2 = 20x + 5(x 2 2x + 1) = 20x + 5x 2 10x + 5 = 5x 2 + 10x + 5 (x 1)2 2 f (1) Czyli dostaliśmy oryginalną funkcję f! Cóż, najlepsze przybliżenie wielomianu stopnia 2 poprzez wielomian stopnia 2 to ten sam wielomian ;) 5.1.1 Pochodne w ekstremach W lokalnym minimum lub maksimum pochodna funkcji wynosi zawsze 0. Jednak pamiętaj, że zerowa wartość pochodnej może także sygnalizować np. punkt siodłowy - nie jest to więc ostateczny wskaźnik, że funkcja osiąga ekstremum. Typ punktu podejrzanego o bycie ekstremum możemy zweryfikować poprzez obliczenie kolejnych pochodnych Jeśli druga pochodna jest dodatnia to funkcja osiąga swoje minimum (pamiętasz warunek wypukłości?) Jeśli druga pochodna jest ujemna to funkcja osiąga swoje maksimum Jeśli druga pochodna jest równa 0 to... masz kłopoty!!! Musisz policzyć kolejne pochodne, aż znajdziesz pierwszą, która się nie zeruje. Jeśli jest to pochodna rzędu nieparzystego to nie jest to ekstremum Jeśli jest to pochodna rzędu parzystego to interpretujesz ją jak drugą pochodną Przykład 5.3 Z jakim typem punktu mamy do czynienia w x = 0 funkcji f = x 3? Obliczmy pierwszą pochodną f = 2x 2 f (0) = 0 Widzimy, że funkcja w danym punkcie ani nie rośnie ani nie maleje. Obliczmy więc drugą pochodną, aby ustalić typ punktu... f = 6x f (0) = 0 Co za pech! Druga pochodna się zeruje, więc nie jesteśmy w stanie określić typu punktu... Obliczmy kolejną pochodną f = 6 f (0) = 6
4 Laboratorium 5. Metody Newtona Pierwsza pochodna, która nie wynosi 0 jest trzeciego (czyli nieparzystego) rzędu. Funkcja nie osiąga ekstremum w tym punkcie. Twierdzenie 5.1 Jeśli funkcja f jest wypukła to warunek f = 0 jest wystarczający, by stwierdzić, że jest to lokalne/globalne minimum. Powyższe twierdzenie dla funkcji ściśle wypukłych jest proste do udowodnienia używając naszych wcześniej zdefiniowanych reguł. Jak dowiedzieliśmy się na drugich laboratoriach, jednym z warunków ścisłej wypukłości jest f > 0, więc wiemy że jeśli f = 0 to f > 0 czyli mamy minimum. Dla funkcji (nieściśle) wypukłych dowód można znaleźć w Internecie. 5.2 Algorytm spadku wzdłuż gradientu (znowu) Jedną z naszych intuicji dot. algorytmu spadku wzdłuż gradientów była ta, że w każdym kroku konstruuje on liniowe przybliżenia funkcji i je minimalizuje (patrz Laboratorium 3). Przypomnijmy, że równanie stycznej skonstruowane wokół punktu x 0 wygląda następująco: g = f (x 0 ) + f (x 0 ) T (x x 0 ) Ponieważ algorytm spadku wzdłuż gradientu w każdej swojej iteracji oblicza gradient f (x 0 ) to w zasadzie w każdej iteracji możemy skonstruować sobie liniowe przybliżenie funkcji. Funkcje liniowe są stosunkowo proste w optymalizacji, w przeciwieństwie do naszej (zwykle nieliniowej) funkcji celu. Jeśli więc f g to zamiast optymalizować trudne f optymalizujemy jej liniowe i łatwe w optymalizacji przybliżenie g. Wiemy, że aby znaleźć minimum unkcji liniowej to przy funkcji rosnącej znajduje się ono skrajnie w lewo ( ), a dla funkcji malejącej musimy go szukać jak najbardziej w prawo. Jednak takie postawienie problemu doprowadziłoby nas do algorytmu który po zobaczeniu liniowego przybliżenia ląduje w ±. Cały szkopuł polega jednak na tym, że g dobrze przybliża naszą funkcję celu jedynie lokalnie tj. w pewnej małej okolicy wokół punktu dla którego to przybliżenie skonstruowano. Jeśli więc zrobimy zbyt daleki krok (a już na pewno jak zrobimy krok do ) narażamy się na bardzo duży błąd przybliżenia. W każdej iteracji chcielibyśmy więc z jednej strony skorzystać z naszego przybliżenia tak bardzo jak się tylko da, minimalizując nasze g. Jednocześnie, żeby nadal mieć nadzieję, że g f chcemy wykonać możliwie mały krok. Konkretnie, chcemy aby odległość x x 0 pomiędzy wybranym minimum lokalnego przybieżenia x a punktem wokół którego to przybliżenie skonstruowaliśmy x 0 była jak najmniejsza. W każdej iteracji wybieramy więc takie kolejne x, aby minimalizowało ono wyrażenie: min η ( f (x 0 ) + f (x 0 ) T (x x 0 ) ) + 1 x }{{} 2 x x 0 2 }{{} odległość od x 0 nasze przybliżenie gdzie η jest parametrem regulującym przetarg pomiędzy jak największym zminimalizowaniem naszej funkcji a wybraniem punktu bliskiego x 0. Czy ten problem optymalizacyjny 2 Formalnie minimum nie istnieje
5.3 Metoda Newtona-Raphsona 5 a) b) Rysunek 5.1: a) Dwa kroki metody spadku gradientu używającej przybliżenia liniowego oraz b) krok metody Newtona używającej przybliżenia kwadratowego. Gdyby zastosować przybliżenie kwadratowe do funkcji kwadratowej na rysunku a) to osiągnęlibyśmy minimum w jednym kroku (minimalizacja przybliżenia to minimalizacja funkcji) [2, 1]. jest problemem wypukłym? Oczywiście tak, co możemy szybko zobaczyć poprzez operacje zachowujące wypukłość. Nasze przybliżenie jest liniowe (wypukłe), dowolna norma jest wypukła, a suma z dodatnimi współczynnikami zachowuje wypukłość. Zobaczmy ile powinno wynosić nasze nowe x, które minimalizuje to wyrażenie poprzez policzenie gradientu i przyrównanie go do wektora zer 3. (η ( f (x 0 ) + f (x 0 ) T (x x 0 ) ) + 12 ) x x 0 2 = η f (x 0 ) + (x x 0 ) η f (x 0 ) + x x 0 = 0 η f (x 0 ) x 0 = x x = x 0 η f (x 0 ) Uzyskaliśmy więc dokładnie algorytmu spadku wzdłuż gradientu. Algorytm więc możemy interpretować jako konstruowanie lokalnego liniowego przybliżenia w każdej kolejnej iteracji oraz optymalizowanie tego łatwego w optymalizacji przybliżenia zamiast oryginalnego problemu optymalizacyjnego. Powstaje więc niezręczne pytanie. Czy naprawdę limit możliwości studentów naszej kochanej Politechniki to konstruowanie liniowych przybliżeń funkcji? Oczywiście, że nie! Tak jak przypominaliśmy to sobie kilka tygodni temu: potrafimy konstruować przybliżenia poprzez funkcje kwadratowe i wyższych rzędów poprzez wykorzystanie twierdzenia Taylora. Zobaczmy jak możemy je wykorzystać w optymalizacji. 5.3 Metoda Newtona-Raphsona Skonstruujmy więc przybliżenie funkcji celu korzystając z szeregu Taylora f f (x 0 ) + f (x 0 ) T (x x 0 ) + 1 }{{} 2 (x x 0) T (x 0 )(x x 0 ) nasze stare przybliżenie liniowe Podobnie jak w przypadku algorytmu spadku wzdłuż gradientu, będziemy w każdej iteracji budować lokalne przybliżenie funkcji g wokół naszego aktualnego punktu 3 Nie trzeba sprawdzać dalej drugiej pochodnej, bo wiemy że problem jest wypukły. Przypominam też, że ze względu na liczenie gradientu względem x wyrażenie f (x 0 ) jest pewną stałą.
6 Laboratorium 5. Metody Newtona x 0. Przybliżenie to będzie tym razem funkcją kwadratową, co będzie nam pozwalało na większą dokładność. Następnie wierząc, że nasze g f będziemy optymalizować nasze przybliżenie g trzymając kciuki, że jednocześnie optymalizujemy f. W przypadku funkcji liniowej musieliśmy się trochę namęczyć poprzez uwzględnienie przetargu pomiędzy minimalizacją naszego przybliżenia a jego jakością (bliskością kolejnego x), ponieważ jej minimum 4 znajduje się w nieskończoności. Funkcja kwadratowa jest o tyle sympatyczna, że jej minimum jest określone - po prostu więc ją zminimalizujmy. Znajdźmy minimum naszego przybliżenia funkcji g poprzez przyrównanie gradientu do wektora zer oraz zakładając, że jest ono funkcją wypukłą 5. Rozpocznijmy od policzenia gradientu: ( g = f (x 0 ) + f (x 0 ) T (x x 0 ) + 1 ) 2 (x x 0) T (x 0 )(x x 0 ) = f (x 0 ) + f (x }{{} 0 ) T x f (x 0 ) T x 0 + 1 }{{} 2 (x x 0) T (x 0 )(x x 0 ) stała stała = 0 + ( f (x 0 ) T x ) 0 + 1 }{{} 2 ( (x x 0 ) T (x 0 )(x x 0 ) ) }{{} a T x=a x T Ax=(A+A T )x = f (x 0 ) + 1 ( (x 0 ) + ( (x 0 ) ) T ) (x x 0 ) /wiemy że hesjan jest symetryczny/ 2 }{{} =2 (x 0 ) = f (x 0 ) + (x 0 )(x x 0 ) Przyrównujemy gradient do zera (funkcja jest wypukła, więc jest to wystarczające). f (x 0 ) + (x 0 )(x x 0 ) = 0 (x 0 )(x x 0 ) = f (x 0 ) x x 0 = [ (x 0 ) ] 1 f (x0 ) x = x 0 [ (x 0 ) ] 1 f (x0 ) Rezultatem tego jest nowy algorytm, który wykorzystuje przybliżenie funkcją kwadratową! Nazywamy go metodą Newtona-Raphsona. Algorytm 5.1 Metoda Newtona-Raphsona. while warunek stopu nie jest spełniony do x x [ ] 1 f end while x INICJALIZUJ Przesuń x w kierunku minimum W algorytmie spadku wzdłuż gradientu musieliśmy mieć współczynnik η, który kontrolował nam długość kroku. Było to konieczne, ponieważ liniowe przybliżenie miało swoje minimum w ± nie mogliśmy więc bezpośrednio założyć prawdziwości przybliżenia i go bezpośrednio zminimalizować. Taką bezpośrednią optymalizację możemy zrobić z przybliżeniem kwadratowym: w każdej iteracji tworzymy funkcję kwadratową przybliżającą naszą funkcję i skaczemy do jej optimum. Zwróć uwagę, że odwrotność Hesjanu 4 St. z o. o. 5 Z warunków wypukłości wiemy, że druga pochodna jest nieujemna. Tutaj: hesjan jest dodatnio półokreślony.
5.3 Metoda Newtona-Raphsona 7 pełni jakby funkcję samo dostosowującego się η czyli szybkości optymalizacji. Nie jest więc konieczny żaden parametr. 5.3.1 Hesjan Póki co bardzo sympatycznie wpisaliśmy sobie do wzoru (x 0 ). Jednak co to jest? Żeby zaatakować funkcje wielowymiarowe zwracające jedną wartość potrzebowaliśmy całego wektora pochodnych (gradient). Co więc pojawi się gdy chcemy policzyć pochodne drugiego rzędu? Macierz. Macierz ta jest macierzą kwadratową, (zwykle) symetryczną, zawierającą wszystkie możliwe pochodne drugiego rzędu. Nazywamy ją Hesjanem. Definicja 5.2 Hesjan. Hesjanem nazywamy macierz x 2 x 1 1 x 2 x 1 x n H = x 2 x 1 x2 2 x 2 x n...... x n x 1 x n x 2 xn 2! Zapamiętaj, że i-ty wiersz Hesjanu zwiera wszystkie drugie pochodne policzone z pierwszej pochodnej po x i. Przykład 5.4 Wyznacz Hesjan funkcji f (x,y) = x 2 + 3xy + 5y 3. Wyznaczmy najpierw gradient: [ ] f [ ] f = x 2x + 3y f = 3x + 15y 2 y Następnie policzmy drugie pochodne z pierwszej pochodnej po x: oraz po y: Wpisując to do macierzy: f x x = (2x + 3y) = 2 x f x y = (2x + 3y) = 3 y f y x = x (3x + 15y2 ) = 3 f y y = y (3x + 15y2 ) = 30y (x,y) H(x,y) = x 2 x y (x,y) x y (x,y) 2 = f (x,y) y 2 [ ] 2 3 3 30y
8 Laboratorium 5. Metody Newtona Zwróć uwagę, że liczenie jednej z pochodnych x y lub y x było zbędne ponieważ wiemy, że macierz jest symetryczna 6. 5.3.2 Przykład: regresja liniowa Kontynuując nasz przykład z poprzedniego laboratorium, zobaczmy jak wygląda algorytm Newtona dla problemu regresji liniowej. Przypomnijmy, że w problemie regresji liniowej minimalizujemy: min θ Wymnażając otrzymujemy 7 L(θ) = N i=1 (y i x T i θ) 2 = (y Xθ) T (y Xθ) L(θ) = y T y y T Xθ (Xθ) T y + (Xθ) T Xθ = y T y 2y T Xθ + θ T X T Xθ Obliczając gradient otrzymujemy: θ L(θ) = 2X T y + 2X T Xθ Dalej musimy obliczyć Hesjan. Pierwszy term gradientu znika, ponieważ nie występuje tam zmienna θ po której liczymy pochodną. Drugi term zależy od θ liniowo czyli H(θ) = 2X T X Krok naszej metody wygląda następująco x x [ ] 1 f. Zauważ więc, że w naszej metodzie Hesjan nie tylko trzeba obliczyć, ale także trzeba go jeszcze odwrócić. [H(θ)] 1 = 1 2 (XT X) 1 Ostatecznie więc krok metody Newtona dla regresji liniowej wygląda następująco θ θ 1 2 (XT X) 1 ( 2X T y + 2X T Xθ) Moglibyśmy więc już skończyć w tym miejscu, ale dla spokoju ducha przemnóżmy ten wzór. θ θ 1 2 (XT X) 1 ( 2X T y + 2X T Xθ) θ 1 2 (XT X) 1 ( 2X T y) 1 2 (XT X) 1 2X T Xθ θ + (X T X) 1 X T y (X T X) 1 X T X }{{} θ macierz razy jej odwrotność θ + (X T X) 1 X T y θ (X T X) 1 X T y 6 Hesjan jest symetryczny dla funkcji o ciągłych drugich pochodnych czyli w zdecydowanej większości praktycznych przypadków. Na tym przedmiocie możesz spokojnie założyć, że Hesjan jest zawsze symetryczny. Warunki symetryczności Hesjanu są określone w twierdzeniu Schwarza. 7 Jeśli tego nie pamiętasz to wróć się do skryptu z Laboratorium 3
5.4 Metoda Levenberga-Marquardta 9 Rysunek 5.2: Zachowanie metody Newtona na funkcji wypukłej oraz funkcji niewypukłej. Dla funkcji niewypukłej Hesjan nie jest zawsze dodatnio półokreślony, więc punktem zerowania się pierwszej pochodnej może być maksimum (metoda zaczyna maksymalizować!) [1]. Po przemnożeniu nasza aktualizacja stała się przypisywaniem pewnej stałej (do θ już nic nie dodajemy!). Ale zaraz... jeśli przypomnisz sobie nasze rozwiązanie metodami analitycznymi to jest to dokładnie rozwiązanie problemu regresji liniowej. Stało się tak dlatego, że funkcja optymalizowana w regresji liniowej jest funkcją kwadratową. Metoda Newtona w jednym swoim kroku minimalizuje skonstruowane przybliżenie kwadratowe funkcji celu. W przypadku kwadratowej funkcji celu jej kwadratowe przybliżenie jest dokładnie tę samą funkcją, więc minimalizacja przybliżenia wiąże się z minimalizacją funkcji celu w jednym kroku! 5.4 Metoda Levenberga-Marquardta Metoda Newtona minimalizuje w jednym kroku kwadratowe przybliżenie funkcji. No właśnie czy aby minimalizowała? Z chwilą gdy wyprowadzaliśmy metodę Newtona przyrównaliśmy pierwszą pochodną do zera i znaleźliśmy punkt stacjonarny. Następnie założyliśmy, że nie musimy sprawdzać czy jest to minimum ponieważ funkcja jest wypukła. Gdyby więc optymalizowana funkcja nie była funkcją wypukłą nie ma żadnej gwarancji, że krok wykonany przez metodę Newtona zamiast minimum nie znajduje... maksimum 8. Metoda więc zamiast szukać minimum nagle zaczyna szukać maksimum! Taką sytuacje dobrze obrazuje rysunek 5.2. Dodatkowo, nawet w przypadku funkcji wypukłych może się zdarzyć, że Hesjan będzie macierzą nieodwracalną. Z warunków wypukłości wiemy, że Hesjan będzie macierzą 8 Dla funkcji wieluzmiennych możemy także wykonać test sprawdzający czy jest to minimum poprzez obliczenie drugiej pochodnej czyli w tym przypadku Hesjanu. Jeżeli Hesjan jest dodatnio określony (wszystkie wartości własne są dodatnie) to funkcja osiąga swoje minimum.
10 Laboratorium 5. Metody Newtona Rysunek 5.3: Funkcja z punktem siodłowym h 1, funkcja kwadratowa zbudowana na macierzy jednostkowej h 2 oraz suma funkcji h 1 + εh 2 gdzie ε został tutaj dobrany na wartość 1.05. [1] dodatnio półokreśloną i to pół nas może zaboleć. Oznacza to, że macierz potencjalnie nie musi być dodatnio określona i może się zdarzyć że któraś z jej wartości własnych będzie zerowa (czyli macierz będzie nieodwracalna 9 ). Co zrobić w takiej sytuacji? Z pomocą przychodzi nam metoda Levenberga-Marquardta. Pomysł jest następujący: jeżeli przybliżenie kwadratowe funkcji nie jest wypukłe (czyli ma maksimum, a nie minimum) to... na siłę zróbmy je wypukłe! Jak to osiągniemy? Do przybliżenia kwadratowego funkcji będziemy dodawać standardową, symetryczną wielowymiarową parabolę (wg. niektórych lecący nabój rozcinający powietrze). Taka parabola ma wzór: x 2 1 + x 2 2 +... = x T Ix gdzie I jest oczywiście macierzą jednostkową. Dodajemy taką parabolę z pewną wagą do naszego kwadratowego przybliżenia, aby w końcu uzyskać funkcję wypukłą. Przy dostatecznie dużej wadze nasza parabola zdominuje wklęsły kształt przybliżenia i sprawi, żeby był on na powrót wypukły. Oczywiście powinniśmy wybrać możliwie jak najmniejszą wagą, aby niezniekształcać przybliżenia bardziej niż to konieczne. Przykład takiego dodawania paraboli zilustrowano na rysunku 5.3. Algorytm 5.2 Metoda Levenberga-Marquardta. x INICJALIZUJ while warunek stopu nie jest spełniony do x x ( [ ] + ε k I) 1 f Przesuń x w kierunku minimum end while Zauważ, że w przypadku problemów z nieodwracalnym Hesjanem funkcji wypukłej wystarczy dodać parabolę z bardzo małą wagą ε k. Macierz ta ma najmniejszą wartość własną równą zero, więc po dodaniu paraboli natychmiast ta wartość własna odbije się od zera i stanie się macierzą odwracalną. Dla funkcji wypukłych zalecaną wartością jest więc np. ε k = 10 5. Dla funkcji niewypukłych należy zwiększać wagę ε k tak długo, aż najmniejsza jej wartość własna nie znajdzie się powyżej zera. Dodatkowo, ponieważ przybliżenie kwadratowe może być dużo mniej wiarygodne dla funkcji niewypukłych, zaleca się dodatkowo wpro- 9 Wyznacznik macierzy to iloczyn jej wartości własnych. Wystarczy jedno zero, aby wyzerować iloczyn.
BIBLIOGRAFIA 11 wadzenie parametru szybkości optymalizacji η aby kontrolować wielkość wykonywanego kroku. Literatura Literatura powtórkowa Opis metody Newtona można znaleźć w praktycznie każdej książce do optymalizacji np. [3]. Literatura dla chętnych Hesjan jest dla problemów wielowymiarowych olbrzymią macierzą przez co zarówno jego odwracanie jak i przechowywanie w pamięci jest często niemożliwe. Z tego powodu stosuje się metody quasi-newtonowskie, które starają się przybliżać od razu odwrotność Hesjanu (nie trzeba wtedy odwracać:). Taką metodą jest np. L-BFGS, które nie wymaga strojenia szybkości optymalizacji (jak spadek gradientu), a z drugiej strony nie jest tak kosztowna obliczeniowo jak metoda Newtona. Zapoznaj się z opisem tej metody: http: //aria42.com/blog/2014/12/understanding-lbfgs Bibliografia [1] Newton s method Mathematical Optimization ). https://jermwatt.github. io/mlrefined/blog_posts/mathematical_optimization/part_5_newtons_ method.html. Dostęp: 2018-04-10. [2] Stochastic Gradient Descent: Mini-batch and more (Adventures in Machine Learning ). http://adventuresinmachinelearning.com/ stochastic-gradient-descent/. Dostęp: 2018-04-10. [3] Jacek Stadnicki. Teoria i praktyka rozwi azywania zadań optymalizacji z przykładami zastosowań technicznych. Wydawnictwo Naukowo-Techniczne, 2006.