ssn dudziec, Szkola - materialy


Sieci neuronowe i neurokomputery - PROJEKT 2008

Student

Grupa

Ocena

Data

Podpis

Jan Dudziec

T-TIZ5

9.01.2008

  1. Cel

Zaprojektować klasyfikator neuronowy dla 3 klas.

  1. Opis i wizualizacja danych

Zbiory danych dostarczone zostały w plikach snn_a.txt oraz snn_b.txt. Pierwszy z nich stanowi zbiór testowy (200 przykładów), natomiast drugi jest zbiorem uczącym (800 przykładów). Każdy element zbioru zawiera 2 parametry wejściowe o wartościach liczbowych oraz etykietę klasy do której należy. Umożliwia to wizualizację za pomocą punktów na płaszczyźnie.

Poniższe wykresy przedstawiają obrazy zbiorów:

  1. uczącego

  2. testowego

  3. całkowitego

gdzie identyfikator przydzielonej klasy określa kolor punktu (czerwony - 1, zielony - 2, niebieski - 3).

0x01 graphic

0x01 graphic

  1. zbiór uczący

-- Analiza zbioru uczacego --

Ilosc elementow nalezacych do klasy 1: 289

Ilosc elementow nalezacych do klasy 2: 275

Ilosc elementow nalezacych do klasy 3: 236

  1. zbiór testowy

-- Analiza zbioru testujacego --

Ilosc elementow nalezacych do klasy 1: 72

Ilosc elementow nalezacych do klasy 2: 76

Ilosc elementow nalezacych do klasy 3: 52

0x01 graphic

  1. suma zbiorów

-- Analiza sumy zbiorów --

Ilosc elementow nalezacych do klasy 1: 361

Ilosc elementow nalezacych do klasy 2: 351

Ilosc elementow nalezacych do klasy 3: 288

Na podstawie tych wykresów można wyodrębnić 3 grupy punktów należących do różnych klas, które nie posiadają części wspólnych w żadnym obszarze.

  1. Zastosowany algorytm uczenia sieci neuronowej; i opis zastosowanego programu komputerowego (środowisko, język programowania, procedury numeryczne i graficzne, interfejs użytkownika)

Do uczenia sieci neuronowej wykorzystano algorytm gradientowy wstecznej propagacji błędów BP (200 epok) a następnie algorytm Levenberga-Marquardta LM (300 epok).

Ze względu na wygodę implementacji oraz wizualizacji wyników projekt wykonano w środowisku MATLAB (wer. 7.1) z wykorzystaniem biblioteki Neural Network Toolbox.

Do otrzymania sieci z wsteczną propagacją błędu użyto funkcji newff. Wszelkie właściwości tej sieci, takie jak rozmiary warstw i wagi początkowe, dostępne są poprzez odpowiednie pola składowe utworzonego obiektu. Do trenowania i testowania sieci wykorzystano zawarte w toolboxie odpowiednie m-funkcje: train oraz sim. Algorytmy uczenia dostępne są pod postacią następujcych funkcji: BackPropagation trainbp, Levenberg-Marquardta trainlm.

Projekt składa się z następujących funkcji:

  1. wczytaj_dane()

Funkcja wczytuje dane z plików snn_a.txt i snn_b.txt i zapamiętuje je jako macierze w programie MATLAB.

  1. wizualizacja_danych()

Funkcja prezentująca graficzną i statystyczną analizę danych uczących i testowych sieci. Wykorzystuje funkcję badanie_zbioru.

  1. symulacja()

Główna funkcja projektu, uruchamiana bez dodatkowych parametrów. Wykorzystując pozostałe m-pliki, buduje sieć neuronową w oparciu o dane z pliku z danymi uczącymi i prezentuje wyniki przeprowadzonych na niej doświadczeń z wykorzystaniem danych z pliku z danymi testowymi.

  1. siec = tworz_siec_1K(zbior_uczacy)

Konstrukcja i trenowanie sieci. Jako parametry należy przekazać zbiór uczący. Zwracane obiekty to utworzone sieć jako 1 klasyfikator.

  1. [siec1, siec2, siec3] = tworz_siec_NK(zbior_uczacy)

Konstrukcja i trenowanie sieci. Jako parametry należy przekazać zbiór uczący. Zwracane obiekty to utworzone sieci jako N=3 klasyfikatorów.

  1. badanie_zbioru(zbior, wzor)

Funkcja pomocnicza, dokonuje graficznej iterpretacji przekazanego zbioru i wyświetla informacje o ilości elementów w poszczególnych klasach. W przypadku przekazania drugiego parametru, który stanowi porównywany zbiór odniesienia, na wykresie zostają naznaczone różnice oraz wyświetlona zostaje tabela z wynikiami poprawności klasyfikacji.

  1. konwersja(dane)

Funkcja konweruje dane uzyskane z K neuronów wyjściowych na pojedyncze etykiety przynależności do klasy.

  1. drukuj_siec(siec, nazwa_pliku)

Pobiera informacje o sieci i zapisuje je w formacie określonym w specyfikacji do projektu.

Wynikiem działania programu (polecenie start) jest otrzymanie kolejno:

  1. wczytanie danych

  2. analizy zbioru uczącego i testującego

  3. tabeli wartości wag klasyfikatora neuronowego

  4. analizy graficznej funkcji realizowanej przez sieć neuronową

  5. wykresu obrazującego wynik działania klasyfikatora na zbiorze uczącym i testowym z zaznaczeniem linii podziału obszarów

  6. tabeli zawierających wyniki klasyfikacji dla zbioru uczącego i testowego

  7. pliku tekstowego z bieżącą konfiguracją sieci w formacie określonym w specyfikacji do projektu

  1. Udokumentowanie wyboru architektury sieci (liczby neuronów wejściowych i ukrytych) i najlepszego modelu spośród sieci o tej samej liczbie neuronów ukrytych.

Zgodnie z postawionymi założeniami projektowymi tego zadania, konfiguracja sieci miała opierać się na perceptronie dwuwarstwowym z jedną warstwą neuronów ukrytych z funkcją aktywacji neuronów w postaci 0x01 graphic
.

  1. Jeden klasyfikator o K neuronach wyjściowych

Mininalną liczbę potrzebnych neuronów warstwy ukrytej można ocenić, wiedząc że 1 neuron ukryty odpowiada za 1 prostą decyzyjną dokonującą podziału płaszczyzny na dwie półpłaszczyzny o różnie zaklasyfikowanych punktach. Na podstawie analizy rozkładu danych wejściowych stwierdzono, że minimalna i zarazem optymalna liczba neuronów warstwy ukrytej wynosi 4. Poniżej przedstawiono wykresy punktow zbioru testowego z odrecznie nakreślonymi prostymi podziału dla zbiorów testowego i uczącego.

0x01 graphic

0x01 graphic

a) zbiór testowy

a) zbiór uczący

Ponieważ klasy nie posiadają części wspólnej, dość łatwo jest określić optymalną ilość neuronów w warstwie ukrytej. Wielokrotnie wykonane doświadczenia dla innych ich ilości (4 do 10) wykazują jednak, że nie następuje zauważalna poprawa jakości klasyfikacji sieci dla wartości innych niż 4. Wybór 4 neuronów zapewnia szybszy czas uczenia się sieci, ale przede wszystkim nie powoduje niepożądanego zjawiska overfittingu, nadając sieci charakter bardziej generalizujący. 3 neurony w warstwie ukrytej nie są w stanie poprawnie zaklasyfikować wszystkich danych.

Liczba neuronów ukrytych

Sprawność na danych uczących [%]

Sprawność na danych testowych [%]

3

89

94

4

99

99

5

99

98

6

99

98

7

89

85

8

94

90

9

96

92

10

96

90

Wyjście sieci zrealizowano według koncepcji jednego klasyfikatora o 3 neuronach wyjściowych z zastosowaniem kodowania „1 z K”. Sygnał na wyjściu neuronu k o sigmoidalnej funkcji aktywacji (po przeprowadzeniu uczenia) można interpretować jako prawdopodobieństwo a posteriori, że wektor wejściowy x należy do klasy Ck.

  1. K niezależnych klasyfikatorów binarnych z jednym neuronem wyjściowym

Na podstawie analizy danych wejściowych budując K=3 niezależnych klasyfikatorów stwierdzono, że:

Odręcznie nakreślone linie podziału wyglądają następująco:


Klasyfikator dla klasy 1

0x01 graphic

Klasyfikator dla klasy 2

0x01 graphic

Klasyfikator dla klasy 3

0x01 graphic


Kilkuktornie powtarzane symulacjedla innych ich ilości neuronów wykazują, że nie następuje zauważalna poprawa jakości klasyfikacji. Wybór 3, 3 i 4 neuronów zapewnia szybszy czas uczenia się sieci i nie powoduje zjawisk ubocznych, pozwalając zwiększyć własności generalizacyjne sieci.

Wyjście każdej sieci zrealizowano według koncepcji klasyfikatora binarnego. Sygnał na wyjściu neuronu Ktej sieci o sigmoidalnej funkcji aktywacji (po przeprowadzeniu uczenia) można interpretować jako prawdopodobieństwo a posteriori, że wektor wejściowy x należy do klasy Ck.

  1. Schemat zaprojektowanego klasyfikatora neuronowego (K klasyfikatorów binarnych lub jeden klasyfikator).

0x08 graphic
0x01 graphic

Schemat przedstawia realizację klasyfikatora w postaci jednej sieci realizującej funkcję 1 z K.

  1. Tabele wartości wag klasyfikatora neuronowego

Wagi na połączeniach między kolejnymi neuronami. Oznaczenie neuronu postaci A-B oznacza, że leży w warstwie A (0 odpowiada warstiwe wejściowej, 1 pierwszej ukrytej, a 2 wyjściowej) i jest neuronem o indeksie B w teje warstwie (licząc od 1). Dlatego tabela obrazuje połączenia między warstwą wejściową a pierwszą ukrytą oraz pierwszą ukrytą a wyjściową.

Wartości progów klasyfikacji wynoszą theta=0.5, ponieważ klasy nie posiadają części wspólnych.

  1. Jeden klasyfikator o K neuronach wyjściowych

Neuron

0-1

0-2

1-1

1-2

1-3

1-4

1-1

-7.003813

-0.318866

---

---

---

---

1-2

-3.427060

-0.060671

---

---

---

---

1-3

-1.677563

-1.375361

---

---

---

---

1-4

-0.806385

0.379907

---

---

---

---

2-1

---

---

-13.739263

11.180162

8.768604

14.344750

2-2

---

---

4.088632

-10.648118

3.747598

-2.395713

2-3

---

---

11.125530

-2.147691

-10.971338

-11.533081

  1. K niezależnych klasyfikatorów binarnych z jednym neuronem wyjściowym

Klasyfikator Klasy 1

Neuron

0-1

0-2

1-1

1-2

1-3

1-1

-8.231783

0.360053

---

---

---

1-2

-34.813196

-1.635618

---

---

---

1-3

-2.557999

1.508543

---

---

---

2-1

---

---

2.782433

-4.055699

4.163224

Klasyfikator Klasy 2

Neuron

0-1

0-2

1-1

1-2

1-3

1-1

3.782993

-0.164112

---

---

---

1-2

-0.566249

0.003947

---

---

---

1-3

-10.550431

-9.867407

---

---

---

2-1

---

---

5.591917

14.121327

4.111324

Klasyfikator Klasy 3

Neuron

0-1

0-2

1-1

1-2

1-3

1-4

1-1

0.150947

0.021401

---

---

---

---

1-2

-2.266919

-0.094239

---

---

---

---

1-3

-1.589668

0.781488

---

---

---

---

1-4

-13.576800

-9.975408

---

---

---

---

2-1

---

---

-6.520389

8.452865

-5.142647

-4.944301

  1. Wyniki klasyfikacji

  1. Jeden klasyfikator o K neuronach wyjściowych

  1. dla zbioru uczącego

procent / liczba punktów zaklasyfikowanych poprawnie

procent / liczba punktów zaklasyfikowanych niepoprawnie

procent / liczba punktów niezaklasyfikowanych

klasa 1

97.58% / 282

1.04% / 3

1.38% / 4

klasa 2

99.64% / 274

0.00% / 0

0.36% / 1

klasa 3

97.03% / 229

1.69% / 4

1.27% / 3

ogółem

98.13% / 785

0.88% / 7

1.00% / 8

  1. dla zbioru testowego

procent / liczba punktów zaklasyfikowanych poprawnie

procent / liczba punktów zaklasyfikowanych niepoprawnie

procent / liczba punktów niezaklasyfikowanych

klasa 1

100.00% / 72

0.00% / 0

0.00% / 0

klasa 2

97.37% / 74

0.00% / 0

2.63% / 2

klasa 3

92.31% / 48

7.69% / 4

0.00% / 0

ogółem

97.00% / 194

2.00% / 4

1.00% / 2

  1. wizualizacja otrzymanych wyników - linie rozdzielające klasy i ich związek z architekturą i wagami sieci neuronowej, wykres funkcji realizowanej przez sieć neuronową.

Punkty na wykresach prezentowane są w 3 kolorach, przedstawiających klasy do jakich należą. Jeżeli punkt został poprawnie sklasyfikowany to jego reprezentacja się nie zmienia. Jeśli został błędnie sklasyfikowany to otoczony jest czerwonym kwadratem. Jeżeli nie został sklasyfikowany to prezentowany jest jako niebieskie kółko.


Funkcja realizowana przez sieć

0x01 graphic

Wynik działania klasyfikatora na zb. tesotwym z liniami podziału

0x01 graphic

Wyniki klasyfikacji na zbiorze uczącym

0x01 graphic

Wyniki klasyfikacji na zbiorze testowym

0x01 graphic


  1. K niezależnych klasyfikatorów binarnych z jednym neuronem wyjściowym

  1. dla zbioru uczącego

procent / liczba punktów zaklasyfikowanych poprawnie

procent / liczba punktów zaklasyfikowanych niepoprawnie

procent / liczba punktów niezaklasyfikowanych

klasa 1

95.16% / 275

0.00% / 0

4.84% / 14

klasa 2

100.00% / 275

0.00% / 0

0.00% / 0

klasa 3

99.15% / 234

0.00% / 0

0.85% / 2

ogółem

98.00% / 784

0.00% / 0

2.00% / 16

  1. dla zbioru testowego

procent / liczba punktów zaklasyfikowanych poprawnie

procent / liczba punktów zaklasyfikowanych niepoprawnie

procent / liczba punktów niezaklasyfikowanych

klasa 1

88.89% / 64

0.00% / 0

11.11% / 8

klasa 2

100.00% / 76

0.00% / 0

0.00% / 0

klasa 3

96.15% / 50

0.00% / 0

3.85% / 2

ogółem

95.00% / 190

0.00% / 0

5.00% / 10

  1. wizualizacja otrzymanych wyników - linie rozdzielające klasy i ich związek z architekturą i wagami sieci neuronowej, wykres funkcji realizowanej przez sieć neuronową.

Punkty na wykresach prezentowane są w 3 kolorach, przedstawiających klasy do jakich należą. Jeżeli punkt został poprawnie sklasyfikowany to jego reprezentacja się nie zmienia. Jeśli został błędnie sklasyfikowany to otoczony jest czerwonym kwadratem. Jeżeli nie został sklasyfikowany to prezentowany jest jako niebieskie kółko.

Funkcja realizowana przez zespół sieci

0x01 graphic



Wyniki klasyfikacji na zbiorze uczącym

0x01 graphic

Wyniki wlasyfikacji na zbiorze testowym

0x01 graphic


  1. Wnioski końcowe

Wyniki klasyfikacji w największym stopniu zależą od wag połączeń z jakimi z zostanie zainicjowana sieć neuronowa. Na proces uczenia sieci neuronowych wpływa również wiele innych czynników, które należy brać pod uwagę. Mimo iż opracowywany tu problem nie był skomplikowany, to wykorzystanie sieci neuronowych może być skuteczne dopiero po dokładnym jego przeanalizowaniu i świadomej konfiguracji wielu jej elementów.

Wysiłek włożony w konstruowanie odpowiedniej sieci owocuje lepszym algorytmem klasyfikacji, który opiera się na modelowaniu źródła danych, a nie na zapamiętywaniu zbioru uczącego.

Dla klasyfikatora zbudowanego z pojedynczej sieci:

Można stwierdzić że użyta struktóra sieci neuronowych jest optymalna. Algorytm uczenia przynosi pożądane rezultaty i uczy sieć do zadanego poziomu błędu. Sprawność jest zadowalająca: zależnie od początkowych wartości wag od 95% do 99%.

Za dowód poprawności działania sieci można przyjąć prawie tak samo wysoką sprawność dla danych testowych co danych uczących. Funkcja realizowana przez sieć jest poprawna w subiektywnej ocenie autora.

Na podstawie pomiarów wnioskuję, że jeden klasyfikator ma lepszą sprawność niż K klasyfikatorów, co jednak może być wynikiem zamałej ilości testów. Teoretycznie większą zdolność adaptacyjną powinien mieć klasyfikator złożony z K sieci neuronowych.

Dla 3 klasyfikatorów

Układ 3 niezależnych sieci realizujących funkcję klasyfikatora także osiąga wysoką sprawność, jednak widać, że realizowana przezeń funkcja nie jest tak dokładnie dopasowana jak w pierwszym przypadku. Mimo to, dla wszystkich testów osiągał on sprawność powyżej 85%, przeważnie więcej niż 90%.

Obydwa klasyfikatory wyraźnie mają problemy z klasyfikacją w podobnych miejscach, chociaż układ K klasyfikatorów popełnia tam więcej błędów. Taki wynik jest zastanawiający i może wskazywać na zbyt małą liczbę pomiarów.

  1. Źródła

  1. S. Osowski - Sieci neuronowe

  2. H. Demuth, M. Beale - Neural Network Toolbox. User's guide

  3. S. Jankowski - Materiały pomocnicze do wykładu z SNN

  4. http://www.kik.pcz.czest.pl/nn/

  5. http://panda.bg.univ.gda.pl/~prezes/sn/sn.htm

  6. Inne źródła

+

+

+

+

y

+

+

+

x



Wyszukiwarka

Podobne podstrony:
Pytania egzaminacyjne z Agrometeorologii, Szkoła Rolnictwo studia, Szkoła, Materiały studia, Agromet
botanika ćwiczenia, Szkoła Rolnictwo studia, Szkoła, Materiały studia, Botanika, bot
Nasiennictwo 2 kolo gotowa, Szkoła Rolnictwo studia, Szkoła, Materiały studia, Nasiennictwo
DIAGNOZAPEDAGOGICZNA, Szkola - materialy, bibliografia
+Ťci¦ůga 2 ko+éo z zestaw+-w 8 sztuk, Szkoła Rolnictwo studia, Szkoła, Materiały studia, Nasiennictw
Tworzywa mineralne, SZKOŁA, Materiałoznawstwo ogólne i instalacyjne
fizjologia roslin, Szkoła Rolnictwo studia, Szkoła, Materiały studia, fizjo roslin
Kolo biochemia KOMPLET NOTATEK AMINOKWASY, Szkoła Rolnictwo studia, Szkoła, Materiały studia, bioche
prognozowanie popytu www.przeklej.pl www.przeklej.pl, Szkoła materiały, Logistyka, Prognozowanie
!Koszty logistyczne - MWSLiT 2007, Szkoła materiały, Logistyka, Transport i spedycja
rolnictwo 1rok (9), Szkoła Rolnictwo studia, Szkoła, Materiały studia, materialy - biotechnologia
Podstawa programowa z techniki, szkoła, Materiały do techniki(technika)
Gleba, Szkoła Rolnictwo studia, Szkoła, Materiały studia, Gleboznastwo, gleba
glebik, Szkoła Rolnictwo studia, Szkoła, Materiały studia, Gleboznastwo
Poprawka kola z oddychania ściąga1, Szkoła Rolnictwo studia, Szkoła, Materiały studia, fizjologia ro
Rodziny opis, Szkoła Rolnictwo studia, Szkoła, Materiały studia, Botanika, bot

więcej podobnych podstron