tekst

Transkrypt

tekst
Uniwersytet Mikołaja Kopernika
Wydział Matematyki i Informatyki
Jarosław Piersa
piersaj(at)mat.uni.torun.pl
Abstrakt Poniższy referat dotyczy zagadnień uczenia w sieciach neuronowych i bayesowskich (sieciach przekonań). Jest opracowaniem rozdziału 19-go książki „Artificial Intelligence, A modern Approach” Russela i Norviga [1]. Przygotowany został w ramach laboratorium Wstęp do Metod Sztucznej Inteligencji w roku akademickim 2008/2009.
1
1.1
Sieci Neuronowe
Komórki neuronowe
Z biologicznego punktu widzenia neuron jest komórką (rys 1). Składa się z ciała komórki
(soma), odchodzących drzewiastych dendrytów oraz zazwyczaj jednego długiego połączenia
— aksonu. Dendryty i akson są zakończone połączeniami synaptycznymi które umożliwaiają
komunikacje między neuronami. Ilość połączeń wynosi od kilkudziesięciu do kilkuset tysięcy.
Dendryty zazwyczaj przewodzą impulsy do komórki. Akson jest długim mierzącym nawet
do metra połączeniem przewodzącym impulsy od ciała komórki.
Impulsy elektryczne wysyłane przez neurony bazują na prądzie jonowym (a nie elektronowym). Potencjał elektryczny gromadzny na błonie komórkowej kumuluje się wraz z
odbieraniem impulsów od innych neuronów i gdy przekroczy „próg” wysyłana jest odpowiedź
impulsową wzdłóż aksonu. Po wysłaniu impulsu neuron przez pewien okrez czasu staje się
niezdolny do odbierania i wysłania kolejnych impulsów, po czym powraca do „normalnego
stanu”.
Połączone ze sobą neurony tworzą ośrodki nerwowe zarówno u ludzi, jak i u ssaków, kręgowców, a także zwierząt bezstrunowych (owady, pajęczaki). Istniejące w potocznym języku
„szare komórki” nie są niczym innym jak siecią neuronową, składającą się na zewnętrzną
warstwę mózgu. Co prawda pełne zrozumienie funkcjonowania ludzkiego umysłu nadal pozostaje wyzwaniem, ale znajomość samej ogólnej budowy i dynamiki komórek nerwowych
pozwala do pewnego stopnia je symulować. Sztuczne sieci neuronowe jako przedmiot badań wyrosły właśnie z nauki o prawdziwych komórkach neuronowych i do dziś są jednym
z filarów sztucznej inteligencji. Modele są oczywiście znacznie uproszczone ale sprowadzają
się do podebnej idei — wiele prostych i podobnych do siebie jednostek współpracuje w celu
osiągnięcia pewnego celu.
Mimo postępu w rozwoju techniki nadal nie udało się zbudować komputera o mocy
obliczeniowej choćby porównywalnej z ludzkim mózgiem. Zasadniczą zaporą zdaje się być
całkowita współbieżność komórek nerwowych, podczas gdy symulacje dzielą czas kilku do
kilkunastu procesorów pomiędzy wiele milionów czy miliardów jednostek w sztucznej sieci
(patrz tabela 2).
1.2
Perceptron
Perceptron jest najprostszym modelem komórki nerwowej. Jednostka składa się z określonej
(N ) liczby wejść xi , i = 1..N , wag wi , i = 1..N (jedna waga skojarzona z każdym wejściem)
oraz pewnej funkcji aktywacji f : R → R. Jednostka działa synchronicznie. W danym kroku
1
Rysunek 1: Komórka nerwowa
Jednostki obliczeniowe
Pojemność
Czas 1 cyklu
Przepustowość
Operacji na neuronach 1/s
komputer
1 CPU
109 b RAM, 1010 dyski
10−8 s
109 b/s
105
mózg
1011 neuronów
1011 neuronów, 1014 synaps
10−3 s
1014 b/s
1014
Rysunek 2: Porównanie możliwości obliczeniowych kompurerów (ok 1995) i ludzkiego mózgu.
na wszystkich wejściach pojawiają się wartości (całkowite lub rzeczywiste). Jednostka liczy
sumę ważoną wszystkich wejść:
N
X
xi wi
in =
i=1
a następnie zwraca wartość funkcji aktywacji na wyliczonej wartości (patrz rys 3)
f (in)
W zależności od rodzaju zagadnienia rozważa się różne postacie funkcji f :
• Identyczność f (s) = s — taka jednostka liczy po prostu sumę ważoną wejść,
Rysunek 3: Schemat działania perceptronu
2
• Funkcja progowa (bipolarna)
f (s) =
0
1
s<p
s≥p
Wartość p może być dodatkowym parametrem opisującym perceptron. Ten typ funkcji
modeluje wysyłanie impulsu po przekroczeniu pewnego progu, które to zachowanie
charakteryzuje komórki neuronowe.
• funkcja znakowa (bipolarna)
f (s) =
−1
+1
s<p
s≥p
Funkcja podobna do poprzedniej z tą różnicą, że wartość −1 nie jest elementem neutralnym dodawania i „odpowiedź negatywna” może mieć pewien wpływ.
• Sigmoida
f (s) = σ(s) =
1
1 + exp(−s)
Funkcja sigmoidalna może tu dziwić. Wymaga dzielenia i potęgowania, czyli więcej
obliczeń, co nie powinno być wskazane przy wielokrotnym wykonywaniu. Jednakże
jest ciągła i różniczkowalna co ma zasadnicze znaczenie przy algorytmach uczenia i
przybliża funkcją bipolarną. Ponadto zachodzi
σ ′ (s) = σ(s) · (1 − σ + (s))
1.3
Uczenie perceptronu
Termin perceptron poza pojedynczą jednostką może czasem oznaczać sieć składającą się z
kilku niezależnych od siebie jednostek, która zwraca nie jedną, a kilka liczb. W takim przypadku wynik interpretowany jest jako jeden element RM , gdzie M jest ilością perceptronów.
Problem uczenia siec sprowadza się do znalezienia wartości wag wi i ewentualnie progu p dla
wszystkich jednostek w sieci (często dla jednej). Czasami przyjmuje się, że zamiast progu
neuron ma dodatkowe wejście na które zawsze przychodzi wartość 1 a jego waga wynosi
w0 = −p.
(i)
(i)
Dany niech będzie zestaw przykładów E = E (1) ...E (k) , gdzie E (i) = (e1 , ..., eN ) ∈
RN i odpowiadające im poprawne wyniki T (1) ...T (k) . Dany też mamy perceptron o N
wejściach i jednym wyjściu.
Weźmy przykład E j i odpowiadającą mu poprawną odpowiedź T j , niech sieć z bieżącym
zestawem wag zwróci wartość O. Rozważmy błąd:
ERR = T j − O
Jeżeli jest dodatni to musimy zwiększyć O, jeżeli wejście eji > 0 to zwiększenie wagi wi
zwiększy O, jeżeli eji < 0 to zmniejszenie wi zwiększy O.
Jeżeli błąd ERR jest ujemny to musimy zmniejszyć O. Podobnie rozumując musimy
zmniejszyć wagi wi jeśli wejście eji > 0 i zwiększyć wi w przeciwnym wypadku tj. eji < 0.
Podsumowując te rozważania otrzymujemy algorytm:
• Wylosuj wagi wi małe, blisko 0.
• Wybierz przykład E j i odpowiadającą mu poprawną odpowiedź T j ,
• Oblicz O — wynik działania sieci na E j
• Oblicz ERR = T j − O
3
Rysunek 4: Problem liniowo separowalny (po lewej), i nieseparowalny (po prawej)
• Uaktualnij wszystkie wagi zgodnie ze wzorem
wi = wi + η · ERR · eji
η > 0 jest stałą uczenia.
• Jeżeli sieć klasyfikuje poprawnie wszystkie (większość) przykłady to zakończ, wpw
wróć do 2.
Warunek końcowy powinien traktowany ze szczególną uwagą. Nie musi być prawdą,
że dla każdego zestawu uczącego istnieje zestaw wag, który daje poprawną klasyfikację na
wszystkich przykładach.
Obliczenia wykonywane przez perceptron dają równanie pewnej hiperprzestrzeni N − 1
wymiarowej. Nałożenie na to funkcji progowej pozwala stwierdzić czy dany punkt „leży
po właściwej stronie” tej hiperprzestrzeni, ale niewiele więcej. To ograniczenie nazywa się
liniową separowalnością problemu i już w latach 60-tych XX wieku pokazano, że pojedynczy
perceptron (a także jednowarstwowa sieć perceptronów) nie może rozwiązać problemu, który
nie jest liniowo separowalny (patrz rys. 4).
1.4
Sieci neuronowe
Podobnie jak w mózgu, sztuczne sieci neuronowe są zestawem „prostych” jednostek połączonych między sobą w bardziej skomplikowane struktury. Jak się okazuje przejście z
jednej jednostki do wielu współpracujących ze sobą pozwala znacznie zwiększyć możliwości
obliczeniowe.
W zależności od architektury wyróżniane są następujące klasy sieci:
• Sieci skierowane (ang. feed-forward) z jednoznacznie zdefiniowanym kierunkiem przepływu impulsów, nie dopuszczają skierowanych cykli.
• Sieci rekurencyjne, bardziej ogólne, dopuszczające cykle (podobnie jak sieci nerwowe)
ale trudniejsze w uczeniu. Nawet najlepiej opisane z nich charakterysują się regularną
strukturą, np: sieci Hopfielda, maszyny Boltzmanna. Studiowanie właściwości sieci
rekurencyjnych wykracza poza materiał tego referatu.
1.5
Sieci warstwowe
Sieci warstwowe są przykładem sieci feed-forward. Perceptrony pogrupowane są w warstwy,
dane wejściowe wchodzą do wszystkich jednostek w najniższej warstwie Wyniki policzone
w warstwie niższej są traktowane jako wejścia w warstwie bezpośrednio wyżej. Wyniki z
warstwy najwyższej są zwracane jako wyniki całej sieci na danych wejściowych (rys. 5).
Warstwy, które nie są wyjściowymi nazywane są ukrytymi. Sieci neuronowe zjedną warstwą ukrytą mogą przybliżać każdą funkcję ciągłą. Sieci z dwiema i więcej warstwami nieciągłymi mogą przybliżać funkcje nieciągłe, o ile ilość jednostek w sieci jest wystarczająca.
4
Rysunek 5: Warstwowa sieć neuronowa
O ile znane są algorytmy uczenia dla sieci warstwowych to problem optymalizacji samej
architektury sieci dla zadanych danych jest trudny. Zbyt mała ilość neuronów nie zagwarantuje wystarczającej ilości pamięci by się funkcji nauczyć. Zbyt wielka — da z kolei pamięć
słownikową, sieć zapamięta wyniki wraz z odpowiedziami, ale straci zdolność do generalizacji tj. oceny danych, które są „podobne” do tego czego się uczyła (i powinny mieć również
„podobne” wyniki). Stosowane są algorytmu genetyczne lub w konkretnych wprzypadkach
algorytmy konstrukcji sieci wraz z doborem wag, ale w ogólnej sytuacji problem zależy od
danych, jakimi sieć ma być uczona.
Najpopularniejszym algorytmem uczenia sieci neuronowych jest propagacja wsteczna
czasem zwana również wsteczna propagacja błędu (ang. back-propagation, back-errorpropagation). Idea algorytmu polega na obliczeniu błędu między zwracaną odpowiedzią,
a poprawnym wynikiem i następnie podzieleniu „odpowiedzialności” za ten błąd pomiędzy wagi. Następnie korygowane są wagi w głębszych warstwach sieci w zależności od ich
wpływu na błąd. Propagacja wsteczna jest przypadkiem algorytmu spadku gradientowego.
Daną mamy funkcję (błąd), którą minimalizujemy na przestrzeni wartości wag. Ponieważ w
obliczeniach potrzebujemy pochodnej, w sieci powinna być stosowana sigmoidalna funkcja
aktywacji.
Dane
Śieć neuronowa, zestaw danych wejściowych E i poprawnych odpowiedzi T .
Wynik Wartości wag wi , j
Algorytm
• Wybierz przykład E z listy przykładów i odpowiadający mu poprawny wynik T
• Oblicz wynik działania sieci na E, zapamiataj go, zapamietaj również wyniki w warstwach pośrednich oj , sumy ważone inj (wyniki przed zaaplikowaniem funkcji aktywującej) i wejscia do neuronow w danej warstwie Ik,j (wejsciem do warstwy pierwszej
jest przykład, dla warstw wyższych j są nimi wyniki z warstwy poprzedniej k)
• Dla wszystkich jednostek i w zewnętrznej warstwie sieci:
– Oblicz błąd erri = Ti − oi
– Oblicz ∆i = erri · f ′ (ini )
5
– Uaktualnij wagi w jednostce i
wj,i = wj,i + η · oj · erri · f ′ (ini )
• Dla wszystkich jednostek j w kolejnych warstwach sieci:
– Oblicz błąd
∆j = f ′ (inj )
X
wj,l · ∆l
l
– Uaktualnij wagi do jednostki j
wk,j = wk,j + η · Ik,j · ∆j
• Wróć do 1.
• Zakończ po wykonaniu określonej liczby kroków lub osiągnięciu zadowalającego poziomu błędu
Gdzie:
Ik,j k-te wejście do jednostki j
η > 0 stała uczenia
1.6
Podsumowanie
Sieci neuronowe znalazły zastosowanie przede wszystkim tam, gdzie metody analityczne
zawodzą ze względu na poziom skomplikowania czy wymiar przestrzeni. Między innymi:
rozpoznawanie obrazów, rozpoznawanie tekstu pisanego, wymawianie tekstu pisanego, kierowanie pojazdami itp.
Same sieci charakteryzują się:
• Odpornością na szum — ze względy na obliczenia na średnich ważonych i progowe
funkcje.
• Efektywność obliczeniowa — mając dane wejście, wynik może zostać obliczony w czasie
liniowym względem ilości jednostek w sieci. Obliczenia to w większości mnożenia i
dodawania.
• Generalizacja — jeżeli sieć nie zostanie przeuczona, nauka na przykładach daje również
porządane zachowanie na danych które nie znalazły się w zestawie uczącym.
• Zdolności opisu — dane wejściowe mają często interpretację w świecie podobnie jak
wynik. Ale już wartościom w jednostkach ukrytych trudno przypisać jakiekolwiek
znaczenie. Sieci neuronowe mogą działać zarówno dla danych dyskretnych (całkowitoliczbowych) jak i ciągłych. Z drugiej strony odporność na szum, czyni je niemal
niezdatnymi do obliczeń logicznych, które zależą od wartości pojedynczych zmiennych. W takich sytuacjach potrzebna jest wykładnicza wzgledem ilości zmiennych
liczba jednostek ukrytych.
• Nieprzeźroczystość — sieć neuronowa jest czarną skrzynką — raz nauczona może działać stale. Przyjmuje pewne dane i zwraca wyniki, ale absolutnie nie wiadomo jak są
one obliczane, ani jakie są wyniki pośrednie. Jeżeli z jakichś powodów sieć przestanie
działać (uszkodzenie procesora), trudno stwierdzić dlaczego i naprawić problem. Najprostszym (często jedynym) rozwiązaniem jest wówczas ponowne uczenie sieci, czego
użytkownik sam wykonać nie może.
• Korzystanie z wiedzy — choć znane są algorytmu uczenia bez nauczyciela, w większości
przypadków wiedza jest konieczna do uczenia sieci.
6
Rysunek 6: Sieć bayesowska
2
2.1
Sieci bayesowskie
Co to jest sieć bayesowsja
Podobniejak sieć neuronowa, sieć bayesowska jest układem połączonych ze sobą niekomplikowanych jednostek. Graf sieci jest skierowany i acykliczny, dopuszczamy wyłącznie cykle
nieskierowane np. dwie różne drogi między tą samą parą węzłów. Jednostki opisują pewne
rozkłady prawdopodobieństw warunkowych zależnych od wartości ich rodziców, po jednym
rozkładnie na każdą możliwą kombinację wartości. Jednostki, które nie posiadają rodziców
opisują tylko jeden rozkład.
W działaniu mając daną wiedzę (to jest wartości zmiennych w jednym lub więcej węźle),
można za pomocą sieci bayesowskiej obliczyć prawdopodobieństwa przyjęcia konkretnych
wartości przez pozostałe jednostki. Jeżeli wiedza dotyczy węzłów „na początku” sieci mówimy o wnioskowaniu predyktywnym, czyli co może nastąpić w wyniku aktualnej sytuacji.
Jeżeli wiedza dotyczy liści sieci, wówczas wnioskowanie nazywane jest diagnostycznym —
co spowodowało aktualny stan. Połączenie obu tych sytuacji nazywane jest wnioskowaniem
mieszanym lub hybrydowym.
2.2
Uczenie sieci bayesowskiej
Zasadniczym problemem podczas uczenia (i wnioskowania) jest obliczenie wielu łańcuchów
prawdopodobienstw warunkowych by z wiedzy dojść do interesującego nas węzła, którego
prawdopodobieństwo próbujemy oszacować. Mając daną wiedzę D, interesujący nas węzeł
X i pośrednie hipotezy H1 , H2 ... mamy
X
P(X|Hi , D)P(Hi |D)
P(X|D) =
i
Jako, że hipotez pośrednich może być wiele wynik można przybliżać poprzez:
P(X|D) ≃ P(X|HMAP )P(HMAP |D)
7
gdzie HMAP jest hipotezą, która maksymalizuje ten iloczyn (maximum aposteriori). Podstawiając dodatkowo
P(D|Hi )P(Hi )
P(Hi |D) =
P(D)
zagadnienie redukuje się do maksymalizowania licznika. Przy dodatkowym założeniu, żę
hipotezy Hi są jednakowo prawdopodobne, pozostaje już tylko znaleźć Hi , które maksymalizuje P(D|Hi ), oznaczane czasem jako HML (maximum likehood). Zauważmy, że poczynione
tu uproszczenia z jednej strony upraszczają problem i czynią go mniej podatnym na szum,
ale z drugiej mogą ignorować część danych uczących i skutkować gorszymi rezultatami.
Uczenie sieci bayesowskiej można rozpatrywać w kilku przypadkach:
• Znana jest struktura sieci, brak jednostek ukrytych. W tym przypadku uczenie ogranicza się do znalezenia tabel rozkładów warunkowych, zazwyczaj za pomocą metod
statystycznych. Czasami działające już sieci, podczas pracy zbierają informacje wejściowe by uaktualniać wartości w tabelach.
• Nieznana struktura sieci, brak jednostek ukrytych. Poza tabelami, należy znaleźć architekturę sieci, tj połączenia między węzłami. Mogą być wykorzystywane algorytmy
przeszukiwania do znalezienia optymalnego grafu i przybliżanie wartości prawdopodobieństw poprzez hipotezy HMAP i HML .
• Znana struktura sieci, obecne jednostki ukryte. Sytuacja podobna do uczenia sieci
neuronowych z warstwami ukrytymi.
• Nieznana struktura sieci, jednostki ukryte. Problem najogólniejszy i najtrudniejszy.
Na chwilę obecną nie są znane efektywne algorytmy dla tego przypadku.
2.3
Uczenie sieci ze znaną architekturą
Jeżeli sieć nie ma ogromnej ilości węzłów, strukturę można dość łatwo przyporządkować
zgodnie ze zdrowym rozsądkiem. Każdy węzeł (widoczny) w sieci reprezentuje pewne zdarzenie i człowiek jest w stanie jasno sprecyzować związki przyczynowo-skutkowe między
nimi.
Jednostki ukryte mają istotny wpływ na rozkłady w tabelach prawdopodobieństw, ale już
określenie praktycznego znaczenia jednostki ukrytej może być problemem. Rozpatrywane
są z kilku powodów Po pierwsze sieci z jednostkami ukrytymi mogą być znacznie mniejsze
pod kątem ilości połączeń między węzłami (rys. 7). Ma to zasadnicze znaczenie gdyż, ilość
danych podczas uczenia zależy wykładniczo od stopnia wejściowego jednostek. Węzeł mający N wejść binarnych posiada tabelę prawdopodobieństw z 2N rozkładami warunkowymi.
Ponadto nie jest prawdą że dla danej architektury sieci i zestawy danych da się znależć
tablice, które wiernie odtwarzają te dane. Dodanie jednostek ukrytych może rozwiązać ten
problem.
Rozważając problem uczenia w terminach hipotez, chcemy znaleźć Hi , które maksymalizuje P(D|Hi ). Metoda jest podobna do algorytmu spadku gradientowego, używanego w
uczeniu sieci neuronowych. Ponieważ maksymalizujemy wartość P(D|Hi ) ta modyfikacja
będzie raczej „wspinaczką” gradientową. Zakładając, że wagi wi odpowiadają wartościom
prawdopodobieństwa w tabnlicach pozostaje znaleźć pochodną szukanego prawdopodobieństwa po danej wadze.
Niech D = {D1 ...Dm } będzie zestawem danych. Z powodu dużej ilości mnożeń rozsądnym będzie liczyć pochodną po logarytmie iloczynu (przejdzie na sumę logarytmów).
Q
∂ ln j P(Dj ) X ∂ ln P(Dj ) X 1 ∂P(Dj )
∂ ln P(D)
=
=
=
∂wi
∂wi
∂wi
P(Dj ) ∂wi
j
j
8
Rysunek 7: Sieć bayesowska ze wszystkimi jednostkami widzialnymi (po lewej), równoważna
sieć z dodatkową jednostką ukrytą (po prawej).
∂P(Dj )/∂wi
=
P(Dj )
∂
∂wi (
P
x,u P(Dj |x, u)P(x, u))
P(Dj )
Jako, że waga wi odpowiada za dokładnie jeden wpis w tabeli prawdopodobieństw warunkowych
wi = P(X = xi |U = ui ) = P(xi |ui )
mamy w tej sumie tylko jeden niezerowy składniek
P
∂
P(Dj |xi , ui )P(ui )
P(xi , ui |Dj )
P(xi , ui |Dj )
x,u P(Dj |x, u)P(x|u)P(u))
∂wi (
=
=
=
P(Dj )
P(Dj )
P(xi |ui )
wi
W większości przypadków tę wartość można albo uzyskać bezpośrednio albo kosztem
niewielkiej ilości operacji.
2.4
Porównanie sieci neuronowych i bayesowskich
Sieci neuronoew i bayesowski, w kontekście rozważań o sztucznej inteligencji, są zazwyczaj
wymieniane obok siebie. Jedne i drugie pracują na danych posiadających pewne znaczenie
(atrybutach). Wejścia mogą być jedno lub wielowymiarowe, dyskretne i ciągłe, choć sieci
bayesowskie dla danych ciągłych są mniej rozwijane. Jednakże w sieciach bayesowskich prawie wszystkie węzły mają pewne semantyczne znaczenie, w sieciach neuronowych znaczenie
(semantyczne czyli interpretację w świecie) mają tylko wejścia i jednostki wyjściowe. Sieć
neuronowa ma ustaloną ilość wyjść i wejść. Wejścim do sieci bayesowskij może być dowolny
(niepełny) podzbiór wierzchołków. Zeleżności między jednostkami w sieciach bayesowskich
są proste do opisania i zrozumienia, w sieciach neuronowych — niemal niemożliwe.
Raz nauczona sieć neuronowa może działać stale i szybko, w liniowym czasie. Sieć
bayesowska również nie musi wymagać dodatkowego uczenia, ale wnioskowanie w ogólnych
przypadkach jest problemem NP-trudnym, zazwyczaj jednak da się je efektywnie wykonać.
Patrząc z drugiej strony sień neuronowa może mieć wykładniczo wiele węzłów ukrytych.
Algorytmy konstrukcji architektury sieci są słabo rozwijane w obu przypadkach.
Warości w sieciach bayesowskich mają dwa „poziomy” — same wartości zmiennych losowych i prawdopodobieństwa z jakimi są przyjmowane. Sieci neuronowe potrzebują jawnego
rozróżnienia między nimi.
Literatura
[1] Stuart J. Russell, Peter Norvig, Artificial Intelligence, A modern Approach, Prentice
Hall, Englewood Cliffs, New Jersey 07632
9