Wprowadzenie do Sieci Neuronowych Laboratorium 02 Perceptron prosty cd

Podobne dokumenty
Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa.

Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa.

Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa.

Wstęp do sieci neuronowych laboratorium 01 Organizacja zajęć. Perceptron prosty

Wprowadzenie do Sieci Neuronowych lista zadań 1

Wprowadzenie do Sieci Neuronowych Laboratorium 04 Algorytmy konstrukcyjne dla sieci skierowanych

Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa.

Wstęp do sieci neuronowych, wykład 04. Skierowane sieci neuronowe. Algorytmy konstrukcyjne dla sieci skierowanych

Wstęp do sieci neuronowych, wykład 07 Uczenie nienadzorowane cd.

Wstęp do sieci neuronowych, wykład 03 Warstwy RBF, jednostka Adaline.

Wstęp do sieci neuronowych, wykład 01 Neuron biologiczny. Model perceptronu prostego.

Wprowadzenie do Sieci Neuronowych Laboratorium 05 Algorytm wstecznej propagacji błędu

Wprowadzenie do Sieci Neuronowych Laboratorium 01 Organizacja zajęć. Perceptron.

Wstęp do sieci neuronowych, wykład 01 Neuron biologiczny. Model perceptronu prostego.

Wprowadzenie do Sieci Neuronowych Laboratorium 01 Organizacja zajęć. Perceptron.

Wstęp do sieci neuronowych, wykład 07 Uczenie nienadzorowane.

Sztuczna Inteligencja Tematy projektów Sieci Neuronowe

Wstęp do sieci neuronowych, wykład 6 Wsteczna propagacja błędu - cz. 3

Wstęp do sieci neuronowych, wykład 03 Warstwy RBF, jednostka ADALINE.

Oprogramowanie Systemów Obrazowania SIECI NEURONOWE

Wprowadzenie do Sieci Neuronowych Laboratorium 06 Algorytm wstecznej propagacji błędu

Metody Sztucznej Inteligencji II

Wstęp do sieci neuronowych, wykład 10 Sieci rekurencyjne. Autoasocjator Hopfielda

Zastosowania sieci neuronowych

Sieć Hopfielda. Sieci rekurencyjne. Ewa Adamus. ZUT Wydział Informatyki Instytut Sztucznej Inteligencji i Metod Matematycznych.

Wstęp do sieci neuronowych, wykład 07 Uczenie nienadzorowane.

Wstęp do sieci neuronowych, wykład 9 Sieci rekurencyjne. Autoasocjator Hopfielda

Wstęp do sieci neuronowych, wykład 8 Uczenie nienadzorowane.

Wstęp do sieci neuronowych, wykład 12 Wykorzystanie sieci rekurencyjnych w optymalizacji grafowej

Zagadnienia optymalizacji i aproksymacji. Sieci neuronowe.

Wstęp do sieci neuronowych, wykład 03 Warstwy RBF, jednostka Adaline.

IMPLEMENTACJA SIECI NEURONOWYCH MLP Z WALIDACJĄ KRZYŻOWĄ

Lab 9 Podstawy Programowania

synaptycznych wszystko to waży 1.5 kg i zajmuje objętość około 1.5 litra. A zużywa mniej energii niż lampka nocna.

Uczenie się pojedynczego neuronu. Jeśli zastosowana zostanie funkcja bipolarna s y: y=-1 gdy z<0 y=1 gdy z>=0. Wówczas: W 1 x 1 + w 2 x 2 + = 0

Optymalizacja systemów

8. Neuron z ciągłą funkcją aktywacji.

Algorytmy decyzyjne będące alternatywą dla sieci neuronowych

Instrukcja realizacji ćwiczenia

Wstęp do sieci neuronowych, wykład 10 Sieci rekurencyjne. Autoasocjator Hopfielda

Najprostsze modele sieci z rekurencją. sieci Hopfielda; sieci uczone regułą Hebba; sieć Hamminga;

Wstęp do sieci neuronowych, wykład 9 Sieci rekurencyjne. Autoasocjator Hopfielda

Metody systemowe i decyzyjne w informatyce

Podstawy sztucznej inteligencji


Elektroniczne materiały dydaktyczne do przedmiotu Wstęp do Sieci Neuronowych

Programowanie i techniki algorytmiczne

Zastosowania sieci neuronowych

Uczenie sieci neuronowych i bayesowskich

Inteligentne systemy przeciw atakom sieciowym

1. Logika, funkcje logiczne, preceptron.

Metody systemowe i decyzyjne w informatyce

METODY INŻYNIERII WIEDZY

S O M SELF-ORGANIZING MAPS. Przemysław Szczepańczyk Łukasz Myszor

sieci jednowarstwowe w MATLABie LABORKA Piotr Ciskowski

Sieci M. I. Jordana. Sieci rekurencyjne z parametrycznym biasem. Leszek Rybicki. 30 listopada Leszek Rybicki Sieci M. I.

Algorytm grupowania danych typu kwantyzacji wektorów

METODY INŻYNIERII WIEDZY

Elementy inteligencji obliczeniowej

Wstęp do sieci neuronowych, wykład 01 Neuron biologiczny. Model perceptronu prostego.

Optymalizacja ciągła

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Programowanie w języku Python. Grażyna Koba

wiedzy Sieci neuronowe

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

KRYPTOGRAFIA I OCHRONA DANYCH PROJEKT

GRUPA ĆWICZENIOWA (ZAKREŚL ODPOWIEDNIĄ): MG8 MG13 MB13 MD13 BT13

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Zapisywanie algorytmów w języku programowania

Algorytm wstecznej propagacji błędów dla sieci RBF Michał Bereta

Sztuczne sieci neuronowe Ćwiczenia. Piotr Fulmański, Marta Grzanek

lekcja 8a Gry komputerowe MasterMind

Programowanie celowe #1

Sieć przesyłająca żetony CP (counter propagation)

WYKORZYSTANIE SIECI NEURONOWEJ DO BADANIA WPŁYWU WYDOBYCIA NA SEJSMICZNOŚĆ W KOPALNIACH WĘGLA KAMIENNEGO. Stanisław Kowalik (Poland, Gliwice)

Podstawy OpenCL część 2

Wstęp do Programowania Lista 1

Warsztaty dla nauczycieli

Złożoność obliczeniowa zadania, zestaw 2

Systemy uczące się Lab 4

I. Podstawy języka C powtórka

Obliczenia iteracyjne

Temat: ANFIS + TS w zadaniach. Instrukcja do ćwiczeń przedmiotu INŻYNIERIA WIEDZY I SYSTEMY EKSPERTOWE

Temat 20. Techniki algorytmiczne

ANALIZA I INDEKSOWANIE MULTIMEDIÓW (AIM)

ELEMENTY SZTUCZNEJ INTELIGENCJI. Sztuczne sieci neuronowe

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Zadanie 1. Suma silni (11 pkt)

Metody numeryczne Laboratorium 2

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

Projekt Sieci neuronowe

Metody eksploracji danych Laboratorium 2. Weka + Python + regresja

Testowanie modeli predykcyjnych

Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa

WYKŁAD 3 WYPEŁNIANIE OBSZARÓW. Plan wykładu: 1. Wypełnianie wieloboku

Lekcja 3: Pierwsze kroki z Pythonem. Pętle

Transkrypt:

Projekt pn. Wzmocnienie potencjału dydaktycznego UMK w Toruniu w dziedzinach matematyczno-przyrodniczych realizowany w ramach Poddziałania 4.1.1 Programu Operacyjnego Kapitał Ludzki Wprowadzenie do Sieci Neuronowych Laboratorium 02 Perceptron prosty cd Maja Czoków, Jarosław Piersa 2012-10-10 1 Powtórzenie 1.1 Algorytm uczenia perceptronu Dane: Perceptron o n wejściach, 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 parametrem 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 wartości 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, Jeśli tak, zwiększamy mu czas życia o jeden. Jeżeli 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. Jeśli nie, to wi := wi + η ERR Eij θ := θ ERR 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 Uzasadnianie 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 i mają największy wpływ na klasyfikację. Uwaga: Algorytm jest mutacyjny, tj. modyfikuje próg neuronu. Sugerowane jest operowanie na kopii parametrów. 1. Obliczamy odpowiedź perceptronu o na przykładzie u. 2. Przypisujemy p := θ (kopia progu, p := x0 w0 w wypadku biasu). 3. Przypisujemy uzasadnienie = (pusty napis). 4. Oznaczamy wszystkie cechy jako niewykorzystane. 5. Znajdujemy czynnik kluczowy tj. ui takie, że ui wi o > 0 tj. cecha wspiera wynikową odpowiedź, wi ma największą wartość spośród wszystkich ui, które wspierają odpowiedź o, Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Wyrażam zgodę na wydruk dokumentu do celów dydaktycznych 1

u i jeszcze nie był użyty jako fragment uzasadnienia w poprzednich krokach (niewykorzystana). 6. Sprawdź czy w i > w l + p, niewykorzystany l i i u l jeżeli tak, to dodaj u i do uzasadnienia i zwróć gotowy zestaw cech: uzasadnienie+ = bo u i = (..). jeżeli nie, to dodaj u i do uzasadnienia: uzasadnienie+ = bo u i = (..) oraz p = p u i w i Po czym oznaczamy jednostkę u i jako wykorzystaną i wracamy do 5. 7. UWAGA: Jeżeli i w iu i = p to uzasadnienie nie będzie możliwe. Rysunek 1: Uzasadnianie wnioskowania wybór najcięższych argumentów. 1.3 Maszyny liniowe (Multiclass linear classifier) Maszyna liniowa składa się z n wejść, l perceptronów,każdy przypisany do swojej kategorii. Perceptrony mają swoje kolejne indeksy i te same wejścia. Oznacza to,to że ML ma łącznie nl wag (z progami: (n+1)l wag), po n dla każdego z l perceptronów (z progami: po n + 1). Będziemy je oznaczać poprzez w ij, gdzie i = 0, 1..n jest indeksem wejścia, natomiast j = 1..l jest indeksem perceptronu. Uznajemy ponadto, że we wszystkich perceptronach funkcja aktywująca jest identycznością To jest każdy z perceptronów zwraca wyłącznie sumę ważoną out j = f(x) = x n w ij x i (1) Odpowiedzą całej maszyny liniowej jest indeks perceptronu, który zwrócił największą wartość out j. i=0 O = {j : k=1..l out k out j } (2) Maszyna linowa zwraca kategorię danych wejściowych x 1..x n, ale kategoryzacja nie musi być binarna. 2

out Rysunek 2: Schemat maszyny liniowej 1.4 Algorytm Uczenia Maszyny Liniowej Dane: zestaw przykładów uczących E j, j = 1..k oraz poprawnych odpowiedzi T j, j = 1..k. Wynik: wagi w ij, dla których sieć daje poprawne klasyfikacje. 1. Przypisujemy wagom małe losowe wartości wokół 0, 2. Przebiegamy przykłady losując z listy, 3. Dla wybranego przykładu E j sprawdzamy, czy E j jest dobrze klasyfikowany, Jeśli tak, wracamy do 2. Jeśli nie (tzn. jest kategoria p a miała być q), to korygujemy wagi neurony p-tego i q-tego 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). 2 Zadania 2.1 Zadanie 1. Klasyfikacja punktów na R 2 Napisz (zmodyfikuj z poprzednich zajęć) w Octavie / Matlabie funkcję implementującą działanie perceptronu. Funkcja za argument powinna przyjmować wektor dwóch danych wejściowych oraz wektor wag w tym w 0 (oraz ewentualnie próg, jeżeli nie jest on zawarty w wagach). x = [1, 2]; w = [1, 2, 3]; a = perc (x, w); Wygeneruj dwie chmury punktów na R 2 z różnymi kategoriami N = 20; x1 = randn (1, N )+2; x2 = randn (1, N) -2; y1 = randn (1, N )+3; y2 = randn (1, N) -1; C1 = ones (1, N); C2 = - ones (1, N); 3

Wyświetl wygenerowane dane hold off ; plot (x1, y1, r+ ); hold on; plot (x2, y2, bo ); EX = [x1, x2 ]; EY = [y1, y2 ]; C = [C1, C2 ]; Zaimplementuj SPLA (plik spla.m). Uwaga! Jeżeli nie wiadomo czy dane są separowalne, to należy korzystać z wersji pocket algorytmu. function wagi = spla ( EX, EY, C, T = 10000) % wagi losowe w = randn (1,3); for i =1: T % losujemy przyklad j = floor ( rand ()* length (C ))+1; % obliczamy aktywacje out = perc ([ EX(j), EY(j)], w); if out == C(j) % nastepny przyklad else % korekcja wag err = C(j) - out ; w += err.* [1, EX(j), EY(j )]; end % if end % for wagi = w; end % function Oblicz klasyfikację nauczonego perceptronu na danych EX, EY Out = []; for i =1: length (EX) E = [EX(i), EY(i )]; Out = [Out, perc (E, wagi ) ]; end Wydrukuj nauczoną klasyfikację % wybieramy te, ktore maja odpowiedz dodatnia IPos = find (Out >0); % te, ktore maja odpowiedz ujemna INeg = find (Out <=0); hold off ; plot (EX( IPos ), EY( IPos ), r+ ); hold on; plot (EX( INeg ), EY( INeg ), bo ); Na podstawie nauczonych wag oblicz postać i wyświetl prostą separującą. Przydatne funkcjetext(), sprintf(), legend(). Zmodyfikuj dane uczące, aby obie klasy nieco na siebie nachodziły (zjawisko nazywane jest overlapping). Uruchom algorytm SPLA na nich. Wyciągnij wnioski. Wygeneruj cztery chmury punktów uczących. uczenie na takich danych, np. Połącz je w klasy wg funkcji logicznych AND, OR, XOR. Wykonaj problem AND (x 1 = 1, x 2 = 1, E = 1), ( 1, 1, 1), (1, 1, 1), (1, 1, 1) 4

problem OR ( 1, 1, 1), ( 1, 1, 1), (1, 1, 1), (1, 1, 1) problem XOR ( 1, 1, 1), ( 1, 1, 1), (1, 1, 1), (1, 1, 1) Wyciągnij wnioski. Dodaj modyfikację kieszonki i zapadki, naucz perceptron zmodyfikowanym algorytmem na różnych zestawach. 2.2 Zadanie 3*. SPLA cd. (* dla chętnych) Napisz program, który wyświetla zmieniającą się klasyfikację na fragmencie płaszczyzny podczas uczenia perceptronu. Pomocne funkcje: axis(), sleep(), print(). 2.3 Zadanie 4. Maszyna liniowa Zaimplementuj maszynę liniową (linear multi-classifier) Wygeneruj chmurę przykładów uczących podzielonych na trzy kategorie (wsk. zmodyfikuj punkt 2.1) Wczytaj przygotowane dane z pliku (kolejno: x, y, odpowiedź) A = load (./ zad2-7-- multiclass. txt ); EX = A(:, 1); EY = A(:, 2); C = A(:, 3) +1; % zmieniamy z 0,1,2 na 1,2,3 plot (EX, EY, b+ ) Zaimplementuj maszynę liniową (wsk. wagi będą tablicą o wymiarze ilosc kategorii ilosc wejsc). function ret = ml( x, wagi ) s = wagi * x ; m = max (s); ret = find (s >= m); end zmodyfikuj kod tak aby uwzględniał również bias w 0, przetestuj maszynę: wagi = randn (3,2); j = 1; x = [EX(j), EY(j )]; ml(x, wagi ) zaimplementuj algorytm uczenia: function wagi = uczenie_ ml ( EX, EY, C) T = 10000; % wagi losowe wagi = randn (3,2); for i =1: T % wylosuj przyklad j = floor ( rand ()* length (EX )+1); x = [EX(j), EY(j )]; o = ml(x, wagi ); if (o==c(j)) % ok, nic nie robimy else % wzmacniamy te, ktore byc powinny wagi (C(j),:) += x; % oslabiamy te, ktore sa wagi (o,:) -= x; 5

end % if end % for end % function Dopisz do algorytmu kieszonkę i / lub zapadkę. Oblicz klasy na naucznych wagach: Out = []; for i =1: length (EX) x = [EX(i), EY(i )]; Out = [ Out ; ml(x, wagi )]; end Wyświetl nauczoną kategoryzację I1 = find ( Out == 1); I2 = find ( Out == 2); I3 = find ( Out == 3); hold off ; plot (EX(I1), EY(I1), 1o ); hold on; plot (EX(I2), EY(I2), 2+ ); plot (EX(I3), EY(I3), 3^ ); Dostosuj algorytm aby działał dla wersji z biasem, naucz ponownie taki system i porównaj wyniki. 3 Zadania programistyczne (do wyboru) 3.1 Zadanie 1. 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 jest najbardziej podobny do wejścia. Działanie: na wejściu dany jest zaszumiony obraz (wcześniej nauczony) układ ma tyle perceptronów ile pikseli na obrazie każdy perceptron czyta wszystkie piksele z obrazu wejściowego i zwraca wartość kontrolowanego piksela wyjściowego (zapalony lub nie) wynikowy obraz powstaje z odpowiedzi wszystkich perceptronów, poprawnie naucozna sieć powinna odzyskać oryginalny obraz usuwając szum Uczenie: dla każdego perceptronu / piksela: wejściem są wszystkie wzorcowe obrazy, poprawną odpowiedzą wartość czy piksel przy danym obrazie powinien być zapalony czy zgaszony dodatkowo wskazane jest uczyć na zaszumionych kopiach wzorcowych obrazów 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. Autoasocjator działający na trzech kanałach (RGB) 6

Rysunek 3: Konstrukcja autoasocjatora graficznego. 3.2 Zadanie 2. Automatyczny oceniacz programów Czasami obiektom nie można przypisać cech numerycznych, a jedynie symboliczne, które są kodowane na wartości numeryczne (np. +1 cecha obecna, 1 cecha nieobecna). Rozważmy opis programu zaliczeniowego z sieci neuronowych. Jego lista cech może obejmować np: 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 cecha charakterystyczna dla źle napisanych programów, waga odpowiadająca temu wejściu 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 gestii 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? Napisz program, który na wejściu otrzymuje listę cech programu i dokonuje binarnej oceny (zaliczony lub niezaliczony) oraz wyświetla uzasadnienie, tzn. które z cech mają największy wpływ na końcową ocenę. Głównym punktem ocenianym w tym zadaniu jest nie klasyfikacja, ale jej uzasadnienie. Lista powyższa została wymyślona na potrzeby zadania i po kilku kawach, ale zdradza jakie pytania mogą paść podczas sprawdzania programów. (dla ambitnych) Rozważ jak można dostosować program aby dokonywał i uzasadniał kategoryzację na trzy oceny: niezaliczony, zaliczony, wybitnie zaliczony. Zamiast oceniacza programów można napisać program oceniający: książki, samochody, inne programy oceniające, wykładowców, komputery, jakość kawy z ekspresu... Wszelkie przejawy kreatywności mile widziane. 7