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 Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny Boltzmanna minima logalne tendencje do oscylacji (dynamika synchroniczna) płytkie baseny atrakcyjne
Nicolas Metropolis (1915-1999) Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny Boltzmanna 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)
Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny Boltzmanna Algorytm Metropolisa wersja orginalna Mamy dany otwarty układ termodynamiczny: E i - energia i-tego stanu Cel: znaleźć stan o minimalnej energii
Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny Boltzmanna Algorytm Metropolisa wersja orginalna Algorytm: Wykonujemy wielokrotnie: dla danego stanu i-tego wykonujemy statystyczny ruch cząstki, otrzymując stan j-ty, Jeżeli E j E i 0, przechodzimy do stanu j-tego bezwarunkowo, w p.p. przechodzimy do stanu j z prawdopodobieństwem exp( (E j E i ) k b T ), gdzie k b - stała Boltzmanna, T - temperatura bezwzględna
Adaptacja algorytmu Metropolisa Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny Boltzmanna 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
Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny 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 Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny Boltzmanna 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 Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny Boltzmanna Dynamika asynchroniczna w temperaturze 0. wylosuj neuron σ i jeśli spin jest niezgodny z lokalnym polem wypadkowym M i, zmieniamy go σ i = sign( w ij σ j + h i ) j Przypomnienie - pole wypadkowe M i = j w ijσ j + h i powtarzamy aż do ustabilizowania się sytuacji
Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny Boltzmanna 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 Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny Boltzmanna wylosuj neuron σ i jeśli spin jest niezgodny z lokalnym polem wypadkowym M i, zmieniamy go σ i = sign( w ij σ j + h i ) j jeśli jest zgodny, zmieniamy go z prawdopodobieństwem exp( 2 M i /T ), lub pozostawiamy z komplementarnym prawdopodobieństwem powtarzamy aż do ustabilizowania się sytuacji
Uwagi Algorytm Metropolisa Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny Boltzmanna Rozważmy dwie konfiguracje σ i σ różniące się na i-tym miejscu Niech σ będzie zgodna z lokalnym polem wypadkowym M i, a σ niepożądanym Wtedy zachodzi: Zatem zachodzi E( σ ) E( σ) = 2 M i exp( 2 M i /T ) = exp( (E( σ ) E( σ))/t )
Uwagi Algorytm Metropolisa Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny Boltzmanna Obie strony równania są dodatnie Zatem 0 < exp( 2 M i /T ) < 1. E( σ ) E( σ) = 2 M i
Uwagi Algorytm Metropolisa Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny Boltzmanna 10 8 6 4 2 0-2 -1 0 1 2 3 4 5
Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny Boltzmanna Stacjonarność stanów maszyny Boltzmanna Twierdzenie. Rozkład stacjonarny dla łańcucha Markowa zadanego przez stany maszyny Boltzmanna ma postać: P( σ) = exp( E( σ)/t ) σ exp( E( σ )/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 Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny Boltzmanna 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 Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny Boltzmanna P AB p-stwo przejścia ze stanu A do B w jednym kroku π A p-stwo znalezienia się w stanie A π A P AB p-stwo wychodzące z A do B π A ( B P AB) = π A p-stwo wychodzące z A B π BP BA p-stwo wchodzące do A
Dowód stacjonarności Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny Boltzmanna Twierdzenie. Łańcuch jest stacjonarny p-stwo wchodzące = p-stwo wychodzące dla każdego stanu, czyli: A ( B π B P BA = π A ( B P AB ) = π A ) Powyższa równość zachodzi zawsze jeśli spełniony jest warunek: A,B (π B P BA = π A P AB ), ponieważ: A ( B π B P BA = B π A P AB ).
Dowód stacjonarności Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny Boltzmanna Pokażemy teraz, że dla naszego łańcucha zachodzi A,B (π B P BA = π A P AB ), czym udowodnimy jego stacjonarność.
Dowód stacjonarności Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny Boltzmanna Rozważmy dwie konfiguracje σ i σ różniące się na i-tym miejscu. Niech σ będzie zgodna z lokalnym polem wypadkowym M i, a σ nie. Wówczas przepływ z σ do σ wynosi 1 N P( σ ) = exp( E( σ )/T ), NZ(T ) gdzie N to długość wektora reprezentującego konfigurację sieci.
Dowód stacjonarności Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny Boltzmanna Z drugiej strony, przepływ z σ do σ wynosi exp( 2 M i /T ) N P( σ) = exp( (E( σ ) E( σ))/t ) exp( E( σ)/t ) N Z(T ) = exp( E( σ )/T ) NZ(T ) Zatem przepływ z σ do σ wynosi tyle samo co przepływ z σ do σ, co kończy dowód.
Energia a rozkład stacjonarny Idea algorytmu Maszyna Boltzmanna Stacjonarność stanów maszyny Boltzmanna 4 3 energia beta = 0.1 beta = 1.0 beta = 2.0 beta = 5.0 beta = 20.0 2 1 0-1 -2 0 0.2 0.4 0.6 0.8 1
Algorytm symulowanego wyżarzania 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.
Algorytm symulowanego wyżarzania
Algorytm symulowanego wyżarzania Połączenie dwóch heurystyk: algorytm Metropolisa schemat chłodzenia W istocie symulowane wyżarzanie jest to algorytm Metropolisa ze zmienną temperaturą.
Algorytm symulowanego wyżarzania 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 M i, zmień go σ i = sign( w ij σ j + h i ) j jeśli jest zgodny, zmień go z prawdopodobieństwem exp( 2 M i /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
Algorytm symulowanego wyżarzania 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) = a k, 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)
Algorytm symulowanego wyżarzania 0-0.5-1 -1.5-2 -2.5-10 -5 0 0 5 10 5-5 10-10
Algorytm symulowanego wyżarzania Ewolucja maszyny Boltzmanna w wysokiej temperaturze click
Algorytm symulowanego wyżarzania Ewolucja maszyny Boltzmanna w niskiej temperaturze click
Wprowadzenie Algorytm - założenia ogólne 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.
Wprowadzenie Algorytm - założenia ogólne Problem uczenia maszyn Boltzmanna Dane: Wynik: zbiór przykładów, który odzwierciedla częstość występowania (zadaję miarę probabilistyczną (empiryczną) na zbiorze konfiguracji sieci) wagi połączeń sieci, tak aby generowała te dane z zadanym prawdopodobieństwem.
Wprowadzenie Algorytm - założenia ogólne 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 Wprowadzenie Algorytm - założenia ogólne wyjście 0 { w ij i j i wejście
Wprowadzenie Algorytm - założenia ogólne 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
Wprowadzenie Algorytm - założenia ogólne Uwagi pracujemy w kodownaiu 0, 1 lub 1, 1. nie ma pól zewnetrznych, ale dopuszczamy wagi w ii dla kodowania 0, 1
Założenia ogólne Algorytm Metropolisa Wprowadzenie Algorytm - 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(α) = β P(α, β) = exp( E αβ/t ), Z(T ) β gdzie E αβ energia przy zadanych α i β Z(T ) jak wcześniej
Wprowadzenie Algorytm - założenia ogólne Entropia względna Cel: znalezienie takiego zestawu wag, który minimalizuje entropię względną (rozbieżność Kullbacka-Lieblera) tych dwóch rozkładów: D KL (Q(α), P(α)) = α Q(α)log Q(α) P(α) intuicyjne: odległość między rozkładami P i Q jeżeli P i Q są identyczne, to D KL (Q, P) = 0
Wprowadzenie Algorytm - założenia ogólne Uczenie maszyny Boltzmanna gradien descent uaktualniamy wagi zgodnie ze wzorem: w ij = η D kl w ij = η α Q(α) P(α), P(α) w ij η współczynnik uczenia zauważmy że Q jest zadane i nie zależy od wag: Q(α) w ij = 0
Uczenie maszyny Boltzmanna Wprowadzenie Algorytm - założenia ogólne w ij = η α Q(α) P(α), P(α) w ij = Pβ P(α) = ( e E αβ /T Z(T ) ) w ij w ij ( P β exp E αβ /T ) (Z(T )) w ij Z(T ) w ij β e E αβ/t Z(T ) 2 = ( P β exp E αβ /T ) w ij Z(T ) (Z(T )) w ij β e E αβ/t Z(T ) 2
Uczenie maszyny Boltzmanna Wprowadzenie Algorytm - założenia ogólne = ( P β exp E αβ /T ) w ij Z(T ) (Z(T )) w ij β e E αβ/t Z(T ) 2 = β e E αβ/t ( E αβ /T ) w ij Z(T ) ( P αβ e E αβ /T ) w ij β e E αβ/t Z(T ) 2 = β e E αβ/t ( ( 1 2 TZ(T ) P i j w ij s i s j )) w ij ( P αβ e E αβ /T ) w ij β e E αβ/t Z(T ) 2 = β e E αβ/t s i s j TZ(T ) ( P αβ e E αβ /T ) w ij β e E αβ/t Z(T ) 2
Uczenie maszyny Boltzmanna Wprowadzenie Algorytm - założenia ogólne = = = β e E αβ/t s i s j TZ(T ) β e Eαβ/T s i s j TZ(T ) β P(α, β)s is j T ( P αβ e E αβ /T ) w ij β e E αβ/t Z(T ) 2 ( αβ e E αβ/t s i s j )( β e E αβ/t ) TZ(T ) 2 ( αβ P(α, β)s is j )( β P(α, β)) T = 1 T [ β s i s j P(α, β) s i s j P(α) P(α)]
Uczenie maszyny Boltzmanna Wprowadzenie Algorytm - założenia ogólne Z wyrażeń: P(α) w ij w ij = η α = 1 T [ β Q(α) P(α), P(α) w ij s i s j P(α, β) P(α) s i s j P(α) ] wynika: w ij = η T [ α Q(α) P(α) s i s j P(α, β) α β Q(α) s i s j P(α) ] = η T [ αβ Q(α)P(β α)s i s j α Q(α) s i s j P(α) ] = η T [ s is j Q(α) s i s j P(α) ]
Wprowadzenie Algorytm - założenia ogólne Uczenie maszyny Boltzmanna Uwagi: s i s j Q(α) liczymy bezpośrednio z danych s i s j P(α) liczymy metodą Monte-Carlo ten algorytm zawsze zbiega, ponieważ D KL jest funkcją wypukłą