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