lab6 Sztuczne sieci neuronowe


Katedra
Podstaw
Konstrukcji
Maszyn
Wydział
Mechaniczny
Technologiczny
Metody Sztucznej
Politechnika
Inteligencji
ÅšlÄ…ska
Rok akademicki 2009/10
Instrukcja do ćwiczeń laboratoryjnych
Laboratorium 5
Temat
Sztuczne sieci neuronowe
Opracował: dr inż. Piotr Przystałka
ul. Konarskiego 18a
44-100 Gliwice
tel. 237 1467
fax. 237 1360
http://kpkm.polsl.pl
Gliwice 2010-04-26 - 1/19 -
1. Cel laboratorium
Celem zajęć laboratoryjnych jest nabycie praktycznych umiejętności rozwiązywania zadań
aproksymacji funkcji nieliniowych oraz klasyfikacji wzorców z zastosowaniem sztucznych sieci
neuronowych o strukturach jednokierunkowych. W głównej mierze tematyka zajęć dotyczy
takich zagadnień jak: przygotowanie wzorców trenujących i testowych, dobór struktury sieci
neuronowej, dobór typu algorytmu trenującego i jego parametrów.
2. Wprowadzenie
Inspiracją dla powstania dziedziny sztucznych sieci neuronowych był układ nerwowy istot ży-
wych, który składa się z wzajemnie połączonych komórek nerwowych zwanych neuronami.
Sztuczna sieć neuronowa to uproszczony model biologicznego systemu nerwowego. Sieć neu-
ronowa składa się z dużej liczby elementów przetwarzających sygnały - tzw. sztucznych neu-
ronów. Głównymi zaletami sieci neuronowych są: możliwość adaptacji, szybkość przetwarzania
danych (również dużych zbiorów danych), możliwość odwzorowania zależności silnie nielinio-
wych, prostota implementacji. Do najważniejszych wad tej techniki należą: potrzeba zgroma-
dzenia odpowiednio reprezentatywnego zbioru przykładów uczących i trudność interpretacji
uzyskanego modelu (aproksymatora, klasyfikatora). Wyróżnia się trzy podstawowe klasy sieci
neuronowych: sieci jednokierunkowe (sygnał przepływa w jednym kierunku), sieci rekurencyjne
(ze sprzężeniami zwrotnymi), sieci komórkowe (ze sprzężeniami wzajemnymi w najbliższym
otoczeniu neuronu). Istnieje wiele rodzajów struktur sieci należących do wymienionych wcze-
śniej klas. Najczęściej stosowane w praktyce są takie sieci neuronowe jak: wielowarstwowy
perceptron, sieć o radialnych funkcjach bazowych, sieci rekurencyjne Jordana i Elmana, sieć
lokalnie rekurencyjna (złożona z neuronów dynamicznych), samoorganizująca sieć Kohonena,
rozmyta sieć Takagi-Sugeno-Kanga.
2.1. Model neuronu
Podstawowym elementem sztucznej sieci neuronowej, niezależnie od jej typu, jest model sztucz-
nego neuronu (tzw. jednostka przetwarzająca). Neuron taki może być zarówno pojęciem abs-
trakcyjnym, istniejÄ…c jako element w modelu teoretycznym lub w programie numerycznym, jak
również konkretem w postaci elementu sprzętowego (np. w układzie scalonym). W swojej naj-
prostszej formie sztuczny neuron posiada ustaloną liczbę wejść odpowiednio wzmacniających
lub tłumiących sygnały wejściowe, złącze sumujące realizujące funkcję aktywacji oraz blok
realizujący funkcję wyjścia (neuron posiada wyłącznie jedno wyjście). Biologiczną komórkę
nerwową i jej odpowiednik często stosowany w obliczeniach technicznych pokazano na Rys. 1.
Można zauważyć, że sztuczny neurony jest bardzo dużym uproszczeniem swojego pierwowzoru.
Jego działanie można opisać za pomocą jednego równania matematycznego:
Gliwice 2010-04-26 - 2/19 -

P


y = f (Õ) = f wiui + b = f wTu + b (1)
i=1
gdzie ui - wejścia neuronu, wi - wagi neuronu, b - próg zadziałania neuronu, y - wyjście
neuronu, f - funkcja wyjścia neuronu, P - liczba wejść neuronu.
Wagi
(synapsy)
w
1
ZÅ‚Ä…cze
sumujÄ…ce
u
1
(jÄ…dro)
w
2
u
2
y
f
w
P
u
P
(a) (b)
Rysunek 1: Komórka nerwowa [10] - (a) i model sztucznego neuronu - (b)
Bardzo ważnym elementem neuronu jest funkcja wyjścia. Razem z funkcją aktywacji (re-
alizowaną za pomocą złącza sumującego) tworzą funkcję przejścia neuronu. Funkcja aktywacji
wylicza wiÄ™c jedynie Å‚Ä…czne pobudzenie neuronu (Õ = wTu + b) co stanowi wejÅ›cie funkcji
wyjÅ›cia neuronu (y = f (Õ)). W literaturze dotyczÄ…cej sztucznych sieci neuronowych bardzo
często dochodzi do sytuacji kiedy nazwy tych funkcji są nierozróżnialne, czyli funkcja przejścia,
aktywacji oraz funkcja wyjścia oznaczają to samo. Najczęściej stosuje się takie funkcje wyjścia
neuronu jak:
" funkcja liniowa
y = Õ, (2)
" funkcja logistyczna
1
y = , (3)
f
1 + e-Ä… Õ
" funkcja w postaci tangensa hiperbolicznego
f
1 - e-Õ/Ä…
y = tanh(Õ/Ä…f) = , (4)
f
1 + e-Õ/Ä…
gdzie ąf to parametr określający nachylenie funkcji wyjścia neuronu.
Gliwice 2010-04-26 - 3/19 -
Wejścia neuronu (dendryty)
Wyjście neuronu (akson)
2.2. Perceptron wielowarstwowy
Strukturę tego rodzaju przedstawia Rys. 2. Jest to sieć jednokierunkowa, która złożona jest
z kilku warstw - warstwy wejściowej, warstw ukrytych i warstwy wyjściowej. Pierwsza warstwa
pełni rolę wejścia sieci. Następnie sygnały z warstwy wejściowej przetwarzane są w n kolejnych
warstwach ukrytych. Warstwy te pełnią rolę bloków, w którym następuje zasadnicze prze-
twarzanie danych. Zazwyczaj warstwy ukryte zbudowane sÄ… w oparciu o neurony z nieliniowÄ…
funkcją wyjścia (co umożliwia standaryzację danych wejściowych oraz odwzorowanie zależności
nieliniowych). Warstwa wyjściowa złożona jest z jednostek z liniową funkcją wyjścia. Warstwa
ta pełni rolę bloku, w którym następuje denormalizacja.
Warstwa Warstwy Warstwa
wejściowa ukryte wyjściowa
u
1
nk-1 x 1
y
1 nk x 1
yk-1 yk
u LWk
2
y
2
nk x nk-1
fk
bk
1
nk x 1
y
L
u
P
Rysunek 2: Perceptron wielowarstwowy
Druga część Rys. 2 przedstawia zapis matematyczny przetwarzania neuronowego dla k-tej
warstwy sieci zbudowanej z nk neuronów. Zgodnie z tym zapisem sygnał z warstwy poprze-
dzającej przetwarzany jest w następujący sposób:

yk = fk LWkyk-1 + bk (5)
gdzie LWk oznacza macierz wag k-tej warstwy, bk oznacza wektor wartości progowych neuro-
nów w k-tej warstwie. Wzór (5) pozwala zapisać dowolnie rozbudowaną strukturę perceptronu
wielowarstwowego. Na przykład sieć z jedną nieliniową warstwą ukrytą i liniową warstwą wyj-
ściową może być zapisana jako:

y = LW2f1 LW1u + b1 + b2 (6)
Za pomocą tak zdefiniowanej sieci możliwa jest aproksymacja dowolnej funkcji ciągłej o
postaci y = f (x). Do aproksymacji funkcji nie spełniającej założenia jej ciągłości potrzebne
sÄ… co najmniej dwie warstwy ukryte.
Gliwice 2010-04-26 - 4/19 -
...
...
...
...
...
...
...
...
...
2.3. Algorytmy uczÄ…ce
Uczenie sieci neuronowej polega na automatycznym poszukiwaniu wartości swobodnych pa-
rametrów sieci (wartości wag wi, wartości progowych bi, wartości parametrów funkcji wyj-
ścia ąfi), dla których odpowiednio zdefiniowany błąd sumaryczny jest minimalny. Sieci jed-
nokierunkowe uczy się w sposób nadzorowany (tzw. uczenie z nauczycielem). Oznacza to,
że właściwy rezultat (sygnał wzorcowy) jest znany i jest stosowany w procesie uczenia.
Przyjmując, że wzorce trenujące (wejściowe - U i wyjściowe T) tworzą zbiór treningowy
LT = {(u1, t1) , (u2, t2) , . . . , (uR, tR)}, definiuję się funkcję błędu sumarycznego jako:
R

1
E = eT ei (7)
i
R
i=1
gdzie ei = yi (ui)-ti, yi (ui) - wyjście sieci uzyskane na podstawie wzorca wejściowego ui, ti -
wartość oczekiwana wyjścia sieci. Uczenie sieci neuronowej z matematycznego punktu widzenia
polega na minimalizacji funkcji błędu (7). Zakładając, że wszystkie swobodne parametry sieci
neuronowej zapisane sÄ… za pomocÄ… wektora É zadanie poszukiwania minimum funkcji bÅ‚Ä™du
zazwyczaj rozwiązywane jest w sposób iteracyjny zgodnie ze wzorem:
Én+1 = Én - "Én (8)
gdzie Én - aktualne wartoÅ›ci swobodnych parametrów sieci, "Én - wektor okreÅ›lajÄ…cy jak
powinny zostać zmodyfikowane parametry sieci aby zmniejszyć wartość błędu sumarycznego.
WartoÅ›ci poczÄ…tkowe swobodnych parametrów sieci É0 przyjmowane sÄ… zazwyczaj w sposób
losowy, co często utrudnia znalezienie poprawnego rozwiązania.
Jednym z najczęściej stosowanych algorytmów uczących jest algorytm najszybszego spadku.
W algorytmie tym przyjmuje siÄ™, że wektor parametrów sieci Én w danym kroku n uaktualnia
siÄ™ za pomocÄ… wektora "Én wyliczanego wg. wzoru:
"Én = µ"En (Én) (9)
w którym gradient funkcji bÅ‚Ä™du "En (Én) wyliczany jest z zastosowaniem metody wstecz-
nej propagacji bÅ‚Ä™du, natomiast krok uczenia µ przyjmujÄ™ siÄ™ tak aby zapewnić stabilność
algorytmu uczÄ…cego.
2.4. Podział zbiorów danych
Pierwszym problemem, który należy rozwiązać podczas modelowania neuronowego jest zgro-
madzenie danych wzorcowych. Jest to zagadnienie bardzo rozległe i zdeterminowane proble-
mem jaki rozwiązujemy. Podział danych jest realizowany na różne sposoby i również często
Gliwice 2010-04-26 - 5/19 -
zależy od typu problemu jaki rozwiązujemy. Najczęściej zbiór wszystkich danych L dzielimy na
trzy podzbiory:
" zbiór danych trenujących LT stosowanych w trakcie strojenia sieci,
" zbiór danych testowych LG używanych do oceny jakości uogólnienia sieci, przy czym
zachodzi warunek LG )" LT = ",
" zbiór danych weryfikujÄ…cych LV ‚" LG sÅ‚użących do sprawdzania zdolnoÅ›ci generaliza-
cyjnych w trakcie uczenia. Podzbiór ten wyodrębnia się ze zbioru LG i używa się go do
wczesnego zakończenia procesu uczenia, jeżeli błąd wyliczany na tym podzbiorze zaczyna
rosnąć.
W przypadku małych zbiorów danych podział ogranicza się do zbiorów LT i LG. W litera-
turze zaleca się odmienne metody określania proporcji wymienionych podzbiorów, przy czym
wszystkie podejścia zakładają reprezentatywny rozkład przykładów w zbiorach. W głównej
mierze metody te zależą od ilości danych, jakimi się dysponuje, preferując większą liczebność
podzbioru trenującego LT niż podzbioru testowego LG. W niniejszej instrukcji przyjmuje się
podział taki, że: card(LT ) = ąT card(L) = ąT N oraz card(LG) = (1 - ąT )N, przy czym ąT
przyjmuje wartość z przedziału [0.5, 0.9].
Bardzo często liczebność zbiorów określa się równolegle ze wstępnym doborem struktury
sieci. W ten sposób w trakcie podziału danych możliwe jest stosowanie heurystyk wiążących
złożoność struktury sieci i niezbędnej liczby przykładów umożliwiających osiągnięcie dobrych
własności generalizacyjnych.
2.5. Dobór struktury sieci
Dobór struktury perceptronu wielowarstwowego wiąże się z określeniem: wejść i wyjść istot-
nych dla danego problemu, liczby warstw ukrytych, liczby jednostek w warstwach i połączeń
pomiędzy nimi, postaci funkcji wyjściowej neuronów danych warstw. Zazwyczaj wejścia i
wyjścia są dobrze określone w rozwiązywanym problemie i zadanie to nie stanowi problemu.
Również określenie postaci funkcji wyjściowej neuronów jest zadaniem prostym (patrz pkt.
2.2). Najwięcej problemów sprawia określenie liczby warstw ukrytych, liczby jednostek w
warstwach oraz określenie istotnych połączeń pomiędzy neuronami. Problemy te rozwiązuję
się zazwyczaj na dwa sposoby. Pierwszy sposób polega na zastosowaniu znanych z literatury
reguł heurystycznych. Poniżej wymieniono kilka takich reguł.
Heurystyka 1
Wystarczy jedna warstwa ukryta z dostatecznÄ… liczbÄ… nieliniowych jednostek przetwarzajÄ…cych
do aproksymacji dowolnej nieliniowej funkcji ciągłej. Natomiast każdą nieliniową funkcję
nieciągłą można aproksymować z zadaną dokładnością, przy użyciu co najmniej dwóch warstw
Gliwice 2010-04-26 - 6/19 -
ukrytych z odpowiedniÄ… liczbÄ… nieliniowych jednostek przetwarzajÄ…cych.
Heurystyka 2
Liczbę neuronów w pierwszej warstwie ukrytej szacuje się na podstawie zależności:
card (LT )
n1 = , (10)
10 (n0 + ns)
gdzie card (LT ) oznacza liczbę wzorców trenujących, n0, ns oznaczają odpowiednio wymiar
wzorca wejściowego i wyjściowego. W kolejnych warstwach można przyjąć liczbę neuronów
równą połowie neuronów z warstwy poprzedniej.
Heurystyka 3
W sytuacji, gdy dysponuje się małą liczbą wzorców trenujących, lepszym rozwiązaniem jest
zastosowanie zależności w postaci
n1 = kn0 - 1, (11)
przy czym k = 1, 2, . . . wyznacza się do momentu osiągnięcia zadowalającego wyniku
modelowania.
Heurystyka 4
Dobrym oszacowaniem liczby neuronów pierwszej warstwy ukrytej, opartym na teorii Kołmo-
gorowa jest miara będąca średnią geometryczną liczby wejść i wyjść sieci:
"
n1 = n0ns, (12)
przy czym w kolejnych warstwach przyjmuje się liczbę neuronów równą połowie neuronów
z warstwy poprzedniej.
Innym sposobem określania struktury sieci neuronowej jest zastosowanie algorytmów przy-
cinania nieistotnych połączeń sieci. Najbardziej znane procedury polegają na:
" usuwanie wag wi, dla których |wi| ².
" usuwanie wag z zastosowaniem metody OBD (Optimal Brain Damage).
2.6. Ocena działania sieci
Ocenę działania sieci neuronowej można prowadzić na wiele sposobów np. wzrokowo anali-
zując wykresy błędu sieci lub wyznaczając oceny statystyczne dla tych błędów. W przypadku
zadania aproksymacji funkcji najczęściej stosuję się którąś ze standardowych miary dokładności
aproksymacji (np. błąd średniokwadratowy, błąd maksymalny, pierwiastek błędu średniokwa-
dratowego, itp.).
Gliwice 2010-04-26 - 7/19 -
W niniejszym ćwiczeniu do oceny jakości aproksymacji stosowany będzie średni bez-
względny błąd procentowy wyrażony zależnością:

NG


100% ti - yi

MAPE = (13)
NG i=1 ti
gdzie NG - liczba wzorców zbioru testowego, ti - oczekiwana wartość wyjścia sieci dla i-tego
wzorca wejściowego, yi - uzyskana wartość wyjścia sieci dla i-tego wzorca wejściowego. Jest
to zależność dla sieci o jednym wyjściu. Dla sieci o wielu wyjściach liczy się wartość średnią
błędu MAPE z wszystkich wyjść.
Do oceny klasyfikatora zbudowanego w oparciu o sieć neuronową stosowana będzie miara
jego sprawności wyrażona jako:
+
NG
CA = 100% (14)
NG
+
gdzie NG - liczba wzorców poprawnie sklasyfikowanych.
2.7. Główne problemy modelowania neuronowego
Projektanci aplikacji opartych na sztucznych sieciach neuronowych borykajÄ… siÄ™ zazwyczaj z
dwoma typami problemów. Pierwszą przeszkodą podczas modelowania neuronowego jest od-
powiednie dobranie algorytmu uczącego oraz jego parametrów. Zazwyczaj oprogramowanie,
które umożliwia tworzenie modeli neuronowych posiada wyłącznie biblioteki algorytmów uczą-
cych opartych na metodach optymalizacji lokalnej. Okazuję się, że w takim przypadku bardzo
często problem stanowią dwie kwestie:
1. Utykanie algorytmu uczącego w minimum lokalnym (objawia się to tym, że krzywa ucze-
nia jest pozioma). RozwiÄ…zaniem tego problemu jest np. zastosowanie metody wielo-
krotnego startu (losowy wybór początkowych wartości parametrów sieci).
2. Niestabilność procesu uczenia (objawia się gwałtownymi fluktuacjami krzywej uczenia).
Jest to zazwyczaj spowodowane nieprawidłowo dobranymi parametrami danego algo-
rytmu uczÄ…cego. Na przykÅ‚ad zbyt duża wartość parametru kroku uczenia µ w metodzie
najszybszego spadku (wzór 9) będzie powodować niestabilność procesu uczenia, nato-
miast zbyt mała jego wartość będzie powodować, że proces uczenia będzie bardzo wolno
zbieżny.
Drugim problemem, który projektant musi rozwiązać, to odpowiednie zadbanie aby
sztuczna sieć neuronowa dobrze uogólniała nabytą w procesie uczenia wiedzę. Problem ten
zazwyczaj wiąże się z poprawnym określeniem złożoności struktury sztucznej sieci neuronowej,
która projektowana jest do rozwiązania określonego zadania. Mówimy, że sieć neuronowa do-
brze uogólnia nabytą w procesie uczenia wiedzę jeżeli w wyniku jej działania błąd uzyskiwany
dla wzorców testowych jest niski.
Gliwice 2010-04-26 - 8/19 -
200 250
200
150
150
100
100
50
50
0
0
-50 -50
0 2 4 6 8 10 0 2 4 6 8 10
X X
(a) Sieć 1-3-1 (dane uczące) (b) Sieć 1-3-1 (dane testowe)
250 250
200 200
150 150
100 100
50 50
0 0
-50 -50
0 2 4 6 8 10 0 2 4 6 8 10
X X
(c) Sieć 1-6-1 (dane uczące) (d) Sieć 1-6-1 (dane testowe)
250 400
300
200
200
150
100
100
0
50
-100
0
-200
-50 -300
0 2 4 6 8 10 0 2 4 6 8 10
X X
(e) Sieć 1-60-1 (dane uczące) (f) Sieć 1-60-1 (dane testowe)
Rysunek 3: Generalizacja wiedzy w sieciach neuronowych (ć% dane pomiarowe,  wartości
wyliczone za pomocÄ… sieci)
Przykład, który ilustruje ten problem przedstawiono na Rys. 3. Aatwo zauważyć na Rys. 3,
że wyłącznie przypadek sieci o strukturze 1-6-1 charakteryzuje się jednocześnie małymi błędami
Gliwice 2010-04-26 - 9/19 -
Y
Y
Y
Y
Y
Y
dla danych uczących i testowych (c-d). Jest to sytuacja kiedy możemy stwierdzić, że sieć
neuronowa dobrze uogólnia nabytą wiedzę. Sieć o strukturze 1-3-1 okazała się zbyt uboga w
neurony. Spowodowało to, że nie można było uzyskać niskich wartości błędu uczenia a wskutek
tego również niskich błędów testowania (a-b). O sieci o strukturze 1-60-1 możemy powiedzieć,
że została ona przeuczona (nadmiernie dopasowała się do danych uczących). Objawia się to
tym, że błąd uczenia jest bardzo niski a błąd testowania bardzo wysoki (e-f).
3. Zadania do samodzielnego rozwiÄ…zania
Do rozwiązania poniższych zadań niezbędne jest zapoznanie się z treścią niniejszej instrukcji.
Niezbędna jest również znajomość oprogramowania JavaNNS oraz OpenOffice Calc.
3.1. Aproksymacja funkcji nieliniowej
W wyniku pewnego eksperymentu fizycznego zgromadzono dane pomiarowe w postaci par xi
i yi. Zbiór dostępnych danych podzielono na dwa podzbiory: zbiór danych treningowych LT i
zbiór danych testowych LG. Dane zapisano odpowiednio do plików aproksymacja trening.pat
i aproksymacja test1.pat. Opracować model tych danych z zastosowaniem perceptronu wielo-
warstwowego. W celu rozwiązania tego zadania należy m.in.:
1. Narysować wykres funkcji dla zbioru treningowego (stosując np. OpenOffice Calc).
2. Uruchomić program JavaNNS.
3. W programie JavaNNS utworzyć sieć neuronową (jej strukturę określić stosując heury-
stykÄ™ 1 i 2).
4. Wgrać przykłady ze zbioru treningowego (aproksymacja trening.pat).
5. Przetestować następujące algorytmy trenujące: Backpropagation, Backpropagation-
momentum, Resilient propagation. Dla wybranych algorytmów należy dobrać ich pa-
rametry. Wybrać najlepszy algorytm.
6. Dostroić parametry sieci z zastosowaniem dobranego wcześniej algorytmu.
7. Wgrać przykłady testowe z pliku aproksymacja test1.pat.
8. Sprawdzić działanie sieci dla przykładów testowych.
9. Wyniki działania sieci wpisać do arkusza kalkulacyjnego (OpenOffice Calc).
10. W arkuszu kalkulacyjnym narysować wykres błędu sieci oraz wyznaczyć ocenę MAPE
określającą poprawności działania sieci.
11. Opracować wnioski.
Gliwice 2010-04-26 - 10/19 -
3.2. Rozpoznawanie pisma odręcznego
Opracować klasyfikator neuronowy służący do rozpoznawania pierwszych trzech liter swojego
nazwiska (przyjąć ograniczenie wyłącznie do dużych litery alfabetu). W celu rozwiązania tego
zadania należy m.in.:
1. Zaproponować sposób kodowania liter oraz zaproponować w jaki sposób ma zostać roz-
poznana dana litera (patrz dodatek oraz katalog examples oprogramowania JavaNNS -
przykład letters.*).
2. Przygotować wzorce trenujące i testowe (wejściowe i wyjściowe).
3. Utworzyć pliki wzorce trenujace.pat i wzorce testowe.pat (użyć programu Notepad++).
4. Uruchomić program JavaNNS.
5. W programie JavaNNS utworzyć sieć neuronową w postaci perceptronu wielowarstwo-
wego (jego strukturę określić stosując heurystykę 1 i 4).
6. Wgrać przykłady ze zbioru treningowego (wzorce trenujace.pat).
7. Przetestować następujące algorytmy trenujące: Backpropagation, Backpropagation-
momentum, Resilient propagation. Dla wybranych algorytmów należy dobrać ich pa-
rametry. Wybrać najlepszy algorytm.
8. Dostroić parametry sieci z zastosowaniem dobranego wcześniej algorytmu.
9. Wgrać przykłady testowe z pliku wzorce testowe.pat.
10. Sprawdzić działanie sieci dla przykładów testowych wyznaczając miarę CA.
11. Opracować wnioski.
4. Oprogramowanie JavaNNS
Istnieje wiele aplikacji, które posiadają moduły umożliwiające rozwiązywanie różnorodnych za-
dań z zastosowaniem modelowania neuronowego. Przykładami takich środowisko obliczenio-
wych są np. Matlab, Scilab, Statistica, Weka, Orange, itp. Istnieją również aplikacje utworzone
wyłącznie w oparciu o teorię sztucznych sieci neuronowych. Są to takie aplikacje jak na przy-
kład: JavaNNS, SNNS, NeuroSolutions, Emergent.
4.1. Wprowadzenie do JavaNNS
Java Neural Network Simulator jest darmowym programem w pełni umożliwiającym badanie i
rozwój struktur sztucznych sieci neuronowych. Oprogramowanie to bazuje na jądrze projektu,
który jest rozwijany równocześnie pod nazwą Stuttgart Neural Network Simulator (SNNS).
Obie aplikacje pomimo różnic głównie w obrębie interfejsu graficznego (Java, ANSI C) bazują
na tych samych regułach umożliwiających naprzemienne ich stosowanie.
Gliwice 2010-04-26 - 11/19 -
Rysunek 4: Interfejs użytkownika JavaNNS
Do działania programu JavaNNS wymagane jest środowisko java: Java Runtime Envi-
ronment 32bit (JRE 1.6 firmy Sun Microsystems). Aby uruchomić program należy roz-
pakować plik JavaNNS-Win.zip do wskazanego katalogu. Program uruchamiamy będąc
w katalogu z programem wydaniem polecenia java -jar JavaNNS.jar (należy spraw-
dzić czy katalog z javą dodany jest do zmiennych środowiskowych użytkownika - patrz
zmienna PATH). Oprogramowanie dostępne jest pod adresem: http://www-ra.informatik.uni-
tuebingen.de/downloads/JavaNNS/. Dokumentacja techniczna dostępna jest pod adresem:
http://www.ra.cs.uni-tuebingen.de/SNNS/UserManual/UserManual.html.
4.2. Projektowanie struktury sieci
StrukturÄ™ sieci w JavaNNS buduje siÄ™ tworzÄ…c kolejne warstwy jednostek przetwarzajÄ…cych.
W tym celu z menu głównego wybieramy ViewNetwork aby mieć podgląd na bieżącą po-
stać struktury oraz ToolsCreateLayers aby utworzyć warstwę neuronów (Rys. 5). W oknie
dialogowym należy ustalić parametry warstwy takie jak: Width - szerokość i Height - wyso-
kość liczona w jednostkach przetwarzających, Unit type - typ neuronu, Acitivation function
- funkcja aktywacji, Output function - funkcja wyjścia, Layer number - numer warstwy,
Subnet number - numer podsieci, Top left position - pozycja dodania warstwy. W opro-
gramowaniu JavaNNS Acitivation function pełni rolę funkcji wyjścia neuronu, natomiast
Gliwice 2010-04-26 - 12/19 -
Output function przyjmuje siÄ™ jako funkcje liniowÄ… (Out Identity).
Rysunek 5: Tworzenie warstwy neuronów
Dodatkowo istnieje możliwość edycji właściwości elementów przetwarzających sieci przez
zaznaczenie odpowiedniego neuronu lub grupy neuronów tak, aby podświetlone były na żółto.
Prawym przyciskiem myszy wybierajÄ…c Edit Units... - edycja jednostek przechodzimy do
trybu edycji gdzie możemy zmodyfikować wcześniej przyjęte ustawienia i dodatkowo wprowa-
dzić numer i nazwę.
Rysunek 6: Edycja właściwości neuronu
Dla utworzonej wstępnie struktury sieci możemy zdefiniować połączenia między neuronami.
Dokonujemy tego wykorzystując narzędzie ToolsCreateConnections... Ważniejsze opcje
tworzenia połączeń to: Connect selected units - tworzenie połączeń między zaznaczonymi
jednostkami, Connect feed-forward - automatyczne połączenie jednostek w sieciach jed-
nokierunkowych, With shortcut connection - połączenie z pominięciem warstwy ukrytej.
Gliwice 2010-04-26 - 13/19 -
Rysunek 7: Tworzenie połączeń między neuronami
Rysunek 8: Przykład struktury trójwarstwowej sieci neuronowej: 5 neuronów w warstwie wej-
Å›ciowej, 3 neurony w warstwie ukrytej i 3 neurony w warstwie wyjÅ›ciowej (5 · 3 + 3 · 3 poÅ‚Ä…czeÅ„)
Korzystając z wymienionych narzędzi możemy zbudować dowolną topologię z możliwo-
ścią edycji poszczególnych neuronów. Przykład zaprojektowanej sieci neuronowej przedstawia
Rys. 8. Dodatkowym narzędziem jest ViewDisplay Settings które umożliwia ustalenie spo-
sobu wyświetlania neuronów i połączeń między nimi w taki sposób aby możliwe było oszaco-
wanie wartości liczbowej (np. stanu neuronu bądz jego wyjścia) na podstawie intensywności
barwy która jest przypisana do określonej wartości liczbowej. Zaprojektowaną strukturę sieci
zapisujemy w pliku z rozszerzeniem .net.
Gliwice 2010-04-26 - 14/19 -
Rysunek 9: Graficzna analiza parametrów sieci - analiza struktury, analiza połączeń między
jednostkami (ViewWeights)
Tablica 1: Wybrane parametry neuronów
Unit Type  typ neuronu Input  neuron warstwy wejściowej
Hidden  neuron warstwy ukrytej
Output  neuron warstwy wyjściowej
Activation function  funkcja Act Logistic  krzywa logistyczna
aktywacji Act TanH  tangens hiperboliczny
Act Signum  funkcja progowa
Act Identity  funkcja liniowa
Output function  funkcja wyj- Out Identity  funkcja liniowa
ścia Zazwyczaj funkcja wyjścia zwraca do-
kładnie wartość pobudzenia neuronu
w danej chwili
4.3. Budowa wzorców trenujących
Przygotowanie wzorców dla procesu trenowania sprowadza się do wyedytowania pliku teksto-
wego ANCII który należy zapisać z rozszerzeniem .pat. W części nagłówkowej należy ustalić
następujące parametry: No. of patterns - ilość wzorców, No. of input units - liczba neu-
ronów wejściowych, No. of output units - liczba neuronów wyjściowych. Przykład pliku .pat
pokazano na Rys. 10.
W zasadniczej części pliku zamieszczamy kolejne wzorce wejściowe Input i wyjściowe Out-
put stosując dla czytelności pliku znak komentarza # po którym interpreter będzie ignorował
znaki wiersza. Wejścia i wyjścia oddzielamy spacjami.
Gliwice 2010-04-26 - 15/19 -
Rysunek 10: Przykładowy sformatowany plik z wzorcami wykorzystywanymi w procesie uczenia
4.4. Proces trenowania sieci neuronowej
Na proces trenowania składa się kilka standardowych kroków jakie należy wykonać. Na po-
czątku powinniśmy wgrać zarówno strukturę sieci jak i wzorce uczące oraz ewentualnie wzorce
walidujące. Następnie wykorzystując narzędzie ToolControl Panel wybieramy zakładkę Ini-
tializing - ustalenie początkowych parametrów sieci. W tym kroku należy ustalić Initializing
function - rodzaj funkcji inicjującej oraz jej parametry (zazwyczaj wartości max. i min.).
Rysunek 11: Okno dialogowe wykorzystywane w procesie trenowania oraz optymalizacji struk-
tury sieci neuronowej
W zakładce Patterns ustalamy wzorce zarówno trenujące jak i walidujące oraz mamy moż-
liwość wstępnego preprocessingu danych - Remapping function. Przed ustaleniem rodzaju
algorytmu należy przyjąć typ funkcji aktualizującej wagi sieci - zakładka Updating (w sieciach
jednokierunkowych zaleca się aby była to funkcja Typological order). Ostatnim krokiem jest
ustalenie algorytmu trenującego - zakładka Learning. Dobieramy jego typ oraz parametry tj.
współczynnik uczenia, zakładana liczba cykli, itp. Dodatkowo możemy ustalić losową kolejność
Gliwice 2010-04-26 - 16/19 -
podawania wzorców uczących - opcja Shuffle.
Rysunek 12: Ustalanie wzorców trenujących i walidujących
Rysunek 13: Ustalanie funkcji aktualizujÄ…cej wagi
Podczas procesu uczenia mamy możliwość śledzenia zmiany wartości błędu generowanego
przez sieć. W tym celu musimy wybrać narzędzie ViewError Graph i ustalić rodzaj rysowanego
błędu - w przypadku jak na Rys. 15 jest to suma kwadratów różnic.
Gliwice 2010-04-26 - 17/19 -
Rysunek 14: Ustalanie rodzaju algorytmu uczącego oraz jego parametrów
Rysunek 15: Graficzne przedstawienie procesu trenowania dla różnych parametrów przyjętego
algorytmu
Literatura
[1] Korbicz J., Obuchowicz A., Uciński D.: Sztuczne sieci neuronowe. Akademicka Oficyna
Wydawnicza PLJ, Warszawa, 1994.
[2] Nałęcz M.: Sieci neuronowe. Tom 6, Akademicka Oficyna Wydawnicza EXIT, Warszawa,
2000.
[3] Wprowadzenie do sieci neuronowych. StatSoft, Kraków, 2001.
[4] Żurada J., Barski M., Jędruch W.: Sztuczne sieci neuronowe. Podstawy teorii i zastoso-
wania. PWN, Warszawa, 1996.
[5] Osowski S.: Sieci neuronowe w ujęciu algorytmicznym. Warszawa, 2000.
Gliwice 2010-04-26 - 18/19 -
[6] Rojek R., Bartecki K., Korniak J.: Zastosowanie sztucznych sieci neuronowych i logiki
rozmytej w automatyce. Opole, 2000.
[7] Martin T., Howard B., Mark H.: Neural Network Design. ISBN: 0-9717321-0-8.
[8] Fischer I., Hennecke F., Bannes C., Zell A.: User Manual, Version 1.1.
http://www-ra.informatik.uni-tuebingen.de/software/JavaNNS/manual/JavaNNS-
manual.html.
[9] Zell A.: User Manual, Version 4.1.
http://www-ra.informatik.uni-tuebingen.de/SNNS/UserManual/UserManual.html.
[10] Wikipedia: Wolna encyklopedia - Wikipedia, 2010-04-20.
http://pl.wikipedia.org/wiki/Neuron.
Gliwice 2010-04-26 - 19/19 -


Wyszukiwarka

Podobne podstrony:
SZTUCZNE SIECI NEURONOWE
MatLab Sztuczne sieci neuronowe
Zastosowanie sztucznych sieci neuronowych do szacowania spadków napiecia w sieciach n
StatSoft Wprowadzenie do sieci neuronowych
Nieeuklidesowe sieci neuronowe
SIECI NEURONOWE
Zastosowanie sieci neuronowych w ekonomi
Sieci neuronowe Skrypt rozdzial 10
lab5 Sieci neuronowe
sieci neuronowe pytania
sieci neuronowe i uczenie maszynowe próba integracji readme
sieci neuronowe i uczenie maszynowe próba integracji readme
zadanie sieci neuronowe
Analiza skurczu betonu za pomocÄ… sieci neuronowej RBF
Sieci neuronowe w grach

więcej podobnych podstron