lab5 Sieci neuronowe

background image

Katedra

Podstaw

Konstrukcji

Maszyn

Wydział

Mechaniczny

Technologiczny

Politechnika

Śląska





























ul. Konarskiego 18a

44-100 Gliwice

tel. 237 1467
fax 237 1360

http://kpkm.polsl.pl











Metody Sztucznej
Inteligencji










Instrukcja do ćwiczeń laboratoryjnych

Ćwiczenie 5





Temat

Sztuczne sieci neuronowe





Opracował: dr inż. P. Przystałka




background image

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 -

background image

y = f (ϕ) = f

P

X

i=1

w

i

u

i

+ b

!

= f

w

T

u + b

(1)

gdzie u

i

- wejścia neuronu, w

i

- wagi neuronu, b - próg zadziałania neuronu, y - wyjście

neuronu, f - funkcja wyjścia neuronu, P - liczba wejść neuronu.

(a)

w

1

u

1

u

2

u

P

Złącze

sumujące

(jądro)

W

y

ci

e

n

eu

ro

n

u

(

ak

so

n

)

w

2

w

P

W

ej

śc

ia

n

eu

ro

n

u

(

d

en

d

ry

ty

)

y

f

Wagi

(synapsy)

(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 (ϕ = w

T

u + 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

y =

1

1 + e

−α

f

ϕ

,

(3)

• funkcja w postaci tangensa hiperbolicznego

y = tanh(ϕ/α

f

) =

1 − e

−ϕ/α

f

1 + e

−ϕ/α

f

,

(4)

gdzie α

f

to parametr określający nachylenie funkcji wyjścia neuronu.

Gliwice 2010-04-26

- 3/19 -

background image

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.

u

1

u

2

u

P

..

.

..

.

..

.

..

.

y

1

y

2

y

L

..

.

Warstwa

wejściowa

Warstwy

ukryte

..

.

..

.

..

.

..

.

Warstwa

wyjściowa

y

k

LW

k

f

k

n

k-1

x 1

n

k

x 1

n

k

x n

k-1

y

k-1

b

k

1

n

k

x 1

Rysunek 2: Perceptron wielowarstwowy

Druga część Rys. 2 przedstawia zapis matematyczny przetwarzania neuronowego dla k-tej

warstwy sieci zbudowanej z n

k

neuronów. Zgodnie z tym zapisem sygnał z warstwy poprze-

dzającej przetwarzany jest w następujący sposób:

y

k

= f

k

LW

k

y

k−1

+ b

k

(5)

gdzie LW

k

oznacza macierz wag k-tej warstwy, b

k

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 = LW

2

f

1

LW

1

u + b

1

+ b

2

(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 -

background image

2.3. Algorytmy uczące

Uczenie sieci neuronowej polega na automatycznym poszukiwaniu wartości swobodnych pa-

rametrów sieci (wartości wag w

i

, wartości progowych b

i

, wartości parametrów funkcji wyj-

ścia α

f i

), 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

L

T

= {(u

1

, t

1

) , (u

2

, t

2

) , . . . , (u

R

, t

R

)}, definiuję się funkcję błędu sumarycznego jako:

E =

1

R

R

X

i=1

e

T
i

e

i

(7)

gdzie e

i

= y

i

(u

i

)t

i

, y

i

(u

i

) - wyjście sieci uzyskane na podstawie wzorca wejściowego u

i

, t

i

-

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

= µ∇E

n

(ω

n

)

(9)

w którym gradient funkcji błędu ∇E

n

(ω

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 -

background image

zależy od typu problemu jaki rozwiązujemy. Najczęściej zbiór wszystkich danych L dzielimy na

trzy podzbiory:

• zbiór danych trenujących L

T

stosowanych w trakcie strojenia sieci,

• zbiór danych testowych L

G

używanych do oceny jakości uogólnienia sieci, przy czym

zachodzi warunek L

G

∩ L

T

= ,

• zbiór danych weryfikujących L

V

⊂ L

G

służących do sprawdzania zdolności generaliza-

cyjnych w trakcie uczenia. Podzbiór ten wyodrębnia się ze zbioru L

G

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 L

T

i L

G

. 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 L

T

niż podzbioru testowego L

G

. W niniejszej instrukcji przyjmuje się

podział taki, że: card(L

T

) = α

T

card(L) = α

T

N oraz card(L

G

) = (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 -

background image

ukrytych z odpowiednią liczbą nieliniowych jednostek przetwarzających.

Heurystyka 2

Liczbę neuronów w pierwszej warstwie ukrytej szacuje się na podstawie zależności:

n

1

=

card (L

T

)

10 (n

0

+ n

s

)

,

(10)

gdzie card (L

T

) oznacza liczbę wzorców trenujących, n

0

, n

s

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

n

1

= kn

0

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:

n

1

=

n

0

n

s

,

(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 w

i

, dla których |w

i

| ¬ β.

• 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 -

background image

W niniejszym ćwiczeniu do oceny jakości aproksymacji stosowany będzie średni bez-

względny błąd procentowy wyrażony zależnością:

MAPE =

100%

N

G

N

G

X

i=1




t

i

− y

i

t

i




(13)

gdzie N

G

- liczba wzorców zbioru testowego, t

i

- oczekiwana wartość wyjścia sieci dla i-tego

wzorca wejściowego, y

i

- 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:

CA = 100%

N

+

G

N

G

(14)

gdzie N

+

G

- 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 -

background image

X

Y

0

2

4

6

8

10

-50

0

50

100

150

200

(a) Sieć 1-3-1 (dane uczące)

X

Y

0

2

4

6

8

10

-50

0

50

100

150

200

250

(b) Sieć 1-3-1 (dane testowe)

X

Y

0

2

4

6

8

10

-50

0

50

100

150

200

250

(c) Sieć 1-6-1 (dane uczące)

X

Y

0

2

4

6

8

10

-50

0

50

100

150

200

250

(d) Sieć 1-6-1 (dane testowe)

X

Y

0

2

4

6

8

10

-50

0

50

100

150

200

250

(e) Sieć 1-60-1 (dane uczące)

X

Y

0

2

4

6

8

10

-300

-200

-100

0

100

200

300

400

(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. Łatwo 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 -

background image

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 x

i

i y

i

. Zbiór dostępnych danych podzielono na dwa podzbiory: zbiór danych treningowych L

T

i

zbiór danych testowych L

G

. 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 -

background image

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 -

background image

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 View→Network aby mieć podgląd na bieżącą po-

stać struktury oraz Tools→Create→Layers 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 -

background image

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 Tools→Create→Connections... Ważniejsze opcje

tworzenia połączeń to: Connect selected units tworzenie połączeń między zaznaczonymi

jednostkami, Connect feedforward automatyczne połączenie jednostek w sieciach jed-

nokierunkowych, With shortcut connection połączenie z pominięciem warstwy ukrytej.

Gliwice 2010-04-26

- 13/19 -

background image

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 View→Display 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ądź 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 -

background image

Rysunek 9: Graficzna analiza parametrów sieci - analiza struktury, analiza połączeń między
jednostkami (View→Weights)

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
aktywacji

Act Logistic – krzywa logistyczna
Act TanH – tangens hiperboliczny
Act Signum – funkcja progowa
Act Identity – funkcja liniowa

Output function – funkcja wyj-
ścia

Out Identity – funkcja liniowa
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 -

background image

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 Tool→Control 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 -

background image

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 View→Error 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 -

background image

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 -

background image

[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 -


Document Outline


Wyszukiwarka

Podobne podstrony:
lab5 Sieci neuronowe
MSI-program-stacjonarne-15h-2011, logistyka, semestr IV, sieci neuronowe w log (metody sztucznej int
Ontogeniczne sieci neuronowe skrypt(1)
04 Wyklad4 predykcja sieci neuronoweid 523 (2)
Pytania egz AGiSN, SiMR - st. mgr, Alg. i Sieci Neuronowe
MSI-ściaga, SiMR - st. mgr, Alg. i Sieci Neuronowe
32 Sieci neuronowe
Identyfikacja Procesów Technologicznych, Identyfikacja charakterystyki statycznej obiektu dynamiczne
sieci neuronowe, Sieci NeuronoweKolos
sztuczne sieci neuronowe sciaga
Identyfikacja Procesów Technologicznych, Identyfikacja charakterystyk statycznych obiektu dynamiczne
Projekt I Sztuczna Inteligencja, Sprawozdanie, Techniczne zastosowanie sieci neuronowych
badania operacyjne, badania operacyjne - skrypt z PUTINF, Sieci neuronowe
Prognozowanie z zastosowaniem metod regresji krokowej, sieci neuronowych i modeli ARIMA
Sztuczne sieci neuronowe podstawy zagadnienia

więcej podobnych podstron