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