´Cwiczenie 9. Systemy ekspertowe

Transkrypt

´Cwiczenie 9. Systemy ekspertowe
Ćwiczenie 9. Systemy ekspertowe
Sztuczne sieci neuronowe - sieci jednokierunkowe
1. Sztuczne sieci neuronowe
Sztuczna˛ siecia˛ neuronowa,˛ w skrócie siecia˛ neuronowa,˛ nazywa si˛e układ wzajemnie połaczonych
˛
podstawowych elementów nazywanych neuronami. Neuron
jest to element posiadajacy
˛ N wejść i jedno wyjście. Rysunek 1 przedstawia
model neuronu. Sygnał wyjściowy neuronu zależy od sygnałów wejściowych i
wyraża si˛e wzorem:
y = f(
N
X
wj xj + b)
(1)
j=1
gdzie:
y
x1 , x2 , . . . , xN
w1 , w2 , . . . , wN
f (·)
b
- sygnał wyjściowy neuronu,
- sygnały wejściowe neuronu,
- wagi neuronu,
- funkcja aktywacji neuronu,
- składnik stały (przesuni˛ecie).
Wielkość wyst˛epujaca
˛ we wzorze (1) w nawiasie, b˛edaca
˛ ważona˛ suma˛ sygnałów wejściowych i składnika stałego, nazywana jest pobudzeniem neuronu i
jest tutaj oznaczana symbolem ν.
Rys. 1. Model neuronu
1
Dla uproszczenia wzoru (1) zakłada si˛e cz˛esto istnienie dodatkowego sygnału
x0 stale równego jedności, który wchodzi do ważonej sumy z waga˛ w0 = b. Mamy
wówczas
y = f(
N
X
wj xj )
(2)
j=0
Przesuni˛ecie b można wi˛ec traktować jako zerowa˛ wag˛e neuronu.
Po wprowadzeniu zapisu wektorowego sygnałów wejściowych i wag, a mianowicie xT = [x1 , x2 , . . . , xN ], w T = [w1 , w2 , . . . , wN ], uzyskuje si˛e nast˛epujac
˛ a˛ postać wzoru:
y = f (w T x + b)
(3)
Graficznie zależność podana˛ wzorem (3) przedstawia rys. 1b.
Funkcja aktywacji neuronu może być dowolna˛ (w ogólności) nieliniowa˛ funkcja˛
przekształcajac
˛ a˛ pobudzenie neuronu ν w sygnał wejściowy y, co przedstawia si˛e
w postaci:
y = f (ν)
Przykłady funkcji aktywacji neuronu przedstawiono na rysunku 2.
2
(4)
Rys. 2. Przykłady funkcji aktywacji
W sieciach neuronowych uczonych przy użyciu metod gradientowych używa
si˛e neuronów, których funkcje aktywacji sa˛ różniczkowalne ze wzgl˛edu na ν.
Spośród funkcji podanych na powyższym rysunku cech˛e taka˛ posiadaja˛ funkcje
a), e) i f), czyli funkcja liniowa, tangens hiperboliczny i funkcja sigmoidalna.
Funkcje te charakteryzuja˛ si˛e tym, że wartości ich pochodnych w prosty sposób
zależa˛ od wartości tych funkcji.
2. Wielowarstwowa jednokierunkowa sieć neuronowa
Wielowarstwowa jednokierunkowa sieć neuronowa jest przedstawiona na rysunku 3.
Rys. 3. Wielowarstwowy perceptron
3
Struktura wielowarstwowej jednokierunkowej sieci neuronowej charakteryzuje
si˛e nast˛epujacymi
˛
cechami:
1) neurony sa˛ podzielone na P warstw,
2) sygnały wejściowe k-tej (nast˛epnej) warstwy sa˛ sygnałami wyjściowymi
k − 1 (poprzedniej) warstwy,
3) zewn˛etrzne sygnały wejściowe sa˛ podawane na wejścia neuronów warstwy
pierwszej,
4) sygnały wyjściowe warstwy P -tej (ostatniej) sa˛ sygnałami wyjściowymi
całej sieci.
Przyjmuje si˛e, że wszystkie warstwy sieci, za wyjatkiem
˛
ostatniej, nazywa si˛e
warstwami ukrytymi.
Wielowarstwowa jednokierunkowa sieć neuronowa jest nazywana również wielowarstwowym perceptronem.
Przyjmuje si˛e, że sygnał wyjściowy i-tego neuronu k-tej warstwy jest dany
wzorem:
X
Lk−1
yik
= f(
wijk yjk−1 + bki )
(5)
j=0
gdzie wijk jest waga˛ połaczenia
˛
i-tego neuronu k-tej warstwy z j-tym neuronem
k
warstwy poprzedniej, bi jest przesuni˛eciem i-tego neuronu k-tej warstwy, f k jest
funkcja˛ aktywacji neuronów k-tej warstwy, Lk jest liczba˛ neuronów w warstwie
k-tej.
Wejściami pierwszej warstwy sa˛ sygnały x1 , x2 , . . . , xN . Aby wzór powyższy
był poprawny także dla pierwszej (wejściowej) warstwy, przyjmuje si˛e, że yi0 = xi
dla i = 1, 2, . . . , N. Zapis macierzowy powyższego wzoru przedstawia postać:
y k = f (W k y k−1 + bk )
4
(6)
3. Projektowanie sieci neuronowych
Przed przystapieniem
˛
do wykorzystania sieci neuronowej do konkretnego celu,
należy ja˛ najpierw zaprojektować. Projektowanie sieci neuronowych dzieli si˛e na
dwa etapy: określenie struktury sieci neuronowej oraz uczenie sieci neuronowej.
1. Określenie struktury sieci neuronowej
Zdefiniowanie struktury sieci neuronowej polega na:
a) określeniu liczby neuronów w sieci,
b) podaniu dla każdego neuronu postaci funkcji aktywacji,
c) przedstawieniu dla każdego neuronu sygnałów wejściowych.
2. Uczenie sieci neuronowej
Uczenie sieci neuronowej polega na takim doborze wag tej sieci, aby spełniała
ona wymagania stawiane przez projektanta. W praktyce w niektórych algorytmach podczas uczenia sieci neuronowej jest możliwa modyfikacja tej struktury.
Do najpopularniejszego algorytmu uczenia sieci neuronowej należy algorytm
wstecznej propagacji (ang. backpropagation). Jego zadaniem jest taki dobór wag
neuronów sieci, aby dla danego sygnału wejściowego sieci x sygnał na jej wyjściu y P był równy sygnałowi zadanemu d. Algorytm wstecznej propagacji jest
nast˛epujacy:
˛
1) Ustaw wszystkie wagi sieci jako małe losowe liczby,
2) Podaj na wejście sieci kolejny sygnał uczacy,
˛
3) Dokonaj propagacji wprzód zgodnie z (9) wyznaczajac
˛ wszystkie sygnały
sieci,
4) Porównaj sygnał wyjścowy sieci y P z zadanym sygnałem wejściowym d,
5) Dokonaj propagacji bł˛edu wstecz,
6) Wyznacz nowe wartości wag,
7) Wróć do punktu 2.
5
4. Przebieg ćwiczenia
Skopiuj system JavaNNS z adresu http://www.-ra.informatik.uni-tuebingen.de/SNNS/.
System ten, znany pod nazwa˛ Stuttgart Neural Network Simulator, jest udost˛epniany na prawach shareware prze uniwersytet w Stuttgarcie. Działanie tego systemu wymaga instalacji j˛ezyka i systemu Java.
Uruchomienie symulatora wymaga napisania polecenia:
java -jar JavaNNS.jar
lub w środowisku Windows JavaNNS.bat.
Do systemu dołaczono
˛
manual, który zawiera szereg ważnych informacji.
A. Przykładowe uczenie sieci neuronowej
1) Przejdź do ”File/Open”
2) Wybierz letters.pat oraz letters.net z folderu Examples. Jest to plik z
siecia˛ neuronowa˛ do rozpoznawania liter (macierz 5 x 7 wejść binarnych) plik letters.net oraz zbiór uczacy
˛ letters.pat.
3) Naciśnij przycisk OK, gdy pojawi si˛e w oknie dialogowym komunikat ”Load
corresponding configuration file?”.
4) Powinna ukazać si˛e sieć neuronowa.
5) Otwórz okno logu (”View/Log”) oraz wykres bł˛edu uczenia ”View/Error
Graph”).
6) Otwórz panel sterowania ”Tools/Control Panel” oraz kliknij w ”button”
”Learning”.
6
7) Naciśnij ”button” ”Init” dla zainicjowania generatora losujacego
˛
wagi dla
poszczególnych neuronów.
8) Ustaw parametry uczenia, o ile to jest wymagane (n jest intensywnościa˛
uczenia, dmax jest maksymalnym bł˛edem, który nie ulega propagacji, Cycles
jest liczba˛ epok).
9) Zaznacz shuffle box, jeśli chcesz tasować wzorce podczas uczenia.
10) Naciśnij ”button” Learn all, co zainicjuje uczenie sieci.
11) Powinien pokazać si˛e wykres bł˛edu uczenia sieci neuronowej oraz bł˛edy te
powinny pokazać si˛e także w logu działania systemu.
Powtórz proces uczenia dla kolejnych sieci neuronowych:
a) sieci neuronowej dla kodowania i dekodowania danych. Wykorzystaj pliki
encoder.pat encoder.net;
b) sieci neuronowej do rozpoznawania pisanych znaków w postaci macierzy
24 x 24 pikseli. Wykorzystaj pliki font.pat oraz font.net.
B. Przykładowe budowanie sieci neuronowej
1) Przejdź do ”File/New” celem wygenerowania nowe sieci neuronowej.
2) Otwórz okno ”View/Network”, byś mógł widzieć sieć, która˛ budujesz.
3) Otwórz w menu ”Tools/Create/Layers” okno dialogowe dla tworzenia
warstw sieci neuronowej (patrz rys. 5).
4) Przykładowe budowanie sieci neuronowej, dla której może być użyty plik
uczacy
˛ xor.pat.
a) Napisz 1 w polu ”Width”.
b) Napisz 2 w polu ”Height”.
c) Napisz (1, 1, 1) w polach Top left position.
d) Zmień jednostk˛e typu na Input (warstwa wejściowa neuronów).
e) Upewnij si˛e, że funkcja˛ aktywacji jest Act_Logistic
oraz funkcja˛ wyjścia jest Out_Identity.
7
d) Naciśnij ”button” Create. Tworzy on pierwsza˛ warstw˛e sieci neuronowej.
e) Tworzenie warstwy ukrytej przebiega w ten sam sposób, lecz z użyciem nast˛epujacych
˛
wartości:
width = 1, height = 10, top left position = (3, 1, 1),
Unit type = Hidden.
Naciśnij klawisz Create.
f) Tworzenie warstwy wyjściowej wymaga użycia nast˛epujacych
˛
wartości:
width = 1, height = 1, top left position = (5, 1, 1),
Unit type = Output.
Naciśnij klawisz Create.
g) Zakończenie budowania sieci neuronowej potwierdź klawiszem Close.
Sieć zostaje teraz utworzona. Musi teraz być uzupełniona o połaczenia
˛
pomi˛edzy neuronami.
h) Otwórz w Tools/Create/Connections pole dialogowe Create Connection.
i) Wybierz Connect Feed-forward i naciśnij klawisz Connect. Na rysunku sieci neuronowej pojawia˛ si˛e połaczenia
˛
pomi˛edzy neuronami.
j) Naciśnij klawisz Close.
k) ZRÓB ”SAVE” DLA ZBUDOWANEJ SIECI NEURONOWEJ (File/Save
As”) jako sieci network name: andrzej.
l) Rozpocznij proces uczenia sieci używajac
˛ pliku xor.pat.
8

Podobne dokumenty