Sieci samoorganizujące w procesie ucznia spontanicznie tworzą odwzorowanie (ang. mapping) zbioru sygnałów wejściowych na zbiór sygnałów wyjściowych. Cechy jakimi musi charakteryzować się sieć samoorganizująca oraz proces uczenia, to koherentność i kolektywność.
Koherentności jest to efekt grupowania danych wejściowych w klasy podobieństwa. Grupowanie w klasy podobieństwa opisywane jest przez zestaw technik matematycznych (w większości przypadków statystycznych) zwanych analizą skupień (ang. cluster analysis). Wśród technik analizy skupień na uwagę szczególnie zasługują mechanizmy kwantyzacji wektorowej.
Kolektywność jest to efekt, który zachodzi w sieciach samoorganizujących. Główne cechy tego mechanizmu to, to że co rozpoznaje jeden neuron, w dużej mierze zależy także od tego co rozpoznają inne neurony. Ten efekt związany jest z pojęciem sąsiedztwa.
Ogólna zasada uczenia sieci Kohonena opiera się na następujących założeniach:
wektor sygnałów wejściowych X jest przed procesem uczenia normalizowany ||X|| = 1, co można zapisać jako
wszystkie neurony sieci dostają ten sam zestaw sygnałów wejściowych
wyliczana jest odpowiedź dla wszystkich neuronów
proces modyfikacji wag następuje w neuronie który zwyciężył w rywalizacji - posiada największą wartość odpowiedzi
wyliczanie nowej wartości wag dla neuronu który zwyciężył następuje według poniższego przepisu:
gdzie:
h(m,m*) - jest funkcją określającą sąsiedztwo
(j) - określa współczynnik uczenia dla (j)-tego kroku
Sąsiedztwo jest to metoda, która pozwala na redukcję niepożądanych skutków uczenia sieci samoorganizujących w oparciu o konkurencje. Konkurencja w procesie uczenia może doprowadzić do sytuacji takiej, że tylko niewielki odsetek neuronów uzyska możliwość rozpoznawania obiektów pokazywanych sieci (nauczy się). Reszta neuronów nie będzie w trakcie uczenia zmieniać swoich wag i w ten sposób zatraci na zawsze swe użytkowe cech jako elementy wytrenowanej sieci neuronowej. Sąsiedztwo jest miarą w jakim stopniu sąsiad neuronu zwycięskiego będzie miał zmieniane wagi w danym kroku procesu uczenia. Zwykle wartość tego parametru jest określana na wartość 0 - 1.
Sąsiedztwo rozpatruje się w układach:
jednowymiarowych, neurony sąsiednie leżą na jednej linii,
dwuwymiarowych, neurony są ułożone w warstwie a sąsiadami są neurony położone na lewo i na prawo oraz u góry i u dołu rozpatrywanego neuronu, inny przypadek opisuje dodatkowe kontakty po przekątnych
wielowymiarowe, neurony ułożone są swobodnie w przestrzeniach wielowymiarowych a twórca danej sieci określa zasady sąsiedztwa.
Do najbardziej istotnych i użytecznych układów sąsiedztwa zaliczamy organizacje jedno- i dwuwymiarowe, dla nich właśnie dodatkowym istotnym parametrem jest określenie ile neuronów obok (sąsiadów z lewej, prawej itd.) ma podlegać uczeniu w przypadku zwycięstwa danego neuronu.
Po raz pierwszy opracowania na temat sieci samoorganizujących z konkurencją i sąsiedztwem pojawiły się w latach 70-tych za przyczyną opisów eksperymentów fińskiego badacza Kohonena. Stąd też tego typu sieci wraz z metodami uczenia nazywamy sieciami Kohonena. [13,14,15]
W naszym programie przedstawiamy przykład procesu uczenia sieci Kohonena rozpoznawania zadanej przez użytkownika figury geometrycznej. Po każdorazowym cyklu prezentacji określonej ilości losowych punktów następuje automatyczny test skuteczności sieci w rozpoznawaniu danej figury.
struktury danych algorytmu:
alfa0, alfa1 - parametry określające szybkość procesu uczenia sieci (parametr modyfikacji wag w kolejnych krokach uczenia);
epsAlfa - określa o ile ma się zmieniać wartość alfa0 oraz alfa1 w kolejnych krokach uczenia (po każdej prezentacji);
sąsiedztwo - parametr określający ile neuronów na się uczyć wraz z neuronem zwycięskim;
epsSasiedztwo - określa o ile ma się zmieniać wartość “sąsiedztwo” w kolejnych krokach uczenia (po każdej prezentacji);
m, n - rozmiar sieci (sieć ma konstrukcję obszaru o długości m na n neuronów);
MaxI - ilość prezentacji w epoce uczenia;
uczenie sieci Kohonene:
iInc := 1;
while iInc < MaxI do
begin
x := 5.0 - 10.0*Random;
y := 5.0 - 10.0*Random;
{ PokazPunkt - i dobry i zły }
if not “punkt należy do obszaru figury” then
continue
else
begin { uczenie dla dobrego punktu }
OdlMin := 10000.0;
imin := 1; jmin := 1;
{ obliczanie maksymalnej odpowiedzi sieci }
for i := 1 to m do
for j := 1 to n do
begin
odl := sqrt(sqr(w[i,j,0]-x) + sqr(w[i,j,1]-y));
if odl >= OdlMin then
continue;
OdlMin := odl; imin := i; jmin := j;
end;
{ ustawianie wag zwycięskiego neuronu oraz wag jego sąsiadów - parametr sąsiedztwo}
s := sasiedztwo;
for i := imin-s to imin+s do
for j := jmin-s to jmin+s do
begin
odl := Max(Abs(i-imin),Abs(j-jmin));
{ obliczenie parametru modyfikacji wag )
alfa := (alfa0*(s-odl) + alfa1*odl)/s
w[i,j,0] := w[i,j,0] + alfa*(x-w[i,j,0]);
w[i,j,1] := w[i,j,1] + alfa*(y-w[i,j,1]);
end;
{ zmiana parametrów uczenia }
alfa0 := alfa0*epsAlfa;
alfa1 := alfa1*epsAlfa;
sasiedztwo := (sasiedztwo-1.0)*epsSasiedztwo + 1.0;
Inc(iInc);
end; { koniec pętli uczącej }
Moduł prezentuje model sieci Kohonena, której zadaniem będzie nauczenie się rozpoznawania wskazanej figury geometrycznej. Dla określonej struktury sieci (podano ile sieć prostokątna zawiera elementów na krawędzi poziomej oraz pionowej) należy ustawić parametry: szybkości uczenia, zakresu sąsiedztwa, zmiany szybkości uczenia oraz zakresu sąsiedztwa wraz z kolejnymi prezentacjami, ilość prezentacji losowych punktów figury, której rozpoznawania na się nauczyć szkolona sieć Kohonena.
Główne okno modułu, na którym wyróżniamy w górnej części sekcje funkcjonalności sterujących eksperymentem, zaś w dolnej są umieszczone obszary, na których będą prezentowane efekty kolejnych etapów prowadzonych symulacji.
Ekran okna głównego modułu jest umieszczony na rysunku poniżej:
Jak już wcześniej wspominaliśmy, w górnej części powyższego ekranu znajduje się sekcja funkcjonalności sterujących procesem definicji rozpoznawanej figury poprzez określenie struktury sieci samoorganizującej Kohonena, aż po ustalenie parametrów procesu uczenia oraz sterowanie kolejnymi etapami uczenia i testowania i otrzymywanych wyników. Mechanizmy ustalania warunków i parametrów przeprowadzania eksperymentu znajdują się na poniższym rysunku:
gdzie możemy wyróżnić następujące sekcje funkcjonalności:
Wybór figury geometrycznej – użytkownik wskazuje tu w polu przełącznika radiowego (ang. radio-set) jedną z dostępnych tam figur: kwadrat, trójkąt, krzyż, koło, gwiazda, elipsa; po wyborze następuje w obszarze obok (biały kwadrat) następuje wizualizacja wskazanej figury, która w dalszej części eksperymentu będzie podlegała najpierw uczeniu przez sieć a później rozpoznawaniu (testowaniu),
Określenie struktury sieci Kohonena oraz “rozrzutu” wag początkowych – strukturę sieci użytkownik może określić jako pewnego rodzaju sieć płaską opartą o konstrukcję prostokąta: podawana jest ilość neuronów na boku i podstawie prostokąta; istotnym dla późniejszego procesu uczenia parametrem jest rozrzut (trzecie pole edycyjne – wartość rzeczywista), który to mające małą “ustaloną wartość” określa, że początkowe wagi są losowane z przedziału [-ustalona wartość, ustalona wartość] przez co użytkownik może sterować “rozrzutem” struktury sieci odwzorowanej na płaszczyźnie w czerwonych kwadracikach połączonych przez szarymi kreseczkami obrazującymi najbliższe sąsiedztwo;
Określenie parametrów uczenia sieci – użytkownik może określić tu wartości początkowe parametrów sterujących procesem uczenia: Alfa0, Alfa1, Eps(Alfa), Sąsiedztwo, Eps(Sąsiedztwo) – znaczenie tych parametrów wyjaśnia wstęp teoretyczny i zamieszczony algorytm uczenia dla tego przykładu,
Sterowanie procesem uczenia i testowania – użytkownik określa ile kroków (losowań) musi zostać wykonana dla danego etapu uczenia, po typ procesie następuje automatyczne odrysowanie struktury sieci (sieć wag na następnym wolnym obszarze prezentacji); każda epoka może mieć inną liczebność co użytkownik definiuje przed naciśnięciem Ucz sieć; na obszarze po prawej stronie (biały kwadrat na wysokości przycisku Ucz sieć) wizualizowany jest proces losowania punktów z epoki uczącej; poniżej przycisku znajduje się pasek postępu procesu oraz pole informacyjne pokazujące ile pozostało losowań do końca procesu uczenia; użytkownik może przerwać w każdej chwili proces uczenia poprzez wciśnięcie przycisku Ucz sieć który kontekstowo przy trwającym procesie uczenia zmienia swój opis i znaczenia na Stop.
Ekran prezentujący etap określenia figury geometrycznej do rozpoznawania oraz definicji struktury sieci (została określona jako prostokąt o boku sześciu neuronów oraz postawie piętnastu neuronów) znajduje się na poniższym rysunku:
Ekran po dziewięciu krokach uczenia i testowania jest pokazany na kolejnym rysunku:
Zaimplementowany przez nas moduł prezentujący zasadza się na idei samoorganizującej mapie podobieństwa cech, generowanych w sieci neuronowej Kohonena w trakcie procesu uczenia. [15]
# C_M8
K sieci samoorganizujące, sieć Kohonena
$ Sieć Kohonena