Laboratorium 02
Transkrypt
Laboratorium 02
Wprowadzenie do Sieci Neuronowych — lista zadań 2 — Perceptron prosty cd Maja Czoków, Jarosław Piersa 2010-10-08 1 Powtórzenie 1.1 Algorytm uczenia perceptronu Dane: Perceptron o n wejsciach, k przykładów uczących E 1 ...E k wraz z poprawnymi odpowiedziami T 1 ...T k . Zakładamy, że funkcja aktywująca ma postać znakową. W tej sytuacji dodatkowym parametram uczącym jest wartość progu p. Wynik: Wartości wag wi oraz progu p które dają optymalną klasyfikację. 1. Przypisujemy wagom i progowi małe losowe wartosci wokół 0, przypisujemy takiemu układowi wag zerowy czas życia, startowy zestaw zapamiętujemy jako „rekordzistę”, 2. Przebiegamy przykłady losując z listy 3. Dla wybranego przykładu E j sprawdzamy, czy E j jest dobrze klasyfikowany, • Jesli tak, zwiekszamy mu czas życia o jeden. Jezeli jest to wynik lepszy niż u dotychczasowego rekordzisty, zapominamy go (dotychczasowego rekordzistę) i zapisujemy bieżący układ wag jako nowego rekordzistę. Wracamy do 2. • Jesli nie, to wi := wi + T j · Eij 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 (tj. rekordzistę). 1.2 Uzasadznianie wnioskowania Dane: Nauczony perceptron prosty z funkcją progową, próg p, wejście u = (u1 , ..., un ) Wynik: Uzasadnienie klasyfikacji zwróconej na przykładzie u tj. najmniej liczna lista cech, które charakteryzują u, mają największy wpływ na klasyfikację. Uwaga: Algorytm jest mutacyjny, tj. modyfikuje próg neuronu. Sugerowane jest operowanie na kopii parametów. 1. Przypisz uzasadnienie := ““ 2. Oblicz odpowiedź perceptronu c na przykadzie u. 3. Znajdź czynnik kluczowy • tj. ui takie, że ui wi c > 0 tj. cecha wspiera wynikową odpowiedź, • |wi | ma największą wartość spośród wszystkich ui , które wspierają odpowiedź c, • ui jeszcze nie był użyty jako fragment uzasadnienia w poprzednich krokach. P 4. Sprawdź czy |wi | > i6=j |wj | − p, gdzie p jest kopią progu funkcji aktywującej. 1 • jeżeli tak, to dodaj ui do uzasadnienia i zwróć gotowy zestaw cech: uzasadnienie+ = “ bo ui = (..).“ • jeżeli nie, dodak ui do uzasadnienia: uzasadnienie+ = “ bo ui = (..) oraz “ p = p − ui wi Po czym oznacz jednostkę ui jako wykorzystaną i wróć do 3. P 5. UWAGA: Jeżeli i wi ui = p to uzasadnienie nie będzie możliwe. 2 Zadania 2.1 Proste funkcje logiczne Napisz program, który uczy pojedynczy perceptron o dwóch wejściach z funkcją progową następujące problemy. Algorytm uczenia dowolny (nawet SPLA, ale proszę nie pisać zaawansowanej obsługi sygnałów, tak by program dało się ubić). Program powinien wypisać wynikowe wagi, próg oraz ilość poprawnie klasyfikowanych przykładów. Format danych: x1 , x2 — wejścia, E — oczekiwana odpowiedź: • problem AND (0, 0, 0), (0, 1, 0), (1, 0, 0), (1, 1, 1) • problem OR (0, 0, 0), (0, 1, 1), (1, 0, 1), (1, 1, 1) • problem XOR (0, 0, 0), (0, 1, 1), (1, 0, 1), (1, 1, 0) UWAGA! Zadanie jest przeznaczone do wykonania w trakcie zajęć i jest na tyle proste, że niepunktowane. 2.2 Zadanie Programistyczne 3 — Autoasocjator graficzny Zadanie polega na zastosowaniu perceptronów i algorytmów uczenia do konstrukcji autoasocjatora graficznego tj. układu, który jest w stanie nauczyć się obrazów oraz usunąć szumy jeżeli takie pojawią się na wejściu. W efekcie dając na wejściu obraz, który nie jest żadnym z wzorców uczących, program powinien wygenerować ten, który zna i który jest nabardziej podobny do wejścia. Najciekawsze efekty można uzyskać dając wejścia niepodobne do niczego, na czym sieć była uczona. Jak w przypadku rozpoznawania cyfr program powinien operować na pikselach. Ponieważ docelowo program ma modyfikować niektóre z pikseli należy zastosować wiele preceptronów (po jednym dla każdego piksela). Każdy z nich uczy się wynikowej wartości swojego piksela (zapalony bądź nie) w zależności od konfiguracji reszty obrazu. Ciekawe rozszerzenia i alternatywy: • Autoasocjator symboliczny / wektorowy: zamiast na pikselach operuje na fragmentach obrazu, np kresce poziomej, pionowej, skośnej, półkolu, kropce itp. Na przykład litera T jest połączeniem kreski pionowej wycentrowanej oraz kreski poziomej na górze obrazu (i wszystko inne wyłączone), Litera L — kreska pionowa z lewej i pozioma na dole, O — półkola z lewej i prawej oraz z góry i dołu, D — półkole z prawej i kreska pionowa wycentrowana, X — dwie kreski skośne etc. 2.3 Zadanie Programistyczne 4 — Automatyczny oceniacz programów Napisz program, który mając listę cech charakteryzujących oddany program zaliczeniowy odkonuje binarnej oceny (zaliczony lub nie) oraz wyświetla uzasadnienie (tj. podzbiór cech, które mają największy wpływ na ocenę). Cechy powinny być predefiniowane, ale użytkownim powinien mieć możliwość wskazania które cechy są obecne. Można przyjąć wejścia perceptronu: +1 jako cecha obecna i −1 cecha nieobecna (oraz ewentualnie 0 jako brak danych). Przykładowe cechy: • Czy program w ogóle działa? 2 • Czy program daje wyniki wyglądające na poprawne? • Czy program ma interfejs graficzny? • Czy program został oddany w trakcie zajęć? • Czy program sam siebie klasyfikuje jako zaliczony? • Czy program zawiera wyczerpujące komentarze w kodzie? • Czy grafy / sieci / ilości wejść są ustalone na sztywno i trudne do zmiany? (zauważmy, że jest to checha charakterystyczna dla źle napisanych programów, waga odpowiadająca temu wejścu powinna być ujemna) • Czy program wyświetla tylko klasyfikację pomijając uzasadnienie? (patrz uwaga wyżej) • Czy program został napisany w „normalnym” języku programowania? (co to jest „normalny” język pozostawiamy gesti sprawdzającego lub... innego klasyfikatora symbolicznego) • Czy program sam jest w stanie wygenerować listę programów uczących i nauczyć się na niej poprawnej klasyfikacji? • Czy autor programu ma więcej pomysłów niż autor zadania i dodał coś od siebie? UWAGA 1: Zasadniczym punktem ocenianym w tym zadaniu jest nie sama klasyfikacja, ale jej uzasadnienie. UWAGA 2: Lista powyższa została wymyślona na potrzeby zadania i po kilku kawach, ale zdradza jakie pytania mogą paść podczas sprawdzania programów. 3