Matlab opis sieci neuronowych

background image

Funkcje inicjalizacji współczynników wagowych i

progowych

Istotny wpływ na efektywność procesu uczenia sieci neuronowych ma odpowiedni
dobór wstępnych wartości współczynników wagowych i progowych. Pożądany jest

start z wartości wag zbliżonych do optymalnych, co znacznie przyspiesza proces

uczenia, a także zmniejsza ryzyko "utknięcia" w niepożądanym minimum lokalnym

funkcji błędu sieci. Niestety nie istnieje uniwersalna metoda zapewniająca właściwy

dobór punktu startowego dla wszystkich problemów. Z tego względu w większości

praktycznych zastosowań wykorzystuje się losowa inicjalizacje współczynników

wagowych, przyjmując rozkład równomierny w określonym przedziale liczbowym.

Inite - inicjalizacja współczynników wagowych warstw neuronów z rywalizacja
(competitive layer)
Wywołanie:

W = initc (P,S)
Argumenty:
P- macierz wejściowa (wymiar R*2, R - ilość wejść warstwy, należy podać wartość
minimalna i maksymalną)

S - ilość neuronów w warstwie
Wielkości zwracane:
W - macierz współczynników wagowych (wymiar S*R)

Initff - inicjalizacja współczynników wagowych sieci jednokierunkowej (do 3 warstw)

W zależności od postaci funkcji aktywacji poszczególnych warstw inicjalizacja
współczynników wagowych przeprowadzana jest w oparciu o różne przedziały
liczbowe. Dla liniowych, progowych i radialnych funkcji aktywacji wstępne wartości
współczynników wagowych losowane są z przedziału [-1,1]

Wywołanie:
[W1,B1,W2,B2] = initff (P,S1,'F1',S2,'F2')
Argumenty:

P - macierz wektorów wejściowych (wymiar R*Q, R - liczba wejść sieci, Q - ilość
wektorów)
Si - ilość neuronów w i-tej warstwie

Fi - funkcja aktywacji i-tej warstwy (np. 'tansig')
T - macierz wektorów wyjściowych (wymiar Sn*Q, Sn - ilość wyjść sieci)
Wielkości zwracane:
Wi - macierz współczynników wagowych i-tej warstwy

Bi - kolumnowy wektor współczynników progowych i-tej warstwy.

Initlin - inicjalizacja współczynników wagowych warstw neuronów liniowych.


Początkowe wartości współczynników wagowych i progowych dla warstwy neuronów
linowych generowane są losowo z przedziału [-1,1]

Wywołanie:

background image

[W,B] = initlin (R,S)
[W,B] = initlin (P,T)

Argumenty:
R - ilość wejść warstwy

S - ilość neuronów w warstwie
P - macierz wektorów wejściowych (wymiar R*Q, R - warstwy)
Q - liczba wektorów

T - macierz wektorów wyjściowych (wymiar S*Q, S - ilość wektorów warstwy)
Wielkości zwracane:
W - macierz współczynników wagowych warstwy (wymiar S*R)

B - wektor współczynników progowych warstwy (wymiar S*1)

Funkcje uczące sieci neuronowe

Funkcje biblioteki wchodzące w skład tej grypy realizują ważny w procesie uczenia

sieci element, jakim jest określenie przyrostów zmian wartości współczynników
wagowych i progowych jej neuronów. Przyrosty te powinny posiadać taki znak oraz
wartość, aby sieć lepiej realizowała odwzorowanie lub lepiej rozróżniała nadchodzące

do niej bodźce i potrafiła sprawnie grupować je w określone kategorie.

Learnbp - uczenie warstwy z propagacja wsteczna błędu.

Funkcja ta realizuje fragment algorytmu propagacji wstecznej błędu, który umożliwia
uczenie nieliniowej wielowarstwowej sieci neuronowej. Zgodnie z tym algorytmem,
wektor błędu sieci obliczamy dla warstwy wyjściowej rzutowany zostaje wstecz

poprzez kolejne jej warstwy. Umożliwia to obliczenie nowych wartości
współczynników wagowych poszczególnych warstw, a w efekcie zmniejszenie
średniokwadratowego błędu sieci. Funkcja learnbp oblicza przyrosty współczynników

wagowych i progowych w sposób następujący

?W(i,j) = lr*d(i)*p(j)
?B(i) = lr*d(i)

Oznacza to, że wartość współczynnika wagowego W dla j-tego wejścia i-tego
neuronu jest zmieniana proporcjonalnie do iloczyny wartości jego sygnału

wejściowego p(j) i pochodnej błędu d(i). Parametr Lr, zwany współczynnikiem
prędkości uczenia określa wpływ wartości gradientu błędu warstwy na wartość zmian
jej współczynników wagowych.

Wywołanie:

[dW,dB] = learnbp (P,D,LR)

Argumenty:
P - macierz wektorów wejściowych (wymiar R*Q, R- liczba wejść warstwy, Q - ilość
wektorów)

D - macierz pochodnych błędów warstwy (wymiar S*R, S - liczba neuronów w

background image

warstwie)
LR - współczynnik prędkości uczenia (domyślnie LR=1)
Wielkości zwracane:
dW - macierz przyrostów współczynników wagowych warstwy (wymiar S*R)

dB - wektor przyrostów współczynników progowych warstw (wymiar S*1)

Learnbpm - uczenie warstwy z propagacja wsteczna błędu i momentum

Algorytm zmiany współczynników wagowych sieci w postaci klasycznej,
realizowanej przez funkcje learnbp posiada kilka wad, wśród których największą jest

jego wolna zbieżność. Wynika ona m in. Z konieczności stosowania małych wartości
współczynnika prędkości uczenia w celu zapewnienia stabilności procesu. Istnieje
wiele modyfikacji podstawowego algorytmu zmiany wag, wśród nich na uwagę

zasługuje tzw. Technika momentum, wykorzystywana przez funkcje learnbpm.
Zgodnie z tą reguła, zmiana wartości współczynników wagowych i progowych dla i -
tego wejścia i - tego neuronu opisana jest zależnością :

?W(i,j) = mc*?Wp(i,j) + (l-mc)*lr*d(i)*p(j)

?B(i) = mc*?Bp(i) + (l - mc)*Lr*d(i)

Parametr mc (tzw. Stała momentum) określa wpływ poprzedniej zmiany wag ?Wp
i współczynników progowych ?Bp na zmianę dokonywana obecnie. Zastosowanie

członu momentum przyczynia się do likwidacji zbyt gwałtownych zmian wartości
funkcji błędu sieci. Umożliwia to bezpieczne zwiększenie wartości współczynnika
prędkości uczenia Lr.

Wywołanie:

[dW,dB] = learnbpm (P,D,LR,MC,dW,dB)

Argumenty:
P - macierz wektorów wejściowych (wymiar R*Q, R - liczba wejść warstwy, Q -

ilość wektorów),
D - macierz pochodnych błędów warstwy (wymiar S*Q, S - liczba neuronów w
warstwie),

LR - współczynnik prędkości uczenia,
MC - wartość stałej momentum,
dW - macierz przyrostów współczynników wagowych warstwy w poprzednim kroku
(wymiar

S*R),
dB - wektor przyrostów współczynników progowych warstwy w poprzednim kroku
(wymiar

S*1)
Wielkości zwracane:
dW - nowa macierz przyrostów współczynników wagowych warstwy (wymiar S*R),

dB - nowa macierz przyrostów współczynników progowych warstwy (wymiar S*1)

background image

Learnlm - uczenie warstwy według algorytmu Levenberga-Marquardta.

Algorytm propagacji wstecznej w postaci klasycznej wykorzystuje technikę

największego spadku gradientu. Znacznie większą skuteczność uczenia sieci
otrzymuje się w oparciu o algorytmy wykorzystujące oprócz gradientu także
informacje zawarta w hesjanie (macierzy drugich pochodnych) minimalizowanej
funkcji błędu sieci. Jednym z nich jest algorytm Levenberga-Marquardta, w którym

dokładna wartość hesjanu zastępuje się jego wartością aproksymowana. Wzór na
zmianę wartości współczynników wagowych warstwy neuronów wykorzystujący
algorytm Levenberga-Marquardta wygląda następująco:

W = (JT J + ?I) -1 JT E

gdzie:
J - tzw. macierz Jacobiego (macierz pochodnych wektora błędów sieci względem
wszystkich współczynników wagowych warstwy
I - macierz jednostkowa

E - wektor błędów
? - tzw. współczynnik Levenberga-Marquardta, zmienny w trakcie uczenia sieci
Funkcja learnlm oblicza macierz Jacobiego J dla danej macierzy sygnałów

wejściowych warstwy oraz macierzy tzw. wektorów delta (wektorów pochodnych
sygnału błędu sieci względem każdego wejścia warstwy).
Wywołanie:

J = learnlm (P, D)

Argumenty:

P - macierz wektorów wejściowych (wymiar R*Q, R - liczba wejść warstwy, Q -
ilość wektorów)
D - macierz wektorów delta (wymiar S*Q, S - liczba neuronów w warstwie)

Wielkości zwracane:
J - macierz Jacobiego o wymiarze Q wierszy na R*S kolumn

Learnp - uczenie warstwy perceptronowej

Funkcja ta realizuje fragment algorytmu służącego do dostrajania współczynników

wagowych warstwy perceptronów, tzn. neuronów z progowa funkcja aktywacji.
Charakter funkcji aktywacji sprawia, że typowym zastosowaniem perceptronów jest
podział przestrzeni wektorów wejściowych na określone kategorie.
Zaimplementowana w funkcji learnp reguła opisująca przyrost wartości

współczynników wagowych i współczynników progowych w odniesieniu do całej
warstwy perceptronów z wykorzystaniem przetwarzania wsadowego (batching)
wygląda następująco:

W = (T - A)*PT = E*PT
B = (T - A) (1)T = E

background image

Macierz wektorów błędu E zdefiniowana została jako różnica macierzy T zawierającej
kolumnowe wektory zadanych sygnałów wyjściowych warstwy oraz macierzy A, w
której skład wchodzą kolumnowe wektory aktualnych sygnałów wyjściowych. P jest
macierzą zawierającą kolumnowe wektory sygnałów wejściowych warstwy.

Wywołanie:

[dW, dB] = learn (P, E)

[dW, dB] = learnp (P, A, T)

Argumenty:

P - macierz wektorów wejściowych (wymiar R*Q, R - liczba wejść warstwy, Q - ilość
wektorów),
E - macierz wektorów błędu (wymiar S*Q, S liczba neuronów w warstwie),

A - macierz aktualnych zerojedynkowych wektorów wyjściowych warstwy (wymiar
S*Q),
T - macierz zadanych zerojedynkowych wektorów wyjściowych warstwy (wymiar S
*Q),

Wielkości zwracane:
dW - macierz przyrostów współczynników wagowych warstwy (wymiar S* R),
dB - wektor przyrostów współczynników progowych warstw (opcjonalnie, wymiar

S*l),

Learnpn - uczenie warstwy perceptronowej z normalizacja wektora wejściowego

Funkcja learnpn realizuje uczenie warstwy perceptronów w sposób podobny jak
funkcja learnp, jednak przed dokonaniem korekcji wartości współczynnika wagowego
przeprowadzana jest normalizacja wektora wejściowego. Umożliwia to redukcje liczby

cykli treningowych w przypadku dużych różnic rozmiarów wektorów wejściowych.
Reguła ta dla j-tego wejścia i-tego neuronu warstwy może zostać opisana
następującym wzorem:

W(i,j) = e(i) p(j) / || p ||

co oznacza, że wartość współczynnika wagowego dla j-tego wejścia i-tego neuronu
jest zmieniana proporcjonalnie do iloczynu wartości jego sygnału wejściowego p(j),
różnicy e(i) miedzy wyjściowym sygnałem zadanym a aktualnym oraz odwrotnie
proporcjonalnie do normy wektora wejściowego p.

Wywołanie:

[dW, dB] = learnpn (W, E)

Argumenty:
P - macierz wektorów wejściowych (wymiar R*Q, R - liczba wejść warstwy, Q - ilość

wektorów)
E - macierz wektorów błędu (wymiar S*Q, S - liczba neuronów w warstwie)
Wielkości zwracane:

dW - macierz przyrostów współczynników wagowych warstwy (wymiar S* R)
dB - wektor przyrostów współczynników progowych warstwy (wymiar S*l)

background image

Learnwh - uczenie warstwy neuronów według tzw. reguły delta (Widrowa - Hoffa)
Funkcja ta realizuje fragment algorytmu służącego do dostrajania współczynników
wagowych warstwy neuronów liniowych. Reguła określająca przyrost wartości
współczynników wagowych i współczynników progowych w odniesieniu do całej

warstwy liniowej z wykorzystaniem przetwarzania wsadowego (wiele wektorów
wejściowych i wyjściowych jednocześnie) jest opisana następująco:

W = lr*(T - A)*PT = lr*E*PT
B = lr*(T - A)*(l)T = lr*E

Macierz wektorów błędu E zdefiniowana jest jako różnica macierzy T zawierającej
kolumnowe wektory zadanych sygnałów wyjściowych warstwy oraz macierzy A, w
której skład wchodzą kolumnowe wektory aktualnych sygnałów wyjściowych. P jest

macierzą zawierającą kolumnowe wektory sygnałów wejściowych warstwy, a lr -
współczynnikiem prędkości uczenia.
Wywołanie:

[dW, dB] = learnwh (P, E, LR)
dW = learnwh (P,E,LR)

Argumenty:
P - macierz wektorów wejściowych (wymiar R*Q, R - liczba wejść warstwy, Q -
ilość wektorów)

E - macierz wektorów błędu (wymiar S*Q, S - ilość neuronów w warstwie)
LR - współczynnik prędkości uczenia
Wielkości zwracane:
dW - macierz przyrostów współczynników wagowych warstwy (wymiar S*R)

dB - wektor przyrostów współczynników progowych warstwy (wymiar S*l)

Funkcje służące do treningu sieci neuronowych

Działanie funkcji należących do omawianej grupy sprowadza się w większości
przypadków do wielokrotnego powtarzania sekwencji złożonej z wywołania
odpowiedniej funkcji uczenia, modyfikacji współczynników wagowych oraz wywołania

funkcji symulacji sieci w celu obliczenia osiąganego przez nią błędu
średniokwadratowego. Sekwencja taka nosi nazwę cyklu treningowego (ang. training
epoch).

Argumentami wejściowymi funkcji treningowych są: początkowe wartości
współczynników wagowych i progowych, macierze wektorów wejściowych oraz
(w przypadku sieci uczonych pod nadzorem) wektorów wejściowych, a także
opcjonalny wektor parametrów. Działanie funkcji kończy się w momencie osiągnięcia

przez siec zadanego błędu średniokwadratowego bądź w przypadku przekroczenia
zadanej liczby cykli treningowych.
Funkcje treningowe zwracają nowe (wyuczone) wartości współczynników wagowych

oraz współczynników progowych, a także (opcjonalnie) liczbę przebytych cykli
treningowych i osiągnięty błąd średniokwadratowy sieci.

background image

Adaptwh - adaptacyjny trening warstwy neuronów liniowych według reguły delta
(Widrowa-Hoffa)
W odróżnieniu od opisanej dalej funkcji trainwh, omawiana funkcja realizuje
adaptacyjny trening warstwy liniowej. Oznacza to, że zmiana współczynników

wagowych i współczynników progowych odbywa się po prezentacji każdego wektora
uczącego, podczas gdy w przypadku funkcji trainwh zmiana ta następuje dopiero po
zakończeniu cyklu treningowego (po prezentacji wszystkich danych uczących).

Innymi słowy, funkcja adaptwh realizuje uczenie warstwy liniowej neuronów w
trakcie jej działania (on-line).
Wywołanie:

[A, E, W, B] =adaptwh (W, B, P, T, LR)

Argumenty:
W - macierz współczynników wagowych warstwy (wymiar S*R, S - liczba neuronów
w warstwie, R - ilość wejść warstwy)
B - wektor współczynników progowych warstwy (wymiar S*1)

P - macierz wektorów wejściowych (wymiar R*Q, R - liczba wejść sieci, Q - ilość
wektorów)
T - macierz wektorów wyjściowych (wymiar S*Q)

LR - współczynnik prędkości uczenia (opcjonalny, domyślnie = 0.1)
Wielkości zwracane:
A - wektor sygnałów wyjściowych adaptacyjnego filtru liniowego (wymiar 1*Q)
E - wektor błędu (wymiar l *Q)

W - macierz nowych współczynników wagowych warstwy (wymiar S*R)
B - wektor nowych współczynników progowych warstwy (wymiar S*l)

Trainbp - trening sieci jednokierunkowej (do 3 warstw) z propagacja wsteczna
błędu

Trening nieliniowej sieci jednokierunkowej przy użyciu funkcji odbywa
się z wykorzystaniem opisanej w poprzednim rozdział learnbp. Zastosowanie
algorytmu propagacji wstecznej w postaci klasy jest jednak przyczyna wielu trudności

w procesie uczenia sieci (m.in. wolna zbieżność, osiąganie lokalnych minimów funkcji
błędu). Niedogodne częściowo zostały zlikwidowane w kolejnych wersjach funkcji
realizm trening sieci w oparciu o algorytm propagacji wstecznej.
Wywołanie:

[W, B, TE, TR] = trainbp (W, B, 'F', P, T, TP)

Argumenty:
Wi - macierz współczynników wagowych i-tej warstwy (wymiar Si*R, Si - ilość
neuronów w i-tej warstwie, R - ilość wejść warstwy)

Bi - wektor współczynników progowych i-tej warstw (wymiar Si*l)
Fi - funkcja aktywacji i-tej warstwy (np. 'logsig')
P - macierz wektorów wejściowych (wymiar R*Q, R - liczba wejść sieci, Q - ilość
wektorów)

T - macierz zadanych wektorów wyjsciowych (wymiar S*Q, S - liczba wyjsc sieci)

background image

TP - wektor parametrów (opcjonalny):
TP(1) - częstotliwość aktualizacji wykresu błędu sieci (w cyklach, domyślnie = 25)
TP(2) - maksymalna liczba cykli treningowych (domyślnie 100)
TP(3) - graniczny błąd średniokwadratowy) sieci (domyślnie = 0.02)

TP(4) - współczynnik prędkości uczenia (domyślnie = 0.01)
Wielkości zwracane:
Wi - macierz nowych współczynników wagowych i-tej warstwy (wymiar Si * R)

Bi - wektor nowych współczynników progowych warstwy (wymiar Si*l)
TE - liczba przebytych cykli treningowych
TR - średniokwadratowy bład sieci

Trainbpa - trening sieci jednokierunkowej (do 3 warstw) z wsteczna propagacja
błędu i adaptacyjnym doborem współczynnika prędkości uczenia

Przyjęcie stałej wartości współczynnika prędkości uczenia ogranicza efektywność
działania sieci, gdyż nie uzależnia wartości współczynników wagowych sieci od
aktualnej wartości gradientu funkcji gradientu Ponadto przy małych wartościach

współczynnika uczenie jest bardzo wolne; w przypadku zbyt dużej - algorytm może
stać się niestabilny. Omawiana funkcja realizuje trening sieci jednokierunkowej z
zastosowaniem techniki adaptacyjnej zmiany wartości współczynnika prędkości

uczenia.
Wywołanie:

[W, B, TE, TR] = trainbpa (W, B, 'F', P, T, TP)

Argumenty:
Jak dla funkcji trainbp

Dodatkowe parametry wektora parametrów:
TP(5) - współczynnik wzrostu prędkości uczenia (domyślnie 1.05)
TP(6) - współczynnik redukcji prędkości uczenia (domyślnie = 0.7)

TP(7) - maksymalna wartość współczynnika błędu (domyślnie = 1.04)
Wielkości zwracane:
Jak dla funkcji trainbp

Tainbpm - trening sieci jednokierunkowej (do 3 warstw) z propagacja wsteczna
błędu i członem momentum

W porównaniu z funkcja trainbp omawiana funkcja rozszerzona została dodatkowo
o wykorzystanie tzw. techniki momentum, przedstawionej w poprzednim rozdziale
przy okazji omawiania funkcji learnbpm.

Wywołanie:

[W, B, TE, TR] = trainbpm (W, B, 'F', P, T, TP)

Argumenty:
Jak dla funkcji trainbp

Dodatkowe elementy wektora parametrów:
TP(5) - stała momentum (domyślnie = 0.9)

background image

TP(6) - maksymalna wartość współczynnika błędu (domyślnie = l .04 )
Wielkości zwracane:
Jak dla funkcji trainbp

Trainbpx - trening sieci jednokierunkowej (do 3 warstw) z tzw. szybka propagacja
wsteczna błędu

Funkcja przeprowadza trening nieliniowej sieci jednokierunkowej z zastosowaniem
obydwu uprzednio omawianych technik, tzn. adaptacyjnej zmiany współczynnika
prędkości uczenia oraz członu momentum. W efekcie uczenie sieci trwa znacznie

krócej, a prawdopodobieństwo utknięcia w lokalnym minimum funkcji błędu sieci
zostaje zmniejszone.
Wywołanie:

[W, B, TE, TR] = trainbpm (W, B, 'F', P, T, TP)

Argumenty:

Jak dla funkcji trainbp
Dodatkowe elementy wektora parametrów:
TP(5) - współczynnik wzrostu prędkości uczenia (domyślnie = l.05)

TP(6) - współczynnik redukcji prędkości uczenia (domyślnie = 0.7)
TP(7) - stała momentum (domyślnie = 0.9)
TP(8) - maksymalna wartość współczynnika błędu (domyślnie = l.04)

Wielkości zwracane:
Jak dla funkcji trainbp

Trainlm - trening sieci jednokierunkowej (do 3 warstw) według algorytmu

Levenberga-
Marquardta

Funkcja realizuje uczenie sieci w oparciu o optymalizacyjny algorytm Levenberga-
Marquardta, z wykorzystaniem opisanej w poprzednim rozdziale funkcji learnlm.
Trening sieci zajmuje znacznie mniej czasu niż w przypadku klasycznego algorytmu

największego spadku, jednak znacznie rosną wymagania co do wykorzystywanej
pamięci operacyjnej (większa jest złożoność obliczeniowa zadania).
Wywołanie:

[W, B, TE, TR] = trainlm (W, B, 'F', P, T, TP)

Argumenty:

Jak dla funkcji trainbp
Wektor parametrów TP posiada następujące elementy:
TP(1) - częstotliwość aktualizacji wykresu błędu sieci (w cyklach, domyślnie = 25)

TP(2) - maksymalna liczba cykli treningowych (domyślnie = 100)
TP(3) - graniczny błąd średniokwadratowy sieci (domyślnie = 0.02)
TP(4) - minimalny gradient funkcji błędu sieci (domyślnie = 0.0001)

TP(5) - początkowa wartość współczynnika ? (domyślnie = 10)
TP(6) - mnożnik służący do zwiększania wartości współczynnika ? (domyślnie = 10)

background image

TP(7) - mnożnik służący do zmniejszania wartości współczynnika ? (domyślnie = 0.1
)
TP(8) - maksymalna wartość współczynnika ? (domyślnie = lEl0)
Wielkości zwracane:

Jak dla funkcji trainbp

Trainp - trening warstwy neuronów według reguły perceptronowej

Funkcja realizuje trening warstwy perceptronów w oparciu o opisana w poprzednim
rozdziale funkcje learnp.

Wywołanie:

[W, B, TE, TR] = trainp (W, B, P, T,TP)

Argumenty:
W - macierz współczynników wagowych warstwy (wymiar S*R, S - liczba neuronów
w warstwie, R - ilość wejść warstwy)

B - wektor współczynników progowych warstwy (wymiar S * 1)
P - macierz wektorów wejściowych (wymiar R*Q, R - liczba wejść sieci, Q - ilość
wektorów wejściowych)

T - macierz zerojedynkowych wektorów wyjściowych (wymiar S*Q, S - liczba wyjść
sieci)
TP - wektor parametrów (opcjonalny):

TP(1) - częstotliwość aktualizacji wykresu błędu sieci (w cyklach, domyślnie = l)
TP(2) - maksymalna liczba cykli treningowych (domyślnie = 100)
Wielkości zwracane:
W - macierz nowych współczynników wagowych warstwy (wymiar S*R)

B - wektor nowych współczynników progowych warstwy (wymiar S*l)
TE - liczba przebytych cykli treningowych
TR - średniokwadratowy błąd sieci

Trainpn - trening warstwy neuronów według znormalizowanej reguły
perceptronowej

Funkcja realizuje trening warstwy perceptronów w oparciu o opisana w poprzednim
rozdziale funkcje learnpn.
Wywołanie:

[W, B, TE, TR] = trainpn (W, B, P, T,TP)

Argumenty:
Jak dla funkcji trainp
Wielkości zwracane:

Jak dla funkcji trainp

Trainwh - trening warstwy neuronów liniowych według reguły delta (Widrowa-

Hoffa)

background image

Funkcja realizuje trening warstwy neuronów liniowych w oparciu o opisana
w poprzednim rozdziale funkcje learnwh.
Wywołanie:

[W,B,TE,TR]=trainwh(W,B,P,T,TP,WV,BV,ES)

Argumenty:

W - macierz współczynników wagowych warstwy (wymiar S*R, S - liczba neuronów
w warstwie, R - ilość wejść warstwy)
B - wektor współczynników progowych warstwy (wymiar S*l)

P - macierz wektorów wejściowych (wymiar R*Q, R - liczba wejść sieci, Q - ilość
wektorów wejściowych)
T - macierz wektorów wyjściowych (wymiar S*Q, S - liczba wyjść sieci)

WV - wektor współczynników wagowych
BV - wektor współczynników probowych
ES - wstępnie obliczona macierz błędów (opcjonalnie)
TP - wektor parametrów (opcjonalny):

TP(l) - częstotliwość aktualizacji wykresu błędu sieci (w cyklach, domyślnie = 1)
TP(2) - maksymalna liczba cykli treningowych (domyślnie = 100)
TP(3) - graniczny błąd średniokwadratowy sieci (domyślnie = 0.02)

TP(4) - współczynnik prędkości uczenia (domyślna wartość zwracana przez funkcje
maxlinlr)
Wielkości zwracane:
W - macierz nowych współczynników wagowych warstwy (wymiar S*R)

B - wektor nowych współczynników progowych warstwy (wymiar S*l)
TE - liczba przebytych cykli treningowych
TR - średniokwadratowy błąd sieci

Funkcje służące do projektowania sieci neuronowych

Funkcje należące do tej grupy znajdują zastosowanie w przypadku, gdy
współczynniki wagowe sieci nie są otrzymywane w wyniku jej treningu, lecz
arbitralnie ustalane na etapie projektowania.

Solvelin - projektowanie liniowej warstwy neuronów

Wartości współczynników wagowych oraz progowych minimalizujące
średniokwadratowy błąd liniowej warstwy neuronów mogą zostać uzyskane zarówno
w wyniku jej uczenia, jak i obliczone bezpośrednio. O ile opisana w poprzednim

rozdziale funkcja trainwh realizuje w sposób iteracyjny trening warstwy liniowej, o
tyle funkcja solvelin rozwiązuje bezpośrednio dane równanie macierzowe ze względu
na nieznana macierz wag i wektor współczynników progowych wykorzystując
operator / (dzielenia)

Wywołane:

[W,B]=solvelin(P,T)

background image

Argumenty:
P - macierz wektorów wejściowych (wymiar R*Q, R - liczba wejść sieci, Q - ilość
wektorów wejściowych)
T - macierz wektorów wyjściowych (wymiar S*Q, S - liczba wyjść sieci)

Wielkości zwracane:
W - macierz współczynników wagowych warstwy (wymiar S*R)
B - wektor współczynników progowych warstwy (wymiar S* 1)

Funkcje służące do symulacji działania sieci neuronowych

Podobnie jak funkcje realizujące trening sieci, także funkcje symulujące ich działanie
umożliwiają tzw. przetwarzanie wsadowe (ang. batching), tzn. jednoczesna
prezentacje wielu wektorów wejściowych i otrzymywanie odpowiednich wektorów

sygnałów wyjściowych sieci. Argumentami omawianej grupy funkcji są w większości
przypadków uzyskane w wyniku treningu bądź projektowania sieci macierze
współczynników wagowych i wektory współczynników progowych odpowiednich

warstw oraz macierz wektorów wejściowych sieci. W wyniku otrzymuje się macierze
zawierające odpowiednie wektory sygnałów wyjściowych sieci (względnie jej
poszczególnych warstw).

Simuff - symulacja sieci jednokierunkowej (do 3 warstw)

Wywołanie:

A=simuff( P ,W,B,'F')

Argumenty:
P - macierz wektorów wejściowych (wymiar R*Q, R - liczba wejść sieci, Q - ilość
wektorów wejściowych)

Wi - macierz współczynników wagowych i-tej warstwy (wymiar Si*T, Si - ilość
neuronów w i-tej warstwie, T - ilość wejść warstwy)
Bi - wektor współczynników progowych i-tej warstwy (wymiar Si*l)
Fi - funkcja aktywacji i-tej warstwy, np. 'logsig'

Wielkości zwracane:
A - wektor sygnałów wyjściowych i-tej warstwy (wymiar Si*l)

Simup - symulacja warstwy perceptronowej

Wywołanie:

A = simup (P, W, B)

Argumenty:
P - macierz wektorów wejściowych (wymiar R*Q, R - liczba wejść warstwy. Q - liczba
wektorów)
W - macierz współczynników wagowych warstwy (wymiar S*R, S - liczba neuronów

w warstwie)
B - wektor współczynników progowych warstwy (wymiar S * l)

background image

Wielkości zwracane:
A - wektor sygnałów wyjściowych warstwy (wymiar S*l)

Funkcje aktywacji warstw neuronowych

Potencjał neuronu, tzn. iloczyn wektora sygnałów wejściowych i transponowanego

wektora współczynników wagowych przetwarzany jest przez blok aktywacji, który

w zależności od potrzeb może być opisany różnymi funkcjami. W skład biblioteki

wchodzi dziewięć wyszczególnionych poniżej funkcji aktywacji, jednak w miarę

potrzeb grupę tę można rozbudowywać o kolejne funkcje.

Compet - funkcja rywalizacji
Hardlim - funkcja progowa (skoku jednostkowego)

Hardlims - symetryczna funkcja progowa (signum)
Logsig - funkcja sigmoidalna
Purelin - funkcja liniowa

Radbas - funkcja radialna (bazowa Gaussa)
Satlin - funkcja liniowa z nasyceniem
Satlins - symetryczna funkcja liniowa z nasyceniem

Tansig - funkcja tangens hiperboliczny

Funkcje graficzne

Funkcje tej grupy umożliwiają przeprowadzenie graficznej ilustracji procesu uczenia

sieci, wizualizacje wektorów wejściowych, wyjściowych oraz wartości współczynników

wagowych. Z reguły wykorzystywane są one przez inne funkcje biblioteki oraz m-pliki

demonstracyjne, jednak możliwe jest bezpośrednie wykorzystanie ich przez

użytkownika.


Barerr - tworzenie słupkowego wykresu błędów
Hintonw - tworzenie diagramu Hintona dla współczynników wagowych

Hintonwb - tworzenie diagramu Hintona dla współczynników wagowych i
progowych
Plotep - rysowanie aktualnego położenia wagowego i progowego na powierzchni

błędu utworzonej przez funkcje plotes
Plotes - rysowanie powierzchni błędu
Ploterr - tworzenie wykresu średniokwadratowego błędu sieci w funkcji cyklu
uczenia

Plotfa - tworzenie wykresu zadanych i aktualnych wektorów wyjściowych sieci
Plotlr - tworzenie wykresu predkosci uczenia sieci w funkcji cykli treningowych
Plotsm - tworzenie wykresu wektorów wagowych sieci samoorganizującej się

Plotpc - dodanie linii klasyfikacyjnych do wykresu utworzonego przy pomocy funkcji
Plotpv - tworzenie wykresu wektorów wejściowych sieci perceptronowej wraz
z zerojedynkowymi wektorami celu

Plotvec - tworzenie wykresu wektorów

background image

Funkcje realizujące generatory liczbowe

Funkcje należące do omawianej grupy wykorzystywane są w większości przypadków

przez funkcje inicjalizacyjne, generujące początkowe wartości współczynników
wagowych i progowych warstw neuronowych.

Midpoint - generator wartosci srodkowej
Nwlog - losowy generator Nguyena-Widrowa dla warstwy neuronów sigmoidalnych
Nwtan - losowy generator Nguyena-Widrowa dla warstwy neuronów
tangensoidalnych

Randnc - generator macierzy współczynników wagowych o znormalizowanych
kolumnach
Randnr - generator macierzy współczynników wagowych o znormalizowanych

wierszach
Rands - symetryczny generator losowy

Nowe funkcje tworzące sieci neuronowe

(New Networks Functions NNT 4.0)

Newff - tworzy siec jednokierunkowa ze wsteczna propagacja błędu
Wywołanie:

net = newff (PR, [S1 S2...SNl], {TF1 TF2...TFNl}, BTF, BLF, PF)

Argumenty:
PR - Macierz minimalnych i maksymalnych wartości dla R wejściowych elementów
(wymiar Rx2)

Si - Rozmiar warstwy, dla Nl warstw
Tfi - Funkcja przejścia dla każdej warstwy, domyślnie = 'tansig'
BTF - Funkcja trenująca siec z propagacja wsteczna, domyślnie = 'traingdx'

BLF - Funkcja ucząca wagi/biasy sieci z propagacja wsteczna, domyślnie = 'learngdm'
PF - Przykładowa funkcja błędu, domyślnie = 'mse'
Wielkości zwracane:
Funkcja zwraca N warstwowa siec neuronowa z propagacja wsteczna

Newfftd - tworzy siec jednokierunkowa z opóźnieniem wejść, z wsteczna propagacja
Wywołanie:

net = newfftd (PR, ID, [S1 S2...SNl], {TF1 TF2...TFNl}, BTF, BLF, PF)

Argumenty:
ID - wektor opóźnienia wejść
Pozostałe jak dla funkcji newff
Wielkości zwracane:

Funkcja zwraca N warstwowa siec neuronowa z propagacja wsteczna

background image

Newlin - tworzy liniowa warstwę neuronów
Wywołanie:

net = newlin (PR, S, ID, LR)

Argumenty:
PR - Macierz minimalnych i maksymalnych wartości dla R wejściowych elementów

(wymiar Rx2)
S - Liczba neuronów
TF - Funkcja aktywacji, domyślnie = 'hardlim'

LF - Funkcja ucząca, domyślnie = 'learnp'

Wartości zwracane:

Funkcja zwraca gotowy perceptron

Funkcje uczące sieci neuronowe (NNT 4.0)

Learncon - uczenie "sumienne" biasu warstwy neuronów
Wywołanie:

[dB, LS] = learncon (B, P, Z, N, A, T, E, gW, gA, D, LP, LS)

Argumenty:

B - macierz wektorów biasów (wymiar S*1)
P - macierz wektorów wejściowych
Z - macierz wektorów wejściowych wag (wymiar S*Q)

N - macierz wektorów wejściowych sieci (wymiar S*Q)
A - macierz wektorów wyjściowych (wymiar S*Q)
T - macierz zadanych wektorów wyjściowych warstwy (wymiar S *Q)
E - macierz wektorów błędu (wymiar S*Q)

gW - SxR gradient with respect to performance
gA - SxQ output gradient with respect to performance
D - macierz odległości pomiędzy neuronami (wymiar SxS)

LP - parametry uczące
LS - współczynnik uczenia
Wielkości zwracane:
dB - wektor przyrostów współczynników progowych warstwy (wymiar S*l)

LS - Nowa wartość współczynnika uczenia

Learngd - uczenie warstwy neuronów metoda spadku gradientu

Wywołanie:

[dW, LS] = learngd (W, P, Z, N, A, T, E, gW, gA, D, LP, LS)

[db, LS] = learngd (b-ones (1, Q), Z, N, A, T, E, gW, gA, D, LP, LS)

Argumenty:

W - macierz wartości wag (wymiar SxR) lub wektor biasu (wymiar Sx1)
P - macierz wektorów wejściowych (wymiar RxQ)

background image

Z - macierz wektorów wejściowych wag (wymiar S*Q)
N - macierz wektorów wejściowych sieci (wymiar S*Q)
A - macierz wektorów wyjściowych (wymiar S*Q)
T - macierz zadanych wektorów wyjściowych warstwy (wymiar S*Q)

E - macierz wektorów błędu (wymiar S*Q)
gW - SxR gradient with respect to performance
gA - SxQ output gradient with respect to performance

D - macierz odległości pomiędzy neuronami (wymiar SxS)
LP - parametry uczące
LS - współczynnik uczenia

Wielkości zwracane:
dW - zmieniona macierz wartości wag (wymiar SxR) lub biasu
LS - nowa wartość współczynnika uczenia

Learngdm - uczenie warstwy neuronów metoda spadku gradientu i metoda
momentum
Wywołanie:

[dW, LS] = learngdm (W, P, Z, N, A, T, E, gW, gA, D, LP, LS)
[db, LS] = learngdm (b, ones (1, Q), Z, N, A, T, E, gW, gA, D, LP, LS)

Argumenty:
Jak dla funkcji learngd

Wartości zwracane:
Jak dla funkcji learngd

Learnp - uczenie warstwy perceptronowej

Wywołanie:

[dW, LS] = learnp (W, P, Z, N, A, T, E, gW, gA, D, LP, LS)

[db, LS] = learnp (b-ones(1, Q), Z, N, A, T, E, gW, gA, D, LP, LS)

Argumenty:

Jak dla funkcji learngd
Wartości zwracane:
Jak dla funkcji learngd

Learnpn - uczenie warstwy perceptronowej z normalizacja wektora wejsciowego
Wywołanie:

[dW, LS] = learnpn (W, P, Z, N, A, T, E, gW, gA, D, LP, LS)

Argumenty:

Jak dla funkcji learngd
Wartości zwracane:
Jak dla funkcji learngd

background image

Learnwh - uczenie warstwy neuronów według tzw. reguły delta (Widrowa - Hoffa)
Wywołanie:

[dW, LS] = learnwh (W, P, Z, N, A, T, E, gW, gA, D, LP, LS)
[db, LS] = learnwh (b, ones(1, Q), Z, N, A, T, E, gW, gA, D, LP, LS)

Argumenty:

Jak dla funkcji learngd
Wartości zwracane:
Jak dla funkcji learngd

Funkcje służące do treningu sieci neuronowych (NNT 4.0)

Traingd - trening metoda wstecznej propagacji błędu ze spadkiem gradientu
Wywołanie:

[net, TR, Ac, El] = traingd (net, Pd, Tl, Ai, Q, TS, VV, TV)

Argumenty:
net - trenowana siec neuronowa

Pd - macierz wektorów wejściowych
Tl - macierz wektorów wzorcowych
Ai - initial input conditions

Q - liczba wektorów
TS - ilosc kroków uczenia
VV - pusta macierz [] lub macierz wektorów walidacyjnych

TV - pusta macierz [] lub struktura wektorów testowych
Parametry:
net.trainParam.epochs - maksymalna liczba powtórzeń w treningu (domyślnie = 10)
net.trainParam.goal - współczynnik błędu (domyślnie = 0)

net.trainParam.lr - współczynnik prędkości uczenia (domyślnie = 0.01)
net.trainParam.max_fail - ilość błędnych powtórzeń (domyślnie = 5)
net.trainParam.min_grad - minimalny błąd gradientowy (domyślnie = 1e-10)

net.trainParam.show - ilość powtórzeń pomiędzy przedstawieniem wyniku (domyślnie
= 25)
net.trainParam.time - maksymalny czas treningu w sekundach (domyślnie = inf)
Wartości zwracane:

net - wytrenowana siec neuronowa
TR - najlepsze wyniki z poszczególnych epok
TR.epoch - liczba epok (powtórzeń)

TR.perf - rezultat treningu.
TR.vperf - rezultat uaktualnień
TR.tperf - rezultat testu

Ac - zbiorowy rezultat wyjść z ostatniej epoki
El - błędy uzyskane w ostatnim powtórzeniu

background image

Tranigda - adaptacyjny trening metoda wstecznej propagacji błędu ze spadkiem
gradientu
Wywołanie:

[net, TR, Ac, El] = traingda (net, Pd, Tl, Ai, Q, TS, VV, TV)

Traingdm - trening metoda wstecznej propagacji błędu ze spadkiem gradientu i

momentum
Wywołanie:

[net, TR, Ac, El] = traingdm (net, Pd, Tl, Ai, Q, TS, VV, TV)

Pozostałe parametry wejściowe i wyjściowe jak dla funkcji traingd.

Traingdx - adaptacyjny trening metoda wstecznej propagacji błędu ze spadkiem
gradientu i momentum

Wywołanie:

[net, TR, Ac, El] = traingdx (net, Pd, Tl, Ai, Q, TS, VV, TV)

Pozostałe parametry wejściowe i wyjściowe jak dla funkcji traingd.

Trainrp - resilient backpropagation

Wywołanie:

[net, TR, Ac, El] = trainrp (net, Pd, Tl, Ai, Q, TS, VV, TV)

Argumenty:
Jak dla funkcji traingd

Parametry:
net.trainParam.epochs - maksymalna liczba powtórzeń w treningu (domyślnie = 10)
net.trainParam.goal - współczynnik błędu (domyślnie = 0)
net.trainParam.lr - współczynnik prędkości uczenia (domyślnie = 0.01)

net.trainParam.max_fail - ilość błędnych powtórzeń (domyślnie = 5)
net.trainParam.min_grad - minimalny błąd gradientowy (domyślnie = 1e-10)
net.trainParam.show - ilość powtórzeń pomiędzy przedstawieniem wyniku (domyślnie

= 25)
net.trainParam.time - maksymalny czas treningu w sekundach (domyślnie = inf)
net.trainParam.delt_inc - inkrementacja zmiany wag (domyślnie = 1.2)

net.trainParam.delt_dec - dekrementacja zmiany wag (domyślnie = 0.5)
net.trainParam.delta0 - początkowa zmiana wag (domyślnie = 0.07)
net.trainParam.deltamax - maksymalna zmiana wag (domyślnie = 50.0)
Wartości zwracane:

Jak dla funkcji traingd

Trainoss - one step secant backpropagation

Wywołanie:

background image

[net, TR, Ac, El] = trainoss (net, Pd, Tl, Ai, Q, TS, VV, TV)

Pozostałe parametry wejściowe i wyjściowe jak dla funkcji traingd.

Traincgp - trening metoda gradientu sprzężonego według Polaka - Ribiery
Wywołanie:

[net, TR, Ac, El] = traincgp (net, Pd, Tl, Ai, Q, TS, VV, TV)

Pozostałe parametry wejściowe i wyjściowe jak dla funkcji traingd.

Traincgb - trening metoda gradientu sprzężonego według Powella - Bealea
Wywołanie:

[net, TR, Ac, El] = traincgb (net, Pd, Tl, Ai, Q, TS, VV, TV)

Pozostałe parametry wejściowe i wyjściowe jak dla funkcji traingd.

Traincgf - trening metoda gradientu sprzężonego według Fletchera - Powella

Wywołanie:

[net, TR, Ac, El] = traincgf (net, Pd, Tl, Ai, Q, TS, VV, TV)

Pozostałe parametry wejściowe i wyjściowe jak dla funkcji traingd.

Trainscg - trening metoda gradientu sprzężonego z regularyzacją

Wywołanie:

[net, TR, Ac, El] = trainscg (net, Pd, Tl, Ai, Q, TS, VV, TV)

Argumenty:
Jak dla funkcji traingd

Parametry:
net.trainParam.epochs - maksymalna liczba powtórzeń w treningu (domyślnie = 10)
net.trainParam.goal - współczynnik błędu (domyślnie = 0)
net.trainParam.lr - współczynnik prędkości uczenia (domyślnie = 0.01)

net.trainParam.max_fail - ilość błędnych powtórzeń (domyślnie = 5)
net.trainParam.min_grad - minimalny błąd gradientowy (domyślnie = 1e-10)
net.trainParam.show - ilość powtórzeń pomiędzy przedstawieniem wyniku (domyślnie

= 25)
net.trainParam.sigma - determinacja zmiany wag dla drugiej pochodnej (domyślnie =
5.0e-5)

net.trainParam.lambda - parametr regularyzacji (domyślnie = 5.0e-7)))
Wartości zwracane:
Jak dla funkcji traingd

Trainbfg - trening metoda wstecznej propagacji według Newtona
Wywołanie:

background image

[net, TR, Ac, El] = trainbfg (net, Pd, Tl, Ai, Q, TS, VV, TV)

Pozostałe parametry wejściowe i wyjściowe jak dla funkcji traingd.

Funkcje aktywacji (NNT 4.0)

Compet - funkcja rywalizacji
Hardlim - funkcja progowa (skoku jednostkowego)

Hardlims - symetryczna funkcja progowa (signum)
Logsig - funkcja sigmoidalna
Purelin - funkcja liniowa

Radbas - funkcja radialna (bazowa Gaussa)
Satlin - funkcja liniowa z nasyceniem
Satlins - symetryczna funkcja liniowa z nasyceniem
Tansig - funkcja tangens hiperboliczny

Poslin - Positive linear transfer function
Softmax - Soft max transfer function
Tribas - Triangular basis transfer function


Wyszukiwarka

Podobne podstrony:
MatLab Sztuczne sieci neuronowe Nieznany
opis sieci neuronowej
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

więcej podobnych podstron