Matlab opis sieci neuronowych


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:
[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 bodzce 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
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)
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
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)
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ądz 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.
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)
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)
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)
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)
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)
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ądz 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)
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
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óznieniem wejść, z wsteczna propagacja
Wywołanie:
net = newfftd (PR, ID, [S1 S2...SNl], {TF1 TF2...TFNl}, BTF, BLF, PF)
Argumenty:
ID - wektor opóznienia wejść
Pozostałe jak dla funkcji newff
Wielkości zwracane:
Funkcja zwraca N warstwowa siec neuronowa z propagacja wsteczna
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)
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
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
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:
[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:
[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
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
Sieci neuronowe w modelowaniu zabużeń neuropsychologicznych readme
SZTUCZNE SIECI NEURONOWE

więcej podobnych podstron