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