07 projekt

Transkrypt

07 projekt
7. Sieci samoorganizujące się
W kilku poprzednich ćwiczeniach mieliśmy okazję przekonać się, że sieć neuronowa
jest w stanie nauczyć się pewnego odwzorowania z przestrzeni sygnałów wejściowych w przestrzeń sygnałów wyjściowych, korzystając z informacji o właściwych
(oczekiwanych) odpowiedziach.
W tym ćwiczeniu przekonamy się, że sieć potrafi wykryć pewne związki bez
dodatkowej pomocy z zewnątrz. W tym celu wykorzystywać będziemy mechanizm
konkurencji. Otóż po obliczeniu sygnałów wyjściowych neuronów, wybierzemy z nich
tego o najsilniejszej odpowiedzi. Jego i tylko jego wagi zmodyfikujemy następnie tak,
aby po ponownej prezentacji tego wzorca, jego sygnał wyjściowy miał jeszcze większą wartość w stosunku do pozostałych niż ma to miejsce obecnie. Wagi pozostałych
neuronów pozostaną bez zmian. Mechanizm ten, znany pod nazwą WTA - Winner Take All, wymaga aby wagi i sygnały wejściowe były znormalizowane. Sieci
tego typu są jednowarstwowe, często z liniową funkcją wyjściową; neurony nie mają
biasu. Ilość neuronów wyznacza zdolności do wykrywania grup - maksymalna ilość
wykrytych grup nie może przekroczyć ilości neuronów.
Sieci samouczące wykazują swoją przydatność wszędzie tam, gdzie nie możemy
z góry udzielić informacji dotyczących przetwarzanych danych, lub właśnie tych
informacji poszukujemy. W szczególności przydatne mogą być do:
• grupowania sygnałów wejściowych i łączenia ich w klasy,
• wykrywania zależności pomiędzy znalezionymi grupami/klasami,
• wykrywania własności statystycznych danych wejściowych przez przeznaczenie
większej ilości neurnów do klasyfikowania częściej pojawiających się danych,
• poznanie topologii danych wejsciowych; neurony położone blisko siebie odpowiadają na podobne sygnały.
Ostatni punkt w omawianym ćwiczeniu trudny będzie do zauważenia, gdyż wymaga on wprowadzenia mechanizmu sąsiedztwa pomiędzy neuronami, co zrobimy
dopiero w następnym ćwiczeniu.
Algorytm
1. Ustalenie struktury sieci, to znaczy ilości neuronów, gdyż ona determinuje
zdolności sieci do wykrywania różnej ilości grup.
2. Wczytanie zbioru wejść.
3. Wylosowanie wartości wag dla każdego neuronu.
1
4. Normalizacja wag i wczytanych sygnałów wejściowych według wzoru:
xi
xi = qP
N
i=1
x2i
gdzie N jest ilością wejść.
5. Powtarzaj założoną ilość kroków:
(a) Wybierz wzorzec p.
(b) Oblicz sygnały wyjściowe dla wzorca p.
(c) Znajdź neuron o największej wartości sygnału na wyjściu. Oznacz go jako
winner.
(d) Zmień wagi winner’a tak aby były bliższe wzorcowi p według wzoru:
wi = wi + η[xi − wi ]
gdzie i = 1...N , N jest ilością wejść, η jest współczynnikiem uczenia.
Współczynnik uczenia należy zmniejszać. Na początku może buć większy,
na przykład 0.2, a następnie powinien dążyć do zera.
6. Na zakończenie sprawdzamy do jakich grup należą rozważane punkty. Każdemu punktowi przypisujemy numer neuronu, który zareagował najsilniej.
Zadanie
Zadanie będzie polegało na klasyfikowaniu punktów płaszczyzny. Będziemy to robić podobnie jak w ćwiczeniu 2, tylko wykorzystując sieć samoorganizującą się.
Przyjmijmy kwadrat [−2, 2] × [−2, 2]. Wektor współrzędnych każdego punktu tego
kwadratu będzie wejściem do sieci. Ponieważ rozważamy punkty płaszczyzny sieć
bedzie miała dwa wejścia i jedną wartwę M neuronów z liniową funkcją aktywacji. Zakładając ustaloną liczbę kroków będziemy podawać losowo wejścia realizując
przedstawiony algorytm. Każdemu neuronowi przypiszemy określoną barwę. Podany
piksel - przeskalowany na odpowiadającą mu wartość z zakresu [−2, 2] × [−2, 2] będziemy zaznaczać kolorem przypisanym neuronowi winner’owi. Jeżeli otrzymamy
kilka neuronów, dla których wartość wyjściowa jest ta sama, największa wybieramy
jeden z nich w sposób losowy i uważamy go jako winner’a.
2

Podobne dokumenty