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

Podobne dokumenty