• Nie Znaleziono Wyników

Sieci neuronowe

N/A
N/A
Protected

Academic year: 2021

Share "Sieci neuronowe"

Copied!
9
0
0

Pełen tekst

(1)

Sieci neuronowe

Marcin Orchel

1 Wstęp

1.1 Model neuronu

n - liczba wejść w neuronie wektor wejściowy x = [x1, . . . , xn]T, wagi neuronu w = [w0, . . . , wn]T. Zauważmy, że rozmiar wektora wagowego jest identyczny jak rozmiar wektora wejściowego, y - wartość wyjściowa neuronu, w0 - wartość progowa neuronu, f - funkcja aktywacji. Mamy

y = f (s) (1)

gdzie

s =

n

X

i=0

xiwi (2)

Zakładamy, że wartość sygnału x0 jest równa 1. Jest to przydatne do tego aby otrzymać wyraz wolny b. Waga w0, czyli wyraz wolny nazywamy progiem.

1.1.1 Perceptron

W perceptronie funkcja f ma szczególną postać

f (s) = 1 (3)

gdy s > 0 oraz

f (s) = −1 (4)

gdy s ≤ 0. Powyższy opis to nic innego jak ogólny opis klasyfikatora liniowego.

Częścią modelu perceptronu jest jego uczenie, czyli znalezienie wag w. Wybieramy losowo wagi początkowe perceptronu. Podajemy na wejście wektor uczący x, oblicza- my wartość wyjściową y, porównujemy wartość wyjściową ze wzorcową. Dokonujemy modyfikacji wag, jeżeli y(x(t)) 6= d(x(t)) to

wi(t + 1) = wi(t) + d (x (t)) xi(t) (5) jeżeli y(x(t)) = d(x(t)) to

wi(t + 1) = wi(t) (6)

(2)

Alg. 1 Perceptron k = 0

powtórz

for i = 1 to l

jeśli yi( ~wk· ~xi+ bk) ≤ 0

~

wk+1= ~wk+ ηyi~xi bk+1 = bk+ ηyiR2

dopóki nie będzie żadnych błędów w pętli zwróć (wk, bk)

Alg. 2 Perceptron w postaci dualnej k = 0

powtórz

for i = 1 to l jeśli yi Pl

j=1

αjyj~xj· ~xi+ bk

!

≤ 0 αi= αi+ 1

bk+1 = bk+ yiR2

dopóki nie będzie żadnych błędów w pętli zwróć (~α, bk)

Wracamy do podawania na wejściu wektora uczącego. Przechodzimy w ten sposób przez cały zbiór uczący (epoka). Obliczamy błąd dla całego zbioru uczącego, jeśli jest mniej- szy od założonej tolerancji wychodzimy. Można pokazać, że dla danych separowalnych liniowo ten algorytm jest zbieżny.

Mamy parametr η ∈ R+, które jest nazywany współczynnikiem uczenia, a także R = max1≤i≤lkxik, k to liczba błędów. Algorytm pokazany jest w Alg. 1.

W postaci dualnej wektor wagowy może być zapisany jako:

~ w =

l

X

i=1

αiyi~xi

Algorytm pokazany jest w Alg. 2. Wartość α dla konkretnego punktu treningowego oznacza jak często ten punkt był błędnie klasyfikowany.

1.1.2 Model Adaline

Porównujemy sygnał wzorcowy d z sygnałem s na wyjściu części liniowej neuronu. A więc neuron zwraca jako odpowiedź s, dlatego możemy go użyć do metod regresji. Można go również użyć do metod klasyfikacji, ale podczas testowania należy użyć funkcji f takiej jak w perceptronie. Możemy wyobrazić sobie ten przypadek, tak że mamy funkcje wielowymiarową której wartościami mogą być -1 lub 1, i naszym celem jest regresja tej funkcji funkcją liniową. Błąd dany jest wzorem d − s, zadanie minimalizacji sprowadza

(3)

się do minimalizacji kwadratu błędu Q (w) = 1

2ε2 = 1 2 d −

n

X

i=0

wixi

!2

(7) Jest to funkcja różniczkowalna i możemy użyć metody największego spadku. Wagi mo- dyfkuje się następująco

wi(t + 1) = wi(t) − η∂Q (wi)

∂wi (8)

gdzie η to współczynnik uczenia. Mamy

∂Q (wi)

∂wi

= ∂Q (wi)

∂s

∂s

∂wi

(9) Mamy także

∂s

∂wi

= xi (10)

oraz

∂Q (wi)

∂s = − (d − s) (11)

Otrzymujemy

wi(t + 1) = wi(t) + ηδxi (12)

gdzie δ = d − s. Powyższa reguła nazywana jest regułą delta.

1.1.3 Model neuronu sigmoidalnego

Możemy zauważyć, że w przypadku klasyfikacji dla modelu Adaline lepszym dopaso- waniem do funkcji klasyfikacji niż funkcja liniowa będzie funkcja która jest ograniczona w przedziale -1, 1, np. tgh(x)http://www.wolframalpha.com/input/?i=tanh%28x%29.

Funkcja aktywacji jest unipolarna lub bipolarna odpowiednio f (x) = 1

1 + e−βx (13)

oraz

f (x) = tgh (βx) = 1 − eβx

1 + e−βx (14)

Funkcja aktywacji jest różniczkowalna pochodne wynoszą odpowiednio

f0(x) = βf (x) (1 − f (x)) (15)

f0(x) = β1 − f2(x) (16)

Sygnał wyjściowy dany jest wzorem y (t) = f

n

X

i=0

wi(t) xi(t)

!

(17)

(4)

Miara błędu jest zdefiniowana

Q (w) = 1

2 d − f

n

X

i=0

wixi

!!2

(18) Wyprowadzenie

wi(t + 1) = wi(t) − η∂Q (wi)

∂wi (19)

∂Q (wi)

∂wi

= ∂Q (wi)

∂s

∂s

∂wi

(20)

∂s

∂wi

= xi (21)

∂Q (wi)

∂s = − (d − f (s)) f0(s) (22)

Oznaczmy

δ = − (d − f (s)) f0(s) (23)

Otrzymujemy

wi(t + 1) = wi(t) − ηδxi= wi(t) + η (d − f (s)) f0(s) xi (24) Model neuronu Hebba. Modyfikacja wag

wi(t + 1) = wi(t) + ∆wi (25)

gdzie ∆wi = ηyxi. Nie ma tutaj wartości wzorcowej, więc jest to uczenie bez nauczyciela.

Wersja z nauczycielem ∆wi= ηxid

2 Sieci jednokierunkowe wielowarstwowe

Mamy co najmniej dwie warstwy: wejściową i wyjściową. Między nimi znajdują się war- stwy ukryte. Sygnały przekazywane są między neuronami z różnych warstw, nie mogą być przekazywane między neuronami z tej samej warstwy. Sygnały przekazywane są w kierunku warstwy wyjściowej (sieć jednokierunkowa).

2.1 Wsteczna propagacja błędów

Gdy mamy warstwę ukrytą problem jest taki, że nie znamy prawidłowej wartości na wyjściu neuronów z warstwy ukrytej, więc nie wiemy jak wyliczyć modyfikacje wag.

Algorytm wstecznej propagacji błędów. Tworzymy wektor wszystkich wartości wagowych ze wszystkich neuronów, funkcja błędu to Q(w). Będziemy minimalizować funkcję Q.

Rozwijamy funkcję Q w szereg Taylora

Q (w + p) = Q (w) + [g (w)]T p + 0, 5pTH (w) p + . . . (26)

(5)

gdzie g (w) to wektor gradientu, czyli g (w) =

∂Q

∂w1

, . . . , ∂Q

∂wn

T

(27) H (w) to hesjan

H (w) =

2Q

∂w1∂w1 . . . ∂w2Q

1∂wn

... ...

2Q

∂wn∂w1 . . . ∂w2Q

n∂wn

(28)

Wagi modyfikujemy następująco:

w (t + 1) = w (t) + η (t) p (t) (29) Jak wyznaczyć wektor w tak aby błąd Q malał czyli Q(w(t+1)) < Q(w(t)). Ograniczymy się do dwóch pierwszych składników Q(w+p). Wartość Q(w+p) traktujemy jako wartość Q w kolejnym kroku, a więc Q(w + p) ma być mniejsze od Q(w). Czyli

g (w (t))T p (t) < 0 (30)

Warunek ten jest spełniony przykładowo dla

p (t) = −g (w (t)) (31)

Po podstawieniu otrzymujemy

w (t + 1) = w (t) − ηg (w (t)) (32)

Jest to reguła największego spadku.

Mamy daną sieć neuronową wielowarstwową. Mamy L warstw. W każdej warstwie znajduje się Nk neuronów, gdzie k = 1, . . . , L. Sieć ma N0 wejść, to znaczy wektor danymi ma wymiar N0, i zapisywany jest jako

x = [x1(t) , . . . , xN0(t)]T (33) Sygnał wyjściowy i-tego neuronu w k-tej warstwie to y(k)i (t). Do tego neuronu i każdego z tej samej warstwy podawany jest wektor wejściowy

x(k)(t) =hx(k)0 (t) , . . . , x(k)N

k−1(t)iT (34)

gdzie x(k)0 (t) = 1. Wektor wagowy i-tego neuronu w warstwie k oznaczamy jako wi(k)(t) =hwi,0(k)(t) , . . . , wi,N(k)

k−1(t)iT (35)

Możemy rozwinąć zapis sygnału wyjściowego i-tego neuronu w warstwie k jako yi(k)= fs(k)i (t) (36)

(6)

gdzie

s(k)i (t) =

Nk−1

X

j=0

wi,j(k)(t) x(k)j (t) (37) Cała sieć ma Nl sygnałów wyjściowych. Porównujemy je z sygnałami wzorcowymi d.

Błąd na wyjściu sieci Q definiujemy jako

Q (t) =

NL

X

i=1

ε(L)i 2(t) =

NL

X

i=1

d(L)i (t) − yi(L)(t)2 (38)

Teraz wyliczamy zmianę wag

wij(k)(t + 1) = wij(k)− η ∂Q (t)

∂wij(k)(t)

(39)

Możemy zapisać

∂Q (t)

∂w(k)ij (t)

= ∂Q (t)

∂s(k)i (t)

∂s(k)i (t)

∂wij(k)(t)

= ∂Q (t)

∂s(k)i (t)

x(k)j (t) (40)

Oznaczamy

δi(k)(t) = −1 2

∂Q (t)

∂s(k)i (t)

(41) otrzymujemy zatem

∂Q (t)

∂wij(k)(t)

= −2δi(k)(t) x(k)j (t) (42) i zmiana wag wygląda następująco

w(k)ij (t + 1) = w(k)ij (t) + 2ηδi(k)(t) x(k)j (t) (43) Sposób wyliczenia δi(k). Dla warstwy ostatniej

δi(L)(t) = −1 2

∂Q (t)

∂s(L)i (t)

= −1 2

PNm=1L Q(L)

2

m (t)

∂s(L)i (t)

= −1 2

∂Q(L)

2

i (t)

∂s(L)i (t)

= (44)

−1 2

d(L)i (t) − yi(L)(t)2

∂s(L)i (t)

= Q(L)i (t)∂y(L)i (t)

∂s(L)i (t)

= Q(L)i (t) f0s(L)i (t) (45) Dla dowolnej warstwy k 6= L otrzymujemy

δi(L)(t) = −1 2

∂Q (t)

∂s(k)i (t)

= −1 2

Nk+1

X

m=1

∂Q (t)

∂s(k+1)m (t)

∂s(k+1)m (t)

∂s(k)i (t)

= (46)

(7)

Nk+1

X

m=1

δ(k+1)m (t) w(k+1)mi (t) f0s(k)i (t)= f0s(k)i (t)

Nk+1

X

m=1

δ(k+1)m (t) wmi(k+1)(t) (47) Definiujemy błąd w wersji k bez ostatniej jako

ε(k)i (t) =

Nk+1

X

m=1

δm(k+1)(t) wmi(k+1)(t) (48)

dla k = 1, . . . , L − 1. Otrzymujemy

δi(L)(t) = ε(k)i (t) f0s(k)i (t) (49) Zauważmy, że wartość δ w warstwie k zależy od tej wartości w warstwie k + 1 dlatego błąd najpierw obliczany jest w ostatniej warstwie i propagowany z powrotem.

Wyróżniamy przyrostowe uaktualnianie wag oraz kumulacyjne uaktualnianie wag. W tym drugim błędy są sumowane dla wszystkich punktów i dopiero do obliczeniu błędów dla wszystkich punktów zmieniane są wagi.

Algorytm wstecznej propagacji błędów z członem momentum. Modyfikujemy zmianę wag

w(k)ij (t + 1) = wij(k)(t) + 2ηδ(k)i (t) x(k)j (t) + αwij(k)(t) − wij(k)(t − 1) (50) 2.2 Autoencoder

Składa się z enkodera i dekodera. Służy m.in. do kompresji danych. Liczba neuronów w warstwie ukrytej enkodera jest mniejsza niż wymiarowość wejścia. A liczba neuronów w dekoderze jest identyczna jak wymiarowość wektora wejściowego. Zadaniem jak takie wytrenowanie sieci aby uzyskać jak najbardziej zbliżony wektor xna wyjściu do wektora wejściowego x. Wyjście z warstwy ukrytej jest skompresowanym wejściem. Dekompresja polega na podaniu skompresowanych danych na wejście tylko do warstwy wyjściowej.

Gdy warstwa ukryta ma r neuronów, to zdjęcie jest kompresowane do r liczb.

3 Zadania

3.1 Zadania na 3.0

Napisać skrypt w R. W skrypcie

• wykonać aproksymację funkcji sin(x) na przedziale [0, 2π]

• wyświetlić sieć neuronową

• wykonać klasyfikację na wybranych danych rzeczywistych siecią neuronową wielo- warstową z wsteczną propagacją błędów

• wykonać kompresję obrazów za pomocą autoenkoderów

(8)

• przetestowanie różnej liczby warstw sieci oraz różnej liczby neuronów

• sprawdzić na wolframalpha.com jaka jest wartość przewidywana dla sieci z jednym neuronem dla x = 1

• wyświetlić na wolframalpha.com funkcję predykcji dla 1 neuronu, a także dla 3 neuronów

Wskazówki do R

• w poleceniu neuralnet można testować również sieci z wieloma warstwami ukrytymi

• aby była brana pod uwagę funkcja aktywacji w poleceniu neuralnet należy ustawić parametr linear.output na false, w przeciwnym razie na wyjściu otrzymujemy tylko iloczyn skalarny

• wyraz wolny jest dodawany do iloczynu skalarnego

• http://search.r-project.org/library/neuralnet/html/neuralnet.html

• https://www.rdocumentation.org/packages/autoencoder/versions/1.1/topics/

autoencode Wskazówki

• http://www.mathworks.com/help/nnet/gs/fit-data-with-a-neural-network.

html

• przykładowe zbiory danychhttp://www.mathworks.com/help/nnet/gs/neural- network-toolbox-sample-data-sets.html

• http://www.mathworks.com/matlabcentral/fileexchange/35364-fast-multilayer- neural-network-training/content/demo.m

• http://www.mathworks.com/help/nnet/gs/classify-patterns-with-a-neural- network.html

• http://www.mathworks.com/help/nnet/ug/adaptive-neural-network-filters.

html

3.2 Zadania na 4.0

• wykonać klasyfikację na wybranych danych rzeczywistych siecią neuronową wielo- warstową z członem momentum

Wskazówki:

• http://www.mathworks.com/help/nnet/examples/training-a-deep-neural-network- for-digit-classification.html

(9)

3.3 Zadania na 5.0

• przetestować sieć konwolucyjną

• przetestować algorytm Levenberga-Marquardta Wskazówki:

• http://www.mathworks.com/help/nnet/ref/trainlm.html

• http://yann.lecun.com/exdb/mnist/

• http://www.mathworks.com/matlabcentral/fileexchange/24291-cnn-convolutional- neural-network-class

Cytaty

Powiązane dokumenty

Żeby w informatyce wykorzystać potencjał funkcjonalny neuronu oraz całej ich sieci (grafu), zwanych często sieciami neuronowymi, trzeba opracować uproszczony model działania

ANN, sztuczne sieci neuronowe – liczne zastosowania techniczne, modele funkcji mózgu, neurony impulsujące lub progowe3. PDP, Parallel Data Processing, czyli

Ponieważ grzyb ten cechuje się bardzo specyficzną wonią, której źródłem jest ponad 300 różnych związków zapachowych, także siarkowych, jedynie wytrawny nos grzybiarza,

W matematyce natomiast, akceptując osłabiony logicyzm, uznawał możliwość sprowadzenia jej pojęć (pierwotnych) do pojęć logicznych - przy niesprowadzalności

„Nie mogłem nigdy Pani spotkać, dawno Pani odeszła Na szczęście dusza jest wieczna i wciąż tu mieszka Kiedyś przyszła Pani do mnie, roześmiała moje usta. Delikatna,

Dla operatorów samosprzężonych obraz numeryczny jest rzeczywisty, jego kresy należą do widma, widmo zawiera się w domknięciu ob- razu numerycznego, więc dla operatora

Choć prawa kobiet są splecione z prawami osób z niepełnosprawnościami, to opisywana w tej książce grupa – kobiety z niepełnosprawnością intelektualną – jest niewidzialna,

5. Łukasik S., Petkowicz H., Hanisz J., Dobrowolska H., Karaszewski S., Straburzyńska J., Witkowska E., Wesoła szkoła. Karty pracy ucznia. Łukasik S., Petkowicz H., Dobrowolska