W poszukiwaniu minimum globalnego
Transkrypt
W poszukiwaniu minimum globalnego
Optymalizacja W poszukiwaniu minimum globalnego Dawid Toton Optymalizacja – p. 1/30 Szansa na znalezienie minimum Optymalizacja – p. 2/30 Rodzaje problemów Klasyfikacja według funkcji: ciagły: ˛ Rn → R dyskretny: Zn → R kombinatoryczny: 2n → R praktyczny: Zn × Rn → R Optymalizacja – p. 3/30 Możliwe kłopoty: Brak jakiegokolwiek opisu matematycznego — np. subiektywna ocena zrozumiałości mowy Kosztowne wyznaczenie wartości w każdym punkcie Liczba wymiarów tak duża, że nie starcza pamieci ˛ dla szybszych algorytmów Szum wprowadzony przez obliczenia — np. przez metode˛ elementów skończonych Wielomodalność — wielka ilosć minimów lokalnych Optymalizacja – p. 4/30 Poszukiwanie minimum lokalnego Metody: bezgradientowe gradientowe newtonowskie Optymalizacja – p. 5/30 Poszukiwanie proste Jeśli nie mamy żadnej własności minimalizowanej funkcji do dyspozycji, możemy użyć najprostszej metody: 1. Wybierz przestrzeń parametru P , która˛ chcemy zbadać 2. Zbadaj k punktów z P (regularna siatka lub losowanie), pamietaj ˛ najlepszy 3. Zmień region poszukiwań Zmniejsz go (np. jednakowo we wszystkich kierunkach) Przesuń w lepsze miejsce (np. tak, aby w centrum był aktualny rekordzista) 4. n razy powtórz: → 2 5. → 1, czyli wykonaj wszystko od nowa (multistart) Zalety algorytmu: niewymagajacy, ˛ skranie prosty — ale: w przypadku wieklich problemów – ważne jest zrównoleglenie! Podobne algorytmy: Hooka-Jeevesa, Rosenbrocka Optymalizacja – p. 6/30 Simplex (Nelder-Mead) Algorytm minimalizacji dla funkcji F : Rn → R: 1. wybierz n + 1 punktów ~ xi 2. wybierz najgorszy punkt ~ xj 3. Czy to ten sam co przedtem? nie — odbij go symetrycznie wzgledem ˛ hiperpłaszczyzny wyznaczonej przez pozostałe jeśli tam jest mniejsza wartość F : rozciagnij ˛ bryłe˛ x1 ,. . . ,xn+1 w kierunku xj w przeciwnym wypadku: postaw xj w mniejszej odległości od płaszczyzny odbicia ten sam — wybierz najgorszy spośród pozostałych (→ 3). 4. Sprawdź, czy tu już minimum 5. Jeśli utkneliśmy, ˛ to wprowadź odpowiednie zmiany 6. → 2 Optymalizacja – p. 7/30 Simplex (Nelder-Mead) UWAGA: nie ufać obrazkowi – robótka reczna, ˛ na oko! Optymalizacja – p. 8/30 Z minimalizacja˛ kierunkowa˛ 1 T F (~x + p~) = F (~x) + ∇F p~ + p~ H (~x) p~ + O (h3 ) 2 Koncepcja ogólna: 1. Czy mamy już zadowalajace ˛ ~x? (warunki zbieżności, optymalności) 2. Wyznacz kierunek poszukiwań p~. 3. Znajdź µ takie, by F (~x + µ~p) < F (~x) 4. Oblicz nowe ~x, gradient, hesjan (lub jego przybliżenie); nastepny ˛ krok Optymalizacja – p. 9/30 Najprostsze metody pierwszego rzedu ˛ Znamy gradient w punkcie ~x . Dokad ˛ iść? ~xi+1 = ~xi − µ∇F (~xi ) Tak nie najlepiej — zły kierunek np. w „bananowej doliniea ”. Gdy długość kroku µi ustalana według przepisu (np. „chodź szybciej po płaskim”): ~xi+1 ∇F (~xi ) = ~xi − µi k∇F (~xi )k Wersja z momentem: ~xi+1 − ~xi = α (~xi − ~xi−1 ) − µ∇F (~xi ) a funkcja Rosenbrocka: F (~ x) = 100 x2 − 2 x21 + (1 − x1 ) Optymalizacja – p. 10/30 Minimalizacja kierunkowa Ile naprawde˛ powinno wynosić µ? adaptacja (jest OK – zwieksz, ˛ „pod górk˛e” – zmniejsz) bisekcja, złoty podział, itp. — miejscami opłacalne przybliżenie parabola˛ — obliczamy F w trzech punktach jeśli znamy ∇F — można pozwolić sobie na wyższy rzad ˛ Optymalizacja – p. 11/30 Metoda gradientów sprzeżonych ˛ Kierunki minimalizacji p~i ustalamy tak, by za każdym razem wnosiły „coś nowego”. Z żadania ˛ ortogonalności i sprz˛eżenia kierunków p~1 . . . p~k−1 wynika postać wzoru na nastepny ˛ kierunek: ~gkT (~gk − ~gk−1 ) p~k = −~gk + p~k−1 T ~gk−1~gk−1 powolniejsza niż metody drugiego rz˛edu mała złożoność pamieciowa ˛ i czasowa Najlepsza dla najwiekszych ˛ problemów. Optymalizacja – p. 12/30 Levenberg-Marquardt Jak Origin dopasowuje nam krzywe? Minimalizujemy bład ˛ kwadratowy: P F (~ x) = 12 (ei (~ x))2 . Znamy gradient: ∇F = (J (~x))T ~e (~ x), gdzie J oznacza macierz Jacobiego dla ~e: J (~ x) = h ∂ei ∂xj i . Przybliżony hesjan: G (~ x) = (J (~ x))T J (~ x) + vk 1 Drugi składnika daje regularyzacje˛ — sam hesjan cz˛esto nie jest dodatnio określony. Parametr Levenberga-Marquardta vk jest duży na poczatku ˛ (idziemy w kierunku najwiekszego ˛ spadku), na końcu mały (blisko minimum — kwadratowo zbieżny algorytm Gaussa-Newtona). Obierany krok: x) p ~ = − (G (~ x))−1 ∇F (~ a pomysl Levenberga Optymalizacja – p. 13/30 Levenberg-Marquardt Poprawkaa („po płaskim chodź szybciej”): T T G (~ x) = (J (~ x)) J (~ x) + vk diag (J (~ x)) J (~ x) Ile wynosi vk ? jeśli F (~ x+p ~) ¬ F (~ x), zbliżamy sie˛ do minimum, wiec ˛ vk+1 = vk r idziemy do ~ x+p ~ jeśli F (~ x+p ~) > F (~ x) vk+1 = vk rn rezygnujemy z takiego kroku a pomysl Marquardta Optymalizacja – p. 14/30 Levenberg-Marquardt Bardzo skuteczna metoda, ale: 3 Odwracanie macierzy zajmuje O n czasu. Jedna z najlepszych dla problemów średnich rozmiarów. Konkurencyjny sposób: algorytm zmiennej metryki — w każdym kroku aktualizacja odwrotności „hesjanu” Vk = (G (~ xk ))−1 . Przykładowo — wzór Broydena-Goldfarba-Fletchera-Shanno: Vk = Vk−1 + 1+ rkT Vk−1 rk sTk rk sk rkT Vk−1 + Vk−1 rk sTk sk sTk − sTk rk sTk rk gdzie sk = ~ xk − ~ xk−1 , rk = ∇F (xk ) − ∇F (xk−1 ). Optymalizacja – p. 15/30 Dokładne różniczkowanie. . . Załóżmy, że nasz nowy wspaniały algorytm potrzebuje dokładnej wartości gradientu funkcji F . Patrzymy na skomplikowany kod naszej minimalizowanej funkcji. . . Co pocza˛ć? Optymalizacja – p. 16/30 Dokładne różniczkowanie. . . Załóżmy, że nasz nowy wspaniały algorytm potrzebuje dokładnej wartości gradientu funkcji F . Patrzymy na skomplikowany kod naszej minimalizowanej funkcji. . . Co pocza˛ć? Nie trzeba dużo kawy! Bierzemy narz˛ edzia: Fortran — ADIFOR, ADOL-F, DAFOR, GRESS, JAKEF, TAMC, OPTIMA90, . . . C — ADIC, ADOL-C, FADBAD++ . . . i generujemy programy obliczajace ˛ potrzebne nam pochodne. Optymalizacja – p. 16/30 Automatyczne różniczkowanie programów Jak działa takie narz˛edzie? analizuje kod źródłowy – jak kompilator, znajduje wszystkie operacje arytmetyczne i wywołania prostych funkcji (tzn. sin (x) , exp (x). . . ), buduje kod obliczajacy ˛ zadane pochodne czastkowe ˛ 1. lub 2. rz˛edu. Optymalizacja – p. 17/30 Automatyczne różniczkowanie programów Funcja celu obliczana krok po kroku: F (~x) = G (ML (ML−1 (. . . M1 (M0 (~x)) . . .))) = G (~y ) Dwa sposoby różniczkowania: wprost ∇y G · JL · JL−1 · . . . · J1 · J0 · δ~x = δF Obliczenia wykonuja˛ sie˛ tyle razy, ile wynosi wymiar przestrzeni parametru ~ x wstecz („obliczenia sprz˛eżone”) T T T J0T · J1T · . . . · JL−1 · JLT · (∇y G) = (∇x (F )) Tyle razy powtarzamy cała˛ procedure, ˛ ile wynosi wymiar przeciwdzedziny F — zwykle dużo mniej! Koszt: wartości Mi trzeba przechowywać lub każdorazowo od nowa obliczać. Optymalizacja – p. 18/30 Jak nie utkna˛ć w minimum lokalnym? poprawianie algorymtów gradientowych (np. dodanie momentu) multistart — wielokrotnie losujemy punkt startu, by trafić w „nieck˛e” minimum globalnego metody globalnej optymalizacji (przyrodnicze!) algorytmy genetyczne symulowane wyżarzanie Inne dary natury: sieci neuronowe, algorytmy mrówkowe (ant colony optimization), ewolucyjne (evolution strategies), sieci immunologiczne (artifical immune networks). . . Optymalizacja – p. 19/30 TSP – problem komiwojażera Dany jest graf (V, E), którego krawedzie ˛ maja˛ wagi (d : V → R+ ). Wyznaczyć cykl h1 , . . . , hn , w którym każdy wezeł ˛ pojawia sie˛ dokładnie raz (cykl Hamiltona) Ograniczenia na przestrzeń Nn : ∀i=1...n ∃j : vj = hi ∀i6=j hi 6= hj krawedzie ˛ daja˛ minimalna˛ sume˛ wag min |V | X dhi ,hi+1 i=1 Po prostu pytamy: w jakiej kolejności wiercić dziury? . . . obserwować gwiazdy? Optymalizacja – p. 20/30 TSP Problem jest NP-trudny, ale w praktyce zadowalamy sie˛ przybliżonymi rozwiazaniami. ˛ Używane metody: heurystyki symulowane wyżarzanie algorytmy genetyczne, mrówkowe sieć neuronowa inne. . . Optymalizacja – p. 21/30 Sieci neuronowe a optymalizacja Uczenie sieci neuronowych intensywnie wykorzystuje algorytmy optymalizacji Optymalizacja może być realizowana przez sieci neuronowe! Ciekawostka: jak zaprzac ˛ sieć Hopfielda do rozwiazywania ˛ TSP? ϕi = P j6=i wji yj yi = 12 (1 + tanh(βϕi )) Optymalizacja – p. 22/30 Uciaglenie ˛ TSP dla sieci Niech role˛ poszukiwanego punktu ~ x pełni teraz macierz: xpi = ( 1 gdy 0 wpp hp = vi Ograniczenia: Jedno odwiedzenie każdego miasta p, jedno miasto na każdej pozycji i: h1 (x) = X xpi xpj = 0 h2 (x) = p,i,j6=i X xpi xqi = 0 p,i,q6=p Odwiedzenie wszystkich: h3 (x) = X p,i !2 xpi − n =0 Optymalizacja – p. 23/30 Uciaglenie ˛ TSP dla sieci Analogowa sieć Hopfielda: ciagły ˛ czas ciagła ˛ funkcja aktywacji y (ϕ) ewolucja opisana układem równań różniczkowych dui 1 ∂E = − dt c ∂xi Optymalizacja – p. 24/30 Uciaglenie ˛ TSP dla sieci Nasza funkcja celu (oryginalna): J (x) = X dpq xpi (xq,i+1 + xq,i−1 ) p,q6=p,i Funkcja energii neuronowej sieci Hopfielda (J+ funkcje „kary”): E (x) = Ah1 (x) + Bh2 (x) + Ch3 (x) + DJ (x) + X1Z pi τ xpi y −1 (ξ) dξ 1 2 Otrzymany układ ewoluuje ku krótkim cyklom, ale łatwo wpada w minima lokalne. Wiele modyfikacji, poszukiwanie odpowiednich parametrów. Siła tkwi w równoległości. Optymalizacja – p. 25/30 Ant Colony Optimization Inspiracja: Jak sie˛ zachowuja˛ mrówki? pozostawiaja˛ ślady feromonowe cz˛eściej chodza˛ tam, gdzie wywesz ˛ a˛ sygnał gdy nie wiedza˛ dokad ˛ pójść — wybieraja˛ przypadkowy kierunek działaja˛ w dużej grupie znajduja˛ krótkie ścieżki Optymalizacja – p. 26/30 Ant Colony Optimization Innymi słowy: dodatnie sprz˛eżenie zwrotne wysoki stopień równoległości liczność jednostek (agentów) zapobiega przedwczesnej zbieżności zachłanność Istnieje optymalna liczba mrówek, powyżej której jakość rozwiazania ˛ sie˛ nie poprawia. Optymalizacja – p. 27/30 Ant Colony Optimization Mamy sposób na rozwiazywanie ˛ problemów kombinatorycznych (TSP, SAT, QAP, . . . ). Trzeba znaleźć: grafowa˛ reprezentacje˛ problemu (dla TSP – oczywista) sposób zachłannego konstruowania pojedynczego rozwiazania ˛ ~x (TSP: mrówka pamieta ˛ sobie kolejne odwiedzane wezły) ˛ zasade˛ gromadzenia informacji w grafie (TSP: np. krótsza krawedź ˛ – wiecej ˛ feromonu) nowa˛ postać ograniczeń definiujacych ˛ przestrzeń rozwiaza ˛ ń (TSP: mrówka nie powraca do wezła, ˛ który sobie pamieta) ˛ Optymalizacja – p. 28/30 Gotowce Pakiety służacych ˛ do optymalizacji (lista z serwisu numerycznego ICM): COOOL, GSL, HSL, KNITRO, MINOPT, MLOCPSOA, NAG, NAPACK, NEOS, OPT++, OptSolve++, PORT, Scilab, SLATEC, SMINPACK, StarFLIP++, TOMLAB, UNCON Optymalizacja – p. 29/30 Jak to wyglada? ˛ Przykład: Opt++ — biblioteka w C++ do rozwiazywania ˛ nieliniowych problemów optymalizacyjnych. #include "NLF.h" #include "OptQNewton.h" ... int main() { FDNLF1 nlp(2, funkcja, init funckja); nlp.initFcn(); OptQNewton objfcn(&nlp); objfcn.setSearchStrategy(TrustRegion); objfcn.setMaxFeval(200); objfcn.setFcnTol(1.e-4); objfcn.setOutputFile("example1.out",0); objfcn.optimize(); } Optymalizacja – p. 30/30