Ćwiczenie WPK Wielowarstwowy perceptron jako klasyfikator

Podobne dokumenty
Wielowarstwowy perceptron jako klasyfikator

Zastosowania sieci neuronowych

ZACHODNIOPOMORSKI UNIWERSYTET TECHNOLOGICZNY W SZCZECINIE

Politechnika Warszawska

Zastosowania sieci neuronowych

Sztuczne siei neuronowe - wprowadzenie

ALGORYTMY SZTUCZNEJ INTELIGENCJI

Podstawy Sztucznej Inteligencji

Metody Sztucznej Inteligencji II

Sztuczna Inteligencja Tematy projektów Sieci Neuronowe

Zrealizować sieć neuronową (learnbpm) uczącą się odwzorowania z = x 2 + y 2 dla x i y zmieniających się od -1 do 1.

Elementy inteligencji obliczeniowej

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

Podstawy sztucznej inteligencji

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

Projekt Sieci neuronowe

Sieci neuronowe w Statistica

Inteligentne systemy przeciw atakom sieciowym

Oprogramowanie Systemów Obrazowania SIECI NEURONOWE

Uczenie sieci typu MLP

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

Inteligentne systemy decyzyjne: Uczenie maszynowe sztuczne sieci neuronowe

MATLAB Neural Network Toolbox uczenie sieci (dogłębnie)


Inteligentne systemy decyzyjne: Uczenie maszynowe sztuczne sieci neuronowe

Temat: Sztuczne Sieci Neuronowe. Instrukcja do ćwiczeń przedmiotu INŻYNIERIA WIEDZY I SYSTEMY EKSPERTOWE

Sieci neuronowe w Statistica. Agnieszka Nowak - Brzezioska

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

PROGNOZOWANIE OSIADAŃ POWIERZCHNI TERENU PRZY UŻYCIU SIECI NEURONOWYCH**

Uczenie sieci neuronowych i bayesowskich

Systemy uczące się Lab 4

Instrukcja realizacji ćwiczenia

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

Wstęp do teorii sztucznej inteligencji Wykład III. Modele sieci neuronowych.

Identyfikacja obiektów dynamicznych za pomocą sieci neuronowych

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

ID1SII4. Informatyka I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny) stacjonarne (stacjonarne / niestacjonarne)

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

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI INSTYTUT AUTOMATYKI I INFORMATYKI KIERUNEK AUTOMATYKA I ROBOTYKA STUDIA STACJONARNE I STOPNIA

P R Z E T W A R Z A N I E S Y G N A Ł Ó W B I O M E T R Y C Z N Y C H

ĆWICZENIE 5: Sztuczne sieci neuronowe

SIEĆ NEURONOWA DO OCENY KOŃCOWEJ PRZEDSIĘWZIĘCIA (PROJEKTU)

Klasyfikacja LDA + walidacja

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

Testowanie modeli predykcyjnych

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

sieci jednowarstwowe w MATLABie LABORKA Piotr Ciskowski

SIEĆ NEURONOWA DO OCENY KOŃCOWEJ PRZEDSIĘWZIĘCIA (PROJEKTU)

Zastosowania sieci neuronowych - automatyka identyfikacja sterowanie

Zagadnienia optymalizacji i aproksymacji. Sieci neuronowe.

Podstawy Sztucznej Inteligencji (PSZT)

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

ALGORYTM RANDOM FOREST

1. Logika, funkcje logiczne, preceptron.

Wprowadzenie do Sieci Neuronowych Laboratorium 02 Perceptron prosty cd

Wprowadzenie do Sieci Neuronowych Laboratorium 04 Algorytmy konstrukcyjne dla sieci skierowanych

PRÓBA ZASTOSOWANIA SIECI NEURONOWYCH DO PROGNOZOWANIA OSIADAŃ POWIERZCHNI TERENU POWSTAŁYCH NA SKUTEK EKSPLOATACJI GÓRNICZEJ**

Przykładowa analiza danych

Algorytm grupowania danych typu kwantyzacji wektorów

Podstawowe funkcje biblioteki narzędziowej Neural Network Toolbox. Version 5 pakietu MATLAB v. 6

Katedra Elektrotechniki Teoretycznej i Informatyki

Algorytmy klasteryzacji jako metoda dyskretyzacji w algorytmach eksploracji danych. Łukasz Przybyłek, Jakub Niwa Studenckie Koło Naukowe BRAINS

Sieci neuronowe jako sposób na optymalizacje podejmowanych decyzji. Tomasz Karczyoski Wydział W-08 IZ

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

Uczenie maszynowe w zastosowaniu do fizyki cząstek

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

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.

Metody klasyfikacji i rozpoznawania wzorców. Najważniejsze rodzaje klasyfikatorów

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

Filtry. Przemysław Barański. 7 października 2012

Zadanie 2.: Perceptron wielowarstwowy

Algorytmy sztucznej inteligencji

Automatyczna predykcja. Materiały/konsultacje. Co to jest uczenie maszynowe? Przykład 6/10/2013. Google Prediction API, maj 2010

Metody klasyfikacji danych - część 1 p.1/24

1. Historia 2. Podstawy neurobiologii 3. Definicje i inne kłamstwa 4. Sztuczny neuron i zasady działania SSN. Agenda

Ćwiczenie ZINTEGROWANE SYSTEMY CYFROWE. Pakiet edukacyjny DefSim Personal. Analiza prądowa IDDQ

Laboratorium nr 2. Identyfikacja systemu i detekcja uszkodzeń na podstawie modelu

PRZEŁĄCZANIE DIOD I TRANZYSTORÓW

do MATLABa programowanie WYKŁAD Piotr Ciskowski

Celem tych ćwiczeń jest zapoznanie się z klasyfikacją za pomocą sieci neuronowych.

6. Perceptron Rosenblatta

TRANZYSTOR UNIPOLARNY MOS

Prognozowanie kierunku ruchu indeksów giełdowych na podstawie danych historycznych.

Temat: Sieci neuronowe oraz technologia CUDA

Automatyzacja procesu badania neuronowego systemu wnioskuj¹cego opartego na programie Statistica w praktycznym zastosowaniu***

wiedzy Sieci neuronowe

Zastosowanie optymalizacji rojem cząstek (PSO) w procesie uczenia wielowarstwowej sieci neuronowej w problemie lokalizacyjnym

Rozpoznawanie wzorców. Dr inż. Michał Bereta p. 144 / 10, Instytut Informatyki

Przykładowo, jeśli współrzędna x zmienia się od 0 do 8 co 1, a współrzędna y od 12 co 2 do 25, to punkty powinny wyglądać następująco:

Sztuczne sieci neuronowe (SNN)

wiedzy Sieci neuronowe (c.d.)

Metody sztucznej inteligencji Zadanie 1: Perceptron Rosenblatt a w wersji nieliniowej

Algorytm do rozpoznawania człowieka na podstawie dynamiki użycia klawiatury. Paweł Kobojek, prof. dr hab. inż. Khalid Saeed

Uruchom polecenie z menu Wstaw Wykres lub ikonę Kreator wykresów na Standardowym pasku narzędzi.

1 Programowanie w matlabie - skrypty i funkcje

Układy i Systemy Elektromedyczne

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

KRYPTOGRAFIA I OCHRONA DANYCH PROJEKT

LABORATORIUM 7: Problem komiwojażera (TSP) cz. 2

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

Transkrypt:

Część teoretyczna Ćwiczenie WPK Wielowarstwowy perceptron jako klasyfikator Wykład 6: Sztuczne sieci neuronowe klasyfikacja. Zadania pomocnicze 1. Zapoznaj się z programem nnd4db, który pozwala ręcznie ustawiać granicę decyzyjną realizowaną przez neuron oraz z programem nnd4pr, w którym granica decyzyjna ustawiana jest w procesie treningu. Punkty uczące należą do dwóch klas czarnej i białej, możemy je przesuwać. W programie nnd4pr przycisk Learn uruchamia jeden krok treningu prezentację na wejściu współrzędnych jednego punktu i adaptację wag, jeśli punkt ten jest źle zaklasyfikowany przez neuron. Przycisk Train uruchamia pięć kroków treningu. Przycisk Random nadaje wagom losowe wartości. Możemy wybrać opcję Bias umożliwia to przesuwanie granicy decyzyjnej poprzez zmianę wagi b lub No bias wtedy granica decyzyjna kręci się wokół punktu (0, 0) (patrz program nnd2n1). Punkty źle klasyfikowane mają czerwoną otoczkę. Załączam skrypty (Przyk_*.m), w których oprogramowałem przykłady z [Żurada96]. 2. Zapoznaj się z funkcjami newff, train i sim (help lub dokumentacja Matlaba). Zadania do wykonania Dane są zbiory pacjentów: chorych A oraz zdrowych B. Każdy obiekt (człowiek) w tych zbiorach opisany jest dwiema cechami x1 i x2 (np. temperatura ciała, parametry krwi, występowanie lub brak określonych alleli genów itp.). Zaprojektuj klasyfikator neuronowy na bazie perceptronu do rozróżniania klas A i B. Zadanie wykonaj w trzech wariantach: zbiory A i B separowalne liniowo, zbiory A i B separowalne nieliniowo, zbiory A i B częściowo pokrywające się. 1. Generowanie zbiorów danych. 1.1. Tworzymy funkcję generującą dane i zapisujemy pod nazwą gener_zbiorow.m: function [A,B]=gener_zbiorow(nr_gr,wariant,lp,rk) %nr_gr - nr sekcji np. 1.1, 1.2,... %wariant - 1 - zbiory A i B separowalne liniowo, 2 - separowalne %nieliniowo, 3 - częściowo pokrywające się %lp - liczba punktów w zbiorach A i B %rk rok kalendarzowy rand('state',nr_gr*rk); if wariant==1 Ap=[0.1 0.9; 0.5+rand*0.5 0.5-rand*0.5]; [A,B]=gener_AB(Ap,Ap,lp,lp,1,1); elseif wariant==2 Ap=[0.1 0.4 0.9; 0.5-rand*0.5 0.5+rand*0.2 0.5-rand*0.5]; [A,B]=gener_AB(Ap,Ap,lp,lp,2,2); elseif wariant==3 Ap=[0.1 0.4 0.9; 0.5-rand*0.5 0.5+rand*0.3 0.5-rand*0.5]; Bp=[0.1 0.25 0.55 0.7 1; 0.5+rand*0.1 0.4-rand*0.3 0.4+rand*0.2 0.5 0.1]; [A,B]=gener_AB(Ap,Bp,lp,lp,2,4); title(['nr gr = ', num2str(nr_gr)]); function [A,B]=gener_AB(Ap,Bp,Al,Bl,Ast,Bst) hold off; 1

Aw=polyfit(Ap(1,:),Ap(2,:),Ast); Bw=polyfit(Bp(1,:),Bp(2,:),Bst); rand('state',sum(100*clock)); ll=0; i=0; while (ll<al)&&(i<al*100) x=rand; y=rand; ymax=polyval(aw,x); if (ymax>=0)&&(ymax<=1)&&(y<ymax) ll=ll+1; A(1,ll)=x; A(2,ll)=y; ll=0; i=0; while (ll<bl)&&(i<bl*100) x=rand; y=rand; ymin=polyval(bw,x); if (ymin>=0)&&(ymin<=1)&&(y>ymin) ll=ll+1; B(1,ll)=x; B(2,ll)=y; figure(2); plot(a(1,:),a(2,:),'ro'); hold on; plot(b(1,:),b(2,:),'bx'); plot(ap(1,:),ap(2,:),'r.'); plot(bp(1,:),bp(2,:),'b.'); v=0:0.02:1; plot(v,polyval(aw,v),'r--'); plot(v,polyval(bw,v),'b--'); xlim([0 1]); ylim([0 1]); xlabel('x1'); ylabel('x2'); 1.2. Generujemy dane dla zbiorów separowalnych liniowo: Uwaga - polecenia zamieszczone w kolejnych punktach należy umieścić w jednym skrypcie. nr_gr = r_k = [A_u,B_u]=gener_zbiorow(nr_gr,1,100,rk); %dane uczące [A_t,B_t]=gener_zbiorow(nr_gr,1,100,rk); %dane testowe gdzie do nr_gr przypisz numer swojej sekcji a do r_k aktualny rok kalendarzowy. 1.3. Na podstawie wygenerowanych zbiorów tworzymy macierze wejściowe. Tworzymy wektory pożądanych odpowiedzi: %zbiór uczący x_u=[a_u B_u]; %wektory wejściowe t_u=[zeros(1,size(a_u,2))+1 zeros(1,size(b_u,2))-1]; %pożądane odpowiedzi: +1 dla zbioru A i -1 dla zbioru B %zbiór testujący x_t=[a_t B_t]; %wektory wejściowe t_t=[zeros(1,size(a_t,2))+1 zeros(1,size(b_t,2))-1]; %pożądane odpowiedzi: +1 dla zbioru A i -1 dla zbioru B 2

2. Tworzymy i uczymy sieć neuronową z l_n neuronami w warstwie ukrytej: l_n=1; %liczba neuronów w warstwie ukrytej %utworzenie sieci net=newff([0 1;0 1],[l_n 1],{'tansig','tansig'},'trainscg'); %pierwszy argument reprezentuje zakresy danych wejściowych, drugi - liczbę neuronów w warstwie ukrytej i wyjściowej, trzeci - typy funkcji aktywacji w tych warstwach, czwarty - metodę uczenia sieci; funkcja zwraca obiekt sieci net net.trainparam.epochs = 200; %liczba epok uczenia [net]=train(net,x_u,t_u); %trening sieci 3. Testujemy sieć i wyznaczamy błędy klasyfikacji na zbiorze uczącym: %symulacja nauczonej sieci na zbiorze uczącym y=sim(net,x_u); if y(i)>0.8 y(i)=1; %jeśli odpowiedź sieci jest w zakresie od 0.8 do 1, %przyjmujemy +1 elseif y(i)<-0.8 y(i)=-1; %jeśli odpowiedź sieci jest w zakresie od -0.8 %do -1, przyjmujemy -1 else y(i)=0; %jeśli odpowiedź sieci jest w zakresie od -0.8 do 0.8, %przyjmujemy 0, co oznacza brak decyzji %błędy lb_u=0;%liczba punktów źle zaklasyfikowanych ln_u=0;%liczba punktów niezaklasyfikowanych do żadnej klasy if y(i)==0 ln_u=ln_u+1; elseif y(i)~=t_u(i) lb_u=lb_u+1; lb_u=lb_u/length(y)*100; %lb_u wyrażone w procentach ln_u=ln_u/length(y)*100; %ln_u wyrażone w procentach Uwaga powyżej przyjęto zasadę, że: jeśli odpowiedź sieci jest w zakresie od 0.8 do 1, przyjmujemy +1, co oznacza klasę A, jeśli odpowiedź sieci jest w zakresie od 0.8 do 1, przyjmujemy 1, co oznacza klasę B, jeśli odpowiedź sieci jest w zakresie od 0.8 do 0.8, przyjmujemy 0, co oznacza brak decyzji. 4. Testujemy sieć i wyznaczamy błędy klasyfikacji na zbiorze testowym: %symulacja nauczonej sieci na zbiorze testowym y=sim(net,x_t); if y(i)>0.8 y(i)=1; elseif y(i)<-0.8 y(i)=-1; else y(i)=0; %błędy lb_t=0;%liczba punktów źle zaklasyfikowanych ln_t=0;%liczba punktów niezaklasyfikowanych do żadnej klasy if y(i)==0 ln_t=ln_t+1; elseif y(i)~=t_t(i) lb_t=lb_t+1; lb_t=lb_t/length(y)*100; %lb_t wyrażone w procentach ln_t=ln_t/length(y)*100; %ln_t wyrażone w procentach 5. Prezentacja wyników: fprintf('odsetek poprawnych, złych i nierozstrzygniętych klasyfikacji\n') 3

fprintf(' %5.2f%% - %5.2f%% - %5.2f%% w zbiorze treningowym \n',(100-lb_u-ln_u),lb_u,ln_u) fprintf(' %5.2f%% - %5.2f%% - %5.2f%% w zbiorze testowym \n',(100-lb_t-ln_t),lb_t,ln_t) %wykreślenie obszarów decyzyjnych utworzonych przez sieć a=0:0.01:1; i=1; for b=0:0.01:1 x=[a;zeros(1,length(a))+b]; yy(i,:)=sim(net,x); figure(1); surf(a,a,yy,'edgecolor','none'); colorbar; title('powierzchnia decyzyjna utworzona przez sieć'); xlabel('x1'); ylabel('x2'); view(2); grid off; figure(2); yy(find(yy>0.8))=1; yy(find(yy<-0.8))=-1; yy(find(yy>=-0.8&yy<=0.8))=0; contour(a,a,yy); title('obszary decyzyjne:'); 6. Zaobserwuj jak zmieniają się wyniki w zależności od liczby neuronów ukrytych. Zmieniaj l_n w granicach od 1 do wartości, przy której nie obserwuje się już poprawy rezultatów. Błędy zamieść w tabeli. Zaznacz wariant najlepszy. Pokaż wykresy dla tego wariantu. 7. Zaobserwuj jak zmieniają sie wyniki w zależności od funkcji aktywacji. W kodzie zamieszczonym w p. 2 zmieniaj funkcje aktywacji: tansig, logsig, purelin. Przetestuj każdy możliwy układ par tych trzech funkcji aktywacji. Eksperymenty wykonaj przy optymalnej liczbie neuronów l_n (najlepszy wariant z p. 6). Błędy zamieść w tabeli. Zaznacz wariant najlepszy. Pokaż wykresy dla tego wariantu. 8. Powtórz eksperymenty dla danych separowanych nieliniowo. W tym celu w kodzie zamieszczonym w p. 1.2 wprowadź 2 zamiast 1 jako drugi parametr funkcji gener_zbiorow. Wykonaj ponownie p. 6 i 7 dla nowych danych. 9. Powtórz eksperymenty dla danych nieseparowanych. W tym celu w kodzie zamieszczonym w p. 1.2 wprowadź 3 zamiast 2 jako drugi parametr funkcji gener_zbiorow. Wykonaj ponownie p. 6 i 7 dla nowych danych. Zawartość sprawozdania Sprawozdania powinny być sporządzone według wzoru zamieszczonego na stronie i zawierać: A) Cel ćwiczenia. B) Treść zadania. C) Opis problemu klasyfikacji, sieci neuronowe stosowane do klasyfikacji (nie kopiuj treści wykładu, poszukaj w literaturze i Internecie). D) Metodyka rozwiązania zadania. E) Zestawienie wyników (wykresy, tabele z komentarzem). F) Wnioski końcowe. G) Wydruk programu. Zadania dodatkowe dla ambitnych Wybrane zadanie student wykonuje indywidualnie, po uzgodnieniu z prowadzącym. Zadania nie są obligatoryjne. Z zadania sporządzamy sprawozdanie. 4

1. Sprawdź jak kształtują sie wyniki, gdy zmienimy wartość progową 0.8 w p. 3. Jakie błędy klasyfikacji wtedy się obserwuje? 2. Sprawdź jak uczy się sieć na danych uczących z różną zawartością szumu (szum dodaj do wektorów wejściowych x_u). Jakie błędy klasyfikacji wtedy się obserwuje? 3. Oprogramuj przykład 3.2 z [Żurada96]. Wykonaj obliczenia i zobrazuj działanie dychotomizatora wykresami (rys. 3.12). Porównaj wyniki. 4. Oprogramuj przykład 3.3 z [Żurada96]. Wykonaj obliczenia i zobrazuj działanie klasyfikatora ciągłego wykresami (rys. 3.16). Porównaj wyniki. 5. Oprogramuj przykład 3.4 z [Żurada96]. Wykonaj obliczenia i zobrazuj działanie klasyfikatora ciągłego wykresem (rys. 3.18). Porównaj wyniki. 6. Oprogramuj przykład 4.3 z [Żurada96]. Wykonaj obliczenia i wykreśl linie decyzyjne opisane w tym przykładzie. Porównaj wyniki. 7. Wykonaj podobne ćwiczenie w innym środowisku, np. R, Python, Statistica, C#,... Przykładowe zagadnienia i pytania zaliczeniowe 1. Narysuj model sztucznego neuronu. 2. Neuron jako klasyfikator. 3. Narysuj model sieci neuronowej użytej w ćwiczeniu. 4. Na czym polega klasyfikacja danych. 5. Narysuj i objaśnij wykres ze sprawozdania. 6. Funkcje aktywacji neuronów. 7. Wsteczna propagacja błędów. 8. Metody oceny klasyfikatora. Do przygotowania na następne zajęcia 1. Zapoznać się z instrukcją do kolejnego ćwiczenia. 2. Zapoznać się z częścią teoretyczną do kolejnego ćwiczenia. 3. Wykonać zadania pomocnicze do kolejnego ćwiczenia. 5