stochastyczne metody optymalizacji - home.agh.edu.plhome.agh.edu.pl/~lesniak/wyklady/w6_m-h.pdf ·...
TRANSCRIPT
Stochastyczne metody
optymalizacji
( )∫=b
a
dxxfI
f x dx h yb
a
i
i
N
i
i
N
( )∫ ∑ ∑= ==
−
=
−
σ0
1
0
1
( ))(
2
2
ξfN
abR ′
−=
f x dx hy y
ya
b
n
i
i
N
( )∫ ∑=+
+
=
−0
1
1
2
( ))(
122
3
ξfN
abR ′′
−=
ξ ∈[ , ]a b
[ ]nn
b
a
yyyyyyyyh
dxxf ++++++++= −∫ 1543210 4424243
)( K
( ) ( ))(
180
4
4
5
ξfN
abR
−=
Metoda prostokątów
Metoda trapezów
Metoda Simpsona
Kwadratura Gaussa ( )( )
( )( )[ ]
( ) )(!2
!
!12
2
3
412
ξn
n
fn
n
n
abR
+
−=
+
( ) ∑∫∫=−
⋅==n
i
ii
x
x
wtFdttFdxxf1
1
1
)()(max
min
( )∫=max
min
x
x
dxxfI
( )maxminmax0 xxxyyxfy ≤≤≤≤=
( ) ( )
≥≥≥≥
−=
resztydla
yyxxxdlaxxyyxpXY
0
01
, maxminmax
minmaxmax
( )
( )minmaxmax
max
min
xxy
dxxf
Pole
Ip
x
x
−==
∫
N
Np I=ˆ ( )
N
NxxyI I
minmaxmax −≈
xminxmax
ymax
f(x)
nR
1~
Rozkład z którego pobieramy próbki jest jednostajny
(funkcja gęstości prawdopodobieństwa jest stała). Próbki
są z jednakowym prawdopodobieństwem pobierane z
przedziałów gdzie wartość funkcji f jest duża bądź mała.
Ważne pytanie : jak wylosować populację z dowolnego rozkładu prawdopodobieństwa ?
Zaczniemy od przypadków, gdy f. gęstości rozkładu jest dany konkretnym wzorem analitycznym.
Musimy w tym celu znać reguły transformacji funkcji gęstości prawdopodobieństwa.
( ) 1010 ≤≤≤≤= srrTs
( ) ( )ds
drrpsp rs =
( ) ( )dwwprTs
r
r∫==0
( ) ( ) ( )rpdwwpdr
d
dr
rdT
dr
dsr
r
r =
== ∫
0
( ) ( ) ( )( )
11
===rp
rpds
drrpsp
r
rrs
( ) 1,,2,1,0 −== Lkn
nrp k
kr K ( ) ( ) 1,,1,000
−==== ∑∑==
Lkn
nrprTs
k
j
jk
j
jrkk K
Przypadek dyskretny:
Przyjmujemy, że r i s to zmienne losowe o gęstościach odpowiednio pr(r) i ps(s). Niech T będzie
przekształceniem jednej zmiennej losowej w drugą, wzajemnie jednoznacznym i różniczkowalnym.
W Rach. Prawd. znana jest reguła wiążąca gęstości pr(r) i ps(s).
Niech funkcją T będzie dystrybuanta:
Otrzymujemy stąd wniosek, że gęstość prawdopodobieństwa zmiennej losowej s jest
jednorodna (stała).
Invers transform sampling
Przykład:
Niech zmienna x ma rozkład jednorodny w przedziale [a,b].
Reguła postępowania jest w tym wypadku dość prosta. Ponieważ dystrybuanta dowolnego
rozkładu prawdopodobieństwa ma rozkład jednostajny w przedziale [0,1] to dla dowolnej
funkcji gęstości prawdopodobieństwa p(x) z której chcemy pobrać próbki liczymy dystrybuantę
y=F(x), potem próbkujemy (losujemy) zmienną yi =F(xi) a następnie obliczamy dla każdej próbki
wartość xi=F-1(yi).
( ) ( )
≥≥
−=
resztydla
xxxdlaxxxpX
0
1minmax
minmaxstąd ( ) ( )
( )minmax
min
xx
xxdttpxF
x
XX−
−== ∫
∞−
Jeśli teraz wylosujemy próbkę yi z rozkładu U[0,1] , przyrównany do FX a następnie obliczymy xi
Nrazy to otrzymamy próbki o rozkładzie .
Jest to również rozkład jednorodny U i jak łatwo sprawdzić ma rozkład pX(x).
( ) minminmax xxxyx ii +−=
Invers transform sampling
Przykład: Losowanie z rozkładu wykładniczego
Niech funkcja gęstości prawdopodobieństwa będzie miała postać:
x
X expλλ −=)( ( ) x
X exFλ−−=1wtedy
( ) ( )λ
yyFx X
−−== − 1ln1
Losujemy yi z U[0,1] i ze wzoru na F-1 otrzymujemy xi o
rozkładzie pX(x).
Invers transform sampling
Niestety…. Nie zawsze łatwo obliczyć F-1
Przypadek losowania z rozkładu normalnego tj.
( )2
2
2
2
1)( σ
µ
πσ
−−
=x
X exp
Dystrybuanta:
( ) ( ) dtexx
xF
x t
∫∞−
−
=Φ
−Φ= 2
2
2
1
πσ
µ
Analityczne wzory na F-1(x) dla takiej funkcji nie
istnieją. Aby generować ciągi o rozkładzie normalnym
należy używać innych metod.
p(x)
x
p(x)
x
Losowanie z populacji o rozkładzie
prawdopodobieństwa opisanego funkcją
gęstości p(x) jest losowaniem
niejednorodnym. Próbki są pobierane
częściej tam, gdzie wartość f.g. jest
większa.
Losowanie to można przeprowadzić
inaczej. Próbkujemy w sposób jednorodny
pole powierzchni pod krzywą p(x).
Ponieważ liczba próbek w dowolnym
„pasku” jest proporcjonalna do wartości
p(x) więc odczytując wsp. x wylosowanego
punktu pod krzywą otrzymujemy populację
próbek o rozkładzie p(x).
Rejection sampling
p(x)
x
Jak próbkować jednorodnie pod
krzywą p(x) ?
Procedura na pozór może wydawać się
dość prosta jeśli potrafimy losować w
sposób jednorodny w przedziale
[xmin, xmax] oraz umiemy obliczyć wartość
p(xi)
Procedura
1) Losujemy w sposób jednorodny
próbkę „xi” z przedziału [xmin, xmax]
2) Liczymy p(xi)
3) Losujemy „u” z przedziału [0, 1]
4) Liczymy u·p(xi) xi
p(xi)
u·p(xi)
xmin xmax
Rejection sampling
∆x1 ∆x2
Lecz niestety – nie będzie to losowanie jednorodne pod krzywą. W przedziałach ∆x1 i ∆x2
zostanie wylosowanych tą metodą dokładnie tyle samo punktów, wobec czego ich gęstość pod
krzywą w tych dwóch „paskach” na pewno nie będzie taka sama.
p(x)
M·q(x)
1: i = 1
2: while i ≠ N do
3: x(i)~ q(x)
4: u ~ U(0,1)
5: if u < p(x(i))/ M·q(x(i)) then
6: accept x(i)
7: i ← i + 1
8: else
9: reject x(i)
10: end if
11: end while
accept
reject
Rejection sampling
Procedura próbkowania (efektywna i prawidłowa !!! )
jest następująca:
Ograniczamy rozkład gęstości prawdopodobieństwa
p(x) rozkładem z którego potrafimy metodą „inverse
transform sampling” tj rozkładem Mq(x). Stałą M
dobieramy tak by w przedziale [xmin, xmax] całe p(x)
było pod Mq(x) – jak na rysunku.
- generujemy rozkład {xi} na osi X wg gęstości Mq(x)
- generujemy liczbę u~U(0,1)
- dla każdego xi liczymy yi = uMq(xi)
- jeśli p(xi) > yi to punkt pi(xi,yi) leży pod krzywą p(x)
Punkty pi spróbkują pole pod p(x) tym bardziej
jednorodnie im bardziej obie krzywe są do siebie
zbliżone.
W R krzywą nadległą jest np. odpowiednio dobierany
wielomian używany do generowania np. rozkładu
normalnego.
( )( )
( )∫= dxxpxp
xfI X
X
( ) ( )( )
( )( )xp
xfgdzie
xp
xfEEI
XX
=
== ζζ
Wariancja zmiennej ζ wynosi:
Jest to wartość oczekiwana zmiennej ζ
( ) ( )( )
( )∫
−= dxxpI
xp
xfX
X
2
2 ζσ ( ) ( )( )( )
2
2
2Idx
xp
xf
X
−= ∫ζσ
Potwierdzeniem wniosków z metody „rejection sampling” jest dyskutowana w metodzie
„importance sampling”.
Rozpatrzmy próbkowanie osi X. Małe wartości funkcji dają małe przyczynki do wartości całki, duże
zaś duże. Efektywniej jest próbkować funkcję z większą gęstością tam, gdzie jej wartości są duże.
Niech pX(x) będzie funkcją wagową (może być ona utożsamiona z funkcją gęstości
prawdopodobieństwa) zmiennej ζ.
Importance sampling
( )( )∑
=
==N
i iX
i
xp
xf
NI
1
1ˆθ Losujemy N punktów xi z rozkładu prawdopodobieństwa
pX(xi). Otrzymujemy estymator całki I. Jeśli IIN →∞→ ˆ
Chcemy tak dobrać pX(xi) tak by zminimalizować wariancję zmiennej ζ. Minimum ma
miejsce, gdy
( )( )( )∫
=dxxf
xfxpX
Minimum jest równe ( ) ( )( ) 22
2Idxxf −= ∫ζσ
Jeśli f(x)>0 to funkcja gęstości pX(x) przybiera postać
( ) ( )( )
( )I
xf
dxxf
xfxpX ==
∫zaś wariancja jest równa zero: ( ) 02 =ζσ
Importance sampling
Tak więc by obliczyć całkę procedura jest następująca:
Wniosek:
Aby zminimalizować wariancję należy losować punkty z rozkładu który jest proporcjonalny do funkcji z której
jest liczona całka tj funkcji f(x).
( ) ( )xfxpX ≈
Współczynnik proporcjonalności to
( )∫=
dxxf
1α
Ponieważ zawiera on całkę I to aby jak najlepiej zrealizować procedurę obliczenia całki I musimy znać jej
wartość. Całe szczęście, że tak jest wtedy, gdy chcemy
otrzymać wynik perfekcyjny.
De facto można wybrać dowolną funkcję wagową
p(x) i dowolny (!) współczynnik wagowy α.
Czy da się uniknąć konstrukcji rozkładu px(x) i otrzymać asymptotyczny rezultat dochodząc do rozkładu
iteracyjnie?
Idee zapożyczono z mechaniki statystycznej i metalurgii.
• wzrost temperatury gorącej kąpieli do takiej wartości, w której ciało stałe topnieje
• powolne zmniejszanie temperatury do chwili, w której cząsteczki ułożą się wzajemnie i osiągną (ang.
ground state) temperaturę zerową
• przeciwieństwo hartowania
• Metropolis i in. (1953) - algorytm statystycznego symulowania (Monte Carlo) zmian ciała stałego w
gorącej kąpieli aż do stanu termicznej równowagi
Losowe generowanie sekwencji stanów ciała stałego:
• stan i ciała stałego i jego energia Ei ,
• perturbacja (małe zniekształcenie) → następny stan. Energia następnego stanu wynosi Ej .
• jesli Ej - Ei ≤ 0, stan j jest akceptowany jako stan bieżący
• w przeciwnym wypadku, stan j jest akceptowany z pewnym prawdopodobieństwem:
T – temperatura kapieli
kB – stała Boltzmanna
−
Tk
EE
B
jiexp
Wysoka temperatura:
Wszystkie ruchy akceptowane → błądzenie losowe.
Niska temperatura
Akceptowany wyłącznie ruchy, które polepszają rozwiązanie → klasyczne przeszukiwanie lokalne.
Algorytm SA zaczyna od wysokiej temperatury i powoli ja obniża.
1explim =
−
∞→ Tk
EE
B
ji
T
0explim =
−
∞→ Tk
EE
B
ji
T
System fizyczny Problem optymalizacji
stan rozwiązanie
Energia koszt
temperatura Parametr kontrolny
Szybkie schładzanie lokalna optymalizacja
powolne schładzanie symulowane wyżarzanie
1: wybierz model startowy m0 ,oblicz E(m0), ustaw T02: repeat Ti 3: repeat mj4: oblicz E(mj)
5: ∆E= E(mj)- E(mj-1)
6: P=exp(-∆E/Ti)
7: if ∆E ≤ 0
8: m0=m19: E(m0)= E(m1)
10: endif
11: if ∆E > 0
12: losuj u ~ U(0,1)
13: if P > u
14: m0=m115: E(m0)= E(m1)
16: endif
17: endif
18: until j=N
19: until i=M
Można uzyskać takie N, M, Ti, które
zapewniają zbieżność SW do optimum
Dobre przybliżenie SW:
generowanie homogenicznych
łańcuchów Markowa skończonej długości
dla skończonej sekwencji malejących
wartości parametru kontrolnego
(temperatury).
Łańcuch Markowa jest sekwencja prób
(rozwiązań), w której
prawdopodobieństwo wyniku danej
próby zależy od wyniku poprzedniej
próby.
Łańcuch Markowa jest niehomogeniczny
jeśli prawdopodobieństwo przejścia
zależy od numeru próby k.
Jeśli nie zależy, to łańcuch Markowa jest
homogeniczny.
X[m] Y[m] Z[m] t[s]
0 4000 -700 0.263
2000 2000 -700 0.342
0 2000 -700 0.386
2000 4000 -700 0.192
1000 3000 -50 0.14
Lokalizacja źródła emisji sejsmicznej z użyciem pięciu czujników mierzących czas
Wsp. źródła (1800, 3500, -400)