NTI cwiczenie 5

background image

Nowoczesne techniki informatyczne - Ćwiczenie 5: U

CZENIE WIELOWARSTWOWEJ SIECI JEDNOKIERUNKOWEJ

str. 1

Ćwiczenie 5:

U

CZENIE SIECI WIELOWARSTWOWYCH

.

M

ETODA WSTECZNEJ PROPAGACJI BŁĘDU

W

YMAGANIA

1. Sztuczne sieci neuronowe

budowa sieci jednokierunkowych,

metoda wstecznej propagacji błędu,

rola funkcji celu podczas uczenia sieci

2. Środowisko Matlab, w szczególności z zakresu:

tworzenia sieci jednokierunkowej (

newff

), znaczenia parametrów tworzonego

obiektu

net

uczenia sieci (

train

)

symulacja pracy sieci (

sim

)

W

PROWADZENIE TEORETYCZNE

Możliwości pojedynczych sztucznych neuronów są bardzo ograniczone, jednak

poprzez połączenie sztucznych neuronów w sieci ich możliwości bardzo gwałtownie
wzrastają i ujawnia się rzeczywista moc obliczeń neuronowych. Jest ona wynikiem
jednoczesnej (równoległej) pracy wielu neuronów połączonych w sieci tworzące
różnorodne struktury (architektury). Ze względu na architekturę wyróżnia się:

sieci jednokierunkowe (jednowarstwowe i wielowarstwowe)

sieci rekurencyjne

sieci komórkowe

Sieci jednokierunkowe (feedforward)

Sieci

jednokierunkowe

wielowarstwowe

cieszą

się

największym

zainteresowaniem

spośród

wszystkich

znanych

architektur

sztucznych

sieci

neuronowych. Spowodowane jest to prostą ich strukturą - łatwą do opisania, jak
również prostymi i łatwymi do realizacji metodami uczenia tychże sieci. Należy
podkreślić, że taka struktura sieci jest zbliżona do budowy mózgu, który również
posiada strukturę warstwową, w dużej części jednokierunkową.

Rys. 5.1 Schemat sieci jednokierunkowej wielowarstwowej

background image

Nowoczesne techniki informatyczne - Ćwiczenie 5: U

CZENIE WIELOWARSTWOWEJ SIECI JEDNOKIERUNKOWEJ

str. 2

W sieciach jednokierunkowych można wyróżnić uporządkowane warstwy

neuronów (w tym warstwę wejściową i warstwę wyjściową). Liczba neuronów w
każdej z warstw może być różna, przy czym w danej warstwie wszystkie neurony
maja taką sama funkcję przejścia – neurony z różnych warstw mogą mieć różne
funkcje przejścia. Połączenia występują tylko pomiędzy neuronami z sąsiednich
warstw, wg zasady „każdy z każdym” i mają one charakter asymetryczny. Sygnały
przesyłane są od warstwy wejściowej poprzez warstwy ukryte (jeśli występują) do
warstwy wyjściowej (w jednym kierunku). Neurony warstwy wejściowej posiadają
tylko jedno wejście i uproszczoną funkcję przejścia (umownie jest to warstwa zerowa
sieci). Zadaniem neuronów z warstwy wejściowej jest wstępna obróbka sygnału (np.:
normalizacja, kodowanie itp.). Z kolei za przetwarzanie decyzyjne odpowiedzialne są
neurony warstw ukrytych i warstwy wyjściowej, a odpowiedź udzielana jest przez
neurony warstwy wyjściowej.

Ważnym problem jest dobór właściwych funkcji aktywacji dla neuronów w

poszczególnych warstwach wielowarstwowej sieci jednokierunkowej. Najczęściej w
warstwach ukrytych wykorzystuje się funkcje aktywacji typu sigmoidalnego (sinus
hiperboliczny, tangens hiperboliczny). Natomiast typ funkcji aktywacji neuronów
warstwy wyjściowej zależy od przeznaczenia sieci – konieczne jest dostosowanie typu
funkcji przejścia do wartości odpowiedzi jakich spodziewamy się na wyjściu sieci.
Funkcje sigmoidalne ograniczają wartości wyjścia do przedziału (0,1) lub (-1,1)
dlatego też bardzo często konieczne jest zastosowanie w warstwie wyjściowej
neuronów z liniową funkcją przejścia, gdyż nie limituje ona w żaden sposób wartości
odpowiedzi. Zbudowanie sieci wielowarstwowej, w której neurony, każdej warstwy
posiadają liniowe funkcje przejścia jest bezcelowe, gdyż złożenie funkcji liniowych jest
funkcją liniową i taka sieć wielowarstwową można zastąpić siecią jednowarstwową.


Uczenie sieci jednokierunkowych

Uczenie sieci jednokierunkowych może być realizowane w trybie nadzorowanym

(z nauczycielem) i trybie nienadzorowanym (bez nauczyciela). Uczenie w trybie
nadzorowanym

wymaga

znajomości

oczekiwanych

odpowiedzi

neuronów

poszczególnych warstw. Niestety znane są one tylko dla warstwy wyjściowej, dla
warstw ukrytych nie są one określone! Problem ten przez wiele lat stawiał pod
znakiem zapytania możliwość efektywnego uczenia sieci wielowarstwowych. Dopiero
opracowanie metody, która pozwalała matematycznie wyznaczyć błąd popełniany
przez neurony warstw ukrytych - na podstawie błędu warstwy wyjściowej - i
wykorzystanie go do korekty wag neuronów tychże, warstw umożliwił efektywne
wykorzystanie reguł uczenia nadzorowanego do treningu sieci wielowarstwowych.
Metoda ta nosi nazwę metody wstecznej propagacji błędu (backpropagation) i jej idea
jest powszechnie stosowana do uczenia sieci wielowarstwowych.

Istnieje wiele metod uczenia sieci jednokierunkowych wielowarstwowych. Do

najważniejszych należy zaliczyć:

Back Propagation (metoda wstecznej propagacji błędów),

Quick Propagation (metoda szybka propagacji błędów).

Conjugate Gradients (metoda gradientów sprzężonych),

Quasi-Newton (metoda zmiennej metryki),

Levenberg – Marquardt (metoda paraboloidalnych modeli funkcji błędów),


Algorytm wstecznej propagacji błędu

Algorytm wstecznej propagacji błędu zdecydowanie dominuje wśród metod

uczenia jednokierunkowych sieci wielowarstwowych. Nazwa metody oddaje zasadę jej

background image

Nowoczesne techniki informatyczne - Ćwiczenie 5: U

CZENIE WIELOWARSTWOWEJ SIECI JEDNOKIERUNKOWEJ

str. 3

działania, która polega na „przenoszeniu" błędu, jaki popełniła sieć, w kierunku od
warstwy wyjściowej do warstwy wejściowej (a więc wstecz w stosunku do kierunku
przepływu informacji).

Rys. 5.2. Schemat sieci realizującej uczenie metodą wstecznej propagacji błędu.

Cykl uczenia metodą wstecznej propagacji błędu (backpropagation) składa się z

następujących etapów:
1. Wyznaczenie odpowiedzi neuronów warstwy wyjściowej oraz warstw ukrytych na

zadany sygnał wejściowy.

2. Wyznaczenie błędu popełnianego przez neurony znajdujące się w warstwie

wyjściowej i przesłanie go w kierunku warstwy wejściowej.

3. Adaptacja wag.

Algorytm wstecznej propagacji błędu (backpropagation) określa procedurę

korekty wag w sieci wielowarstwowej przy wykorzystaniu gradientowych metod
optymalizacji. Korekta wektora wag sieci oparta jest na minimalizacji funkcji miary
błędu (funkcji celu), którą określono jako sumę kwadratów błędów na wyjściach sieci.
Jeżeli aktualizacja wag uczonych neuronów odbywać się będzie po prezentacji każdego
elementu wówczas funkcja celu ma postać:

(

)

2

1

2

1

=

=

m

k

k

k

t

y

t

z

E

)

(

)

(


Alternatywnym podejściem jest korekta wag po prezentacji całego ciągu uczącego
wówczas w funkcji celu należy uwzględnić liczbę wektorów wejściowych.

W celu minimalizacji błędu średniokwadratowego można wykorzystać regułę

najszybszego spadku.

kj

kj

w

E

w

η

=


Po przekształceniach uzyskujemy zależności na wielkość korekty wag:

dla warstwy wyjściowej sieci:

(

)

wyj

j

wyj

k

wyj

k

k

wyj

kj

x

du

d

y

z

w

f

η

=

gdzie: czynnik

wyj

k

k

wyj

k

y

z

=

δ

określa błąd popełniany przez k-ty neuron warstwy

wyjściowej sieci:

background image

Nowoczesne techniki informatyczne - Ćwiczenie 5: U

CZENIE WIELOWARSTWOWEJ SIECI JEDNOKIERUNKOWEJ

str. 4

dla warstw ukrytych:

(

)

=

η

=

m

k

wej

i

j

j

wyj

kj

wyj

k

wyj

k

wyj

k

k

ji

x

du

u

d

w

du

u

d

y

z

w

1

1

1

1

)

)

f(

f(

Szukając analogii pomiędzy wzorami opisującymi korektę wag w warstwie
wyjściowej i warstwach ukrytych można określić błąd popełniany poprzez
neurony analizowanej warstwy ukrytej:

(

)

=

=

δ

m

k

wyj

kj

j

j

wyj

k

k

i

w

du

u

d

y

z

1

1

1

1

)

f(

Błąd ten można uzależnić bezpośrednio od błędu popełnianego poprzez neurony
warstwy wyjściowej:

=

δ

=

δ

m

k

wyj

kj

j

j

wyj

k

j

w

du

u

d

1

1

1

1

)

f(


Równanie powyższe pozwala wyznaczyć błąd dla dowolnego neuronu warstwy ukrytej
w funkcji błędów neuronów, które on pobudza. Innymi słowy umożliwia przenoszenie
błędu wstecz (od warstwy wyjściowej ku wejściowej). Można więc dla każdego
neuronu sieci określić błąd, jaki on popełnia, a jest to niezbędne, jeżeli chce się
zastosować regułę Delty.

Podsumowując, algorytm wstecznej propagacji błędu można zapisać następująco:
1. Wygeneruj losowo wektory wag.
2. Podaj wybrany wzorzec na wejście sieci.
3. Wyznacz odpowiedzi wszystkich neuronów wyjściowych sieci:





=

=

l

j

wyj

j

wyj

kj

wyj

k

y

w

y

1

1

f

4. Oblicz błędy wszystkich neuronów warstwy wyjściowej:

wyj

k

k

wyj

k

y

z

=

δ

5. Oblicz błędy w warstwach ukrytych (pamiętając, że, aby wyznaczyć błąd w warstwie

h - 1, konieczna jest znajomość błędu w warstwie po niej następującej - h):

=

δ

=

δ

l

k

h

kj

h

k

h

j

h

j

h

j

w

du

u

d

1

1

1

1

)

f(

6. Zmodyfikuj wagi wg zależności:

1

1

1

1

ηδ

+

=

h

i

h

j

h

ji

h

ji

y

w

w

7. Jeżeli wartość funkcji celu jest zbyt duża wróć do punktu 2.

W praktyce metoda wstecznej propagacji błędu okazuje się bardzo skuteczna,

niestety, charakteryzuje się ona długim czasem uczenia. Przebieg procesu uczenia
sieci backpropagation silnie zależy od wielkości współczynnika uczenia

η

, zbyt duża

background image

Nowoczesne techniki informatyczne - Ćwiczenie 5: U

CZENIE WIELOWARSTWOWEJ SIECI JEDNOKIERUNKOWEJ

str. 5

jego wartość prowadzi często do rozbieżności tego procesu, a zbyt mała bardzo go
wydłuża. Niestety, nie ma reguł które potrafiłyby określić precyzyjnie jego wartość.

Dobór architektury sieci i danych uczących

Dobór odpowiedniej struktury wielowarstwowej sieci neuronowej oraz dobór

danych do jej uczenia są podstawowymi zadaniami, z jakimi stykamy się chcąc
wykorzystać

sieci

neuronowe

do

rozwiązywania

jakiegokolwiek

problemu.

Zaprojektowana sieć musi być dopasowana do zadania, które ma rozwiązywać, dane
uczące muszą zawierać wszystkie cechy charakterystyczne dla problemu (populacji
generalnej). W praktyce oznacza to wybór liczby warstw sieci i ilości neuronów w tych
warstwach oraz ustalenie długości ciągu uczącego. Dodatkowo trzeba odpowiedzieć na
pytanie jak długo sieć należy uczyć. Rozwiązanie niektórych z tych problemów w
pewnych przypadkach można wykonać w oparciu o twierdzenia matematyczne, inne
można jedynie oszacować.

Dobór danych uczących


Najczęstszym stwierdzeniem przy doborze długości ciągu uczącego jest

określenie, iż powinien on być reprezentatywny, tzn. powinien dobrze oddawać
charakterystyczne cechy analizowanych danych. Dzięki temu sieć nauczona na takim
ciągu wykorzystując zdolność do generalizacji powinna charakteryzować się wysoką
efektywnością pracy. Istnieje wiele sposobów liczbowej oceny generalizacji, jej miarą
może być np.: średnia liczba alternatywnych generalizacji zbioru treningowego,
prawdopodobieństwo, że trenowana sieć generuje prawidłowy sygnał wyjściowy dla
losowo wybranego wejścia w sensie średnim, prawdopodobieństwo, że trenowana sieć
generuje w najgorszym przypadku prawidłowy sygnał wyjściowy dla losowo
wybranego wejścia.

Liczba warstw ukrytych

Sieć wielowarstwowa może posiadać teoretycznie kilka lub nawet kilkanaście

warstw ukrytych; w praktyce jednak stosuje się sieci z jedną a rzadziej dwoma
warstwami ukrytymi. O tym, iż dwie warstwy ukryte wystarczają, świadczą analizy
matematyków zajmujących się aproksymacją funkcji wielu zmiennych. Należy
zauważyć jedynie, że sztuczna sieć neuronowa pełni funkcję układu aproksymującego
dane uczące. Proces uczenia zapewnia dobór współczynników tej funkcji
aproksymującej (są to wektory wag poszczególnych neuronów). Na etapie
odtwarzania przy ustalonych wartościach wag, następuje jedynie proste obliczanie
wartości funkcji aproksymującej.

W myśl twierdzenia Kołmogorowa aproksymacja dowolnej funkcji ciągłej jest

możliwa przy użyciu sieci z jedną warstwą ukrytą, a w celu aproksymacji funkcji
nieciągłej konieczne jest użycie dwóch warstw ukrytych. Oczywiście przytoczone
twierdzenie stawia tylko minimalne warunki na liczbę warstw sieci gwarantującą
rozwiązanie. Zastosowanie więc większej liczby niż wynikająca z twierdzenia jest
dopuszczalne, ale należy pamiętać, że każda dodatkowa warstwa mocno wydłuża czas
uczenia sieci, a ponadto wzrasta liczba minimów lokalnych, w których sieć może
utknąć podczas procesu uczenia. Jeżeli jednak uczenie sieci o liczbie warstw dobranej
tak, aby spełnić minimum postawione przez twierdzenie Kołmogorowa przebiega źle,
to nie pozostaje nic innego jak dołożyć kolejną warstwę ukrytą. Oczywiście dołożenie

background image

Nowoczesne techniki informatyczne - Ćwiczenie 5: U

CZENIE WIELOWARSTWOWEJ SIECI JEDNOKIERUNKOWEJ

str. 6

kolejnej warstwy pozwala najczęściej zredukować liczbę neuronów w warstwie ukrytej
już istniejącej.


Rozmiary warstw sieci


Ustalenie ilości neuronów w warstwach wejściowej i wyjściowej sztucznej sieci

neuronowej nie stwarza żadnych problemów. Liczba neuronów w warstwie wejściowej
jest zdeterminowana przez długość wektora wejściowego, analogicznie liczba
neuronów w warstwie wyjściowej powinna być równa ilości rozróżnianych przez sieć
klas.

Ustalenie odpowiedniej liczby neuronów w warstwie ukrytej nie jest, niestety,

tak łatwe jak w przypadku warstwy wejściowej bądź też wyjściowej, a jest to jeden z
ważniejszych czynników wpływających na efektywność pracy sieci i przebieg procesu
uczenia. Użycie za małej ich liczby pozbawi sieć środków niezbędnych do rozwiązania
problemu. Użycie zbyt wielu zwiększy czas uczenia i może przynieść efekt tzw.
nadmiernego dopasowania, gdyż sieć będzie się uczyć nieistotnych cech zbioru
uczącego, które są nieważne w populacji generalnej.

Zadaniem sieci jest podzielenie r - wymiarowej przestrzeni obrazów na

s - separowalnych obszarów. W przypadku sieci z jedną warstwą ukrytą zbudowaną z l
- neuronów, zadanie to spoczywa właśnie na tej warstwie. Liczbę neuronów warstwy
ukrytej można wówczas wyznaczyć z zależności:

s

l

2

log

=


Innym

sposobem

przybliżonego

określenia

niezbędnej

liczby

neuronów

w warstwie ukrytej może być tzw. reguła piramidy geometrycznej, która mówi, że „dla
wielu praktycznych zastosowań sieci liczba neuronów w warstwach tworzy kształt
piramidy, przy czym liczba neuronów maleje od wejścia w kierunku wyjścia”. Oznacza
to, że neurony poszczególnych warstw tworzą ciąg geometryczny, czyli dla sieci o n -
wejściach, m - wyjściach z jedną warstwą ukrytą, liczbę neuronów w tej warstwie
można wyznaczyć z zależności:

nm

l

=


Doświadczenie pokazuje, że obie powyższe zależności można traktować jako wzory
określające minimalną liczbę neuronów przy, której sieć się uczy zadanego problemu.

Jak długo uczyć sieć?


Inny problem to wpływ sposobu i czasu uczenia na zdolność uogólniania sieci.

W ogólnym przypadku wraz z upływem czasu błąd uczenia maleje i błąd testowania
również. Taka sytuacja trwa zwykle do pewnego momentu uczenia, poczynając od
którego błąd testowania bądź pozostaje stały, bądź zaczyna nieznacznie rosnąć,
chociaż błąd uczenia nadal maleje. Literatura podaje, iż wynika to zwykle z
ograniczonej liczby próbek uczących. W pewnym momencie procesu uczenia - zwykle
w jego końcowych fazach - sieć zaczyna uczyć się pewnych cech charakterystycznych
dla elementów zbioru uczącego, a nieistotnych w populacji generalnej i powoduje to
wzrost błędu testowania. Tendencje te są tym większe im większa nadmiarowość wag
występuje w sieci. Zaradzić temu można redukując liczbę neuronów w warstwie
ukrytej do tego stopnia, aż sieć utraci zdolność uczenia się szczegółów albo
zwiększając rozmiar ciągu uczącego.

background image

Nowoczesne techniki informatyczne - Ćwiczenie 5: U

CZENIE WIELOWARSTWOWEJ SIECI JEDNOKIERUNKOWEJ

str. 7


P

RZEBIEG ĆWICZENIA


Zadanie 1

Opracować skrypt tworzący jednokierunkową sieć neuronową złożoną z 2 neuronów z
sigmoidalną funkcją przejścia w warstwie ukrytej oraz z 1 neuronu liniowego w
warstwie wyjściowej i przeprowadzić jej uczenie metodą wstecznej propagacji błędu
(‘traingd’) sieci reguł bramki XOR - P=[1 1 0 0 ;1 0 1 0]; T=[0 1 1 0];
Ustalić parametr określający liczbę epok uczenia na 1000, wartość współczynnika
uczenia na 0.1 oraz maks. dopuszczalna wartość funkcji celu na 0.00001
Dla nauczonej sieci zasymulować jej pracę. Skomentować uzyskane rezultaty.


Zadanie 2
Dla przykładu rozwiązanego w zadaniu 1 sprawdzić wpływ liczby neuronów (3 różne
wartości) w warstwie ukrytej oraz wartości współczynnika uczenia (3 różne wartości
różniące się o jeden rząd) na przebieg procesu uczenia. Wykonać symulacje dla dwóch
kombinacji

funkcji

przejścia

neuronów

(np.:

sigmoidalna+liniowa,

tangensoidalna+liniowa itp.).



Wyszukiwarka

Podobne podstrony:
NTI cwiczenie 2
NTI cwiczenie 6
NTI cwiczenie 3
NTI cwiczenie 4
NTI cwiczenie 2
3 ćwiczenia BADANIE asfaltów
Ćwiczenie7
Cwiczenia 2
Ćwiczenia V
metody redukcji odpadów miejskich ćwiczenia
Ćwiczenia1 Elektroforeza
cwiczenia 9 kryzys

więcej podobnych podstron