Sieci SOM Poniedziałek, 10:15 2007/2008 Krzysztof Szcześniak Cel Celem zadania jest zaimplementowanie neuronowej samoorganizującej się mapy wraz z metodą jej nauczania algorytmem gazu neuronowego. Część badawcza polega na zastosowaniu zaimplementowanej sieci do kompresji obrazów i określenie wpływu normalizacji wektorów, parametrów sieci, rozmiaru ramki i parametrów uczenia na efektywność działania sieci. Wprowadzenie Sieci SOM (ang. Self Organized Map) to sieci neuronowe, które nie wymagają nadzoru na etapie uczenia. Sieci te w trakcie uczenia same wykrywają istotne cechy powiązań między sygnałami. W wyniku przyłożonych sygnałów wejściowych następuje w różnym stopniu aktywacja neuronów, dostosowująca się w skutek zmiany wartości wag synaptycznych do zmian wzorców uczących. Sieci samoorganizując się na zasadzie współzawodnictwa, to zwykle sieci jednowarstwowe, w których każdy neuron połączony jest ze wszystkimi składowymi N-wymiarowego wektora wejściowego. Proces samoorganizacji wymaga na każdym etapie wyłonienia zwycięzcy, czyli neuronu, którego wektor wagowy różni się najmniej od przyłożonego na wejściu sieci wektora x. Metryki zaimplementowane w programie to: miara euklidesowa: iloczyn skalarny mira według normy (Manhattan) mira według normy Zarówno wektory wagowe jak i wejściowe mogą zostać znormalizowane. W przypadku normalizacji wektorów uczących, wektory wagowe nadążając za nimi, stają się automatycznie znormalizowane. Normalizacja odbywa się przy pomocy wzoru: Celem uczenia sieci samoorganizujących się przez konkurencję jest takie uporządkowanie neuronów, które zminimalizuje wartość oczekiwana zniekształcenia (błędu kwantyzacji). Numery neuronów zwyciężających przy kolejnych prezentacjach wektorów x tworzą tak zwaną książkę kodową. Jednym z algorytmów uczenia tego typu sieci jest algorytm gazu neuronowego. Jest to algorytm typu WTM (ang. Winner Take Most), w którym oprócz zwycięzcy uaktualniają swoje wagi także z jego sąsiedztwa. Proces adaptacji wektora wag możemy zapisać zależnością: Wszystkie podlegają sortowaniu w każdej iteracji w zależności od ich odległości od wektora x. Wartość funkcji sąsiedztwa dla i-tego neuronu G(i,x), jest określona zależnością
w której m(i) oznacza kolejność uzyskaną w wyniku sortowania, a jest parametrem, malejącym w funkcji czasu. Przy algorytm przekształca się w zwykły algorytm WTA (ang. Winner Take All), w którym uczeniu podlega tylko zwycięski neuron. W celu uzyskania dobrych rezultatów samoorganizacji proces uczeni powinien zaczynać się dużą wartością, po czym powinna ona maleć wraz z upływem czasu, do wartości minimalnej, zwykle zerowej. Zmiana może być liniowa lub wykładnicza (obie wersje zostały zaimplementowane w programie). Podobnie współczynnik uczenia powinien maleć wraz z upływem czasu. Również obie wersje zostały zaimplementowane w programie. Opis implementacji
Aplikacja jest rozszerzeniem programu z zadania 2. Na diagramie przedstawiono tylko te klasy które są niezbędne do działania samoorganizującej się mapy. W skład programu wchodzą następujące klasy: -INeuralNetwork interfejs będący abstrakcją sieci neuronowej -NetworkFactory klasa będąca fabryką sieci neuronowych, wczytuje sieć z pliku i na podstawie zawartych w nim informacji tworzy odpowiedni rodzaj sieci -SomNetwork klasa implementująca interfejs INeuralNetwork, implementująca samoorganizująca się sieć. -Layer klasa odpowiadająca warstwie neuronów sieci neuronowej. Neuron klasa będąca implementacja neuronu. TeacherFactory klasa będąca fabryka nauczycieli dobiera nauczyciela na podstawie wskazanej sieci. ITeacher interfejs będący abstrakcją nauczyciela sieci. AbstractTeacher wstępna implementacja interfejsu ITeacher zawiera implementacje metod współdzielonych przez różne implementacje nauczycieli. SomTeacher klasa realizuje interfejs ITeacher- implementacja algorytmu gazu neuronowego do uczenia sieci SOM. Pattern wzorzec wykorzystywany do nauki sieci IConnection interfejs opisujący podstawowe operacje wykonywane na połączeniach sieci NeuronConnection połaczenie między neuronami InputConnection połaczenie między wejściem a neuronem IDistanceMeasure abstrakcja algorytmu wyliczającego odległość między dwoma wektorami. EuclidMeasure implementacja euklidesowej miary odległości ScalarMultiple iloczyn skalarny L1Norm miara odległości według normy LInfNorm miara odległości według normy Logger klasa odpowiedzialna za logowanie wyświetlanie informacji na ekranie oraz ich zapis do pliku Materiały i metody Eksperyment E1 wpływ współczynnika nauczania na nauczanie sieci: Rozmiar ramki: 4x4, liczba wejść sieci: 16, Współczynnik nauczania początkowy: zmienny, końcowy: 0.1, zmiana liniowa, Współczynnik początkowy: 20, końcowy: 0.1, zmiana wykładnicza, Miara odległości: euklidesowa, E1.1 Współczynnik nauczania początkowy: 0.2 E1.2 Współczynnik nauczania początkowy: 0.45 E1.3 Współczynnik nauczania początkowy: 0.7 E1.4
Współczynnik nauczania początkowy: 0.95 Eksperyment E2 wpływ współczynnika na efektywność nauczania sieci Rozmiar ramki: 4x4, liczba wejść sieci: 16, Współczynnik nauczania początkowy: 0.7, końcowy: 0.1, zmiana liniowa, Współczynnik początkowy: zmienny, końcowy: 0.1, zmiana wykładnicza, Miara odległości: euklidesowa, E2.1 Współczynnik początkowy: 1.0 E2.2 Współczynnik początkowy: 10.0 E2.3 Współczynnik początkowy: 20.0 E2.4 Współczynnik początkowy: 30.0 E2.5 Współczynnik początkowy: 40.0 E2.6 Współczynnik początkowy: 50.0 E2.7 Współczynnik początkowy: 60.0 E2.8 Współczynnik początkowy: 70.0 Eksperyment E3 wpływ ilości neuronów na nauczanie sieci Rozmiar ramki: 4x4, liczba wejść sieci: 16, Liczba neuronów: zmienna Współczynnik nauczania początkowy: 0.7, końcowy: 0.1, zmiana liniowa, Współczynnik początkowy: 40, końcowy: 0.1, zmiana wykładnicza, Miara odległości: euklidesowa, E3.1 Liczba neuronów: 64 E3.2 Liczba neuronów: 128 E3.3 Liczba neuronów: 256 E3.4 E3.5 Liczba neuronów: 1024 E3.6
Liczba neuronów: 2048 Eksperyment E4 wpływ doboru miary odległości na nauczanie sieci Rozmiar ramki: 4x4, liczba wejść sieci: 16, Współczynnik nauczania początkowy: 0.7, końcowy: 0.1, zmiana liniowa, Współczynnik początkowy: 40, końcowy: 0.1, zmiana wykładnicza, Miara odległości: zmienna, E4.1 Miara odległości: euklidesowa E4.2 Miara odległości: iloczyn skalarny E4.3 Miara odległości: E4.4 Miara odległości: Eksperyment E5 wpływ rozmiaru ramki na nauczanie sieci Rozmiar ramki: zmienny, liczba wejść sieci: 16, Współczynnik nauczania początkowy: 0.7, końcowy: 0.1, zmiana liniowa, Współczynnik początkowy: 40, końcowy: 0.1, zmiana wykładnicza, Miara odległości: euklidesowa, E5.1 Rozmiar ramki: 2x2 E5.2 Rozmiar ramki: 4x4 E5.3 Rozmiar ramki: 8x8 Eksperyment E6 wpływ normalizacji wektorów wejściowych Rozmiar ramki: 4x4, liczba wejść sieci: 16, Współczynnik nauczania początkowy: 0.7, końcowy: 0.1, zmiana liniowa, Współczynnik początkowy: 40, końcowy: 0.1, zmiana wykładnicza, Miara odległości: euklidesowa, E6.1 Wektory nieznormalizowane E6.2
Wektory znormalizowane Eksperyment E7 wpływ zmiany parametrów w funkcji czasu na nauczanie sieci Rozmiar ramki: 4x4, liczba wejść sieci: 16, Współczynnik nauczania początkowy: 0.7, końcowy: 0.1, Współczynnik początkowy: 40, końcowy: 0.1, Miara odległości: euklidesowa, E7.1 Współczynnik nauczania: zmiana liniowa, Współczynnik : zmiana liniowa E7.2 Współczynnik nauczania: zmiana liniowa, Współczynnik : zmiana wykładnicza E7.3 Współczynnik nauczania: zmiana wykładnicza, Współczynnik : zmiana liniowa E7.4 Współczynnik nauczania: zmiana wykładnicza, Współczynnik : zmiana wykładnicza Wyniki Eksperyment E1 - wpływ współczynnika nauczania na nauczanie sieci: E1.1 41,52 7,52E-4 26,26 31,24 58 35 E1.2 35,53 6,43E-4 26,94 31,92 57 12 E1.3 33,39 6,05E-4 27,21 32,19 54 16 E1.4 33,27 6,02E-4 27,22 32,20 52 28 Tabela 1 Eksperyment E2 wpływ współczynnika na efektywność nauczania sieci: E2.1 41,88 7,58E-4 26,22 31,20 57 123 E2.2 34,79 6,30E-4 27,03 32,01 49 50 E2.3 33,74 6,11E-4 27,16 32,14 64 23 E2.4 34,20 6,20E-4 27,10 32,08 45 16 E2.5 34,46 6,23E-4 27,07 32,05 41 18 E2.6 34,76 6,29E-4 27,03 32,01 49 18 E2.7 34,74 6,29E-4 27,03 32,01 54 18 E2.8 35,65 6,46E-4 26,92 31,90 68 20 Tabela 2
Eksperyment E3 wpływ ilości neuronów na nauczanie sieci E3.1 106,95 19,37E-4 22,15 27,13 85 0 E3.2 77,02 13,95E-4 23,58 28,56 83 0 E3.3 53,95 9,78E-4 25,12 30,10 74 0 E3.4 34,54 6,26E-4 27,06 32,38 51 17 E3.5 19,06 3,45E-4 29,64 34,62 37 151 E3.6 9,97 1,81E-4 32,46 37,44 27 735 Tabela 3 Eksperyment E4 wpływ doboru miary odległości na nauczanie sieci E4.1 34,19 6,19E-4 27,10 32,08 50 14 E4.2 236.83 42,40E-4 18,70 23,68 90 76 E4.3 37,32 6,76E-4 26,72 31,70 86 15 E4.4 44,47 8,05E-4 25,95 30,94 44 35 Tabela 4 Eksperyment E5 wpływ rozmiaru ramki na nauczanie sieci E5.1 11,20 2,03E-4 31,95 36,93 25 1 E5.2 34,16 6,19E-4 27,10 32.09 46 18 E5.3 33,45 6,06E-4 27,20 32,18 57 107 Tabela 5 Eksperyment E6 wpływ normalizacji wektorów wejściowych E6.1 34,26 6,20E-4 27,09 32,07 54 17 E6.2 5714,62 1034,79E-4 4,87 9,85 168 209 Tabela 6 Eksperyment E7 wpływ zmiany parametrów w funkcji czasu na nauczanie sieci E7.1 37,07 6,72E-4 26,75 31,73 50 20 E7.2 59,48 0,11E-4 24,70 29,68 74 22 E7.3 34,25 6,20E-4 27,09 32,08 56 15 E7.4 56,94 10,3E-4 24,89 29,87 73 26 Tabela 7
Ramka 4x4, 512 neuronów, (E2.1) obraz różnicowy, MD = 57 Ramka 4x4, 512 neuronów, (E2.4) obraz różnicowy, MD = 45 Ramka 4x4, 512 neuronów, (E2.8) obraz różnicowy, MD = 88
Ramka 4x4, 64 (E3.1) obraz różnicowy, MD = 85 Ramka 4x4, 256 neuronów (E3.3) obraz różnicowy, MD = 74 Ramka 4x4, 1024 neuronów (E3.5) obraz różnicowy, MD = 37
Ramka 2x2, 512 neuronów (E5.1) obraz różnicowy, MD = 25 Ramka 4x4, 512 neuronów (E5.2) obraz różnicowy, MD = 46 Ramka 8x8, 512 neuronów (E5.3) obraz różnicowy, MD = 57
Dyskusja Pierwsze doświadczenie polegało na sprawdzeniu jaki wpływ na nauczanie sieci ma zmiana współczynnika nauczania. W tabeli (1) wyraźnie widać, że zwiększenie współczynnika nauczania poprawia szybkość nauczania się sieci. Niezależnie od wybranej miary błędu, zwiększenie współczynnika doprowadziło do polepszenia jakości skompresowanego obrazu. Zwiększanie współczynnika nauczania powyżej pewnej wartości powoduje, że powstaje coraz więcej martwych neuronów, jednak przy współczynniku 0,95 nie wpłynęło to jeszcze negatywnie na jakość obrazu. Zwiększenie się liczby nieużytecznych neuronów wynika zapewne z faktu, że inne dzięki dużemu współczynnikowi nauki znacznie szybciej ustawiają się w docelowym punkcie i w kolejnych epokach wygrywają, nie dając szansy innym. Drugie doświadczenie miało na celu wykazanie wpływu współczynnika na nauczanie sieci. W tabeli (2) wyraźnie widać, że zwiększanie początkowego przedziału sąsiedztwa powoduje że w początkowych cyklach większa liczba neuronów zostaje nauczona, a co za tym idzie wraz ze wzrostem współczynnika (oczywiście do pewnego stopnia) maleje liczba martwych neuronów. Z faktu że większa liczba neuronów opisuje skompresowany obraz wynika bezpośrednio to że może on być lepiej odwzorowany, a zatem zmniejszają się błędy kompresji. Z kolei zbyt duży współczynnik, powoduje że w początkowych cyklach za dużo neuronów uczy się tego samego wzorca, a co za tym idzie oddala się od innych wzorców. Doświadczenie numer trzy pokazuje jak ilość neuronów wpływa na poprawność odwzorowania obrazu. Wyraźnie widać że zwiększanie liczby neuronów w znacznym stopniu polepsza jakość skompresowanego obrazu. Jednak większa liczba neuronów to zarazem gorszy współczynnik kompresji. Dodatkowo przy 2048 neuronach widać, że aż 735 neuronów zostaje zmarnowanych (nie przechowują żadnego przydatnego wzorca). Można by polepszyć stopień kompresji poprzez wyrzucenie bezużytecznych neuronów i przeindeksowanie obrazu, co spowodowało by wzrost współczynnika kompresji, gdyż zamiast informacji o 2048 wzorcach wystarczyło by przechować 1313 wzorców. W doświadczeniu numer cztery wyraźnie widać ze najlepszą zaimplementowaną miara odległości, dającą najlepsze efekty jest miara euklidesowa. Błędny wynik uzyskany przy pomocy iloczynu skalarnego wynika z faktu, że wektory wejściowe nie są znormalizowane. Doświadczenie numer pięć polegało na zbadaniu wpływu rozmiaru ramki na nauczanie sieci. W tabeli (5) widać, że im mniejszy rozmiar ramki tym lepsze odwzorowanie obrazu. Wynika to zapewne z mniejszej liczby możliwości jakie mogą przyjąć 4 piksele w porównaniu z 16. Mniejsza liczba kombinacji, a co za tym idzie lepsze odwzorowanie szczegółów daje w rezultacie lepsze odwzorowanie. Szóste doświadczenie miało na celu zbadanie wpływu normalizacji wektorów wejściowych na poprawność procesu nauczania. W ogólności normalizacja poprawia zbieżność i szybkość działania algorytmu, jednak w tym specyficznym przypadku zastosowanie normalizacji nie jest wskazany. Wynika to z faktu że znormalizowanie wektorów wejściowych spowoduje utratę informacji o jasności danej ramki. Ramka w której tylko jeden piksel ma wartość różną od zera niezależnie od jasności tego piksela zawsze będzie miała wartość 1 w tym pikselu i 0 w pozostałych. Zatem przy dekompresji nie jesteśmy w stanie odczytać informacji o oryginalnej jasności ramki. Wszelkie próby porównania obrazów oryginalnego i zdekompresowanego mijają się z celem, ponieważ standardowe algorytmy będą pokazywać znaczny błąd obrazu jak i niski stosunek sygnału do szumu. Normalizacja miała by zastosowanie gdyby nie obchodziła nas długość wektora (w naszym przypadku jasność) ale sam kierunek. Gdyby zamiast bitmapy była to np. mapa normalnych wówczas normalizacja była by jak najbardziej uzasadniona. Celem siódmego doświadczenia było znalezienie optymalnej metody zmiany parametrów (wsp. nauki i ) w funkcji czasu. W tabeli 7 widać, że najlepszy rezultat został otrzymany gdy współczynnik nauki zmieniał się w sposób liniowy, natomiast zmiana współczynnika następowała w sposób wykładniczy. Współczynnik kompresji uzyskanego obrazu może otrzymać ze wzoru: gdzie i oznaczają wymiary ramki, liczbę ramek, - liczbę neuronów, T liczbę bitów przyjętych do reprezentacji stopnia szarości i t liczbę bitów przyjętych do reprezentacji wartości wag. Wnioski - Względnie duża wartość współczynnika nauczania w początkowych iteracjach wpływa korzystnie na szybkość i jakość uczenia się sieci. -Duża wartość współczynnika w początkowych iteracjach powoduje zmniejszenie liczby martwych neuronów. -Zwiększenie liczby neuronów powoduje polepszenie się jakości obrazka, jednak odbywa się to kosztem mniejszego współczynnika kompresji. -Zwiększenie rozmiaru ramki pozwala na zwiększenie współczynnika kompresji, jednak kosztem gorszej jakości obrazu, na którym przy ramce 8x8 widać już artefakty. -W końcowych iteracjach współczynnik powinien dążyć do zera. -Współczynnik nauki powinien malec w sposób liniowy, natomiast współczynnik powinien maleć w sposób wykładniczy. -Normalizacja wektorów wejściowych nie sprawdza się w przypadku przetwarzania obrazów, ponieważ utracona zostaje informacja o jasności piksela. -Najlepszą miarą spośród zaimplementowanych jest miara euklidesowa
Literatura Stanisław Osowski Sieci Neuronowe do przetwarzania informacji, Oficyna Wydawnicza Politechniki Warszawskiej, 2006 Uwagi prowadzącego