Wprowadzenie do Sieci Neuronowych lista zadań 1 Maja Czoków, Jarosław Piersa 2010-10-04 1 Zasadyzaliczania 1.1 Oceny Zaliczenie laboratoriów na podstawie implementowania omawianych algorytmów. Każde zadanie jest punktowane za 1 punkt. Dopuszczane są oceny wymierne(czyt. ułamkowe za brzydko napisane zadania) oraz powyżej jednego punktu za wybitnie napisane zadania. dst 3p. db 4p. bdb 5p. bdb+ 6plubwięcej. Dodatkowonaocenębdb+wymaganejestoddaniezadańzpięciu 1 działów: perceptrony proste i maszyny liniow, algorytmy konstrukcyjne dla sieci skierowanych, wsteczna propagacja błędu uczenie bez nauczyciela, samoorganizacja, PCA, sieci Hopfielda, maszyny Boltzmanna, symulowane wyżarzanie. Oraznależyoddać 2 : przynajmniej jeden program do końca października, przynajmniej dwa programy do końca listopada, przynajmniej trzy programy do końca stycznia. Zwolnienie z egzaminu za wybitną pracę na zajęciach jest możliwe do dnia 2011-02-16. 1.2 Wskazówki Na co należy zwrócić uwagę pisząc progamy: Zadania będą sprawdzane z autorem siedzącym obok, zaoczne sprawdzanie zadań dopuszczane będzie tylko w wyjątkowych sytuacjach. Zadania powinny być napisane tak by umożliwić prostą i szybką ocenę poprawności działania po efektach(ocena poprawności poprzez wypisanie-nastu stron liczb na stdout nie jest ani prosta ani szybka!) Program w zależności od autora będzie uruchamiany na laptopie(może być to laptop autora) bądź komputerze w sali laboratoryjnej. Prosimy upewnić się, że mają Państwo pod ręką wszystkie wymagane środowiska lub/i biblioteki(dotnet framework, jdk, interpreter pythona,...). Podczas sprawdzania należy mieć pod ręką kod źródłowy programu(oraz edytor podświetlający składnię). 1 Zmianawporównaniudopoprzedniegoroku. 2 Zmianawporównaniudopoprzedniegoroku. 1
Optymalnie zadania powinny być oddawane w trakcie zajęć. Fragmentem zaliczenia może być dodatkowe pytanie o algorytm, sposób implementacji, zagadnienia teoretyczne powiązane z zadaniem. Podobnie może być to dopisanie dodatkowej funkcjonalniści w trakcie sprawdzania. Im później oddawane zadanie tym większe szanse na dodatkowe pytania i wyższy poziom trudności. Progamy korzystające z gotowych bibliotek do sieci neuronowych nie będą akceptowane. Teoretycznie dopuszczane są programy z tekstowym interfejsem użytkownika. Teoretycznie. Jeżeli jednak autor nie jest mistrzem ascii-artu, to gorąco rekomendujemy zrobić interfejs graficzny. 21 września 2011 USOS sam wstawi oceny niedostateczne studentom, którzy nie uzyskali zaliczenia. 2 Powtórzenie 2.1 ModelPreceptronu Perceptronem nazywamy następujący model składający się z: określonej liczby wejść n, wagistowarzyszonejzkażdymwejściem w i, i = 1..n funkcji aktywującej f Dynamikaperceptronu.Mając nwejść x 1...x n liczbowychperceptronzwracawartość out = f( n x i w i ) (1) Zakładającprogowąpostaćfunkcji,perceptrondziałajakoklasyfikator,dladanych x 1,.., x n zwracacałkowitą liczbę będącą klasą, do której dane należą. 2.2 Postacie funkcji aktywującej Identyczność f(s) = s takajednostkaliczypoprostusumęważonąwejść, Funkcja progowa(bipolarna) f(s) = i=1 { 0 s < p 1 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 z pewnym przybliżeniem charakteryzuje komórki neuronowe. funkcja polarna. Jest to funkcja zalecana do używania w implementacji. { 1 s < p f(s) = +1 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)) 2
-1.5 1.5 1 0.5 0-0.5-1 -4-2 0 2 4 Rysunek1:Funkcjasigmoidalnazparametrami β = 1, β = 3, β = 10. out 2.3 Uczeniepreceptronu Rysunek 2: Schemat działania perceptronu Danyniechbędziezestaw kprzykładów E = { E (1)...E (k)},gdzie E (i) = (e (i) 1,..., e(i) N ) RN iodpowiadająceimpoprawnewyniki T (1)...T (k).danyteżmamyperceptrononwejściachijednymwyjściu. Rozważmyprzykład E j iodpowiadającąmupoprawnąodpowiedź T j,niechsiećzbieżącymzestawem wag zwróci wartość O. Rozważmy błąd: ERR = T j O Jeżelijestdodatnitomusimyzwiększyć O,jeżeliwejście e j i > 0tozwiększeniewagi w izwiększy O,jeżeli e j i < 0tozmniejszenie w izwiększy O. Jeżeli błąd ERR jest ujemny to musimy zmniejszyć O. Podobnie rozumując musimy zmniejszyć wagi w i jeśliwejście e j i > 0izwiększyć w iwprzeciwnymwypadkutj. e j i < 0. Podsumowując te rozważania otrzymujemy algorytm: Wylosujwagi w i małe,blisko 0. Wybierzprzykład E j iodpowiadającąmupoprawnąodpowiedź T j, Oblicz O wynikdziałaniasiecina E j Oblicz ERR = T j O Uaktualnij wszystkie wagi zgodnie ze wzorem η > 0jeststałąuczenia. w i = w i + η ERR e j i Jeżeli sieć klasyfikuje poprawnie wszystkie(większość) przykłady to zakończ, wpw wróć do 2. UWAGA: Powyższego algorytmu nie należy stosować w implementacjach! UWAGA: W 1969 matematycy Minsky oraz Papert udowodnili, że pojedynczy perceptron jest w stanie poprawnie klasyfikować wyłącznie problemy linowo separowalne. Algorytm sformułowany powyżej nie zatrzyma się, jeżeli nie istnieją wagi, dla których przykłady uczące są poprawnie klasyfikowane. A nawet jeżeli(zostanie to wymuszone ograniczeniem ilości iteracji), to nie gwarantuje, że zwrócone wagi będą optymalne. 3
Rysunek 3: Problem liniowo separowalny(po lewej) i nieseparowalny(po prawej) 2.4 Algorytm Uczenia Kieszonkowego/ Pocket Learning Algorithm Dane: Perceptrononwejsciach, kprzykładówuczących E 1...E k wrazzpoprawnymiodpowiedziami T 1...T k.zakładamy,żefunkcjaaktywującamapostaćpolarną.wtejsytuacjidodatkowymparametram uczącym jest wartość progu p. Wynik:Wartościwag w i orazprogu pktóredająoptymalnąklasyfikację. 1. Przypisujemy wagom i progowi małe losowe wartosci wokół 0, przypisujemy takiemu układowi wag zerowy czas życia, 2. Przebiegamy przykłady losując z listy, 3.Dlawybranegoprzykładu E j sprawdzamy,czy E j jestdobrzeklasyfikowany, Jeslitak,zwiekszamymuczasżyciaojeden.Jezelijesttowyniklepszyniżudotychczasowego rekordzisty, zapominamy go(dotychczasowego rekordzistę) i zapisujemy bieżący układ wag jako nowego rekordzistę. Wracamy do 2. Jeslinie,to w i := w i + T j E j i p := p T j Nowo powstałemu układowi wag przypisujemy zerowy czas życia. Wracamy do 2. 4. Algorytm kończymy po przebiegnięciu odpowiedniej liczby iteracji. Zwracamy najbardziej żywotny zestaw wag. 2.5 Algorytm Uczenia z Zapadką/ Ratchet Learning Algorithm Dane i wyjście jak wyżej. 1. jak powyżej, 2. jak powyżej, 3. jak powyżej, Jeslitak,zwiekszamymuczasżyciaojeden.Jezelijesttowyniklepszyniżudotychczasowego rekordzisty i dodatkowo nowy zestaw wag poprawnie klasyfikuje więcej przykładów uczących niż poprzedni, to zapominamy go(dotychczasowego rekordzistę) i zapisujemy bieżący układ wag jako nowego rekordzistę. Wracamy do 2. Jeslinie,tojakpowyżej 4. jak powyżej, 4
2.6 MaszynyLiniowe Maszyna liniowa składa się z n wejść, l perceptronów. Perceptrony mają swoje kolejne indeksy i te samewejścia.oznaczato,żemlmałącznie nlwag(po ndlakażdegozlperceptronów).będziemyje oznaczaćpoprzez w ij,gdzie i = 1..njestindeksemwejścia,natomaist j = 1..ljestindeksemperceptronu. Uznajemy ponadto, że we wszystkich perceptronach funkcja aktywująca jest identycznością f(x) = x To jest każdy z perceptronów zwraca wyłącznie sumę ważoną out j = n w ij x i (2) i=1 Odpowiedzącałejmaszynyliniowejjestindeksperceptronu,któryzwróciłnajwiększąwartość out j. OUT = {j : k=1..l out k out j } (3) Maszynalinowazwracakategoriędanychwejściowych x 1..x n,alekategoryzacjaniemusibyćbinarna. 2.7 Algorytm Uczenia Maszyny Lionowej Dane:zestawprzykładówuczących E j, j = 1..korazpoprawnychodpowiedzi T j, j = 1..k. Wynik:wagi w ij,dlaktórychsiećdajepoprawneklasyfikacje. 1. Przypisujemy wagom małe losowe wartosci wokół 0, 2. Przebiegamy przykłady losując z listy, 3.Dlawybranegoprzykładu E j sprawdzamy,czy E j jestdobrzeklasyfikowany, Jeslitak,wracamydo2. Jeslinie(npjestkategoria pzamiast q),to w ip + = E j i Wracamy do 2. w iq = E j i 4. Algorytm kończymy po przebiegnięciu odpowiedniej liczby iteracji. Dodajemy modyfikację kieszeni i zapadki(tj. zapamiętywanie najbardziej żywotnych zestawów wag). 3 Zadania 3.1 Zadanie1 Napisz program, który wykorzystuje maszynę liniową lub kilka(naście) perceptronów do rozpoznawania cyfr(lub liter uwaga na liczbę mnogą! program powinien rozpoznawać kilka cyfr). Cyfry powinny być wyświetlane jako układy pikseli na matrycy o niewielkich wymiarach(max. 100 pikseli, oczywiście mowa tu o pikselach na cyfrę, wyświetlanie może być z dużym powiększeniem). Program dodatkowo powinien mieć możliwość wyklikania cyfry(lub czegoś cyfropodobnego) i automatycznej klasyfikacji. Pomysły na rozbudowanie programu: Weścia uczące można zaburzać(tj. odwracać piksel z niewielkim prawdopodobieństwem niezależnie dla danego piksela). Można w ten sposób uzyskać częściową odporność na szumy, Rozpoznawanie cyfr w systemie szesnastkowym, Rozpoznawanie liter(wymaga większej matrycy!), Rozpoznawanie kształtów(okrąg, kwadrat, linia, domek itd), Rozpoznawanie symboliczne http://en.akinator.com/ Rozpoznawanie tekstu pisanego(np. całych liczb) za pomocą myszki na matrycy w programie. 5
3.2 Zadanie2 Dany będzie plik(kilka plików) z listą punktów na płaszczyźnie oraz poprawną klasyfikacją punktu. Klasyfikacja jest binarna: 0 lub 1(+1,-1). # komentarze, informacje o pliku, itp #(ewentualnie wymiar przestrzeni i liczba przykładów uczących) x1y1o1 x2y2o2... Należy napisać program, który nauczy perceptron klasyfikacji na zadanej liście przykładów. Dodatkowo program powinien mieć możliwość wczytać parametry innych punktów(z poza listy uczącej) i wyświetlić je na płaszczyźnie wraz z oznaczeniem klasy. Ponadto dla przykładów z listy uczącej powinno być oznaczenie zarówno o oczekiwanej(z listy) jak i faktycznej(tj. zwróconej przez perceptron) klasyfikacji, np oczekiwana klasyfikacja poprzez kształt, faktyczna poprzez kolor. Pomysłynarozbudowanieprogramu:zadaniedlapunktówwwyżej-wymiarowychprzestrzeniach(R 3, R 4,...),klasyfikacja,któraniejestbinarna(3klasy,4klasy...),statystykinadanychwejściowychoraz wynikach uczenia, automatyczny zapis wyników do pliku. 6