5 RBF – Sieci o radialnych funkcjach bazowych

Transkrypt

5 RBF – Sieci o radialnych funkcjach bazowych
5 RBF – SIECI O RADIALNYCH FUNKCJACH BAZOWYCH
1
plik rbf.tex, 2 stycznia 2006
5
RBF – Sieci o radialnych funkcjach bazowych
Sieci te sa, opisane np. w ksiażkach
Osowskiego [2] (rozdziaÃl 5), Bishopa [1] (rozdziaÃl
,
5), Nabney’a [4] (rozdziaÃl 6), oraz w artykule przegladowym
Silipo [5].
,
Sieci tego typu sÃluża, najcześciej
do nieliniowej aproksymacji zmiennych numerycznych.
,
Sa, używane również w zagadnieniach klasyfikacyjnych (por. Bishop [1], Nabney [4]) gdzie
odtwarzaja, funkcje gestości
p(x) rozkÃladu zmiennych objaśniajacych
x = (x1 , . . . , xd )T .
,
,
Z różnych twierdzeń (np. Poggio i Girosi, 1990) wynika, że taka sieć może sÃlużyć jako
uniwersalny aproksymator i przybliżyć z dowolna, dokÃladnościa, dowolna, funkcje, ciagÃ
, la
określona, na dziedzinie wielozmiennej.
Zasadnicza różnica sieci RBF – w porównaniu do sieci GLM lub MLP – ujawnia sie,
w odmniennym dziaÃlaniu warstwy ukrytej oraz w odmiennym sposobie trenowania takiej
sieci.
5.1
Radialne funkcje bazowe (RBF) – Definicja i przykÃlady
Definicja radialnej funkcji bazowej (RBF)
Niech x i c oznaczaja, dwa punkty leżace
w przestrzeni Rd . Punkt c uważamy za
,
ustalony i nazywamy punktem–centrum. Punkt x uważamy za zmienny.
Definicja. Radialna, funkcja, bazowa, (typu RBF ) nazywamy funkcje, G postaci
G(x; c) = G( r(x, c ))
(5.1)
gdzie r(x, c ) jest odlegÃlościa, miedzy
punktami x i c.
,
Centrum c w powyższej definicji jest ustalone i gra role, parametru funkcji. Funkcje
radialne sa, nazywane czasami jadrami
(kernels).
,
Z zapisu (5.1) wynika, że wartości funkcji G(.) – dla danego argumentu x – zależa, tylko
od odlegÃlości r argumentu (x) od centrum c.
FormuÃla określajaca
funkcje, G, może zawierać dodatkowe parametry, np. parametr σ
,
określajacy
szerokość jadra.
,
,
Określanie odlegÃlości. Przy określaniu odlegÃlości miedzy
punktami x oraz c
,
używa sie, najcześciej
odlegÃlości euklidesowej
,
r = r(x, c ) = ||x − c||2 = {(x − c)T (x − c)}1/2 .
Używa sie, również tzw. odlegÃlość Mahalanobisa D, której kwadrat jest określony wzorem:
(5.2)
D2 = D2 (r(x, c )) = (x − c)T Σ−1 (x − c).
Jest to odlegÃlość liczona w metryce wyznaczonej macierza, Σ−1 , gdzie macierz Σ oznacza
macierz kowariancji rozważanych zmiennych X1 , X2 , . . . , Xd .
Dla Σ−1 = I odlegÃlość Mahalanobisa sprowadza sie, do odlegÃlości euklidesowej.
PrzykÃlady funkcji radialnych
PrzykÃlad 1. Funkcja Gaussa. Radialna funkcja Gaussa jest określona wzorem
G(x; c, σ 2 ) = exp{−
||x − c||2
}.
2σ 2
(5.3)
5 RBF – SIECI O RADIALNYCH FUNKCJACH BAZOWYCH
2
Jest to funkcja o ksztaÃlcie dzwonu. Szerokość dzwonu reguluje parametr σ 2 nazywany
szerokościa, (width) lub parametrem gÃladkości (smoothness) lub spÃlaszczenia. Powiekszanie
,
parametru σ 2 powoduje, że ’dzwon’ staje sie, coraz to szerszy i niższy.
I tak np. dla wartości σ22 > σ12 funkcja G(x; c, σ22 ) jest szersza i bardziej spÃlaszczona
aniżeli funkcja G(x; c, σ12 ) (por. Rys. 5.1).
PrzykÃlad 2. Funkcja TPS, Thin Plate Spline.
G(r) = r2 log(r).
(5.4)
PrzykÃlad 3. Radykalna funkcja TPS. Jest to funkcja TPS pomnożona przez r2 :
G(r) = r2 log(r)
W pakiecie Netlab zaimplementowano wszystkie trzy wymienione wyżej funkcje aktywacji. Rysunek 5.1 pokazuje przebiegi tych funkcji – w zależności od wielkości r.
4
Gaussian sigma1= 1 and sigma2= 2
TPS and r
log r
2
sigma1
sigma2
TPS
r4logr
1
1.5
Value RBF
0.8
1
0.6
0.5
0.4
0
0.2
0
0
0.5
1
Distance r
1.5
2
−0.5
0
0.5
1
1.5
2
Rysunek 5.1: Wykresy różnych funkcji bazowych w zależności od argumentu r, gdzie
r oznacza odlegÃlość miedzy
wektorami–punktami x i c: r = [(x − c)T (x − c)]0.5 .
,
Lewy rysunek: Funkcja Gaussian dla dwóch wartości parametru σ. Prawy rysunek:
Funkcje TPS (r2 log(r)) oraz r4log(r). {Plik rad2.eps}
PrzykÃlady innych funkcji radialnych (wraz z wykresami) można znaleźć np. w ksiażce
,
Osowskiego, str. 168, Rys. 5.4.
5.2
Architektura sieci typu RBF
Sieci RBF, oprócz zerowej warstwy wejściowej, zawieraja, jedna, warstwe, ukryta, i warstwe,
wyjściowa., PrzepÃlyw informacji nastepuje
do przodu, bez wymiany informacji miedzy
,
,
neuronami w jednej warstwie.
Sieć RBF jest siecia,, o architekturze:
d inputs → H hidden → c outputs.
Wartości d, H, c sa, podawane przez użytkownika. Dodatkowo użytkownik powinien określić
radialna, funkcje, bazowa, G(r(x, c)), przetwarzajac
, a, dane w warstwie ukrytej.
Architektura sieci RBF jest przedstawiona na rysunku 5.2.
5 RBF – SIECI O RADIALNYCH FUNKCJACH BAZOWYCH
3
Rysunek 5.2: Sieć RBF o d wejściach, H radialnych funkcjach bazowych i c wyjściach. Podawanie informacji nastepuje
tylko wprzód, tzn. od lewej (wejście) poprzez przetwarzanie
,
przez neurony warstwy ukrytej – do neuronów warstwy wyjściowej. {netrbf.ps}
Omówimy teraz dziaÃlalnie warstw: wejściowej, ukrytej i wyjściowej sieci RBF.
Warstwa wejściowa dziaÃla podobnie, jak w znanych nam już sieciach MLP lub GLM.
Podajemy tutaj sieci dane z tablicy XN ×d = [x1 , . . . , xn , . . . , xN ]T , wierszami. Kolejne
wiersze tej tablicy sa, interpretowane jako punkty xn = [xn1 , . . . , xnd ]T ∈ Rd .
Warstwa ukryta skÃlada sie, z H neuronów. Każdy z neuronów (h) posiada swoje
centrum ch ∈ Rd . Centra te, w liczbie H, sa, inicjowane podczas tworzenia struktury sieci,
a nastepnie
– podczas procesu uczenia (trenowania) sieci – sa, dostosowywane do danych
,
treningowych.
Dla danego wektora wejściowego xn zostaja, obliczone – przez kolejne neurony – ich
aktywacje wyjściowe {Gxcn}
n
zn = [z1n , . . . , zH
] = [G(xn , c1 ), G(xn , c2 ), . . . , G(xn , cH )].
(5.5)
Warstwa wyjściowa zawiera neurony, które dziaÃlaja, podobnie, jak w sieciach GLMi
MLP. Każdy z neuronów (k) ma przypisany wektor wag wk = [wk1 , . . . , wkH ]T oraz wartość
progowa, (bias) wk0 .
Każdy neuron – posÃlugujac
, sie, swoimi wagami – wykonuje sumowanie dochodzacych
,
n T
] i przekazuje je na zewnatrz
–
jako
do niego z warstwy ukrytej sygnaÃlów zn = [z1n , . . . , zH
,
n
wynik odpowiadajacy
wektorowi
wejściowemu
x
.
,
Tak wiec,
w
końcowym
rezultacie, dla każdego wektora wejściowego xn przedstawionego
,
na wejściu sieci, zostaje obliczony wektor odpowiedzi yn = [y1n , . . . , ycn ]T :
yn = (zn )T W + b,
gdzie
W = [w1 , . . . wc ], b = [w1,0 , . . . , wc,0 ].
5 RBF – SIECI O RADIALNYCH FUNKCJACH BAZOWYCH
4
Podsumujmy: W trakcie swego dziaÃlania sieć przetwarza dane w nastepuj
acy
sposób:
,
,
X ⇒ Z ⇒ Y.
Rozpisujac
, bardziej szczegóÃlowo:
Najpierw na podstawie danych wejściowych X zostaja, obliczone wartości Z, czyli aktywacje
wyjściowe neuronów warstwy ukrytej:



x11 . . . x1d
 .
. ⇒Z=

X=
. . . .. 
 ..


N
N
x1 . . . x d
z11
..
.
z1N



. . . zd1
G(x1 , c1 ) . . . G(x1 , cH )



.
..
..


. . . .. 
.
...
.
=

N
N
N
. . . zd
G(x , c1 ) . . . G(x , cH )
Nastepnie
aktywacje Z zostaja, przetworzone na ostateczne wyniki Y = ZW
,


y11 . . . yc1
 .
. 
Z⇒Y=
. . . .. 

 ..
N
N
y1 . . . yc
5.3
Uczenie sieci
Rozróżniamy tu dwa etapy: I. Wyznaczenie centrów. II. Wyznaczanie wag.
Etapy te sa, wykonywane sekwencyjnie i nie zazebiaj
a, sie.
,
,
5.3.1
Etap I. Wyznaczanie centrów i ewtl. parametrów spÃlaszczenia
Centra – w zadeklarowanej liczbie H – sa, rozstawiane w przestrzeni zmiennych objaśniajacych
Rd .
,
Wyznaczanie centrów może sie, odbywać w zasadzie na 3 sposoby:
d
1. rozmieszczajac
, w sposób losowy H punktów w przestrzeni R ;
2. przez podziaÃl punktów–wierszy próbki uczacej
na H klasterów. Można to zrobić np.
,
za pomoca, procedury kmeans lub metoda, mieszanin wykorzystujac
, a, algorytm EM.
Algorytm k-means jest wyjaśniony niżej;
3. startujemy z liczba, klasterów równa, liczebności próbki uczacej
– każdy punkt tej
,
próbki stanowi wtedy jedno centrum, a bÃlad
, reprezentacji (np. obliczany ze wzoru
[5.6]) wynosi 0. Nastepnie
redukujemy stopniowo liczbe, centrów, aż zostanie ich tylko
,
H.
Metoda k-means startuje z losowego rozmieszczenia H punktów, które peÃlnia, role,
chwilowych centrów w przestrzeni danych Rd . Nastepnie
wykonywane sa, iteracyjnie dwa
,
kroki:
(a). Dla każdego pun ktu (xq ) ∈ Rd zostaje znalezione najbliższe mu centrum (w sensie
przyjetej
metryki). Tym samym otrzymamy podziaÃl caÃlego zbioru danych na H podzbiorów
,
S1 , . . . , SH . Dla każdego z nich obliczamy średnia, arytmetyczna, (środek cieżkości):
,
mh =
1 X q
x,
Nh q∈Sh
h = 1, . . . , H.
(b). Wyznaczone w ten sposób średnie m1 , . . . , mH przyjmujemy jako nowe centra.
Zostaje wyznaczony aktualny bÃlad
, reprezentacji
E=
H X
X
h=1 q∈Sh
||xq − mh ||2 .
(5.6)
5 RBF – SIECI O RADIALNYCH FUNKCJACH BAZOWYCH
5
Uaktualnianie centrów (średnich {mh }) – poprzez wykonywanie kroków (a) i (b) kontynuujemy tak dÃlugo, aż bÃlad
, E ustabilizuje sie,
, lub zostanie przekroczona maksymalna
liczba iteracji.
Metoda gmm (general mixture model) dostarcza znacznie lepszego rozÃlożenia centrów
wsród obserwowanych danych x. Pakiet Netlab wyznacza centra wÃlaśnie metoda, gmm.
Otrzymane z maÃlej liczby iteracji (np. 5 iteracji metoda, k-means) średnie stanowia, wstepne
,
przybliżenie, na podstawie których wyznacza sie, wÃlaściwe centra, używane później przez
radialne funkcje bazowe.
Parametr spÃlaszczenia σ (nazywany również szerokościa, jadra
lub parametrem gÃlad,
kości) wystepuj
acy
przy
używaniu
funkcji
Gaussowskiej
określonej
wzorem
(5.3) szacuje sie,
,
,
na podstawie postepowania
heurystycznego; np. średniej odlegÃlości każdego centrum od
,
najbliższego jego sasiada:
,
σ=
H
1 X
||mi − mj ||,
H i=1
gdzie mj : ||mi − mj || = min ||mi − mk ||.
k
Możliwy jest również algorytm który przyjmuje, że punkty próbki uczacej
sa, mieszanina,
,
rozkÃladów gaussowskich o indywidualnych centrach i indywidualnych szerokościach jader.
,
Jednoczesne wyznaczanie centrów ch , (h = 1, . . . , H) i odpowiadajacych
im szerokości σh
,
jest możliwe dzieki
naprzemiennemu stosowaniu algorytmu EM. Algorytm takiego wyzna,
czania klasterów jest zrealizowany w pakiecie Netlab.
Parametr σ można wyznaczać również metoda, cross-validation (k-fold cross-validation).
Przy realizacji w Netlabie w wyznaczaniu centrów bierze udziaÃl tylko próbka uczaca
,
– dlatego należy zadbać, aby ta próbka byÃla reprezentatywna dla wszystkich danych. Przy
rozstawianiu centrów za pomoca, funkcji Netlaba nie uwzglednia
sie, wartości docelowych.
,
5.3.2
Etap II. Wyznaczanie wag.
Wyznaczanie wag, przypadek c = 1
Przyjmijmy, że c = 1 (jest tylko jedna odpowiedź). Mamy wtedy tylko jeden wektor wag
n
1
2
N
w = [w1 , . . . , wH ]T i jeden bias w0 . Podstawiajac
, jako x kolejno x , x , . . . , x , oraz
korzystajac
, z (5.5) otrzymamy wtedy kolejno: {ypred}
y n = G(xn , c1 )w1 + G(xn , c2 )w2 + · · · + G(xn , cH )wH + w0 ,
(5.7)
dla dla n = 1, . . . , N .
Przyjmijmy jako bÃlad
wartościami docelowymi
, sieci sume, kwadratów odchyleń miedzy
,
n
n
t a wartościami y prognozowanymi przez sieć (aproksymacja średniokwadratowa), czyli
wielkość: {errRBF}
E=
N
X
(tn − y n )2 .
(5.8)
n=1
n
Podstawiajac
, do (5.8) na miejsce y odpowiednia, wartość z równania (5.7) i przyjmujac,
,
że centra c1 , . . . , cH sa, dane – widzimy, że bÃlad
E
jest
funkcj
a
kwadratow
a
wag
w
,
.
.
.
,
w
1
c.
,
,
,
Wagi te należy wybrać tak, aby zminimalizować bÃlad
, E.
W zaistniaÃlej sytuacji mamy tu zagadnienie minimalizacji funkcji kwadratowej wag
w1 , . . . , wc . Rozwiazanie
może być otrzymane explicite poprzez rozwiazanie
ukÃladu linio,
,
wych równań wzgledem
szukanych niewiadomych (ukÃlad równań normalnych).
,
Matlab rozwiazuje
taki
ukÃlad równań poprzez operacje, dzielenia lewostronnego, czyli
,
operacje, left matrix divide.
5 RBF – SIECI O RADIALNYCH FUNKCJACH BAZOWYCH
6
Wyznaczanie wag, przypadek c > 1
Mamy wtedy do czynienia z tablica, YN ×c = (yjn ), j = 1, . . . , c zawierajac
, a, c kolumn
wyników.
Również tablica wartości docelowych TN ×c == (tj )n jest tablica, o c kolumnach.
BÃlad
dla każdej kolumny wyników:
, E sieci jest teraz suma, bÃledów
,
E=
c
N
X
X
(tnj − yjn )2 =
j=1 n=1
c
X
E[j] ,
gdzie E[j] =
j=1
N
X
(tnj − yjn )2 .
n=1
Tym samym zagadnienie ogólnej optymizacji rozpada sie, na niezależne zagadnienia optymizacji dla kolejnych kolumn wyników – co odpowiada optymizacji dla przypadku c = 1.
Sieć RBF z Netlaba, o wbudowanej na sztywno funkcji aktywacji ’linear’, oblicza bÃlad
, E
jako bÃlad
średniokwadratowy
pomnożony
przez
wspóÃ
l
czynnik
1/2.
BÃ
l
ad
ten
jest
obliczany
,
,
w dwóch rozkazach:
y = rbffwd(net, x); e = 0.5*sum(sum((y - t).ˆ2));
Symbole y, t odpowiadaja, tutaj naszym tablicom Y i T. Symbol e odpowiada naszemu
bÃledowi E.
Można również skorzytać z funkcji rbferr, obliczajac
e = rbferr(net, x, t).
,
5.4
Implementacja sieci RBF w pakiecie Netlab
Radialne sieci neuronowe (RBF)w pakiecie Netlab posiadaja, swój wÃlasny konstruktor
używajacy
przedrostka rbf.
,
W pakiecie Netlab znajduje sie, również moduÃl demonstracyjny o nazwie DEMRBF lub
DEMRBF1. ModuÃl ten pokazuje, jak można otrzymać przybliżenie sinusoidy za pomoca,
różnego typu funkcji radialnych: Gaussowskiej (’gaussian’), Thin Plate Spline (’TPS’,
funkcja G(r) = r2 log r) oraz ’r4logr’.
Ponieważ typowe obliczenia w netlabie sa, oparte na odlegÃloścach Euklidesowych, to
dane wejściowe (x) powinny zostać wystandaryzowane1 .
Istotna, role, odgrywaja, trzy funkcje: rbf, rbftrain i rbffwd:
net = rbf(nin, nhidden, nout, rbfunc);
[net, options]= rbftrain(net, options, x, t);
Y = rbffwd(net, X);
lub [Y, Z, N2] = rbffwd(net, X)
Funkcja RBF tworzaca
strukture, net
,
Podstawowa, strukture, ’net’ tworzy sie, za pomoca, funkcji:
net = rbf(nin, nhidden, nout, rbfunc); 2
Znaczenia parametrów wejściowych funkcji rbf:
nin - d, liczba neuronów wejściowych (skÃladowych wektora danych),
nhidden - H, liczba neuronów ukrytych (funkcji bazowych),
nout - M , liczba neuronów wyjściowych,
1
nie jest to konieczne, jeśli używa sie, odlegÃlości Mahalanobisa
Możliwe jest również tworzenie struktury net za pomoca, funkcji rbf dla której określamy dodatkowo
trzy dalsze parametry: net = rbf(nin, nhidden, nout, rbfunc, outfunc, prior, beta). Wtedy utworzona tym
rozkazem struktura net bedzie
miaÃla określone dodatkowe pola i bedzie
mogÃla obliczać nieliniowa, metode,
,
,
Generative Topographic Mapping
2
5 RBF – SIECI O RADIALNYCH FUNKCJACH BAZOWYCH
7
rbfun - napis określajacy
typ funkcji bazowych; w Netlabie dopuszcza sie, funkcje ’gaussian’,
,
– radialna funkcja gaussowska, ’tps’ – Thin Plate Spline, funkcja G(r) = r2 log r lub
’r4logr’ – funkcja G(r) = r4 logr.
Pola utworzonej struktury net:
type
nin
nhidden
nout
actfn
outfn
nwts
c
wi
w2
b2
- typ sieci, w tym przypadku rbf,
- d, liczba neuronów wejściowych,
- H, liczba neuronów ukrytych (funkcji bazowych),
- c, liczba neuronów wyjściowych,
- napis określajacy
funkcje, aktywacji jednostek ukrytych, dopuszcza sie, ’gaussian’,
,
’tps’ lub ’r4logr’ (por. parametry wejściowe funkcji rbf).
- napis definiujacy
funkcje, bÃledu
dla wyjść; jeżeli wywoÃlaliśmy funkcje, rbf tylko z 4 pa,
,
rametrami, to zostanie tu podstawiony napis ’linear’; inna możliwość to ’neuroscale’
(dla nie omawianej przez nas funkcji bÃledu
Sammon stress measure),
,
- caÃlkowita liczba parametrów modelu (wag, centrów i szerokości funkcji bazowych),
- tablica wymiaru nhidden × d zawierajaca
– zainicjowane wg. rozkÃladu normalnego
,
N (0, 1) – wartości wspóÃlrzednych
centrów,
,
- od width, wektor [1 × nhidden] zawierajacy
szerokości szerokości σi , dla przyjetych
,
,
funkcji bazowych. Pole to zostaje wypeÃlnione jedynkami tylko przy funkcjach bazowych typu ’gaussian’, które – jak wiadomo – zawieraja, parametr σ; natomiast przy
funkcjach bazowych nie zawierajacych
tego parametru pole to pozostaje puste.
,
- macierz wymiaru nhidden × nout zawierajaca
wagi drugiej warstwy,
,
- wektor wymiaru 1 ×nout zawierajacy
wartości progowe (biasy) dla drugiej warstwy.
,
PrzykÃladowo, dla wywoÃlania
net = rbf(3, 5, 1, ’gaussian’); otrzymuje sie, sieć o strukturze
net =
type:
nin:
nhidden:
nout:
actfn:
outfn:
nwts:
c:
wi:
w2:
b2:
’rbf’
3
5
1
’gaussian’
’linear’
26
[5x3 double]
[1 1 1 1 1]
[5x1 double]
-1.1651
Ponieważ nhidden=5, wygenerowanych zostaÃlo 5 centrów z rozkÃladu N(0,1). Ponieważ
nout=1, zostaÃl wygenerowany tylko 1 wektor wag w = [w 1, . . . , w 5]T . Zainicjowane
centra oraz wagi wynosza, odpowiednio:
c1
c2
c3
c4
c5
=
=
=
=
=
( 0.7566
( 1.1642
(-1.0235
( 1.7016
(-0.4942
0.1727
0.3541
-0.2463
-0.1457
-1.1690
-0.0220)
0.6183)
1.8659)
0.0819)
1.6080)
w_1
w_2
w_3
w_4
w_5
=
=
=
=
=
-1.3355
-0.1231
-1.1028
-2.7532
0.2520
Szerokości jader
(wi) (parametr σ 2 ) otrzymaÃly standardowo wartości 1.
,
Liczba parametrów wygenerowanego modelu sieci neuronowej wynosi:
15 (centra f. bazowych) + 5 (szerokości) + 6 (wagi plus bias warstwy wyjściowej) = 26.
5 RBF – SIECI O RADIALNYCH FUNKCJACH BAZOWYCH
8
Funkcja RBFFWD obliczajaca
wyniki dla nowych danych
,
Funkcja rbffwd pozwala utworzonej sieci pracować w trybie odtworzeniowym.
NagÃlówek funkcji:
[Y, Z, N2] = rbffwd(net, X)
lub tylko y = glmfwd(net, x);
Tablica XN ×d zawiera dane wejściowe (próbka testowa lub inna).
Tablica YN ×M oznacza wynik sieci (y) dla każdego wiersza danych wejściowych X.
Tablica ZN ×H oznacza aktywacje wyjściowe H neuronów warstwy ukrytej, czyli wartości
G(x, c1 ), . . . , G(x, cH ) obliczone dla każdego wiersza tablicy danych wejściowych X.
Tablica N2N ×H jest tablica, kwadratów odlegÃlości każdego wiersza tablicy danych X od H
centrów funkcji bazowych.
Funkcja RBFTRAIN trenujaca
sieć wg. próbki uczacej
,
,
NagÃlówek funkcji:
[net, options]= rbftrain(net, options, x, t);
gdzie x jest próbka, uczac
, a,
, a t – tablica, wartości docelowych (target). Tablica ’options’
może być skopiowana, tablica, foptions (tablica jednowierszowa o 18 elementach). W przypadku specjalnego trenowania (na użytek metody ’neuroscale’), tablica options może być
dwu-wierszowa.
Tablica options określa różne warunki trenowania sieci. Dopuszcza sie,
, aby tablica
options miaÃla dwa wiersze. Na samym poczatku
dziaÃlania funkcja rbftrain sprawdza, ile
,
wierszy ma tablica options. Jeżeli jest tylko 1 wiersz, to nie bierze sie, pod uwage, drugiego
wiersza. W przeciwnym przypadku, tzn. jeśli sa, 2 wiersze, pierwszy z nich zostaje podstawiony jako jednowierszowy ’options’, a drugi z nich jako dodatkowa tablica ’setbfoptions’.
A oto odpowiedni fragment kodu:
% Allow options to have two rows: if this is the case, then the second row
% is passed to rbfsetbf
if size(options, 1) == 2,
setbfoptions = options(2, :); options = options(1, :);
else setbfoptions = options; end %if size
Funkcja rbftrain (gÃlównie w swej cześci
dotyczacej
neuroscale) korzysta z tablicy
,
,
options. Ewentualnie wywoÃlywana we wnetrzu
tej funkcji inna funkcja, rbfsetbf, korzy,
sta z tablicy setbfoptions.
Znaczenia elementów tablicy options:
options(1)
options(2)
options(3)
options(5)
- wartość =1: drukowanie wartości kryterium podczas każdej iteracji EM,
- określa dokÃladność wag wymagana, na koniec uczenia,
- określa dokÃladność funkcji celu (bÃledu)
wymagana, na koniec uczenia,
,
- wartościa, domyślna, jest options(5)=0. Oznacza to, że centra znajdujace
sie, w
,
wejściowej strukturze net maja, – w czasie dziaÃlania rbftrain – zostać przystosowane
do rozkÃladu punktów danych w próbce uczacej;
wartość options(5)=1 postuluje, żeby
,
parametry funkcji bazowych (centra) pozostaÃly takimi, jakie sa;,
Ewentualne ’przystosowanie do danych’ jest dokonywane za pomoca, funkcji rbfsetbf,
ta z kolei wywoÃluje kmeans i gmm.
options(14) - maksymalna liczba iteracji, default=100 (odnosi sie, to do procesu rozmieszczania
centrów przy metodzie neuroscale).
5 RBF – SIECI O RADIALNYCH FUNKCJACH BAZOWYCH
9
Etapy trenowania sieci RBF za pomoca, funkcji rbftrain
Funkcja rbftrain dziaÃla w dwóch gÃlównych blokach, odpowiadajacych
dwom etapach treno,
wania.
Funkcja rbftrain zaimplementowana w Netlabie jest wykorzystywana również do wizualizacji danych metoda, neuroscale – dlatego jej przebieg nie jest bardzo przejrzysty.
Na samym poczatku
zostaje określona tablica setbfoptions – patrz fragment skryptu
,
wyżej.
Nastepnie
wykonuje sie, blok 1 (etap I), a po nim blok 2 (etap 2).
,
Etap I Jeśli setbfoptions(5)==1, to zostaje uruchomiona funkcja rbfsetbf (wywoÃlanie:
(net = rbfsetbf(net, setbfoptions, x )). Funkcja ta przystosowuje centra do rozkÃladu danych.
Najpierw zostaje uruchomiona funkcja kmeans rozmieszczajaca
w sposób dość gruby centra
,
d
w analizowanej przestrzeni danych R . Nastenie
uruchamia sie, model mieszanin (mixture
,
model ), który powoduje lepsze dopasowanie rozmieszczanych centrów do rozkÃladu danych
p(x). Wykorzystywane sa, wtedy funkcje gmminit i gmmem.
Etap II trenowania sieci za pomoca, funkcji rbftrain polega na znalezieniu wag i biasów
charakteryzujacych
neurony warstwy wyjściowej.
,
W obecnej implementacji funkcja rbftrain dopuszcza tylko liniowa, (identycznościowa)
,
funkcje, aktywacji i kwadratowa, funkcja, bÃledów.
Rozwi
azanie
otrzymuje
si
e
wtedy
w
jed,
,
,
nym kroku, rozwiazuj
ac
odpowiedni
ukÃ
l
ad
równań
liniowych.
,
,
W Netlabie wykonuje sie, w tym celu operacje, left matrix divide 3 4 .
5.5
PrzykÃladowy skrypt wykonujacy
aproksymacje, funkcji jednej
,
zmiennej
Podajemy przykÃladowy skrypt wykonujacy
obliczenia dla 6-u różnych liczebności H war,
stwy ukrytej. Skrypt ten jest modyfikacja, skryptu DEMRBF z pakietu Netlab. Wykonujemy aproksymacje, funkcji y = sin(x) za pomoca, sieci typu RBF o H = 2, 4, 7, 15 i 18
neuronach w warstwie ukrytej. Wyniki aproksymacji pokazujemy na rysunkach 4.3 i 4.4.
Przygotowania wstepne.
,
% Scipt DEMRBF1, based on DEMRBF from Netlab
% Approximation of sine function by a RBF network
% Generate the matrix of inputs x and targets t.
randn(’state’, 42); rand(’state’, 42);
ndata = 20;
% Number of data points.
3
Generalnie, jeśli mamy ukÃlad równań
Ax = b,
to operacje, left matrix divide zapisuje sie, jako:
x = A\b,
mówi sie, również ’A sub b’
4
Inna, możliwościa, jest rozwiazanie
ukÃladu równań liniowych za pomoca, funkcji pinv wyznaczajaca
dla
,
,
danej macierzy jej pseudoodwrotność (ang. pseudoinverse, patrz dokumentacja Matlaba)
PINV Pseudoinverse. X = PINV(A) produces a matrix X of the same dimensions as A’ so that A*X*A = A,
X*A*X = X and A*X and X*A are Hermitian. The computation is based on SVD(A) and any singular values
less than a tolerance are treated as zero. The default tolerance is MAX(SIZE(A)) * NORM(A) * EPS
Bardziej zrozumiaÃla definicja jest nastepuj
aca:
,
,
K jest pseudoodwrotnościa, do A, jeśli wymiar(K)=wymiar(A’), a ponadto speÃlnia warunki: (i) AKA=A,
(ii) KAK=K, (iii) (KA)’=KA, (iv) (AK)’=AK.
5 RBF – SIECI O RADIALNYCH FUNKCJACH BAZOWYCH
10
noise = 0.2;
% Standard deviation of noise distribution.
x = (linspace(0, 1, ndata))’; t = sin(2*pi*x) + noise*randn(ndata, 1);
mu= mean(x); sigma = std(x);
data = (x - mu) / sigma; % Standardized data
xf=[x(1):0.1:x(end)]’;
% dane ’x’ do rysowania funkcji
xfs= (xf-mu) / sigma; % wystandaryzowane
baseF={’gaussian’,’tps’, ’r4logr’};
disp(’
RBF training error for 3 kernels’)
% Set up network parameters.
nin = 1; nout = 1;
% Number of inputs and outputs.
Petla
po różnych wartościach neuronów.
,
H = [2 4 7 12 15 18]; % Number of hidden neurons
for nhidden = H
% Create and initialize network weight and parameter vectors.
net1 = rbf(nin, nhidden, nout, baseF{1});
% Use fast training method
e=zeros(1,3);
% Error for Gaussian, TPS, r^4logr
options = foptions;
options(1) = -1;
% No Display of EM when making clusters
options(14) = 10;
% number of iterations of EM
net1 = rbftrain(net1, options, data, t); % data - dane standaryz.
yy = rbffwd(net1, xfs); e(1)=rbferr(net1,data,t);
for k=2:3
net = rbf(nin, nhidden, nout, baseF{k});
net.c=net1.c;
% bierzemy to samo rozstawienie centrow
options = foptions;
options(1) = 0; options(14) = 10; options(5)=1; % pomijamy I etap trenowania
net = rbftrain(net, options, data, t); % wejscie z tymi samymi danymi
y = rbffwd(net, xfs); yy=[yy y]; e(k)=rbferr(net,data,t);
end %k
figure;
plot(x,t,’ob’,x,sin(2*pi*x),xf,yy(:,1),xf,yy(:,2),xf,yy(:,3));
legend(’data’,’sinus’,baseF{1},baseF{2},baseF{3});
title([’Approximation by H=’,int2str(nhidden),’ RBFs’])
disp([’nhidden
baseF{1},
baseF{2},
baseF{3},
end % nhidden
H=
’
’
’
’,
’,
’,
’,
%close all
num2str(nhidden,’%2d’), ’ ’, ...
num2str(e(1),’%7.5f’), ’ ’, ...
num2str(e(2),’%7.5f’), ’ ’, ...
num2str(e(3),’%7.5f’)]);
5 RBF – SIECI O RADIALNYCH FUNKCJACH BAZOWYCH
1.5
1.5
data
function
Gaussian RBF
Thin plate spline RBF
4
r log r RBF
1
0.5
Target
Target
data
function
Gaussian RBF
Thin plate spline RBF
4
r log r RBF
1
0.5
0
0
−0.5
−0.5
−1
−1
−1.5
11
0
0.1
0.2
0.3
0.4
0.5
Input
0.6
0.7
0.8
0.9
−1.5
1
0
0.1
0.2
0.3
0.4
0.5
Input
0.6
0.7
0.8
0.9
1
Rysunek 5.3: Aproksymacja funkcji sinus wykonana za pomoca, sieci RBF o H=2 (lewa)
i H=4 (prawa) neuronach. Sieci zostaÃly wytrenowane na podstawie 20-elementowej zaburzonej próbki wylosowanej z sinusoidy. Pliki rr2c.eps i rr4c.eps
1.5
1.5
data
function
Gaussian RBF
Thin plate spline RBF
4
r log r RBF
1
1
0.5
Target
Target
0.5
0
0
−0.5
−0.5
−1
−1
−1.5
data
function
Gaussian RBF
Thin plate spline RBF
4
r log r RBF
0
0.1
0.2
0.3
0.4
0.5
Input
0.6
0.7
0.8
0.9
1
−1.5
0
0.1
0.2
0.3
0.4
0.5
Input
0.6
0.7
0.8
0.9
1
Rysunek 5.4: RBF 7 i 15 neuronow . To samo, co na rysunku 5.3, ale warstwa ukryta sieci
skÃlada sie, z H=7 (lewa) i H=15 (prawa) neuronów. Pliki rr7c.eps i rr15c.eps
PrzykÃladowy wydruk
------------------------------------------------RBF training errors for 3 kernels
nhidden H= 2: gaussian 0.5087 tps 4.5182
r4logr
nhidden H= 4: gaussian 0.24256 tps 0.70335
r4logr
nhidden H= 7: gaussian 0.14586 tps 0.14092
r4logr
nhidden H=12: gaussian 0.10797 tps 0.089096 r4logr
nhidden H=15: gaussian 0.10797 tps 0.0032335 r4logr
nhidden H=18: gaussian 0.10792 tps 0.0014216 r4logr
-------------------------------------------------
4.8817
0.9769
0.26191
0.097692
0.0073178
0.0043882
Pokażemy jeszcze przykÃladowe struktury net przed i po trenowaniu – dla omawianej
aproksymacji funkcji jednej zmiennej za pomoca, 3 funkcji bazowych (m = 0.5, s = 0.3114
dla wygenerowanych danych):
5 RBF – SIECI O RADIALNYCH FUNKCJACH BAZOWYCH
net after initialization,
net =
type: ’rbf’
nin: 1
nhidden: 3
nout: 1
actfn: ’gaussian’
outfn: ’linear’
nwts: 10
c: [3x1 double]
wi: [1 1 1]
w2: [3x1 double]
b2: 0.4912
centers before training
standardized destandardized
1.3720
0.9272
1.3082
0.9074
-0.8011
0.2506
12
net after training
net2 =
type: ’rbf’
nin: 1
nhidden: 3
nout: 1
actfn: ’gaussian’
outfn: ’linear’
nwts: 10
c: [3x1 double]
wi: [3.7209 3.7209 3.7209]
w2: [3x1 double]
b2: 15.6285
centers after training
standardized destandardized
-1.0019
0.1880
0.9271
0.7887
-0.0136
0.4958
nhidden H= 3 error=2.427
Gdybyśmy chcieli na sporzadzanych
rysunkach zaznaczyć również centra funkcji bazo,
wych, to powinniśmy zauważyć, że w wytrenowanej strukturze net centra te sa, podane we
wspóÃlrzednych
wystandaryzowanych (unormowanych) u.
,
Aby wrócić do oryginalnych wspóÃlrzednych
x należy wykonać podstawienie odwrotne
,
cx = cu × s + m, gdzie m i s oznaczaja, wartość średnia, i odchylenie stamdardowe, z jakimi
wystandaryzowano dane oryginalne (u = (x − m)/s).
5.6
Uwagi praktyczne przy projektowaniu sieci RBF lub korzystaniu z gotowych algorytmów
Należy przede wszystkim zwrócić uwage, na standaryzacje, danych. Jeśli posÃlugujemy sie,
odlegÃlościa, Euklidesowa,, to wszystkie zmienne analizowanych danych powinny mieć taka,
sama, wariancje.
zdominowana przez
, Gdyby tak nie byÃlo, to odlegÃlość Euklidesowa bedzie
,
zmienna, o najwiekszej
wariancji.
,
Najchetniej
przyjmuje
sie, jako funkcje bazowe radialne funkcje Gaussowskie dane wzo,
rem (5.3). Oznacza to sferyczność (izotropowość) odlegÃlości we wszystkich kierunkach
przestrzeni zmiennych objaśniajacych.
,
Moglibyśmy posÃlugiwać sie, innymi odlegÃlościami, np. odlegÃlościa, Mahalanobisa, która
bierze pod uwage, wariancje i kowariancje zmiennych objaśniajacych.
Otrzymujemy wtedy
,
eliptyczne jadrem
gaussowskim
postaci:
,
G(x; c, Σ) = exp{−
(x − c)T Σ−1 (x − c)
}.
2
(5.9)
Metoda mieszanin i algorytm EM radza, sobie również z takimi funkcjami; przy funkcjach postaci (5.9) nie jest konieczna standaryzacja danych.
Przy odtwarzaniu rozkÃladu Ãlacznego
zmiennej x określonego na przestrzeni zmiennych
,
objaśniajacych
na ogóÃl potrzeba mniejszej liczby eliptycznych funkcji bazowych postaci
,
(5.9) aniżeli jader
gaussowskich z jednym parametrem ’width’. Jednak funkcje eliptyczne
,
postaci (5.9) wymagaja, estymacji wiekszej
liczby parametrów: oprócz centrów trzeba jesz,
cze estymować elementy macierzy kowariancji Σ.
LITERATURA
5.7
13
PrzykÃlady programowania w Matlabie
PrzykÃlad 1. Obliczanie wartości funkcji radialnych dla danych XN ×d
% Calculate squared norm matrix, of dimension (ndata, ncentres)
n2 = dist2(x, net.c); % odleglosci kazdy z kazdym, n x n
% Switch on activation function type
switch net.actfn
case ’gaussian’
% Gaussian, exp{ - || x-c|| / (2*sigma*sigma) }
% Calculate width factors: net.wi contains squared widths
wi2 = ones(ndata, 1) * (2 .* net.wi);
% Compute the activations
z = exp(-(n2./wi2));
% tablica wymiaru ndata x H
case ’tps’
% Thin plate spline, r^2 log r
z = n2.*log(n2+(n2==0));
case ’r4logr’
% r^4 log r
z = n2.*n2.*log(n2+(n2==0));
otherwise
error(’Unknown activation function in rbffwd’)
end % od switch
y = z*net.w2 + ones(ndata, 1)*net.b2; % wyniki na wyj"sciu sieci
Literatura
[1] Ch. M. Bishop, Neural Networks for Pattern Recognition. Clarendon Press, Oxford,
1996.
[2] S. Osowski, Sieci neuronowe w ujeciu
algorytmicznym. WNT W-wa 1996.
,
[3] Netlab neural network software, Neural Computing Research Group, Division of
Electric Engineering and Computer Science, Aston University, Birmingham UK,
http://www.ncrg.aston.ac.uk/
[4] Ian Nabney, Netlab: Algorithms for Pattern Recognition. Springer 2001. Seria: Advances in Pattern Recognition. ISBN 1–85233–440–1.
[5] Rosaria Silipo, Neural Networks, RozdziaÃl 7 ksiażki:
M. Bertold, D.J. Hand (eds.)
,
Intelligent Data Analysis, Springer Berlin 1999, pp. 217–268.