Wstęp do sieci neuronowych, wykład 14 Maszyna Boltzmanna
M. Czoków, J. Piersa
Faculty of Mathematics and Computer Science, Nicolaus Copernicus University, Toruń, Poland
2014-01-21
Problemy z siecią Hopfilda
minima logalne
tendencje do oscylacji (dynamika synchroniczna) płytkie baseny atrakcyjne
Nicolas Metropolis (1915-1999)
członek zespołu badawczego Projektu Manhattan
współtwórca komputerów MANIAC (1952) i MANIAC II (1957) jeden z autorów metod Monte Carlo (wraz z S. Ulamem i J.
von Neumannem)
algorytm Metropolisa (1953) zaliczony do czołowych 10 algorytmów, które wywarły „najwiekszy wpływ na rozwój i praktyke nauki i techniki w XX wieku” (wg Computing Science and Engineering)
Algorytm Metropolisa — wersja orginalna
Mamy dany otwarty układ termodynamiczny: Ei - energia i -tego stanu
Cel: znaleźć stan o minimalnej energii
Algorytm Metropolisa — wersja orginalna
Algorytm:
Wykonujemy wielokrotnie:
dla danego stanu i -tego wykonujemy statystyczny „ruch” cząstki, otrzymując stan j -ty,
Jeżeli Ej− Ei ≤ 0, przechodzimy do stanu j-tego bezwarunkowo, w p.p. przechodzimy do stanu j z prawdopodobieństwem
exp(−(Ej− Ei) kb· T ),
gdzie kb- stała Boltzmanna, T - temperatura bezwzględna
Adaptacja algorytmu Metropolisa
Jak dostosować ten algorytm do dziedziny problemów optymalizacyjnych?
rozwiązanie ↔ stan układu termodynamicznego funkcja oceny ↔ energia układu
przekształcenie lokalne ↔ ruch cząstki
optimum globalne ↔ stan o minimalnej energii parametr T ↔ temperatura i stała Boltzmanna
Rola „temperatury” T w algorytmie Metropolisa
Rozważmy funkcję g (x ) = e−x/T dla x > 0
T → +∞ wtedy x /T → 0, więc e−x/T → 1 — każde rozwiązanie jest akceptowane
T → 0 wtedy x /T → +∞, więc e−x/T → 0 — akceptowane są tylko lepsze rozwiązania (patrz dynamika Glaudera)
interpretacja: T > 0 — „zakres tolerancji” dla gorszych rozwiazań
Maszyna Boltzmanna — definicja
Maszyny Boltzmanna to stochastyczna wersja sieci Hopfielda zaproponowana w pracy Ackley, Hinton, Sejnowski, 1985 doi:10.1016/S0364-0213(85)80012-4
Modyfikacja polega na tym, że dynamika zadana jest przez algorytm Metropolisa.
Dynamika Glaubera — przypomnienie
Dynamika asynchroniczna w temperaturze 0.
wylosuj neuron σi
jeśli spin jest niezgodny z lokalnym polem wypadkowym Mi, zmieniamy go
σi = sign(X
j
wijσj + hi) Przypomnienie - pole wypadkowe Mi =P
jwijσj + hi powtarzamy aż do ustabilizowania się sytuacji
Maszyna Boltzmanna — podstawowe założenia
Rozważmy sieć rekurencyjną z dynamiką asynchroniczną Przestrzeń konfiguracji tej sieci stanowi przestrzeń stanów łańcucha Markowa
Zadajmy mechanizm przejść zgodny z algorytmem Metropolisa
Maszyna Boltzmanna — dynamika
wylosuj neuron σi
jeśli spin jest niezgodny z lokalnym polem wypadkowym Mi, zmieniamy go
σi = sign(X
j
wijσj + hi)
jeśli jest zgodny, zmieniamy go z prawdopodobieństwem exp(−2|Mi|/T ), lub pozostawiamy z komplementarnym prawdopodobieństwem
powtarzamy aż do „ustabilizowania się sytuacji”
Uwagi
Rozważmy dwie konfiguracje ¯σ i ¯σ0 różniące się na i -tym miejscu Niech ¯σ będzie zgodna z lokalnym polem wypadkowym Mi, a ¯σ0 niepożądanym
Wtedy zachodzi:
E (¯σ0) − E (¯σ) = 2|Mi| Zatem zachodzi
exp(−2|Mi|/T ) = exp(−(E (¯σ0) − E (¯σ))/T )
Uwagi
Obie strony równania
E (¯σ0) − E (¯σ) = 2|Mi| są dodatnie
Zatem 0 < exp(−2|Mi|/T ) < 1.
Uwagi
0 2 4 6 8 10
-2 -1 0 1 2 3 4 5
Stacjonarność stanów maszyny Boltzmanna
Twierdzenie. Rozkład stacjonarny dla łańcucha Markowa zadanego przez stany maszyny Boltzmanna ma postać:
P(¯σ) = exp(−E (¯σ)/T ) P
¯
σ0exp(−E (¯σ0)/T ) = exp(−E (¯σ)/T ) Z (T ) , gdzie Z (T ) jest czynnikiem normalizującym znanym jako funkcja rozdziału.
Dzięki tej funkcji mamy do czynienia z prawdziwym
prawdopodobieństwem. Rozkład ten jest zwany miarą Gibbsa.
Dowód stacjonarności
Udowodnijmy stacjonarność zadanego łańcucha Markowa.
Niech A i B będą dowolnymi stanami należącymi do tego łańcucha.
π jest rozkładem stacjonarnym zadanego łańcucha Markowa o macierzy przejścia P.
Dowód stacjonarności
PAB — p-stwo przejścia ze stanu A do B w jednym kroku πA — p-stwo znalezienia się w stanie A
πA· PAB — p-stwo wychodzące z A do B πA· (P
BPAB) = πA — p-stwo wychodzące z A P
BπBPBA — p-stwo wchodzące do A
Dowód stacjonarności
Twierdzenie. Łańcuch jest stacjonarny ⇔ p-stwo wchodzące = p-stwo wychodzące dla każdego stanu, czyli:
∀A(X
B
πBPBA= πA· (X
B
PAB) = πA)
Powyższa równość zachodzi zawsze jeśli spełniony jest warunek:
∀A,B(πBPBA= πAPAB), ponieważ:
∀A(X
B
πBPBA =X
B
πAPAB).
Dowód stacjonarności
Pokażemy teraz, że dla naszego łańcucha zachodzi
∀A,B(πBPBA= πAPAB), czym udowodnimy jego stacjonarność.
Dowód stacjonarności
Rozważmy dwie konfiguracje ¯σ i ¯σ0 różniące się na i -tym miejscu.
Niech ¯σ będzie zgodna z lokalnym polem wypadkowym Mi, a ¯σ0 nie.
Wówczas przepływ z ¯σ0 do ¯σ wynosi 1
NP(¯σ0) = exp(−E (¯σ0)/T ) NZ (T ) ,
gdzie N to długość wektora reprezentującego konfigurację sieci.
Dowód stacjonarności
Z drugiej strony, przepływ z ¯σ do ¯σ0 wynosi exp(−2|Mi|/T )
N P(¯σ) = exp(−(E (¯σ0) − E (¯σ))/T ) N
exp(−E (¯σ)/T ) Z (T )
= exp(−E (¯σ0)/T ) NZ (T )
Zatem przepływ z ¯σ do ¯σ0 wynosi tyle samo co przepływ z ¯σ0 do ¯σ, co kończy dowód.
Energia a rozkład stacjonarny
-2 -1 0 1 2 3 4
0 0.2 0.4 0.6 0.8 1
energia beta = 0.1 beta = 1.0 beta = 2.0 beta = 5.0 beta = 20.0
Symulowane wyżarzanie — motywacja
W procesie minimalizacji energii bardzo niepożądanym
zjawiskiem jest nagły skok do stanu o wyższej energii, gdy już było „dość dobrze”.
Na początku działania algorytmu dopuszczalne jest chaotyczne zachowanie, które może pozwolić znaleźć odpowiedni obszar przestrzeni energetycznej (taki o dużym spadku, który sugeruje bliskość minimum globalnego),
W okolicach globalnego minimum nie opłaca się już skakanie do wyższych terenów, bo opóźnia to tylko osiągnięcie owego minimum.
Symulowane wyżarzanie
Połączenie dwóch heurystyk:
algorytm Metropolisa schemat chłodzenia
W istocie symulowane wyżarzanie jest to algorytm Metropolisa ze zmienną temperaturą.
Dynamika MB z symulowanym wyżarzaniem
przypisz numer bieżącej iteracji k = 1 oraz temperaturę T = cτ (k), gdzie c jest to dodatni parametr
wylosuj neuron σi
jeśli spin jest niezgodny z lokalnym polem wypadkowym Mi, zmień go
σi = sign(X
j
wijσj + hi) jeśli jest zgodny, zmień go z prawdopodobieństwem exp(−2|Mi|/T ), lub zostaw
zwiększ k o jeden oraz zaktualizuj wartość temperatury T = cτ (k)
powtarzaj, aż osiągniesz temperaturę równą lub bliską 0 i stan się ustabilizuje
Schematy chłodzenia
schemat logarytmiczny (Boltzmanna): τ (k) = 1/ log k,
schemat liniowy (Cauchy’ego) τ (k) = 1/k, dla małego k > 0 np.
k = 1/4
schemat geometryczny τ (k) = ak, gdzie 0 < a < 1
schemat logarytmiczny (w przeciwieństwie do pozostałych) gwarantuje (przy pewnych naturalnych założeniach) znalezienie optimum globalnego z prawdopodobieństwem 1, jednak średni czas potrzebny do jego osiągnięcia jest porównywalny z rozmiarem przestrzeni rozwiązań
badania empiryczne sugerują, że największą przydatność praktyczną ma schemat geometryczny (najszybszy)
-10 -5
0 5
10 -10 -5
0 5 -2.5 10
-2 -1.5 -1 -0.5 0
Ewolucja maszyny Boltzmanna w wysokiej temperaturze
click
Ewolucja maszyny Boltzmanna w niskiej temperaturze
click
Problem przeszukiwania przestrzeni
Maszyny Boltzmanna są zasadniczo używane do rozwiązywania dwóch różnych obliczeniowych problemów.
przeszukiwanie przestrzeni stanów, w którym wagi dla połączeń są stałe i są wykorzystywane do reprezentacji funkcji kosztu próbkowanie wektorów stanów, które mają małe wartości funkcji kosztu.
Problem uczenia maszyn Boltzmanna
Dane:
zbiór przykładów, który odzwierciedla „częstość występowania”
(zadaję miarę probabilistyczną (empiryczną) na zbiorze konfiguracji sieci)
Wynik:
wagi połączeń sieci, tak aby generowała te dane z zadanym prawdopodobieństwem.
Architektura maszyny Boltzmanna
warstwa wejściowa, warstwa wyjściowa i jednostki ukryte.
Konfigurację warstwy wejściowej = αi, warstwy wyjściowej = α0, przez wektor α konfiguracja obu widocznych warstw, (tzn.
„scalone” wektory αi i α0)
Konfiguracja jednostek ukrytych = β.
Jednostki ukryte nie tworzą warstw.
Nie wyróżniamy żadnej konkretnej struktury połączeń między jednostkami.
Architektura maszyny Boltzmanna
wejście wyjście
i j wij
{
i 0
Architektura maszyny Boltzmanna
Ukryte neurony nie są brane pod uwagę jako część zapamiętanego wzorca w procesie uczenia
Jednostki ukryte pozwalają zwiększyć moc obliczeniową sieci (uwalniając ją od statystyki drugiego rzędu i zapamiętywania wzorców wyłącznie na podstawie korelacji między parami elementów
Uwagi
pracujemy w kodownaiu 0, 1 lub −1, 1.
nie ma pól zewnetrznych, ale dopuszczamy wagi wii dla kodowania 0, 1
Założenia ogólne
Q(α) — rozkład empiryczny po zbiorze danych
P(α) — rozkład stacjonarny w maszynie Boltzmanna, zależny tylko od wag i temperatury T (= const w trakcie uczenia) Prawdopodobieństwo konfiguracji widocznych jednostek:
P(α) =X
β
P(α, β) = P
βexp(−Eαβ/T ) Z (T ) , gdzie Eαβ — energia przy zadanych α i β
Z (T ) — jak wcześniej
Entropia względna
Cel: znalezienie takiego zestawu wag, który minimalizuje entropię względną (rozbieżność Kullbacka-Lieblera) tych dwóch rozkładów:
DKL(Q(α), P(α)) =X
α
Q(α)logQ(α) P(α)
intuicyjne: „odległość między rozkładami P i Q”
jeżeli P i Q są identyczne, to DKL(Q, P) = 0
Uczenie maszyny Boltzmanna
gradien descent
uaktualniamy wagi zgodnie ze wzorem:
∆wij = −η∂Dkl
∂wij = ηX
α
Q(α) P(α)
∂P(α)
∂wij , η — współczynnik uczenia
zauważmy że Q jest zadane i nie zależy od wag: ∂Q(α)∂w
ij = 0
Uczenie maszyny Boltzmanna
∆wij = ηX
α
Q(α) P(α)
∂P(α)
∂wij ,
∂P(α)
∂wij = ∂(
P
βe−Eαβ /T Z (T ) )
∂wij
=
∂(P
βexp−Eαβ /T)
∂wij Z (T ) − ∂(Z (T ))∂w
ij
P
βe−Eαβ/T Z (T )2
=
∂(P
βexp−Eαβ /T)
∂wij
Z (T ) −
∂(Z (T ))
∂wij
P
βe−Eαβ/T Z (T )2
Uczenie maszyny Boltzmanna
=
∂(P
βexp−Eαβ /T)
∂wij
Z (T ) −
∂(Z (T ))
∂wij
P
βe−Eαβ/T Z (T )2
= P
βe−Eαβ/T ∂(−E∂wαβ/T )
ij
Z (T ) −
∂(P
αβe−Eαβ /T)
∂wij
P
βe−Eαβ/T Z (T )2
= P
βe−Eαβ/T ∂(−(−
1 2
P
i 6=jwijsisj))
∂wij
TZ (T ) −
∂(P
αβe−Eαβ /T)
∂wij
P
βe−Eαβ/T Z (T )2
P e−E /Tss ∂(
P
αβe−Eαβ /T)P
e−Eαβ/T
Uczenie maszyny Boltzmanna
= P
βe−Eαβ/Tsisj TZ (T ) −
∂(P
αβe−Eαβ /T)
∂wij
P
βe−Eαβ/T Z (T )2
= P
βe−Eαβ/Tsisj TZ (T ) − (P
αβe−Eαβ/Tsisj)(P
βe−Eαβ/T) TZ (T )2
= P
βP(α, β)sisj
T −(P
αβP(α, β)sisj)(P
βP(α, β)) T
= 1 T[X
β
sisjP(α, β) − hsisjiP(α)P(α)]
Uczenie maszyny Boltzmanna
Z wyrażeń:
∆wij = ηX
α
Q(α) P(α)
∂P(α)
∂wij ,
∂P(α)
∂wij
= 1 T[X
β
sisjP(α, β) − P(α)hsisjiP(α)] wynika:
∆wij = η T[X
α
Q(α) P(α)
X
β
sisjP(α, β) −X
α
Q(α)hsisjiP(α)]
= η T[X
αβ
Q(α)P(β|α)sisj−X
α
Q(α)hsisjiP(α)]
Uczenie maszyny Boltzmanna
Uwagi:
hsisjiQ(α) liczymy bezpośrednio z danych hsisjiP(α) liczymy metodą Monte-Carlo
ten algorytm zawsze zbiega, ponieważ DKL jest funkcją wypukłą