14
Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Metody sztucznej inteligencji Neuron, warstwa neuronowa, sieci neuronowe - powierzchnie odpowiedzi sieci neuronowych, Zajęcia laboratoryjne – termin T1 Materiały pomocnicze do ćwiczeń Opracowanie: Kazimierz Duzinkiewicz, dr hab. inż. Michał Grochowski, dr inż.

Politechnika Gdańska Wydział Elektrotechniki i Automatyki ... · poslin Funkcja liniowa dodatnia purelin Funkcja liniowa radbas Funkcja Gaussa (Radial Basis) satlin Funkcja liniowa

  • Upload
    others

  • View
    25

  • Download
    0

Embed Size (px)

Citation preview

Politechnika Gdańska Wydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Metody sztucznej inteligencji

Neuron, warstwa neuronowa, sieci neuronowe - powierzchnie odpowiedzi sieci neuronowych,

Zajęcia laboratoryjne – termin T1

Materiały pomocnicze do ćwiczeń

Opracowanie: Kazimierz Duzinkiewicz, dr hab. inż. Michał Grochowski, dr inż.

2

Podany niżej materiał zawiera przypomnienie wybranych fragmentów wykładu oraz dodatkowe informacje umożliwiające tworzenie struktur sztucznych sieci neuronowych w środowisku MATLAB’a z wykorzystaniem przybornika Neural Network ver. 4.0.2. W szczególności zawiera on opis podstawowych elementów neuronu, funkcje aktywacji (przejścia), opis głównych instrukcji dostępnych w przyborniku Matlaba oraz przykład utworzenia i nauczenia sieci neuronowej perceptronowej. W obecnej wersji Matlaba podstawowe funkcje i komendy tworzące sieć neuronową są inne - w znacznie większym stopniu samodzielnie (domyślnie) proponują sieć neuronową adekwatną do wykonywanego zadania. Jednak dla zrozumienia podstawowych mechanizmów rządzących sieciami neuronowymi, korzystniej jest na etapie początkowym korzystać z komend podstawowych, zamieszczonych w niniejszym materiale. Komendy z aktualnej wersji Matlaba (2012 -2013) są wymienione w Zadaniu6 instrukcji laboratoryjnej. Proszę się zapoznać z ich działaniem. Sztuczne sieci neuronowe – pojedynczy neuron Sieć neuronowa jest charakteryzowana przez:

1. funkcje według których neuron reaguje na docierające do niego pobudzenia, nazywane funkcjami pobudzania (propagacji) i funkcjami aktywacji;

2. strukturę połączeń pomiędzy neuronami, nazywaną architekturą sieci; 3. metodę określania wag tych połączeń, nazywaną algorytmem uczenia.

Sygnały

wejściowe

p1

p2

pR

.

.

.

w1,1

pj

.

.

.

w1,2

w1,j

w1,R

.

.

.

.

.

.

g()

Wagi

bs

Próg

ns f() Wyjście as

Funkcja

pobudzania (propagacji)

Funkcja

aktywacji

Sygnał

pobudzenia

Sygnał

odpowiedzi

gdzie:

R- ilość wejść, S- ilość neuronów w

warstwie,

Rys 1. Schemat sztucznego modelu neuronu.

3

Rys. 2 pokazuje jak taki neuron jest przedstawiany w dokumentacji Matlab’a wraz z przyjętymi oznaczeniami wejść, wag, progu oraz wyjścia.

Rys 2. Schemat neuronu z pojedynczym wejściem. Symbole i notacja przyjęta w Matlabie.

Dla tego przypadku wymiary macierzy opisujących neuron są następujące:

pp ; wW ; bb ; aa

W przypadku gdy na wejście neuronu podawane jest wiele sygnałów, neuron oraz jego schemat wygląda następująco:

gdzie:

R- ilość wejść,

Rys 3. Schemat neuronu z wieloma (R) wejściami.

gdzie:

R- ilość wejść,

Rys 4. Schemat neuronu z wieloma (R) wejściami. Symbole i notacja przyjęta w Matlabie.

Wejście Neuron z wieloma wejściami

Wejście Neuron z wieloma wejściami

Wejście Neuron

4

Wymiary macierzy opisujących neuron są dla tego przypadku następujące:

R

2

1

p

p

p

p ; Rwww ,, 21W ; bb ; aa

Funkcje aktywacji (przejścia) neuronu Na rysunkach Rys. 5-7 przedstawiono przykłady funkcji aktywacji, odpowiednio przekaźnikowej niesymetrycznej, liniowej oraz logarytmiczno- sigmoidalnej. Wszystkie dostępne w przyborniku instrukcje zamieszczone są w Tablicy 1.

Rys 5. Przekaźnikowa, niesymetryczna funkcja aktywacji. Gdzie: p – oznacza sygnał wejściowy do neuronu, n – oznacza sygnał pobudzenia

neuronu, a – oznacza sygnał wyjścia z neuronu, w – oznacza wartość wagi wejścia neuronu, natomiast b – oznacza wartość progu.

Rys 6. Liniowa funkcja aktywacji.

Rys 7. Logarytmiczno- sigmoidalna, niesymetryczna funkcja aktywacji.

5

Tablica 1. Funkcje aktywacji (przejścia) dostępne

w przyborniku Neural Network ver. 4.0.2, Matlaba.

Poniżej na Rys. 8 przedstawiono przykład neuronu z symetryczną funkcją aktywacji (perceptron progowy) i dwoma wejściami.

Rys 8. Neuron z przekaźnikową, symetryczna funkcją aktywacji z dwoma wejściami– perceptron progowy.

Nazwa funkcji Relacja wejście/wyjście Symbol Funkcja w

Matlabie

przekaźnikowa unipolarna

(niesymetryczna)

przekaźnikowa bipolarna

(symetryczna)

liniowa

liniowa z nasyceniem

niesymetryczna

liniowa z nasyceniem

symetryczna

sigmoidalna logarytmiczna

unipolarna (niesymetryczna)

sigmoidalna tangensa

hiperbolicznego bipolarna

(symetryczna)

liniowa dodatnia

współzawodnictwa

(rywalizacji) a=1 neuron z max n

a=0 wszystkie inne neurony

Wejścia Neuron dwu-wejściowy

6

Wymiary macierzy dla tego neuronu są następujące:

2

1

p

pp ; 2,11,1 wwW ; bb ; aa

Sztuczne sieci neuronowe – warstwa neuronów Na rysunkach Rys 9 i 10 zilustrowano pojedynczą warstwę sieci neuronowej, wraz z opisem jej parametrów.

gdzie:

R- ilość wejść, S- ilość neuronów w warstwie,

Rys 9. Schemat warstwy sieci neuronowej.

Rys 10. Neuron z przekaźnikową, niesymetryczna funkcją aktywacji – perceptron

progowy. Symbole i notacja przyjęta w Matlabie.

Wejścia Sieć złożona z S neuronów

Wejście Warstwa z funkcją przekaźnikową

7

Wymiary macierzy dla warstwy neuronów są następujące:

R

2

1

p

p

p

p

R,S2,S1,S

R,22,21,2

R,12,11,1

www

www

www

W

S

2

1

b

b

b

b

S

2

1

a

a

a

a

Sztuczne sieci neuronowe – siec wielowarstwowa Na Rys 11 i 12 zilustrowano wielowarstwową (trójwarstwową) jednokierunkową sieć neuronową. Jak można zauważyć wyjścia każdej z warstw sieci neuronowej stają się wejściami kolejnej z warstw.

gdzie:

R- ilość wejść, s

1- ilość neuronów w warstwie pierwszej,

s2- ilość neuronów w warstwie drugiej,

s3- ilość neuronów w warstwie trzeciej,

Rys 11. Schemat wielowarstwowej, jednokierunkowej sieci neuronowej.

Wejścia Pierwsza warstwa Druga warstwa Trzecia warstwa

8

gdzie:

R- ilość wejść, S

1- ilość neuronów w warstwie pierwszej,

S2- ilość neuronów w warstwie drugiej,

S3- ilość neuronów w warstwie trzeciej,

Rys 12. Schemat wielowarstwowej, jednokierunkowej sieci neuronowej. Symbole i

notacja przyjęta w Matlabie.

Wejście Pierwsza warstwa Druga warstwa Trzecia warstwa

9

Podstawowe instrukcje przybornika Matlaba Network Toolbox ver. 4.0.2 Poniżej w Tablicy 2 przedstawiono ważniejsze instrukcje zawarte w przyborniku Matlaba, Neural Network Toolbox ver. 4.0.2. Więcej instrukcji można uzyskać po wpisaniu polecenia help nnet, natomiast szczegóły konkretnej instrukcji, takie jak: zastosowanie, składnia, algorytm działania, przykład zastosowania, można uzyskać poleceniem help dowolna instrukcja np. help newp.

Tablica 2 Instrukcje przybornika Matlaba, Neural Network Toolbox ver. 4.0.2

Instrukcja Krótki opis instrukcji

Tworzenie sieci network tworzy dowolną sieć neuronową (użytkownika)

newc tworzy warstwę z funkcją współzawodnictwa

newcf tworzy kaskadową jednokierunkową sieć wielowarstwową uczoną metodą propagacji wstecznej błędu

newff tworzy kaskadową jednokierunkową sieć wielowarstwową uczoną metodą propagacji wstecznej błędu

newfftd tworzy kaskadową jednokierunkową sieć wielowarstwową z wejściami opóźniającymi, uczoną metodą propagacji wstecznej błędu

newlin tworzy warstwę z liniową funkcją aktywacji

newlind tworzy warstwę z liniową funkcją aktywacji

newp tworzy perceptron progowy

Funkcje pobudzania sieci netprod Funkcja iloczynu wejść

netsum Funkcja sumy wejść

Funkcje inicjalizujące parametry sieci initlay Funkcja inicjalizująca wagi i progi sieci za pomocą metody inicjalizacji przypisanej dla

każdej z warstw tej sieci sieci

Funkcje określające jakość działania sieci mae Funkcja określająca średni błąd bezwzględny

mse Funkcja określająca błąd średniokwadratowy

msereg Funkcja określająca błąd średniokwadratowy i średnią kwadratów wartości wag i progów

sse Funkcja określająca sumę błędów średniokwadratowych

Metody uczenia

learncon metoda uczenia

learngd metoda uczenia Gradient descent

learngdm metoda uczenia Gradient descent with momentum

learnis metoda uczenia LVQ2 Instar

learnlv1 metoda uczenia LVQ1

learnlv2 metoda uczenia LVQ2

learnos metoda uczenia Outstar

learnp zmiany wag i progów przy pomocy metody Rosenblatt’a

learnpn zmiany wag i progów przy pomocy znormalizowanej metody uczenia perceptronu

learnwh zmiany wag i progów przy pomocy metody Widrowa-Hoffa

Obróbka danych wejściowych i wyjściowych

prestd normalizuje dane tak aby miały odchylenie standardowe równe 1 oraz średnią równą 0

poststd odwraca działanie instrukcji prestd

trastd przekształca dane do postaci adekwatnej do tych wygenerowanych przez funkcję prestd

premnmx normalizuje dane tak aby ich maksymalna i minimalna wartość wynosiła odpowiednio 1 oraz -1

postmnmx odwraca działanie instrukcji premnmx

tramnmx przekształca dane do postaci adekwatnej do tych wygenerowanych przez funkcję premnmx

10

prepca analiza danych wejściowych metodą PCA (Principal Component Analysis)

trapca przekształca dane do postaci adekwatnej do tych wygenerowanych przez funkcję prepc

postreg analiza mtodą regresji liniowej jakości nauczania sieci

Metody uczenia trainb Proces zmian wag i progów (uczenie) w trybie “wsadowym”

trainbfg Proces zmian wag i progów (uczenie) metodą propagacji wstecznej quasi-Newtona

trainbr Proces zmian wag i progów (uczenie) metodą regularyzacji Bayesiana

trainc Cyclical order incremental training w/learning functions

traincgb Proces zmian wag i progów (uczenie) metodą propagacji wstecznej Powell-Beale

traincgf Proces zmian wag i progów (uczenie) metodą propagacji wstecznej Fletcher-Powella

traincgp Proces zmian wag i progów (uczenie) metodą propagacji wstecznej Polak-Ribiere’a

traingd Proces zmian wag i progów (uczenie) metodą propagacji wstecznej Gradient descent

traingdm Proces zmian wag i progów (uczenie) metodą propagacji wstecznej Gradient descent with momentum

traingda Proces zmian wag i progów (uczenie) metodą propagacji wstecznej Gradient descent z adaptacją współczynnika szybkości uczenia

traingdx Proces zmian wag i progów (uczenie) metodą propagacji wstecznej Gradient descent with momentum z adaptacją współczynnika szybkości uczenia

trainlm Proces zmian wag i progów (uczenie) metodą propagacji wstecznej Levenberg-Marquardta

trainoss Proces zmian wag i progów (uczenie) metodą propagacji wstecznej One step secant

trainrp Proces zmian wag i progów (uczenie) metodą propagacji wstecznej Resilient (Rprop)

trainscg Proces zmian wag i progów (uczenie) metodą propagacji wstecznej Scaled conjugate gradient

Funkcje aktywacji compet Funkcja współzawodnictwa

hardlim Funkcja przekaźnikowa unipolarna (niesymetryczna)

hardlims Funkcja przekaźnikowa bipolarna (symetryczna)

logsig Funkcja sigmoidalna logarytmiczna unipolarna (niesymetryczna)

poslin Funkcja liniowa dodatnia

purelin Funkcja liniowa

radbas Funkcja Gaussa (Radial Basis)

satlin Funkcja liniowa z nasyceniem niesymetryczna

satlins Funkcja liniowa z nasyceniem symetryczna

tansig Funkcja sigmoidalna tangensa hiperbolicznego bipolarna (symetryczna)

Funkcje ułatwiające analizę

errsurf Powierzchnia błędu neuronu z pojedynczym wejściem

maxlinlr Maksymalny współczynnik szybkości uczenia dla sieci liniowej

Funkcje inicjalizujące parametry warstwy

initnw Funkcja inicjalizująca wagi i progi warstwy za pomocą metody Nguyen-Widrow’a

initwb Funkcja inicjalizująca wagi i progi warstwy za pomocą metody przypisanej dla tej sieci sieci

Operacje na wektorach

cell2mat zamienia elementy tablicy blokowej (cell array) w jedną macierz

concur tworzy równoważne wektory progów

con2seq zamienia elementy wektora na tożsamą sekwencję wektorów

combvec tworzy wszystkie możliwe kombinacje wektorów

mat2cell zamienia macierz w tablicę blokową

minmax wyznacza zakresy (min i max) wierszy macierzy

nncopy tworzy kopie macierzy (w pionie i w poziomie)

normc normalizuje kolumny macierzy do zakresu [-1; 1]

normr normalizuje wiersze macierzy do zakresu [-1; 1]

seq2con zamienia sekwencję wektorów na tożsame wektory

sumsqr wyznacza sumę kwadratów elementów macierzy

Operacje na sieciach

sim symuluje sieć neuronową

init inicjalizuje sieć neuronową

11

adapt uczenie adaptacyjne sieci neuronowej

train uczenie sieci neuronowej

Wykresy

hintonw wykreśla wagi neuronów na „grafie Hintona”

hintonwb wykreśla wagi i progi neuronów na „grafie Hintona”

plotes wykreśla powierzchnię błędu dla neuronu z jednym wejściem

plotpc wykreśla proste decyzyjne na wykresie plotpv problemu klasyfikacji przy użyciu perceptrona

plotpv wykreśla wejścia oraz wartości docelowe zagadnienia klasyfikacji przy użyciu perceptrona

plotep pokazuje aktualną wartość wag i progów na powierzchni błędu wykreślonej poleceniem plotes

plotperf wykreśla jakość odpowiedzi sieci w trakcie uczenia

plotv wykreśla wektory w postaci linii

plotvec wykreśla wektory rozróżniając je kolorami

Inne

nntool Graficzny Interfejs Użytkownika dla przybornika Neural Network Toolbox

gensim Generuje sieć neuronową do środowiska Simulink

12

Przykład utworzenia i nauczenia sieci neuronowej, perceptronowej. Poniżej przedstawiono podstawowe komendy służące do utworzenia sieci neuronowej na przykładzie sieci perceptronowej. Proces tworzenia innych sieci jest podobny, zmieniają się jedynie parametry i niektóre instrukcje. Do utworzenia sieci perceptronowej służy instrukcja newp. Składnia siec = newp(pr,s,tf,lf) Parametrami tej instrukcji są:

PR – macierz o wymiarach Rx2 minimalnych i maksymalnych wartości R elementów macierzy wejść.

S - Liczba neuronów. TF – funkcja aktywacji (przejścia), domyślnie = 'hardlim'. LF – metoda uczenia, domyślnie = 'learnp'.

Nie jest konieczne podawanie parametrów TF oraz LF. Efektem wykonania tej instrukcji jest utworzenie sieci perceptronowej. Pod nazwą siec zostaje utworzona struktura w której zapisane są wszelkie informacje na temat utworzonej sieci.

Inicjalizacja sieci

Instrukcja newp inicjalizuje również (nadaje) początkowe (zerowe) wartości wag i progów (metodą ). Wagi łączące wejścia z siecią są zapisane w strukturze siec.IW. Progi sieci są zapisane w strukturze siec.b. Możemy, również samodzielnie dobierać wartości tych elementów, np.: siec.IW{1,1}=[2 4] siec.b{1}=[5] Aby przywrócić domyślne ustawienia wag i progów (inicjalizacja parametrów sieci) należy użyć np. instrukcji init. siec = init(siec); Symulacja sieci Aby zbadać odpowiedź sieci na wektor wejść musimy posłużyć się instrukcją sim. Składnie tej instrukcji uzyskamy po wpisaniu w oknie głównym Matlaba help sim, przeważnie wystarczające jest podanie w składni instrukcji sieci jaką chcemy symulować oraz wskazaniu wektora wejść, w tym przypadku P: Y = sim(siec,P); Symuluje odpowiedź sieci siec na wejście P

13

Zdefiniujmy teraz wektor wejściowy P jako: P = [0 0 1 1; 0 1 0 1]; Oraz wektor wzorców T: T = [0 1 1 1]; Rezultatem jest odpowiedź sieci: Y = 1 1 1 1 który nie jest zgodny z oczekiwaniami (wzorcami T). Aby osiągnąć porządane wartości wyjściowe (zgodne ze wzorcem) należy odpowiednio dobrać wartości wag i progów, czyli nauczyć sieć poprawnie odpowiadać. Przykład Zaprojektuj sieć perceptronową złożoną z jednego neuronu o dwóch wejściach. Pierwsze wejście powinno być w zakresie [0 ; 1] natomiast drugie wejście w zakresie [-2 ; 2]. Zapisz projektowaną strukturę pod nazwą siec. W odpowiedzi na wcześniej zdefiniowany wektor P, sieć powinna odpowiadać zgodnie z wektorem T. siec = newp([0 1; -2 2],1); Sprawdźmy odpowiedzi sieci na wektor P: Y = sim(siec,P) Y = 1 1 1 1 Uczenie sieci Jak widzimy sieć nie odpowiada zgodnie z wektorem T. Aby doprowadzić do poprawnych odpowiedzi, musimy zmienić wartości wag i progów, samodzielnie lub w procesie uczenia. Proces uczenia wywołujemy przy pomocy instrukcji train. Instrukcja ta wywołuje domyślną dla danej sieci metodę uczenia (modyfikacji wag i progów) tak aby dopasować je do wektora T. Więcej opcji instrukcji train, po wpisaniu help train. siec = train(siec,P,T); Po procesie uczenia, sprawdźmy ponownie odpowiedzi sieci. Y = sim(siec,P)

14

Y = 0 1 1 1 Jak widzimy sieć odpowiedziała poprawnie. To kończy zadanie. Możemy również sprawdzić przy jakich wartościach wag i progów zostało to osiągnięte: siec.IW{1,1} siec.IW{1,1} =[1 1] siec.b{1} =[-1] Zmiana domyślnych parametrów sieci Po utworzeniu dowolnej sieci, przypisane są im domyślnie różne parametry takie jak np. metoda uczenia, metoda inicjalizacji, metody badania jakości działania sieci, przebieg procesu uczenia sieci i wiele innych. Dla ich przeglądnięcia należy w oknie głównym Matlaba podać nazwę utworzonej sieci. Parametry te możemy również zmieniać. Dokonujemy tego zmieniając przy pomocy odpowiednich komend dowolne parametry. Poniżej zamieszczono podstawowe z nich (dla sieci perceptronowej utworzonej komendą newp). Funkcje: adaptFcn: 'trains' initFcn: 'initlay' performFcn: 'mae' trainFcn: 'trainc' Parametry: adaptParam: .passes initParam: (none) performParam: (none) trainParam: .epochs, .goal, .show, .time Zmiana domyślnych parametrów sieci (wartości przykładowe): net.trainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.epochs = 300; net.trainParam.goal = 1e-5;