Laboratorium 09

Transkrypt

Laboratorium 09
Wprowadzenie do Sieci Neuronowych — Sieci rekurencyjne
M. Czoków, J. Piersa
2010-12-07
1
Powtórzenie — Konstrukcja autoasocjatora Hopfielda
1.1
Konstrukcja
n
Danych jest m obrazów wzorcowych ξ 1 ..ξ m , gdzie każdy pojedynczy wzorzec ξ µ ∈ {−1, +1} .
Autoasocjator składa się z n (tj. rozmiar pojedynczego wejścia) neuronów połączonych wagami wij każdy
z każdym. Przyjmujemy, że wagi są symetrzyczne wij = wji oraz waga nuronu z samym sobą jest zerowa
wii = 0. Do tego neuron ma przypisane pola zewnętrzne hi . Każdy neuron znajduje się w swoim stanie (spinie)
oznaczonym dalej przez σi ∈ −1, +1 (np. +1 — kolor biały, −1 kolor czarny). Konfigurację całej sieci oznaczmy
poprzez σ̄.
Zdefiniujmy funkcję energetyczną
E(σ̄) = −
X
1X
σi σj wij −
hi σi
2
i
(1)
i6=j
1.2
Dynamika działania
Obraz wejściowy jest kopiowany do konfiguracji sieci (σ1 ..σn ). Ze startowego ustawienia rozpoczynane jest
przeszukiwanie przestrzeni w celu znalezienia rozwiązania minimalizującego E. Przykładowa dynamika asynchroniczna w temperaturze 0:
1. Powtarzaj wielokrotnie:
(a) Wylosuj jednostkę σi ;
(b) Jeżeli zmiana spinu (σi := −σi ) zmniejsza energię E to przypisz σi := −σi
(c) W przeciwnym przypadku nie rób nic
Po ustabilizowaniu się symulacji zwróć uzyskaną konfigurację sieci.
UWAGA
Równoważne dla punktów 1b i 1c jest przypisanie
X
σi := sign(
wij , σj + hi )
j6=i
Liczenie energii może być kosztowne. Jeżeli rozważamy autoasocjator graficzny to ilość jednostek n skaluje
się kwadratowo z rozmiarem obrazu wejściowego. Ilość wag między neuronami wij jest kwadratowa względem
n, czyli ma się jak rozmiar obrazu w potędze 4. Zmiana energii po zmianie neuronu σi zależy tylko od wag
w1i , w2i , ..., wni czyli jej przeliczenie ma koszt (tylko) liniowy względem n.
1.3
Nauka sieci
Działanie sieci wymaga znajomości wag wij ∈ R oraz pól zewnętrznych hi ∈ R. Oznaczmy: ξ i — i-ty przykład
(czyt. „ksi”), ξj — j-ota współrzędna przykładu ξ, n — wymiar przykładu, m — ilość przykładów.
Postać wag w autoasocjatorze:
m
wij :=
1X k k
ξi ξj
n
(2)
k=1
Pola zewnętrzne:
hi := 0
(3)
Zauważmy, że są to zależności zgodne z regułą Hebba, tj. uzystaknie tych samych impulsów zwiększa wagę.
1
1.4
Dynamika sieci w dodatniej temperaturze
Podana wyżej dynamika nie radzi sobie z minimami lokalnymi. Problem można obejść stosująć mechanizm
symulowanego wyżarzania. Oznaczmy β ≥ 0 — temperatura odwrotna np.
β=
1
kT
gdzie k > 0 stała, T > 0 temperatura.
Dynamika sieci:
1. Powtarzaj wielokrotnie
(a) Wylosuj neuron σi
(b) Oblicz zmianę energii ∆E jaką spowodowałaby zamiana spinu neuronu σi na przeciwny
(c) Jeżeli ∆E < 0 (energia zmalała) to przyjmij zmianę σi = −σi
(d) W przeciwnym wypadku przyjmij zmianę σi = −σi z prawdopodobieństwem
P = exp(−β∆E)
(e) Co pewien czas zmniejsz temperaturę T.
Zauważmy, że dla temperatury T malejącej do 0, temperatura odwrotna β zbiega do nieskonczonosci, a
prawdopodobieństwo przyjęcia zmiany pod górę wykładniczo zanika do 0. Z drugiej strony dla T dużego, β
zbiega do 0 a prawdopodobieństwo do jedynki, każda zmiana jest przyjmowana.
2
Zadania
Zadania dotyczą listy piątej (sieci rekurencjne). Przy implementacji zalecane jest dodanie do dynamiki fluktuacji
termicznych.
2.1
Zadanie — Autoasocjator graficzny
Zaimplementuj autoasocjator Hopfielda dla obrazów binarnych.
Uwagi:
• Rozmiar obrazu może się okazać wązkim gardłem, obraz 100 × 100 piksleli ma 108 wag ×4B (typ float)
daje 400MB pamięci!
• Wagi są symetryczne wij = wji , więc przechowanie ich w dynamicznie alokowanej tablicy zmniejsza
wymogi pamięciowe o połowę.
• Kodowanie kolorów powinno przyjmować wartości σi = ±1 zamiast {0, 1}.
• W wypadku wprowadzania symulowanego wyżarzania należy rozpocząć symulację z wysokiej wartości β.
• Wzorce mogą być nieliczne, ale powinny być nieskorelowane ze sobą.
• Mile widziany podgląd wag (przestrzeń wag ma cztery wymiary + wartość wagi daje piąty, monitor ma
tylko dwa — zadanie do przemyślenia)
2.2
Autoasocjator lingwistyczny
Zaimplementuj autoasocjator lingwistyczny tj. działający na ciągach liter. Można (wzkazane jest) ograniczenie
do angielskiego alfabetu i spacji (podkreślenia ) jako końca / początku słowa. Małe i wielkie litery można
utożsamiać. Pojedynczy neuron odpowiada za parę znaków występujących obok siebie w zdaniu np: „ala ma
kota” otrzymujemy pary ( a), (al), (la), (a ), ( m), (ma), (a ), ( k), (ko), (ot), (ta), (a ). Można rozważać
sieć dla trójek liter, ale ponownie należy liczyć się z problemami z pamięcią (27 × 27 × 27 neuronów i tyleż do
kwadratu wag). Waga między parami liter wskazuje jak bardzo popularne (lub niepopularne w zależności od
znaku) są słowa zawierające jednocześnie obie pary. Intuicyjnie para ( y)(gh) powinna być niepopularna, gdyż
w polskim języku y nie występuje na początku słowa, podobnie para spółgłosek (gh). Z kolei para (pr)(rz)
pochodzić może np. z przedrostków przy-, przez-, przed- ale również słowa „procarz”.
Energię słowa definiujemy np. jako:
X
E(v1 ..vn ) =
wvi vi+1 wvj ,vj+1
(4)
i<j
2
Jak widać nie ma preferencji dot pól zewnętrznych To jest suma popularności (niepopularności w zależności od interpretacji) zawartych w słowie par liter. Popularność będzie maksymalizowana, niepopularność
minimalizowana.
Dynamika sieci powinna na wejściowym słowie dokonywać losowych niewielkich przekształceń, które mogą
doprowadzić do znalezienia lepszego. Punktem wyjścia mogą być najczęściej popełniane błędy podczas pisania:
1. wstawienie losowej litery na losowej pozycji,
2. usunięcie losowej litery,
3. zamiana losowej litery na inną losową (np. pochodzącą z empirycznie uzyskanego rozkładu liter w tekście)
4. zamiana litery z sąsiednią (błąd czeski)
5. miss-typing: zamiana litery na leżącą niedaleko na klawiaturze np. a → s (szczególny przypadek punktu
trzeciego).
Dla ambitnych: sieć lingwistyczna operująca na trójkach, a nie parach liter. Jeden neuron koduje trzy
sąsiadujące litery np: „ala ma kota” daje: ( al), (ala), (la ), ( ma), (ma ), ( ko), (kot), (ota), (ta ). Zalecane
jest pominięcie spacji jako środkowej litery tj. (a m).
Uwaga. Przy takim kodowaniu ilość neuronów rośnie z 272 do ok. 273 , a wag z (272 )2 /2 na (273 )2 /2 ' 2 · 108
Z drugiej strony wszystkie wagi wchodzące do neuronu np. (fgs) będą zerowe (chyba, że sieć będzie uczona na
losowym tekście), a takich niewykorzystanych neuronów będzie dość dużo. Ilość realnie występujących trójek
w tekście nie przekroczy długości tekstu (plus stała) — patrz przykład powyżej.
Zamiast tablicy sześciowymiarowej lepiej będzie skorzystać z np. tablicy hashowanej, czy choćby 273 tablic
dynamicznej długości (lista niezerowych wag dla każdego z neuronów).
2.3
Dwupodział grafu
Zastosuj omawane powyżej mechanizmy do rozwiązywania problemu dwupodziału grafu. Dany niech będzie
graf G = (V, E) oraz funkcja wag krawędzi f : E → R+ . Należy podzielić graf na dwa równoliczne i rozłączne
podzbiory V, U , V ∪ U = W , V ∩ U = ∅, |V | ' |U |, takie że suma wag krawędzi pomiędzy zbiorami jest
minimalna
X
f ({u, v}) → min
(5)
u∈U,v∈V :{u,v}∈E
Sieć składać się powinna z n = |V | węzłów. Spin σi = +1 można interpretować jako „w danym rozwiązaniu wierzchołek vi ∈ U ”, spin σi = −1 interpretowany jest jako przeynależenie vi do W . Postać funkcji
energetycznej:
!2
X
X
E(σ) = −α1
σi σj f ({vi , vj }) + α2
σi
i,j
i
Funkcja jest sumą ważoną składników:
• optymalizującego tj. opisującego jakość danego rozwiązania (im mniejsza wartość tym lepiej) — porównaj
z 5.
• ograniczajacego tj. jak bardzo zwrócone rozwiązanie nie spełnia kryterów problemu. W tym przkładzie jest
to różniaca w liczebności zbiorów. Bez tego ograniczenia optymalnym rozwiązaniem byłoby U = V, W = ∅
(lub na odwrót), brak krawędzi pomiędzy U i W dawałby minimalną wartość składnika optymalizującego.
Alternatywnie, zależności na wagi
wij = 2 (α1 · f ({vi , vj }) − α2 )
oraz na pola zewnętrzne
hi = 0
Dobór skalarów α1 , α2 powinien skutkować porównywalną wielkością obu składników. Zbyt małe α1 spowoduje utknięcie w pierwszym podziale z poprawnymi mocami zbiorów U i W . Zbyt małe α2 skutkuje przypisaniem
wszystkich wierzchołków do jednego zbioru. Dynamika ewolucji przebiega poprzez zmianę lozowych spinów na
przeciwne, tj losowe przenoszenie wierzchołków pomiędzy zbiorami. Uwaga! bez mechanizmu symulowanego
wyżarzania bardzo prawdopodobne jest utknięcie w minimum loklanym.
3
Rysunek 1: Zastosowanie sieci do rozwiązywania problemu dwupodziału.
2.4
Kolorowanie grafu
Dla danego grafu planarnego G = (V, E) należy znaleść kolorowanie wierzchołków, tak aby żadne dwa połączone
krawędzią nie miały tych samych kolorów. Jeżeli graf jest planarny to wystarczą cztery kolory (patrz twierdzenie
o czterech barwach).
Konstrukcja sieci rozwiązującej problem. Oznaczmy |V | = n. Sieć składa się z 4n jednostek oznaczonych σi,k
gdzie i = 1..n jest numerem wierzchołka w grafie, naromiast k = 1..4 jest kolorem wierzchołka. Spin σi,k = +1
oznacza zatem, że węzeł vi ma przypisany kolor k. UWAGA: w przestrzeni stanów istnieją konfigureacje, w
których wierzchołek może mieć więcej niż jeden kolor lub nie mieć koloru w ogóle!
Rysunek 2: Zastosowanie sieci do kolorowania wierzchołków.
Określamy funkcję energetyczną:
X
X
XX
E(σ) = c1 ·
1(vi ,vj )∈E
1σi,k =+1∧σj,k =+1 + c2 ( σi,k − 1)2
i,j
i
k
(6)
k
Pierwszy składnik opisuje jakość rozwiązania, penalizuje sytuacje gdzie dwa sąsiadujące wierzchołki mają ten
sam kolor. Drugi ze składników daje dodatkową karę gdy wierzchołek jest pokolorowany ilością kolorów inną
niż 1.
Dynamika sieci polega na losowych zmianach spinów losowych neuronów (dodawanie / usuwanie koloru z
węzła). Opcjonalnie można połączyć dwie operacje jedną zamianę koloru na inny.
Odnośniki
Przykładowe grafy do pokolorowania:
4
• http://mat.gsia.cmu.edu/COLOR/instances.html
• ftp://dimacs.rutgers.edu/pub/challenge/graph/benchmarks/color/
Uwaga: nie wszystkie z nich są planarne, większość dotyczy raczej zagadnienia szacowania liczby kolorów!
2.5
Cykl Hammiltona
Dany jest graf pełny G = (V, E) oraz funkcja v : E → R+ wag na krawędziach. Graf niepełny można uzupełnić
do pełnego, ustawiając wysokie wagi na dodanych krawędziach. Należy znaleźć cykl Hammiltona o minimalnej
wadze.
Konstrukcja sieci. Sieć liczy n2 jednostek: σij , gdzie i = 1..n jest indeksem kroku na cylku Hammiltona
(cykl liczy n kroków), j = 1..n jest indeksem wierzchołka. Spiny dla uproszczenia rachunków przyjmują wartości
+1 oraz 0. Interpretacja σi,j = +1 oznacza odwiedzenie węzła vj w kroku i.
Rysunek 3: Zastosowanie sieci do rozwiązywania problemu cyklu Hammiltona.
Jak poprzednio należy wprowadzić ograniczenia na przyjmowane stany. Każdy wierzchołek powinien być
odwiedzony dokładnie jeden raz:
X
∀j (
σij − 1) = 0
i
W jednym kroku może być odwiedzony dokładnie jeden węzeł
X
∀i (
σij − 1) = 0
j
Ponadto funkcja energetyczna powinna uwzględniać koszt trasy
XX
σi−1,j σi,k f (vi , vk )
i
j,k
Podsumowując:
E(σ) = c1 ·
XX
XX
XX
(
σij − 1)2 + c1 ·
(
σij − 1)2 + c2 ·
σi−1,j σi,k f (vi , vk )
j
i
i
j
i
(7)
j,k
Lepsze podejścia można znaleźć w P. Paretto, An Introduction to the Modelling of Neural Networks, CUP,
rozdział 10.2 — Optimization.
Strony internetowe poświęcone TSP (w tym również przykładowe grafy):
• http://www.iwr.uni-heidelberg.de/groups/comopt/software/TSPLIB95/
• http://www.tsp.gatech.edu/
2.6
Inne propozycje zadań
1. symulacja niepokojów społecznych,
2. przydział zadań,
3. ...
5