Laboratorium 02
Transkrypt
Laboratorium 02
Wprowadzenie do Sieci Neuronowych — lista zadań 2 Maja Czoków, Jarosław Piersa 2009-10-12 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ć progową. 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, 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. 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 lista cech, które charakteryzują u, mają największy wpływ na klasyfikację (wspierający) i która jest minimalna pod kątem ilości cech. 1. Przypisz uzasadnienie := ““ 2. Oblicz odpowiedź perceptronu c na przykadzie u. 3. Znajdź czynnik kluczowy • tj. ui takie, że ui wi c > 0, cecha ma wspierać wynikową odpowiedź, • oraz |wi | ma największą wartość spośród wszystkich ui , które wspierają odpowiedź c P 4. Sprawdź czy |wi | > i6=j |wj | − p • jeżeli tak, to zwróć odpowiedź uzasadnienie + “ bo ui = (..).“ • jeżeli nie, to przypisz uzasadnienie+ = “ bo ui = (..) oraz “ p = p − ui wi odrzuć jednostkę ui z dalszych rozważań i wróć do 3. P 5. UWAGA: Jeżeli i wi ui = p to uzasadnienie nie będzie możliwe. 1 2 Zadania 2.1 Zadanie 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.2 Zadanie 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 i wprowadzalne dla sprawdzającego (progamy innych rzecz jasna). Można przyjąć wejścia perceptronu: +1 jako cecha obecna (tak) i −1 cecha nieobecna (oraz ewentualnie 0 jako brak danych). Przykładowe cechy: • Czy program w ogóle działa? • 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!) • 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: Zasadniczym punktem ocenianym w tym zadaniu jest nie sama klasyfikacja, ale jej uzasadnienie! UWAGA: Wszystkie dotychczasowe zadania dotyczą pierwszego działu. Wymogiem na ocenę bdb+ jest oddanie przynajmniej jednego zadania z każdego z czterech działów! 2