SIEĆ KOHONENA ROZPOZNAWANIE OBRAZÓW Cel ćwiczenia: zapoznanie się ze sposobem reprezentacji wiedzy w sieciach Kohonena i mechanizmami sąsiedztwa i sumienia neuronów. Zadanie do analizy: analizujemy sieć rozróżniającą cztery obrazki (tzw. ikonki) o rozmiarze 3x3 piksele (sieć składa się z 9 elementów na wejściu w trzech rzędach). Zwycięski neuron zwraca wartość 1, pozostałe wyjścia są zerowane. Instrukcja realizacji ćwiczenia Rozpakuj pliki ze strony http://home.agh.edu.pl/~asior/stud/lab112.html Z pliku AUT5a : ikonki.m, ikonki.fig, conscience.m, neighborhood.m, ikonki.txt Uruchom program: Matlab. Jako ścieżkę ustaw katalog z rozpakowanymi plikami. W oknie poleceń programu Matlab wpisz: run ikonki Opis programu Program zawiera wizualizację wag każdego z neuronów (36 kwadracików po lewej stronie, z których 9 pierwszych rzędy od 1 do 3 to wagi dla pierwszego neuronu, 9 kolejnych rzędy od 4 do 6 to wagi dla drugiego neuronu, itd.), wizualizację struktury sieci z oznaczonymi wejściami (IN) i wyjściami (OUT), edytor zbioru uczącego i parametrów uczenia. W wizualizacji sieci wejścia symbolizuje 9 czarnych przycisków. Kliknięcie każdego z nich powoduje zmianę wartości na tym wejściu sieci na przeciwną i umożliwia szybkie symulowanie pracy sieci dla dowolnie wprowadzonej w ten sposób ikonki wejściowej. Każda zmiana ikonki wejściowej przy pomocy przycisków powoduje automatyczne przesymulowanie działania sieci, a wynik zaprezentowany jest w postaci 4 prostokątów symbolizujących wyjścia. Pole tekstowe Zbiór uczący, zawiera wektory czytane rzędami, opisujące ikonki wzorcowe, których rozpoznawania ma nauczyć się sieć. Wektory definiujemy w następujący sposób: Dla wektora postaci: 001001001 Otrzymujemy ikonkę: Trzy pierwsze wartości każdego wektora w zbiorze uczącym to pierwszy rząd pól ikonki, kolejne trzy wartości to drugi rząd pól ikonki, a ostatnie trzy wartości to trzeci rząd pól ikonki. 1
Przycisk Załaduj umożliwia przetestowanie działania sieci dla aktualnie wybranego wektora ze zbioru uczącego. Przycisk Dodaj powoduje rozszerzenie zbioru uczącego o ikonkę aktualnie podaną na wejścia sieci za pomocą przycisków-wejść. Kliknięcie Usuń powoduje usunięcie ze zbioru uczącego aktualnie zaznaczonego wektora. Możliwe jest również zapisanie zbioru czterech ikonek w pliku ikonki.txt i korzystanie z niego po załadowaniu przyciskiem Importuj. Dołączony plik tekstowy prezentuje strukturę poprawnego zapisu ikonek: cztery ikonki, każda zapisana w trzech rzędach oddzielonych znakiem nowej linii, po 3 liczby (0 lub 1) w rzędzie oddzielone dwoma spacjami. Użytkownik może wybrać liczbę epok uczenia spośród czterech wartości: 800, 1600, 2400, 3200. Każdemu z czterech etapów uczenia przypisana może być dowolna wartość współczynnika mocy sąsiedztwa i mocy sumienia. Program umożliwia wybór jednej z 3 funkcji sąsiedztwa: funkcji Gaussa, funkcji bąbelkowej (buble neighbourhood) i sombrero (Mexican-Hat function). W prawym górnym rogu okna programu możliwe jest ustawienie początkowej wartości współczynnika szybkości uczenia, mnożnika, przez który ten współczynnik jest w każdym kroku mnożony. Aby wyraźniej zaprezentować działanie mechanizmów sumienia i sąsiedztwa, wagi neuronów inicjalizowane są z wartością 0 (dobre rozlosowanie wag początkowych wpływa pozytywnie na naukę, na tyle pozytywnie że w prostym przypadku z czterema klasami ikonkami sieć często uczy się z dowolnymi parametrami sąsiedztwa i sumienia). Naciśniecie Trenuj powoduje rozpoczęcie uczenia i jest możliwe tylko po uprzednim wciśnięciu przycisku Inicjalizuj. W konsoli programu Matlab wyświetlana jest wtedy macierz wag sieci. W programie możliwy jest podgląd przejściowych wag podczas uczenia (co 50 epok) po zaznaczeniu (domyślnie zaznaczone) pola Podgląd wag w czasie uczenia. Wydłuża to nieco czas działania, jednakże prezentuje dokładnie, w jaki sposób sieć uczy się, jak szybko stabilizuje się w punkcie końcowym (lub umożliwia zaobserwowanie oscylacji, gdy sieć nie stabilizuje się), a nie tylko ostateczną formę wag. Uczenie jest zakończone, gdy w konsoli zakończyło się wyświetlanie nowych wartości macierzy wag (kursor >> nie miga), a w programie wyświetliły się nowe wagi i odblokował się przycisk Inicjalizuj. Po naciśnięciu przycisku Inicjalizuj sieć jest zerowana i możesz uczyć ją od nowa. 2
Realizacja ćwiczenia 1. Przerysuj strukturę badanej sieci neuronowej do sprawozdania. 2. Badanie sieci z niezerowymi parametrami sąsiedztwa i sumienia a) Przepisz do tabeli wybrane parametry uczenia, b) Kliknij przycisk inicjalizuj, który wyzeruje wagi neuronów, następnie przeprowadź uczenie sieci w czterech etapach po 800 epok każdy wybierając odpowiedni etap klikając odpowiedni checkbox. c) Po każdym etapie uczenia przerysuj do sprawozdania otrzymane wagi neuronów widoczne po lewej stronie okna programu, z uwzględnieniem kolorów. d) Obserwuj postępy uczenia. W sprawozdaniu w polu komentarza zapisz jak zmieniały się wagi. (kiedy przestały się zmieniać?) e) Po ostatnim etapie uczenia przetestuj sieć zbiorem uczącym klikając odpowiedni wektor ze zbioru uczącego i przycisk Załaduj. Wyniki identyfikacji ikonek zapisz w tabeli Wyniki uczenia w postaci wyjść neuronów dla każdej ikonki. f) W polu komentarz dopisz odpowiedzi na następujące pytania: Czy sieć zdołała się nauczyć? W jaki sposób sieć stara się nauczyć zadanych ikonek? Jaki wpływ na uczenie sieci mają parametry sąsiedztwa i sumienia (przeanalizuj zmieniające się wagi neuronów). 3. Badanie sieci z zerowymi parametrami sąsiedztwa i sumienia a) Wyzeruj parametry odpowiedzialne za sumienie i sąsiedztwo. Zainicjuj sieć. b) Dalej postępuj według instrukcji z punktu drugiego. c) Jeśli sieć poniosła porażkę, wytłumacz jej przyczyny w komentarzu wykorzystując wiedzę na temat mechanizmów sąsiedztwa i sumienia. 4. Badanie sieci z zerowymi parametrami sumienia i niezerowymi parametrami sąsiedztwa a) Wyzeruj parametry odpowiedzialne za sumienie. Zainicjuj sieć. b) Dalej postępuj według instrukcji z punktu drugiego. Dodatkowo dla pierwszych dwóch etapów uczenia ustaw parametr sąsiedztwa na 1, następnie zmniejszaj go o dowolną wartość. c) W sprawozdaniu skomentuj wyniki. Jak zachowuje się sieć ze zbyt silnym parametrem sąsiedztwa? Na podstawie wiedzy na temat parametru sąsiedztwa, wyjaśnij przyczyny zjawiska. 3
5. Badanie sieci z zerowymi parametrami sąsiedztwa i niezerowymi parametrami sumienia a) Wyzeruj parametry odpowiedzialne za sąsiedztwo. Dla sumienia ustaw wagi z przedziału (0,1). Zainicjuj sieć. b) Dalej postępuj według instrukcji z punktu drugiego. Dla każdego etapu zmieniaj współczynnik sumienia. c) Obserwuj wagi po każdym etapie uczenia. Po jakim etapie uczenia nastąpiło ustalenie wag? Dlaczego kolejne epoki uczenia nie zmieniają wag? 6. Porównaj wszystkie cztery przypadki. Odpowiedz na pytania: a) Skąd biorą się różnice w wynikach uczenia sieci? b) Jakie zjawisko dotyczące zmian wag neuronów towarzyszy sieci wyposażonej jedynie w mechanizm sumienia (Zjawiska w początkowej i końcowej fazie uczenia)? c) Jakie zjawisko dotyczące zmian wag neuronów towarzyszy sieci wyposażonej jedynie w mechanizm sąsiedztwa (Zjawiska w początkowej i końcowej fazie uczenia)? d) Czy wyjściowy problem (rozpoznawanie przez cztery neurony czterech różnych klas) jest problemem uniwersalnym w problemach rozpoznawania? Podaj przykład problemu który można sprowadzić do podobnej postaci. 7. Wybierz spośród wszystkich czterech przypadków najlepszą konfigurację parametrów sąsiedztwa i sumienia. a) Zapisz w sprawozdaniu najlepszą konfigurację sieci. b) W każdej ikonce zmień wartość jednego piksela na przeciwną i zapisz uzyskane ikonki w sprawozdaniu. c) Przetestuj wybraną sieć zbiorem testowym różniącym się od zbioru uczącego o jeden piksel i porównaj go z wynikami dla zbioru uczącego d) Zapoznaj się z własnością generalizacji w sieciach neuronowych i odpowiedz na pytanie. Czy sieć Kohonena ma własność generalizacji? 8. Przetestuj działanie sieci dla własnych ikonek. a) Wymyśl własny zestaw ikonek. Obrazki powinny różnić się od siebie (tworzyć odrębne klasy). Zapisz ikonki do sprawozdania. b) Zainicjuj sieć oraz przeprowadź cztery procesy uczenia dla 3200 epok oraz różnych parametrów sąsiedztwa i sumienia podanych w sprawozdaniu. Dla każdego procesu uczenia przerysuj wagi neuronów. c) Skomentuj wyniki 4
9. Zapisz wnioski z przeprowadzonego ćwiczenia 5