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