Metody sztucznej inteligencji Zadanie 3: ( klasteryzacja samoorganizująca się mapa Kohonena, (2 aproksymacja sieć RBF dr inż Przemysław Klęsk Klasteryzacja za pomocą samoorganizującej się mapy Kohonena Dany jest zbiór punktów { x i }i=,,i gdzie x i =(x i,,x in R n Zadanie klasteryzacji polega na przybliżeniu danego zbioru punktów za pomocą mniejszej liczby K punktów (K << I W ten sposób można mówić o wykrywaniu skupień w zbiorze danych o pewnym rozkładzie czy też o wykrywaniu kształtów Punkty przybliżające zbiór oryginalny nazywa się prototypami lub centrami klastrów Patrzrysunkii2 9 8 7 6 5 4 3 2 2 4 6 8 Rysunek : Dany zbiór punktów (kolor zielony i początkowe ustawienie zbioru prototypów (niebieskie krzyże Poniżej omówiono mapę (sieć Kohonena oraz algorytm Kohonena z kilkoma modyfikacjami w stosunku do tego, co zostało powiedziane laboratoriach
9 8 7 6 5 4 3 2 2 4 6 8 Rysunek 2: Dany zbiór punktów (kolor zielony i końcowe ustawienie zbioru prototypów (niebieskie krzyże po wykonaniu się algorytmu Mapa (sieć Kohonena oraz algorytm Kohonena Należy rozpocząć od losowego zaincjalizowania K prototypów na obszarze dziedziny Oprócz sensu geometrycznego każdy z prototypów można rozumieć jako neuron w sieci Kohonena Oznaczmy wagi k-tego neuronu przez c k =(c k,c k2,,c kn Każdy z neuronów jest połączony z wszystkim wejściami x,,x n inajego wyjściu obliczana jest suma ważona wejść czyli iloczyn skalarny c k x T Jak wiadomo iloczyn skalarny jest miarą podobieństwa dwóch wektorów c k x T = c k x cos (c k, x ( Sieć Kohonena jest standardowo uczona w trybie on-line, tzn w każdej iteracji uczenia na wejście sieci podawany jest pewien jeden punkt x wylosowany ze zbioru uczącego { x i I w pierwszej kolejności należy w sieci wyłonić }i=,,i tzw zwycięzcę tj neuron leżący najbliżej podanego na wejście punktu Oznaczmy zwycięzcę jako c w(x,gdziew(x {,,K} zwraca nam indeks neuronu zwycięskiego (winner dla podannego punktu x Zwycięzca musi spełniać warunek c w(x = min c k x (2 k=,,k Aby wyłonić zwycięzcę nie posługując się wprost wzorem na odległość c k x a raczej iloczynami skalarnymi obliczonymi przez neurony, należy tak naprawdę obserwować wielkość : 2c k x T c k 2, (3 (sam iloczyn skalarny c k x T nie wystarcza jako że: c k x 2 =(c k x(c k x T = c k 2 2c k x T + x 2 (4 Jest to jeden ze szczegółów, który nie został pominięty na zajęciach 2
Innymi słowy wyrażenie c k x jest minimalne tam, gdzie wyrażenie 2c k x T c k 2 jest maksmylane Składnik x 2 można pominąć, gdyż jest on w danej iteracji taki sam dla wszystkich konkurujących neuronów Tak więc dopiero posługując się wyrażeniami wg wzoru (3 można mówić o ich równoważności z odległościami i wykrywać na ich podstawie zwycięzcę Wyłoniwszy zwycięzcę należy zmodyfikować jego wagi (jego położenie w dziedzinie wg wzoru: c w(x := c w(x + η(x c w(x, (5 gdzie η oznacza współczynnik uczenia (w eksperymentach sugeruję ustawiać η [, ] Jeżeli modyfikacji w danej iteracji podlegałby tylko sam zwycięzca, to mamy do czynienia z tzw wariantem WTA tego algorytmu (ang Winner Takes All W praktyce używa się zwykle jednak wariantu WTM (ang Winner Takes Most, co oznacza, że nie tylko sam zwycięzca, ale i jego neurony-sąsiedzi (w sensie bliskości w dziedzinie podlegają modyfikacji, tyle że w słabszym stopniu: c k := c k + η(x c k G(c k, c w(x k =,,K, (6 gdzie funkcja G jest gaussowską funkcją bliskości ( G(c k, c w(x = exp (c k c w(x, 2 + +(c kn c w(x,n 2 2σ 2 =exp ( c k c w(x 2 2σ 2 (7 (Uwaga: na zajęciach pomyłkowo podano jako argumenty dla funkcji G: c k i x Jest to błędne Bliskość nie ma być liczona pomiędzy wylosowanym z danych punktem x i każdym neuronem, lecz pomiędzy neuronem zwycięzcą i każdym neuronem Parametr σ steruje szerokością dzwonu gaussowskiego Im większe σ, tym większy zasięg sąsiedztwa Można ustawić σ na pewną stałą wartość, jednakże w praktyce lepsze efekty daje zmniejszanie σ w trakcie pracy algorytmu I tak niech j oznacza licznik głównej pętli uczącej (pętli on-line, j =,,j max Wówczas można zmniejszać parametr σ np w sposób potęgowy: σ j = σ max ( σmin σ max j jmax (8 Jeżeli chodzi o wybór przedziału [σ min,σ max ], to należy tu poeksperymentować uwzględniając rozpiętość dziedziny oraz przyjętą liczbę neuronów K, tzn biorąc tak naprawdę pod uwagę stosunek rozpiętości dziedziny do K 2 Ćwiczeniowe zbiory do eksperymentów Należy wykonać eksperymenty dla czterech zbiorów punktów (omówiono na zajęciach zaczęrpniętych losowo z takich kształtów geometrycznych: okrąg, 2 symbol karo, 3
3 spirala, 4 okrąg plus koło Proponuję zadawać zbiory o rozmiarze punktów i przybliżać je przez K = prototypów Mile widziana jest wizualizacja przesuwania się prototypów w trakcie działania algorytmu 2 Aproksymacja za pomocą sieci RBF W tym punkcie rozpatrujemy zadanie aproksymacji (podobnie jak to miało miejsce w zadaniu nr 2 dotyczącym MLP Dany jest więc zbiór par uczących: { (xi,y i } i=,,i,gdziex i =(x i,,x in R n, y i R ψ w x w x 2 ψ 2 w 2 y RBF w K x n ψ K Rysunek 3: Schemat sieci RBF Sieć RBF (ang Radial Basis Functions patrz rys 3 o jednej warstwie ukrytej można zapisać wzorem y RBF (x =w + K ( w k ψ k x (9 gdzie jako funkcję radialną przyjmuje się zwykle funkcję Gaussa: ψ k (x = exp ( (x c k 2 + +(x n c kn 2 ( W praktyce dla nastrojenia (nauczenia sieci RBF nie stosuje się algorytmów on-line, przy czym jest to oczywiście możliwe Ogólne kroki heurystycznego algorytmu strojenia sieci RBF są następujące: dobierz eksperymentalnie lub ustal z góry liczbę K liczbę neuronów, 2 wykonaj klasteryzację skończonego zbioru { x i (np algorytmem Kohonena uzyskująck prototypów (centrów dla przyszłych neu- }i=,,i ronów c,,c K, k= 2σ 2 k 4
3 dobierz szerokości σ,,σ K neuronów, biorąc pod uwagę odległość do najbliższych neuronów-sąsiadów, 4 mając już ustalone K, c,,c K,σ,,σ K, znajdź wagi w,,w K na podstawie kryterium najmniejszych kwadratów (czyli rozwiązując liniowy problem optymalizacji Elementy heurystyczne, którymi mogą różnić się poszczególne konkretne algorytmy, działające wg powyższego schematu, to sposób znajdowania parametrów c k i σ k W kroku trzecim dla każdego z neuronów znajdujemy odległość do najbliższego z pozostałych neuronów, tj: d k = min j=,,k j k c k c j, ( a następnie ustawiamy σ k = αd k, (2 gdzie α [, 3] jest parametrem dobieranym eksperymentalnie, wpływającym na to, jak bardzo neurony nachodzą na siebie Znając już centra i szerokości neuronów, można wyznaczyć wagi w,,w K rozwiązując liniowy problem optymalizacji, tj minimalizując błąd 2 E2 = i= Z warunku koniecznego istnienia ekstremum otrzymujemy K +równań: k =,,K k =,,K 2 E2 w = 2 E2 w k = ( 2 y RBF (x i y i (3 2 2 E2 w k =, (4 (y RBF (x i y i =; i= (y RBF (x i y i ψ k (x i =; i= Zapisujemy macierzowo układ równań ψ (x i ψ K (x i ψ (x i ψ(x 2 i ψ K (x i ψ (x i i= ψ K (x i ψ (x i ψ K (x i ψk 2 (x i }{{} A i jeżeli tylko det A, to rozwiązaniem jest w w w K } {{ } W = i= (5 y i y i ψ (x i y i ψ K (x i, } {{ } B (6 W = A B (7 Tym sposobem wszystkie parametry sieci RBF o postaci (9 zostały znalezione 5
2 Zbiory do przeprowadzenia aproksymacji Podobnie jak to miało miejsce w zadaniu nr 2, należy aproksymować zbiór punktów o wartościach y i zaczerpniętych z funkcji f(x,x 2 =cos(x x 2 cos(2x Różnicę natomiast stanowi sposób próbkowania samej dziedziny Punkty x i mają być wygenerowane wg takich dwóch schematów: szachownica 9 8 7 6 5 4 3 2 2 4 6 8 2 pas spiralny 8 6 4 2 2 4 6 8 5 5 Oba powyższe schematy należy wpisać (przeskalować w kwadrat [,π] [,π], a następnie dla tych punktów pobrać wartości y i z funkcji f 6