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: R n R dyskretny: Z n R kombinatoryczny:2 n R praktyczny: Z n R n 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 pamięci dla szybszych algorytmów Szum wprowadzony przez obliczenia np. przez metodę 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), pamiętaj 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 funkcjif: R n R: 1. wybierzn+1 punktów x i 2. wybierz najgorszy punkt x j 3. Czy to ten sam co przedtem? nie odbij go symetrycznie względem hiperpłaszczyzny wyznaczonej przez pozostałe jeśli tam jest mniejsza wartośćf : rozciagnij bryłęx 1,...,x n+1 w kierunkux j w przeciwnym wypadku: postawx j 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 utknęliśmy, to wprowadź odpowiednie zmiany 6. 2 Optymalizacja p. 7/30
Simplex (Nelder-Mead) UWAGA: nie ufać obrazkowi robótka ręczna, na oko! Optymalizacja p. 8/30
Z minimalizacja kierunkowa F( x+ p)=f( x)+ F p+ 1 2 pt H( x) p+o(h 3 ) Koncepcja ogólna: 1. Czy mamy już zadowalajace x? (warunki zbieżności, optymalności) 2. Wyznacz kierunek poszukiwań p. 3. Znajdźµtakie, byf( x+µ p)<f( x) 4. Oblicz nowe x, gradient, hesjan (lub jego przybliżenie); następny krok Optymalizacja p. 9/30
Najprostsze metody pierwszego rzędu Znamy gradient w punkcie x. Dokad iść? x i+1 = x i µ F( x i ) Tak nie najlepiej zły kierunek np. w bananowej dolinie a. Gdy długość krokuµ i ustalana według przepisu (np. chodź szybciej po płaskim ): Wersja z momentem: x i+1 = x i µ i F( x i ) F( x i ) x i+1 x i =α( x i x i 1 ) µ F( x i ) a funkcja Rosenbrocka:F( x)=100 ( x 2 x 2 1) 2+(1 x1 ) Optymalizacja p. 10/30
Minimalizacja kierunkowa Ile naprawdę powinno wynosić µ? adaptacja (jest OK zwiększ, pod górkę zmniejsz) bisekcja, złoty podział, itp. miejscami opłacalne przybliżenie parabola obliczamyf w trzech punktach jeśli znamy F można pozwolić sobie na wyższy rzad Optymalizacja p. 11/30
Metoda gradientów sprzężonych Kierunki minimalizacji p i ustalamy tak, by za każdym razem wnosiły coś nowego. Z żadania ortogonalności i sprzężenia kierunków p 1... p k 1 wynika postać wzoru na następny kierunek: p k = g k + gt k( g k g k 1 ) g T k 1 g k 1 p k 1 powolniejsza niż metody drugiego rzędu mała złożoność pamięciowa i czasowa Najlepsza dla największych problemów. Optymalizacja p. 12/30
Levenberg-Marquardt Jak Origin dopasowuje nam krzywe? Minimalizujemy bład kwadratowy: F( x)= 1 2 (ei ( x)) 2. Znamy gradient: F=(J( x)) T e( x), gdziej oznacza macierz Jacobiego dla e: J( x) = [ e i x j ]. Przybliżony hesjan: G( x)=(j( x)) T J( x)+v k 1 Drugi składnik a daje regularyzację sam hesjan często nie jest dodatnio określony. Parametr Levenberga-Marquardtav k jest duży na poczatku (idziemy w kierunku największego spadku), na końcu mały (blisko minimum kwadratowo zbieżny algorytm Gaussa-Newtona). Obierany krok: a pomysl Levenberga p= (G( x)) 1 F( x) Optymalizacja p. 13/30
Levenberg-Marquardt Poprawka a ( po płaskim chodź szybciej ): G( x)=(j( x)) T J( x)+v k diag ( (J( x)) T J( x) ) Ile wynosiv k? jeślif( x+ p) F( x), zbliżamy się do minimum, więc v k+1 = v k r idziemy do x+ p jeślif( x+ p)>f( x) v k+1 =v k r n rezygnujemy z takiego kroku a pomysl Marquardta Optymalizacja p. 14/30
Levenberg-Marquardt Bardzo skuteczna metoda, ale: Odwracanie macierzy zajmujeo ( n 3) czasu. Jedna z najlepszych dla problemów średnich rozmiarów. Konkurencyjny sposób: algorytm zmiennej metryki w każdym kroku aktualizacja odwrotności hesjanu V k =(G( x k )) 1. Przykładowo wzór Broydena-Goldfarba-Fletchera-Shanno: ( ) V k =V k 1 + 1+ rt kv k 1 r k sk s T k s T k r k s T k r s krkv T k 1 +V k 1 r k s T k k s T k r k gdzies k = x k x k 1,r k = F(x k ) F(x k 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ędzia: 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ędzie? 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ędu. Optymalizacja p. 17/30
Automatyczne różniczkowanie programów Funcja celu obliczana krok po kroku: F( x)=g(m L (M L 1 (...M 1 (M 0 ( x))...)))=g( y) Dwa sposoby różniczkowania: wprost y G J L J L 1... J 1 J 0 δ x=δf Obliczenia wykonuja się tyle razy, ile wynosi wymiar przestrzeni parametru x wstecz ( obliczenia sprzężone ) J T 0 J T 1... J T L 1 J T L ( y G) T =( x (F)) T Tyle razy powtarzamy cała procedurę, ile wynosi wymiar przeciwdzedziny F zwykle dużo mniej! Koszt: wartościm i 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ę 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 krawędzie maja wagi (d:v R + ). Wyznaczyć cyklh 1,...,h n, w którym każdy węzeł pojawia się dokładnie raz (cykl Hamiltona) Ograniczenia na przestrzeń N n : i=1...n j :v j =h i i j h i h j krawędzie daja minimalna sumę wag min V i=1 d hi,h 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 się 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 = j iw ji y j y i = 1 2 (1+tanh(βϕ i)) Optymalizacja p. 22/30
Uciaglenie TSP dla sieci Niech rolę poszukiwanego punktu x pełni teraz macierz: 1 gdy h p =v i x pi = 0 wpp Ograniczenia: { Jedno odwiedzenie każdego miasta p, jedno miasto na każdej pozycji i: h 1 (x)= x pi x pj =0 h 2 (x)= p,i,j i p,i,q p x pi x qi =0 Odwiedzenie wszystkich: ( h 3 (x)= p,i x pi n) 2 =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 du i = 1 dt c E x i Optymalizacja p. 24/30
Uciaglenie TSP dla sieci Nasza funkcja celu (oryginalna): J(x)= p,q p,i d pq x pi (x q,i+1 +x q,i 1 ) Funkcja energii neuronowej sieci Hopfielda (J+ funkcje kary ): E(x)=Ah 1 (x)+bh 2 (x)+ch 3 (x)+dj(x)+ pi 1 τ xpi 1 2 y 1 (ξ)dξ 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 się zachowuja mrówki? pozostawiaja ślady feromonowe częściej chodza tam, gdzie wywęsza 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ęż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 się nie poprawia. Optymalizacja p. 27/30
Ant Colony Optimization Mamy sposób na rozwiazywanie problemów kombinatorycznych (TSP, SAT, QAP,... ). Trzeba znaleźć: grafowa reprezentację problemu (dla TSP oczywista) sposób zachłannego konstruowania pojedynczego rozwiazania x (TSP: mrówka pamięta sobie kolejne odwiedzane węzły) zasadę gromadzenia informacji w grafie (TSP: np. krótsza krawędź więcej feromonu) nowa postać ograniczeń definiujacych przestrzeń rozwiazań (TSP: mrówka nie powraca do węzła, który sobie pamięta) 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