learnbp rozpoznawianie samochodow po sylwetce

Politechnika Rzeszowska

Wydział Elektrotechniki i Informatyki

Katedra Informatyki i Automatyki

Sztuczna Inteligencja

Realizacja sieci neuronowej uczonej algorytmem wstecznej propagacji błędu (learnbp) uczącą się klasyfikacji pojazdów na podstawie ich sylwetki.

Kuśnierz Tomasz

II EF-DI

Rzeszów 2011

Opis problemu

Celem projektu jest zrealizowanie działającej sieci neuronowej uczonej algorytmem

wstecznej propagacji błędu uczącej się klasyfikowania pojazdu jako jeden z czterech typów, z wykorzystaniem zestawu danych opisujących. Pojazd może być oglądany z jednego z wielu różnych kątów widzenia.

Dane uzyskano przez HIPS (Hierarchical Image Processing System) rozszerzony o BINATTS, które wydobywa połączenie skali niezależnych danych, w oparciu o własności takie jak skalowana wariancja, skośność i kurtoza głównych/dodatkowych osi oraz heurestyczne miary takie jak wklęsłość, kolistość, prostokątność i kompaktowość.

Cztery modele pojazdów zostały wykorzystane do eksperymentu:

- piętrowy autobus,

- Cheverolet van,

- Saab 900,

- Opel Manta 400,

Ta szczególna kombinacja została wybrana z oczekiwaniem, że autobus, van i jeden z samochodów będzie łatwo odróżnić, ale będzie trudniejsze rozpoznanie między Saabem a Oplem.

Zdjęcia zostały zrobione przez kamery ustawione w dół na model pojazdu ze stałego kąta (34,2). Pojazdy zostały umieszczone na powierzchni rozpraszającej światło (lightbox). Zostały pomalowane czarnym, matowym kolorem, aby zminimalizować rozjaśnienia. Wszystkie zdjęcia zostały zrobione z rozdzielczością przestrzenną 128x128 pikseli z 64 bitową skalą szarości. Pojazdy były obracane i ich kąt orientacji mierzono za pomocą promieniowej siatki pod pojazdem. Dwa zestawy 60 obrazów, każdy zestaw obejmujący pełny obrót 360 stopni, zostały zrobione dla każdego pojazdu. Pojazd został obrócony o stały kąt między obrazem.

Atrybuty: compactness, circularity, distance circularity, radius ratio, pr.axis aspect ratio, max length aspect ratio, scatter ratio, elongatedness, pr. axis rectangularity, max length rectangularity, scaled variance (wzdłuż głównej osi oraz pobocznej), scaled radius of gyration, skewness, kurtosis, hollows.

Klasy: Opel, Saab, Bus, Van

Przygotowanie danych do przetwarzania.

Dane zostały zaczerpnięte ze strony repozytorium uniwersytetu w Irvine.
Informacje na temat repozytorium znajdują się na stronie: http://archive.ics.uci.edu/ml/about.html, natomiast zestaw danych użytych do wykonania projektu znajduje się pod adresem: http://archive.ics.uci.edu/ml/datasets/statlog+(vehicle+silhouettes)

89 42 85 144 58 10 152 44 19 144 173 345 161 72 8 13 187 197 van
94 49 79 203 71 5 174 37 21 154 196 465 206 71 6 2 197 199 bus
96 55 103 201 65 9 204 32 23 166 227 624 246 74 6 2 186 194 opel
89 36 51 109 52 6 118 57 17 129 137 206 125 80 2 14 181 185 van
99 41 77 197 69 6 177 36 21 139 202 485 151 72 4 10 198 199 bus
104 54 100 186 61 10 216 31 24 173 225 686 220 74 5 11 185 195 saab

Tabela 1.1 Przykładowe dane pobrane z repozytorium.

Jak można łatwo zauważyć pobrane dane nie mogą być użyte w podanej formie przez program. Należy zamienić tekst z ostatniej kolumny na wartości liczbowe, co też zostało zrobione:

- van 1

- saab 2

- bus 3

- opel 4

82 40 73 141 57 8 153 44 19 133 173 342 153 75 11 9 181 187 4
82 39 86 140 54 7 153 45 19 134 174 338 139 71 11 18 183 189 4
82 43 73 158 68 7 151 44 19 145 181 337 173 80 2 17 183 188 3
82 43 70 250 105 55 139 48 18 145 231 289 172 99 4 9 190 199 1
82 36 51 114 53 4 135 50 18 126 150 268 144 86 15 4 181 182 2
83 36 54 119 57 6 128 53 18 125 143 238 139 82 6 3 179 183 2

Tabela 1.2 Przykładowe dane po zmianie na liczby.

Następnym krokiem było sprawdzenie, czy takie same zestawy danych nie występują wielokrotnie. Nie stwierdzono takiego przypadku.

  1. Sieć neuronowa wielowarstwowa oraz uczenie metodą wstecznej propagacji błędów.

    1. Sieć neuronowa wielowarstwowa jednokierunkowa.

Sieć jednokierunkowa wielowarstwowa charakteryzuje się występowaniem co najmniej jednej warstwy ukrytej neuronów, pośredniczącej w przekazywaniu sygnałów między węzłami wejściowymi a warstwą wyjściową. Sygnały wejściowe są podawane a pierwszą warstwę ukrytą neuronów, a te z kolei stanowią sygnały źródłowe dla kolejnej warstwy. Przykład sieci jednokierunkowej wielowarstwowej przedstawiono na rysunku poniżej.

Rys. 2.1 Przykład sieci wielowarstwowej jednokierunkowej.

Każda warstwa neuronów posiada swoją macierz wag w, wektor przesunięć b, funkcje aktywacji f i wektor sygnałów wyjściowych y. Działanie poszczególnych warstw można opisać za pomocą wzorów:


y1 = f1(w1x+b1)


y2 = f2(w2x+b2)


y3 = f3(w3x+b3)

gdzie indeksy dolne oznaczają warstwę sieci.

Całe działanie sieci można opisać jako


y3 = f3(w3 * f2(w2*f1(w1*x+b1)+b2) + b3)

Funkcja aktywacji może przybrać jedną z trzech postaci: skoku jednostkowego, liniową, nieliniową. Wykresy poszczególnych funkcji pokazuje rys. 2.2. Wybór funkcji aktywacji zależy od rodzaju problemu. Dla sieci wielowarstwowych są to najczęściej funkcje nieliniowe, gdyż neurony o takiej charakterystyce wykazują największe zdolności do nauki.

Rys. 2.2 Wykresy funkcji aktywacji

Uczenie metodą wstecznej propagacji błędów.

Uczenie za pomocą tej metody charakteryzuje się obecnością „nauczyciela”. Pierwszą czynnością w procesie uczenia jest przygotowanie ciągu uczącego. Jest to taki zbiór danych, które charakteryzują dany problem. Porcja danych nazywana jest wektorem uczącym. W skład tego wektora wchodzi wektor wejściowy, są to dane podawane na wejście sieci, oraz wektor wyjściowy, czyli dane oczekiwane na wyjściu sieci. Po przetworzeniu wektora podanego na wejściu sieci „nauczyciel” porównuje wyjście sieci z danymi oczekiwanymi i informuje sieć o poprawności odpowiedzi oraz wartości ewentualnego błędu. Błąd ten jest propagowany do sieci w kolejności odwrotnej niż miało to miejsce przy wektorze wejściowym. Na jego podstawie następuje korekcja wag1 w każdym neuronie tak, aby przy ponownym przetworzeniu tego wektora błąd odpowiedzi uległ zmniejszeniu.


Wij(k+1) = Wij(k) − Wij


Wij = xj(yidi)

Wij – wagi neuronów

yi – wartość na wyjściu neuronu

di – wartość oczekiwana

k – cykl poprzedni

k+1 – cykl następny

xj – wektor wejściowy

Procedurę tę powtarza się do momentu osiągnięcia przez sieć błędu mniejszego niż założony na początku. Po przetworzeniu całego ciągu uczącego2 oblicza się błąd i cały algorytm jest powtarzany dopóki błąd nie spadnie poniżej błędu oczekiwanego.

Celem uczenia pod nadzorem jest minimalizacja odpowiedzi zdefiniowanej funkcji celu, która w wyniku umożliwi dopasowanie wartości aktualnych odpowiedzi neuronów wyjściowych (wektor y) do wartości żądanych (wektor d) dla wszystkich p par uczących, przy czym dopasowanie to jest rozumiane w sensie statystycznym. Najczęściej przyjmowaną postacią funkcji celu jest błąd średniokwadratowy.


$$E = \frac{1}{2}\sum_{k = 1}^{p}{\sum_{j = 1}^{M}{e_{j}^{2}(k)}}$$


e(k) = y(k) − d(k)

M – liczba neuronów wyjściowych

p – liczba par uczących

y(k) – aktualna odpowiedź

d(k) – oczekiwana odpowiedź

  1. Realizacja projektu w programie Matlab.

    1. Opis skryptu wykorzystywanego do realizacji projektu.

clear all - wyczyszczenie przestrzeni roboczej

nntwarn off - wyłączenie powiadomienia o błędach

format compact - ustawienie sposobu wyświetlania

load data1.txt

P=data1(:,1:18); - wczytanie danych uczących (wejściowych)

T=data1(:,19)'; - wczytanie danych uczących (oczekiwanych)

MINIMALIZACJA DANYCH

maxP=max(P);

minP=min(P);

Pn=zeros(size(P));

for i=1:length(maxP),

Pn(:,i) = (1-(-1))*(P(:,i)-minP(i))/(maxP(i)-minP(i)) + (-1);

% (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin;

end

Pn = Pn'; - transponowanie macierzy

[R,Q] = size(Pn); - zapis do zmiennej R wielkości wektora wejściowego

[S3,Q] = size(T); - przypisanie liczby wyjść jako ilość neuronów w warstwie wyjściowej

S1 = 1; - ilość neuronów w warstwie pierwszej

S2 = 1; - ilość neuronów w warstwie drugiej (ukrytej)

[W1,B1] = nwtan(S1,R); - inicjalizacja neuronów z funkcją aktywacji tansig losowymi wartościami

[W2,B2] = nwtan(S2,S1);

[W3,B3] = rands(S3,S2); - przypisanie tablicy o rozmiarach S3xS2 losowymi wartościami z zakresu [-1,1]

disp_freq=1; - częstotliwość wyświetlania wyników

max_epoch=200000; - maksymalna ilość epok

err_goal=.25; - błąd oczekiwany

lr=1e-4; - współczynnik uczenia

error = []; - macierz błędu

for epoch=1:max_epoch, - zainicjowanie pętli odpowiadającej za uczenie się sieci neuronowej

A1 = tansig(W1*Pn,B1); - wyjście warstwy A1

A2 = tansig(W2*A1,B2); - wyjście warstwy A2

A3 = purelin(W3*A2,B3); - wyjście warstwy A3

E = T -A3; - obliczanie błędu

D3 = deltalin(A3,E); - obliczanie wektorów błędów w zależności od funkcji aktywacji

D2 = deltatan(A2,D3,W3);

D1 = deltatan(A1,D2,W2);

[dW1,dB1] = learnbp(Pn,D1,lr); - obliczanie zmian wag przy użyciu algorytmu wstecznej propagacji błędu

W1 = W1 + dW1; - aktualizacja wag wektora wejściowego

B1 = B1 + dB1; - aktualizacja wag przesunięć

[dW2,dB2] = learnbp(A1,D2,lr);

W2 = W2 + dW2;

B2 = B2 + dB2;

[dW3,dB3] = learnbp(A2,D3,lr);

W3 = W3 + dW3;

B3 = B3 + dB3;

SSE = sumsqr(E); - obliczanie sumy kwadratu błędu

error = [error SSE]; - dopisanie błędu na koniec wektora

if SSE < err_goal, - zakończenie uczenia w wypadku osiągnięcia zadanego błędu

epoch = epoch - 1;

break,

end,

if(rem(epoch,disp_freq)==0) - wyświetlanie wyników

epoch

SSE

end

end

[T' A3' (T-A3)' (abs(T-A3)>.5)'] - wyświetlanie zestawienia wartości wyjściowych z wartościami oczekiwanymi

S1 - wyświetlanie liczby neuronów pierwszej warstwy

S2 - wyświetlanie liczby neuronów drugiej warstwy

epoch - wyświetlanie liczby epok

SSE - wyświetlanie błędu końcowego

100*(1-sum((abs(T-A3)>.5)')/length(T)) - wyświetlenie procentu poprawnych odpowiedzi

Eksperymenty.

Pierwszym krokiem w realizacji projektu było znalezienie odpowiedniego współczynnika uczenia3. Został on ustalony doświadczalnie, poprzez wyznaczanie maksymalnej ilości neuronów dla których błąd nie dążył do nieskończoności oraz wskaźnik SSE4 był mniejszy od błędu oczekiwanego5. Po kilku próbach ustalono wartość na poziomie 1e-4. Następnie przeprowadzono serię badań dotyczących wpływu zmiany wartości neuronów na pierwszej6 i drugiej7 warstwie. Wyniki przedstawiają tabele 3.1-3.3 oraz wykresy 3.1-3.3

S1/S2 10 15 20 25 30 35 40 45
10 48,21 44,25 37,52 27,47 18,41 16,68 15,22 14,93
15 17,81 14,92 8,52 5,76 4,63 3,85 3,01 2,78
20 10,56 9,37 5,36 4,28 3,59 2,27 1,87 1,37
25 6,33 3,76 2,63 1,79 1,53 1,03 0,96 0,89
30 3,79 2,24 1,72 1,47 0,92 0,72 0,57 0,41
35 1,82 1,66 0,91 0,82 0,75 0,52 0,45 0,32
40 1,47 0,95 0,8 0,73 0,64 0,43 0,27 0,25
45 0,84 0,81 0,75 0,65 0,45 0,24 0,25 0,25


Tabela 3.1
Zależność ilości neuronów w poszczególnych warstwach na błąd końcowy (SSE)

Wykres 3.1 Zależność ilości neuronów w poszczególnych warstwach na błąd końcowy (SSE)

S1/S2 10 15 20 25 30 35 40 45
10 94,68 95,15 97,75 98,46 99,41 99,55 99,63 99,53
15 99,41 99,53 100 100 100 100 100 100
20 99,88 100 100 100 100 100 100 100
25 100 100 100 100 100 100 100 100
30 100 99,88 100 100 100 100 100 100
35 100 100 100 100 100 100 100 100
40 100 100 100 100 100 100 100 100
45 100 100 100 100 100 100 100 100

Tabela 3.2 Zależność ilości neuronów w poszczególnych warstwach na poprawność odpowiedzi (dane w %)

Wykres 3.2 Zależność ilości neuronów w poszczególnych warstwach na poprawność odpowiedzi (dane w %)

S1/S2 10 15 20 25 30 35 40 45
10 200000 200000 200000 200000 200000 200000 200000 200000
15 200000 200000 200000 200000 200000 200000 200000 200000
20 200000 200000 200000 200000 200000 200000 200000 200000
25 200000 200000 200000 200000 200000 200000 200000 200000
30 200000 200000 200000 200000 200000 200000 200000 200000
35 200000 200000 200000 200000 200000 200000 200000 200000
40 200000 200000 200000 200000 200000 200000 200000 192691
45 200000 200000 200000 200000 200000 200000 184336 192783

Tabela 3.3 Zależność ilości neuronów w poszczególnych warstwach na ilość epok

Wykres 3.3 Zależność ilości neuronów w poszczególnych warstwach na ilość epok

Eksperyment powtórzono jeszcze trzykrotnie i otrzymano następujące wyniki.

- Druga seria eksperymentów:

S1/S2 10 15 20 25 30 35 40 45
10 64,06 48,65 35,02 26,61 16,25 15,47 13,26 10,02
15 23,54 23,42 14,06 8,25 6,63 5,27 4,13 3,34
20 9,66 6,98 4,59 2,78 2,39 2,21 2,01 1,89
25 4,41 4,2 1,56 1,92 1,23 1,19 1,1 0,92
30 5 1,34 1,83 1,15 0,95 0,79 0,54 0,41
35 0,85 1,78 1,03 0,89 0,81 0,59 0,49 0,3
40 1,7 1,13 0,83 0,75 0,63 0,45 0,26 0,26
45 1,71 0,94 0,78 0,67 0,56 0,28 0,32 0,25

Tabela 3.4 Zależność ilości neuronów w poszczególnych warstwach na błąd końcowy (SSE)

S1/S2 10 15 20 25 30 35 40 45
10 93,26 95,74 97,28 98,7 99,41 99,46 99,52 99,76
15 98,23 98,93 99,29 100 100 100 100 100
20 100 100 100 100 100 100 100 100
25 100 100 100 100 100 100 100 100
30 99,88 100 100 100 100 100 100 100
35 100 100 100 100 100 100 100 100
40 100 100 100 100 100 100 100 100
45 100 100 100 100 100 100 100 100

Tabela 3.5 Zależność ilości neuronów w poszczególnych warstwach na poprawność odpowiedzi (dane w %)

S1/S2 10 15 20 25 30 35 40 45
10 200000 200000 200000 200000 200000 200000 200000 200000
15 200000 200000 200000 200000 200000 200000 200000 200000
20 200000 200000 200000 200000 200000 200000 200000 200000
25 200000 200000 200000 200000 200000 200000 200000 200000
30 200000 200000 200000 200000 200000 200000 200000 200000
35 200000 200000 200000 200000 200000 200000 200000 200000
40 200000 200000 200000 200000 200000 200000 200000 200000
45 200000 200000 200000 200000 200000 200000 200000 194791

Tabela 3.6 Zależność ilości neuronów w poszczególnych warstwach na ilość epok

- Trzecia seria eksperymentów

S1/S2 10 15 20 25 30 35 40 45
10 67,32 45,52 36,98 29,61 20,12 19,32 16,89 14,36
15 18,92 15,82 9,42 6,52 4,82 3,65 2,92 2,56
20 11,43 9,76 6,12 5,39 3,86 2,89 1,92 1,58
25 6,82 4,92 2,74 1,56 1,49 1,28 1,02 0,37
30 3,92 2,29 1,92 1,58 0,96 0,78 0,67 0,42
35 1,72 1,69 0,81 0,78 0,72 0,68 0,37 0,29
40 1,39 0,96 0,82 0,79 0,69 0,53 0,28 0,26
45 0,92 0,84 0,74 0,69 0,57 0,29 0,25 0,25

Tabela 3.7 Zależność ilości neuronów w poszczególnych warstwach na błąd końcowy (SSE)

S1/S2 10 15 20 25 30 35 40 45
10 96,13 96,76 98,23 97,32 99,35 99,87 99,53 99,87
15 99,37 100 100 100 100 100 100 100
20 100 100 100 100 100 100 100 100
25 100 100 100 100 100 100 100 100
30 100 100 100 100 100 100 100 100
35 100 100 100 100 100 100 100 100
40 100 100 100 100 100 100 100 100
45 100 100 100 100 100 100 100 100

Tabela 3.8 Zależność ilości neuronów w poszczególnych warstwach na poprawność odpowiedzi (dane w %)

S1/S2 10 15 20 25 30 35 40 45
10 200000 200000 200000 200000 200000 200000 200000 200000
15 200000 200000 200000 200000 200000 200000 200000 200000
20 200000 200000 200000 200000 200000 200000 200000 200000
25 200000 200000 200000 200000 200000 200000 200000 200000
30 200000 200000 200000 200000 200000 200000 200000 200000
35 200000 200000 200000 200000 200000 200000 200000 200000
40 200000 200000 200000 200000 200000 200000 200000 200000
45 200000 200000 200000 200000 200000 200000 197893 194326

Tabela 3.9 Zależność ilości neuronów w poszczególnych warstwach na ilość epok

- Czwarta seria eksperymentów

S1/S2 10 15 20 25 30 35 40 45
10 65,9 56,62 41,53 32,96 18,32 16,89 14,23 9,81
15 29,64 25,92 15,82 9,53 7,23 5,14 4,89 3,96
20 9,32 7,85 4,92 3,64 2,91 2,61 1,84 1,74
25 5,16 4,96 1,64 1,82 1,14 1,03 0,95 0,82
30 5,18 1,73 1,63 1,02 0,99 0,68 0,49 0,32
35 2,01 1,29 0,94 0,78 0,69 0,58 0,51 0,42
40 1,47 1,01 0,95 0,82 0,75 0,53 0,32 0,26
45 1,66 0,88 0,78 0,63 0,52 0,41 0,32 0,25

Tabela 3.10 Zależność ilości neuronów w poszczególnych warstwach na błąd końcowy (SSE)

S1/S2 10 15 20 25 30 35 40 45
10 92,98 95,65 97,24 98,79 98,53 99,85 99,42 100
15 97,34 100 100 100 100 100 100 100
20 100 100 100 100 100 100 100 100
25 100 100 100 100 100 100 100 100
30 100 100 100 100 100 100 100 100
35 100 100 100 100 100 100 100 100
40 100 100 100 100 100 100 100 100
45 100 100 100 100 100 100 100 100

Tabela 3.11 Zależność ilości neuronów w poszczególnych warstwach na poprawność odpowiedzi (dane w %)

S1/S2 10 15 20 25 30 35 40 45
10 200000 200000 200000 200000 200000 200000 200000 200000
15 200000 200000 200000 200000 200000 200000 200000 200000
20 200000 200000 200000 200000 200000 200000 200000 200000
25 200000 200000 200000 200000 200000 200000 200000 200000
30 200000 200000 200000 200000 200000 200000 200000 200000
35 200000 200000 200000 200000 200000 200000 200000 200000
40 200000 200000 200000 200000 200000 200000 200000 200000
45 200000 200000 200000 200000 200000 200000 200000 198267

Tabela 3.12 Zależność ilości neuronów w poszczególnych warstwach na ilość epok

Dla uzyskanych wyników obliczono średnią wartość błędu końcowego SSE dla poszczególnych kombinacji wartości S1 i S2.

S1\S2 10 15 20 25 30 35 40 45
10 61,37 48,76 37,76 29,16 18,28 17,09 14,90 12,28
15 22,48 20,02 11,96 7,52 5,83 4,48 3,74 3,16
20 10,24 8,49 5,25 4,02 3,19 2,50 1,91 1,65
25 5,68 4,46 2,14 1,77 1,35 1,13 1,01 0,75
30 4,47 1,90 1,78 1,31 0,96 0,74 0,57 0,39
35 1,60 1,61 0,92 0,82 0,74 0,59 0,46 0,33
40 1,51 1,01 0,85 0,77 0,68 0,49 0,28 0,26
45 1,28 0,87 0,76 0,66 0,53 0,31 0,29 0,25

Tabela 3.13 Zależność ilości neuronów w poszczególnych warstwach na błąd końcowy (SSE)

Analizując rozkład zawarty w tabeli 3.13 zauważono, że dla skrajnych liczby neuronów (ustalonych doświadczalnie dla wyznaczonego wcześniej współczynnika uczenia) oczekiwany błąd został osiągnięty podczas każdej z prób. Można zatem stwierdzić, że optymalne parametry do rozwiązania zadanego problemu zostały eksperymentalnie wyznaczone.

Dla potwierdzenia powyższych wniosków powtórzono eksperyment dla ilości neuronów, które osiągały zadany błąd za każdym razem, dziesięciokrotnie.

L.p S1 S2 SSE Epoch %
1 45 45 0.25 197122 100
2 45 45 0.25 197276 100
3 45 45 0.25 195679 100
4 45 45 0.25 196627 100
5 45 45 0.25 199089 100
6 45 45 0.25 199204 100
7 45 45 0.25 192097 100
8 45 45 0.25 195895 100
9 45 45 0.25 197867 100
10 45 45 0.25 198864 100
ŚREDNIA 196972

Tabela 3.14 Zależność ilości neuronów w poszczególnych warstwach na błąd końcowy (SSE)

Powtórzenie badań dla jednego ustawienia parametrów potwierdziło wniosek o znalezieniu optymalnych parametrów do rozwiązania tego problemu. Maksymalna liczba epoch nie została osiągnięta podczas powtarzanych badań. Stwierdzono, że sieć poprawnie klasyfikuje pojazdy.

Wnioski

Na wstępie dobrym pomysłem okazało się znormalizowanie danych. Z krótkich testów, które niestety nie były reprezentatywne otrzymano średnio o ok. 5% krótszy czas wykonywania skryptu (przy małej ilości neuronów oraz maksymalnej ilości epok). Nie jest to duża optymalizacja, jednak w przypadku dłuższych i bardziej skomplikowanych eksperymentach może okazać się, że można zaoszczędzić bardzo dużo czasu, który poświęci się większej ilości badań.

Podczas eksperymentów odkryto, że współczynnik uczenia8 ma bezpośredni wpływ na zakres neuronów jaki można użyć w sieci. Przy lr równym 0,001 zaobserwowano graniczną wartość neuronów na poziomie ok. 30. Przy większej liczbie neuronów zaobserwowano niestabilność programu objawiającą się poprzez dążenie błędu do nieskończoności. Dlatego w badaniu przyjęto współczynnik uczenia o rząd niższy tj. 0,0001. Spowodowało to zwiększenie czasu potrzebnego na przetworzenie wszystkich danych, ale większy zakres liczby neuronów oraz większe prawdopodobieństwo na osiągnięcie błędu minimalnego.

Ze względu na dużą ilość parametrów przeznaczonych do nauki sieci (18) oraz odpowiednim ustawieniu współczynnika uczenia sieć była w stanie osiągnąć skrajne wartości przy niskim zakresie neuronów (od 10 do 45). Dzięki temu w załączonych tabelach można zaobserwować zdarzenia, gdy sieć nie nauczyła się w pełni, nauczyła się w 100% oraz sytuację gdy osiągnęła wymagany błąd. Rozpoznawanie sylwetek samochodów w oparciu o otrzymane dane było dla sieci łatwym zadaniem i radziła sobie z tym już przy bardzo małych ilościach neuronów (15). Jest to spowodowane odpowiednim dobraniem badanych obiektów (w badaniach wykorzystano dwa samochody o skrajnie odmiennych sylwetkach oraz dwa modele, które miały zbliżoną budowę).

Bibliografia

- R.Tadeusiewicz - Sieci_Neuronowe

- S. Ossowski Sieci neuronowe w ujęciu algorytmicznym WNT Warszawa 1996

- http://materialy.prz-rzeszow.pl/pracownik/pliki/34/sztuczna-inteligencja-cw9-siec-wielowarstw.pdf

- http://www.republika.pl/edward_ch/sneuro.html

- http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html


  1. Wagi początkowe z jakimi pracę rozpoczyna sieć z reguły stanowią liczby wygenerowane losowo.

  2. Proces ten nazywa się „epoką”

  3. zmienna lr

  4. SSE – ang. sum square error – suma kwadratów błędu, obliczana ze wzoru z punktu 2.2

  5. zmienna err_goal

  6. zmienna S1

  7. zmienna S2

  8. zadeklarowany w skrypcie jako lr


Wyszukiwarka

Podobne podstrony:
Rozpoznaj drzewa po ich sylwetce, spiżarka nauczyciela gimnazjum, biologia
skarga na naruszenie prawa strony do rozpoznania sprawy w po, Wzór nr 21 - skarga na naruszenie praw
learnbp rozpoznawianie zwierza Nieznany
Upoważnienie na samochód po ukraińsku 1, dokumenty firmowe
Oswiadczenie O Winie W Wypadku Samochodowym (Po Nowelizacji), Dokumenty(1)
Oswiadczenie O Winie W Wypadku Samochodowym (Po Nowelizacji)
Części Samochodu Po Angielsku
rozpoznaj forme po opisie
Informacja dla kierowców samochodów ciężarowych na 2014 rok , a poruszających się po Włoszech
Rozpoznania po lac
Jak rozpoznac czy dziecko siega po srodki odurzajace-III-1, scenariusze, tematy dla rodziców
Sprzedaż samochodu wykupionego po zakończeniu umowy leasingu, Gazeta Podatkowa
rozpoznawanie po pędach i liściach (2), !Nauka! Studia i nie tylko, Drzewoznawstwo
rozpoznawanie po pędach i liściach, !Nauka! Studia i nie tylko, Drzewoznawstwo
Naleľno˜ci wĄtpliwe w ksi©gach rachunkowych pracowniczej kasy zapomogowo-poľyczkowej, Samochód w lea

więcej podobnych podstron