Zastosowania sieci neuronowych klasyfikacja LABORKA Piotr Ciskowski
zadanie 1. klasyfikacja zwierząt sieć jednowarstwowa żródło: Tadeusiewicz. Odkrywanie własności sieci neuronowych, str. 159 Przykład klasyfikacji zwierząt z Tadeusiewicza z wcześniejszych zajęć o sieciach jednowarstwowych: przykład 1 przykład 2 przykład 3 % wejścia sieci: P = [ 4 2-1 ; % we 1 - ile ma nóg 0.01-1 3.5 ; % we 2 - czy żyje w wodzie 0.01 2 0.01 ; % we 3 - czy umie latać -1 2.5-2 ; % we 4 - czy ma pióra -1.5 2 1.5 ] % we 5 - czy jest jajorodny przykład 1 przykład 2 przykład 3 T = [ 1 0 0 ; % ssak 0 1 0 ; % ptak 0 0 1 ] % ryba % żądane wyjścia sieci: Naucz identyczną sieć jednowarstwową (5-3) rozwiązywać to proste zadanie przy użyciu funkcji z toolbox u MATLABa
zadanie 1. klasyfikacja zwierząt sieć jednowarstwowa żródło: Tadeusiewicz. Odkrywanie własności sieci neuronowych, str. 159 % wejścia sieci: P = [ 4 2-1 ; % we 1 - ile ma nóg 0.01-1 3.5 ; % we 2 - czy żyje w wodzie 0.01 2 0.01 ; % we 3 - czy umie latać -1 2.5-2 ; % we 4 - czy ma pióra -1.5 2 1.5 ] % we 5 - czy jest jajorodny % żądane wyjścia sieci: T = [ 1 0 0 ; % ssak 0 1 0 ; % ptak 0 0 1 ] % ryba Pwsadowe = P Twsadowe = T Pprzyrostowe = { P(:,1) P(:,2) P(:,3) } Tprzyrostowe = { T(:,1) T(:,2) T(:,3) }
zadanie 1. klasyfikacja zwierząt sieć jednowarstwowa żródło: Tadeusiewicz. Odkrywanie własności sieci neuronowych, str. 159 utwórz sieć jednowarstwową liniową: siecprzed = newlin ( Pwsadowe, Twsadowe ) % nowszy MATLAB (2012b) siecprzed = newlin ( minmax(pwsadowe), 3 ) % starszy MATLAB zobacz, jak działa: odpprzed = sim ( siecprzed, Pwsadowe ) ustaw cel uczenia (błąd średniokwadratowy) na niezbyt ambitny: siecprzed.trainparam.goal= 0.1; naucz sieć: siecpo = train ( siecprzed, Pwsadowe, Twsadowe ) ; zobacz, jak działa: odppo = sim ( siecpo, Pwsadowe )
zadanie 1. klasyfikacja zwierząt sieć jednowarstwowa żródło: Tadeusiewicz. Odkrywanie własności sieci neuronowych, str. 159 zmień cel uczenia na ambitniejszy i doucz sieć: siecpo.trainparam.goal = 0.01; siecpo = train ( siecpo, Pwsadowe, Twsadowe ) ; zobacz, jak działa: odppo = sim ( siecpo, Pwsadowe )
zadanie 1. klasyfikacja zwierząt sieć jednowarstwowa żródło: Tadeusiewicz. Odkrywanie własności sieci neuronowych, str. 159 zmień metodę uczenia na przyrostową po 1 przykładzie: siecprzed.adaptparam.passes = 1 ; [ siecpo, y, e ] = adapt ( siecprzed, Pprzyrostowe, Tprzyrostowe ) ; mse ( e ) douczaj tę samą sieć przyrostowo po 1 przykładzie: siecpo.adaptparam.passes = 1 ; [ siecpo, y, e ] = adapt ( siecpo, Pprzyrostowe, Tprzyrostowe ) ; % to... mse ( e ) %... i to powtarzaj douczaj tę samą sieć przyrostowo poprawki wag co 1 przykład - analiza co 5 przykładów: siecpo.adaptparam.passes = 5 ; [ siecpo, y, e ] = adapt ( siecpo, Pprzyrostowe, Tprzyrostowe ) ; % to... mse ( e ) %... i to powtarzaj zobacz, jak sieć działa: odppo = sim ( siecpo, Pprzyrostowe ) odppo = sim ( siecpo, Pwsadowe )
zadanie 2. klasyfikacja znaków sieć jednowarstwowa źródło: Żurada i in. Sztuczne sieci neuronowe, przykład 4.2, str. 123 Znaki, pokazane poniżej, z których każdy reprezentuje inną klasę, zajmują wierzchołki 35-wymiarowej kostki i są liniowo separowalne. Jako metodę kodowania klas na wyjściu sieci zastosuj reprezentację lokalną po jednym neuronie wyjściowym na każdą klasę. Zastosuj sieć jednowarstwową - o 12 neuronach - z unipolarną (0-1) sigmoidalną funkcją aktywacji - ze współczynnikiem nachylenia β równym 1, - niech neurony posiadają wejścia zerowe (biasy) o stałej wartości równej -1 Przeprowadź 200 cykli uczenia sieci metodą delta dla kilku wartości współczynnika uczenia: η = 4, 2, 1, 0.5, 0.25
zadanie 2. klasyfikacja znaków sieć jednowarstwowa źródło: Żurada i in. Sztuczne sieci neuronowe, przykład 4.2, str. 123 Użyj jednego zbioru danych (binarnie zakodowanego poniższego obrazka) jako zbioru uczącego i sprawdzającego. Wyjścia sieci interpretuj zarówno w sposób ciągły (od 0 do 1), jak i dyskretny (zaokrąglając sygnały wyjściowe wszystkich neuronów do 0 lub 1) Błąd łączny sieci zdefiniowany jest następująco: P K 1 ( p) ( p) E = ( t ) 2 k yk p= 1 k = 1 gdzie: P liczba przykładów K liczba wyjść sieci t wyjścia żądane, y wyjścia sieci (ciągłe lub dyskretne) Porównaj wyniki uczenia z wynikami Żurady (błąd łączny, dany wzorem wyżej, dla dyskretnych wyjść sieci) - η = 4 - E = 1.0040 - η = 2 - E = 1.0040 - η = 1 - E = 1.0040 - η = 0.5 - E = 1.0040 - η = 0.25 - E = 1.0040 2
zadanie 2. klasyfikacja znaków sieć jednowarstwowa źródło: Żurada i in. Sztuczne sieci neuronowe, przykład 4.2, str. 123 zdefiniuj zbiór uczący (najwygodniej będzie w m-pliku - skrypcie): % zbiór uczący - kropkowane literki: litera_a = [ 0 1 1 1 0... 1 0 0 0 1... 1 0 0 0 1... 1 1 1 1 1... 1 0 0 0 1... 1 0 0 0 1... 1 0 0 0 1 ] ; litera_b =...... litera_x =...
zadanie 2. klasyfikacja znaków sieć jednowarstwowa źródło: Żurada i in. Sztuczne sieci neuronowe, przykład 4.2, str. 123 zdefiniuj zbiór uczący (najwygodniej będzie w m-pliku - skrypcie):... litery_piksele = [ litera_a ;... litera_b ;... litera_c ;... litera_pyt ;... litera_e ;... litera_f ;... litera_g ;... litera_h ;... litera_s ;... litera_t ;... litera_y ;... litera_x ] ; % wszystkie litery razem % każda litera w jednym wierszu % każdy wiersz % = kolejny przykład % (wejścia dla sieci)
zadanie 2. klasyfikacja znaków sieć jednowarstwowa źródło: Żurada i in. Sztuczne sieci neuronowe, przykład 4.2, str. 123 zdefiniuj zbiór uczący (najwygodniej będzie w m-pliku - skrypcie):... litery_klasy = eye ( 12 ) ; litery_etykiety = [ 'A',... 'B',... 'C',... '?',... 'E', 'F', 'G', 'H',... 'S', 'T', 'Y', 'X' ] ; P = litery_piksele' ; T = litery_klasy' ; % ciąg uczący:
zadanie 2. klasyfikacja znaków sieć jednowarstwowa źródło: Żurada i in. Sztuczne sieci neuronowe, przykład 4.2, str. 123 utwórz sieć jednowarstwową: - o 12 neuronach - z unipolarną (0-1) sigmoidalną funkcją aktywacji - ze współczynnikiem nachylenia β równym 1, - niech neurony posiadają wejścia zerowe (biasy) o stałej wartości równej -1 siecprzed = newp... sprawdź, czy zmiana funkcji aktywacji oraz adaptacji wag była skuteczna zmień funkcję błędu używaną przez sieć na błąd średniokwadratowy siecprzed.layers{1}.... siecprzed.inputweights{1}.... siecprzed.biases{1}.... siecprzed.performfcn =...
zadanie 2. klasyfikacja znaków sieć jednowarstwowa źródło: Żurada i in. Sztuczne sieci neuronowe, przykład 4.2, str. 123 zmień parametry uczenia sieci liczbę epok na 200, wsp. uczenia na 4 sprawdź, jak sieć się uczy siecprzed... siecprzed...... = train... Sprawdź, jak sieć się uczy dla pozostałych współczynników uczenia Te 200 cykli uczenia sieci u Żurady to chyba jednak było 200 pokazów (pojedynczych), a nie 200 epok (przez cały ciąg uczący) zamień train na adapt i przeleć przez 200 pokazów (a nie epok), narysuj przebiegu uczenia
zadanie 3. klasyfikacja: XOR standardowy sieć dwuwarstwowa źródło: własne Naucz sieć dwuwarstwową rozwiązywania problemu XOR Użyj funkcji toolbox owych Porównaj szybkość uczenia różnymi metodami, przy różnych parametrach Przeanalizuj wyniki uczenia
zadanie 4. klasyfikacja: XOR funkcjonalny sieć jednowarstwowa źródło: Żurada i in. Sztuczne sieci neuronowe, przykład 4.6, str. 152 Porównaj naukę rozwiązywania zadania XOR 2D przez sieci dwuwarstwowe o strukturze: 2-2-1 z nauką tego samego problemu przez jednowarstwowe sieci z połączeniami funkcyjnymi jeden neuron z dodatkowym wejściem x1x2 Powtórz to samo dla problemu XOR 3D z odpowiednio zmodyfikowanymi architekturami sieci
zadanie 5. ważność cech kryterium Kołmogorowa źródło: własne Napisz funkcję, która analizuje ciąg uczący i tworzy ranking cech wg miary Kołmogorowa: Funkcja mogłaby: M zbiór klas p j prawdopodobieństwa a priori poszczególnych klas f(x) łączny rozkład danej cechy f j (x) rozkład danej cechy w poszczególnych klasach przyjmować macierze ze zbiorami uczącymi (P i T wejścia i żądane wyjścia kolejnych przykładów) rozpoznawać, ile jest klas j M dla każdej cechy obliczać miarę Kołmogorowa zwracać ranking cech w postaci wektora ( ) ( ) K = p f x f x dx Przeanalizuj cechy dla kilku standardowych problemów klasyfikacyjnych (np. irys) Naucz sieć używając wszystkich wejść, a następnie odrzucając po kolei najmniej znaczące cechy - zaobserwuj zachowanie sieci (osiągnięty błąd klasyfikacji) j X j
zadanie 6. klasyfikacja: STATISTICA + MATLAB źródło: własne Naucz sieć klasyfikować dane znalezione w sieci, np. z bazy zbiorów uczących UCI Machine Learning Repository W programie STATISTICA przeprowadź wstępną analizę danych wejściowych (histogramy warunkowe, wykresy rozrzutu, statystyki opisowe), wybierz najlepsze zmienne wejściowe, przeprowadź wstępne rozpoznawcze uczenie różnych sieci neuronowych Sporządź ranking cech patrz zad. 5 Wybierz najlepszą architekturę sieci oraz metodę uczenia, przeanalizuj ją dokładnie, ewentualnie dopieść, wygeneruj kod w STATSITICe a potem naucz sieć dokładnie i wygeneruj kod w MATLABie
zadanie 5. ważność cech kryterium Kołmogorowa zadanie 6. klasyfikacja: STATISTICA + MATLAB Przykładowe dane z helpów/dem MATLABa: load iris_dataset load cancer_dataset load glass_dataset load thyroid_dataset load wine_dataset