opis zadania pochodzący z ksir.wi.ps.pl

Transkrypt

opis zadania pochodzący z ksir.wi.ps.pl
Metody sztucznej inteligencji
Zadanie 3:
(1) klasteryzacja — samoorganizująca się mapa
Kohonena,
(2) aproksymacja — sieć RBF.
dr inż. Przemysław Klęsk
1
Klasteryzacja za pomocą samoorganizującej się
mapy Kohonena
Dany jest zbiór punktów xi i=1,...,I gdzie xi = (xi1 , . . . , xin ) ∈ Rn .
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. Patrz rysunki 1 i 2.
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
0.2
0.4
0.6
0.8
1
Rysunek 1: 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.
1
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
0.2
0.4
0.6
0.8
1
Rysunek 2: Dany zbiór punktów (kolor zielony) i końcowe ustawienie zbioru
prototypów (niebieskie krzyże) po wykonaniu się algorytmu.
1.1
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 ck = (ck1 , ck2 , . . . , ckn ).
Każdy z neuronów jest połączony z wszystkim wejściami x1 , . . . , xn i na jego
wyjściu obliczana jest suma ważona wejść — czyli iloczyn skalarny ck · xT . Jak
wiadomo iloczyn skalarny jest miarą podobieństwa dwóch wektorów
ck · xT = ck x cos ∠(ck , x).
(1)
Sieć Kohonena jest standardowo uczona w trybie on-line, tzn. w każdej iteracji
uczenia na wejście
podawany jest pewien jeden punkt x wylosowany ze
sieci
zbioru uczącego xi i=1,...,I . I w pierwszej kolejności należy w sieci wyłonić
tzw. zwycięzcę tj. neuron leżący najbliżej podanego na wejście punktu. Oznaczmy zwycięzcę jako cw(x) , gdzie w(x) ∈ {1, . . . , K} zwraca nam indeks neuronu zwycięskiego (winner dla podannego punktu x). Zwycięzca musi spełniać
warunek
(2)
cw(x) = min ck − x.
k=1,...,K
Aby wyłonić zwycięzcę nie posługując się wprost wzorem na odległość ck − x
a raczej iloczynami skalarnymi obliczonymi przez neurony, należy tak naprawdę
obserwować wielkość1 :
(3)
2ck xT − ck 2 ,
(sam iloczyn skalarny ck xT nie wystarcza) jako że:
ck − x2 = (ck − x)(ck − x)T = ck 2 − 2ck xT + x2 .
1 Jest
to jeden ze szczegółów, który nie został pominięty na zajęciach.
2
(4)
Innymi słowy wyrażenie ck −x jest minimalne tam, gdzie wyrażenie 2ck xT − ck 2
jest maksmylane. Składnik x2 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:
cw(x) := cw(x) + η(x − cw(x) ),
(5)
gdzie η oznacza współczynnik uczenia (w eksperymentach sugeruję ustawiać
η ∈ [0.1, 1]). 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:
∀k = 1, . . . , K,
(6)
ck := ck + η(x − ck )G(ck , cw(x) )
gdzie funkcja G jest gaussowską funkcją bliskości
(ck1 − cw(x),1 )2 + · · · + (ckn − cw(x),n )2
G(ck , cw(x) ) = exp −
2σ 2
ck − cw(x) 2
= exp −
.
2σ 2
(7)
(Uwaga: na zajęciach pomyłkowo podano jako argumenty dla funkcji G: ck 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 = 1, . . . , jmax .
Wówczas można zmniejszać parametr σ np. w sposób potęgowy:
σj = σmax
σ
min
σmax
j
j−1
max −1
.
(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.
1.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:
1. okrąg,
2. symbol „karo”,
3
3. spirala,
4. okrąg plus koło.
Proponuję zadawać zbiory o rozmiarze 1000 punktów i przybliżać je przez
K = 100 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 , yi ) i=1,...,I , gdzie xi = (xi1 , . . . , xin ) ∈ Rn , yi ∈ R.
ψ1
w1
1
..
.
x1
..
.
x2
w0
w2
ψ2
yRBF
..
.
wK
xn
..
.
ψK
Rysunek 3: Schemat sieci RBF.
Sieć RBF (ang. Radial Basis Functions) — patrz rys. 3 — o jednej warstwie
ukrytej można zapisać wzorem
yRBF (x) = w0 +
K
wk ψk x)
(9)
k=1
gdzie jako funkcję radialną przyjmuje się zwykle funkcję Gaussa:
(x − c )2 + · · · + (x − c )2 1
k1
n
kn
.
ψk (x) = exp −
2σk2
(10)
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:
1. dobierz eksperymentalnie lub ustal z góry liczbę K — liczbę neuronów,
2. wykonaj klasteryzację skończonego zbioru xi i=1,...,I (np. algorytmem Kohonena) uzyskując K prototypów (centrów dla przyszłych neuronów) c1 , . . . , cK ,
4
3. dobierz szerokości σ1 , . . . , σK neuronów, biorąc pod uwagę odległość do
najbliższych neuronów-sąsiadów,
4. mając już ustalone K, c1 , . . . , cK , σ1 , . . . , σK , znajdź wagi w0 , . . . , wK 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
ck i σ k .
W kroku trzecim dla każdego z neuronów znajdujemy odległość do najbliższego z pozostałych neuronów, tj.:
dk =
min ck − cj ,
(11)
σk = αdk ,
(12)
j=1,...,K
j=k
a następnie ustawiamy
gdzie α ∈ [1, 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 w0 , . . . , wK
rozwiązując liniowy problem optymalizacji, tj. minimalizując błąd
2
1 2 1
E =
yRBF (xi ) − yi .
2
2
i=1
I
(13)
Z warunku koniecznego istnienia ekstremum
∂ 12 E 2
= 0,
∂wk
∀k = 0, . . . , K
(14)
otrzymujemy K + 1 równań:
∂ 12 E 2
yRBF (xi ) − yi = 0;
=0⇔
∂w0
i=1
I
∂ 12 E 2
yRBF (xi ) − yi ψk (xi ) = 0;
=0⇔
∂wk
i=1
I
∀k = 1, . . . , K
(15)
Zapisujemy macierzowo układ równań
⎛
1
ψ1 (xi )
···
ψK (xi )
2
I ⎜ ψ (x )
ψ
(x
)
·
·
·
ψ
(xi )ψ1 (xi )
1
i
i
K
1
⎜
⎜
..
..
..
.
.
⎝
.
.
.
.
i=1
2
ψK
(xi )
ψK (xi ) ψ1 (xi )ψK (xi ) · · ·
A
⎞⎛
⎟⎜
⎟⎜
⎟⎜
⎠⎝
w0
w1
..
.
wK
W
⎞
⎛
I ⎜
⎟ ⎟
⎜
⎟=
⎜
⎠ i=1 ⎝
yi
yi ψ1 (xi )
..
.
B
(16)
(17)
Tym sposobem wszystkie parametry sieci RBF o postaci (9) zostały znalezione.
5
⎟
⎟
⎟,
⎠
yi ψK (xi )
i jeżeli tylko det A = 0, to rozwiązaniem jest
W = A−1 B.
⎞
2.1
Zbiory do przeprowadzenia aproksymacji
Podobnie jak to miało miejsce w zadaniu nr 2, należy aproksymować zbiór punktów o wartościach yi zaczerpniętych z funkcji f (x1 , x2 ) = cos(x1 x2 ) cos(2x1 ).
Różnicę natomiast stanowi sposób próbkowania samej dziedziny. Punkty xi
mają być wygenerowane wg takich dwóch schematów:
1. szachownica
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
0.2
0.4
0.6
0.8
1
2. pas spiralny
1
0.8
0.6
0.4
0.2
0
−0.2
−0.4
−0.6
−0.8
−1
−1
−0.5
0
0.5
1
Oba powyższe schematy należy wpisać (przeskalować) w kwadrat [0, π] × [0, π],
a następnie dla tych punktów pobrać wartości yi z funkcji f .
6

Podobne dokumenty