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.