• Nie Znaleziono Wyników

1.1 Algorytm Kohonena dla wejść numerycznych

N/A
N/A
Protected

Academic year: 2021

Share "1.1 Algorytm Kohonena dla wejść numerycznych"

Copied!
6
0
0

Pełen tekst

(1)

Projekt pn. „Wzmocnienie potencjału dydaktycznego UMK w Toruniu w dziedzinach matematyczno-przyrodniczych”

realizowany w ramach Poddziałania 4.1.1 Programu Operacyjnego Kapitał Ludzki

Wprowadzenie do Sieci Neuronowych — Laboratorium 8–10 Uczenie bez nauczyciela, samoorganizacja i PCA

Maja Czoków, Jarosław Piersa 2013-11-20

1 Powtórzenie

1.1 Algorytm Kohonena dla wejść numerycznych

Dane: Sieć neuronowa / graf G = (V, E), zbiór danych uczących X ⊂ Rn

Wynik: nauczona sieć, która powinna klasyfikować dane pod kątem ich podobieństwa (odległości między punktami). Za- uważmy, że wśród danych nie ma podanych poprawnych klasyfikacji!

1. Ustaw T — maksymalna ilość iteracji, i := 0 — licznik, każdemu węzłowi w sieci przypisz losową pozycję (losowe wagi) v.x, v.y, v.z, ...

2. Dla i = 0..T wykonuj:

• Wylosuj przykład uczący a ∈ X

• Znajdź węzeł v ∈ V , który leży najbliżej a

• Przesuń węzeł v i wszystkich jego sąsiadów „w kierunku” punktu a:

u.x = α · u.x + (1 − α)a.x u.y = α · u.y + (1 − α)a.y

(...) gdzie np. α = i+1T

3. Zwróć nauczoną sieć.

1.2 Algorytm Kohonena dla wejść symbolicznych

Dane: Sieć G = (V, E), zbiór danych symbolicznych X wraz z „miarą odległości”. Powinno zachodzić:

• d(x, x) = 0

• d(x, y) = d(y, x) ≥ 0

1. Przypisz węzłom losowe prototypy 2. Powtarzaj wiele razy

• Każdemu wierzchołkowi w przypisz listę tych przykładów, że prototyp p(w) jest do nich najbliższy

• Każdemu wierzchołkowi w przypisz nowy prototyp — medianę uogólnioną z listy klasyfikacyjnej w i list sąsiadów w

• Wyczyść listy klasyfikacyjne 3. Zwróć sieć

Mediana uogólniona zbioru {a1, ..., an} — element ai, który minimalizujeP

jd2(ai, aj)

(2)

-4 -3 -2 -1 0 1 2 3 4

-10 -5

0 5

10 -10

-5 0 5 10 15 20

(a) Skomplikowane dane w Rn. (b) Graf na który chcemy zmapować dane.

-4 -3 -2 -1 0 1 2 3 4

-10 -5 0

5 10

-10 -5 0 5 10 15 20

(c) Mapowane wierzchołków grafu na dane. (d) Mapowanie wierzchołków grafu na prze- strzeń kolorów.

/home

/root /boot

/media

/mnt /etc

/usr/bin /opt

/sbin /bin

/usr /usr/lib

/usr/include /var /src

/tmp

(e) Mapa wizualizacyjna.

Rysunek 1: Wizualizacja danych z wykorzystaniem samoorganizacji.

1.3 Algorytm klasyfikacyjny ze stałą ilością kategorii

1. Ustal ilość kategorii k,

(3)

• Wybierz przykład E,

• Znajdź dla E kategorię o najbliższym środku ciężkości,

• Jeżeli nie był w niej przypisany, to przypisz tam E, uaktualnij środki ciężkości w obu kategoriach (tj. wypisanej i wpisanej),

• Zakończ gdy stan się ustabilizuje.

Środek ciężkości Dane niech będą punkty w przestrzeni x1, .., xk ∈ Rn o masach równych m1, ..., mk > 0 odpowiednio.

Środek ciężkości układu ma współrzędne

X = P

imixi

P

imi (1)

1.4 Algorytm ze zmienną ilością kategorii

1. Przypisz zbiór kategorii k := ∅, każda kategoria ma swój prototyp P , 2. Powtarzaj wiele razy

(a) wybierz przykład E,

(b) znajdź kategorię o najbliższym prototypie P , jeżeli lista kategorii jest pusta patrz dwa punkty niżej, (c) sprawdź czy P jest wystarczająco podobny do E:

(d) jeżeli nie lub lista jest pusta to utwórz nową kategorię o prototypie E i zakończ bierzącą iterację, (e) jeżeli tak to sprawdź czy P można zaakceptować jako prototyp dla E,

(f) jeżeli nie to wróć do (2a) i wybierz kolejny najbliższy prototyp, (g) Jeżeli tak to upodobnij P do E,

ART2 Przykładowe implementacje operacji P — prototyp, E — przykład:

• Znormalizuj wszystkie przykłady E := |E|E

• najbliższy P — ten, który maksymalizuje hP, Ei,

• wystarczająco podobny — czy hP, Ei ≥ αP

jEj, gdzie α < 1n,

• można zaakceptować — czy hP, Ei ≥ ρ, gdzie ρ ∈ (0, 1),

• upodobnij

P := (1 − βP ) + βE P := P

|P | gdzie β ∈ (0, 1)

1.5 Wyszukiwanie składowych głównych

Dane: lista przykładów numerycznych X.

Wynik: wektor cech które mają największy wpływ wśród danych.

1. Rozpocznij z niewielkimi losowymi wagami,

2. Znormalizuj wszystkie wejścia do przedziału [−1, 1], 3. Powtarzaj wiele razy:

• Wybierz przykład x z listy

• (Reguła Hebba) w := w +  hw, xi x

(4)

• (Reguła Oja) w := w +  hw, xi (x − hw, xi w) 4. Zwróć wektor w

5. Następna składowa liczona jest tak samo, ale na danych zrzutowanych na podprzestrzeń prostopadłą do w:

x := x − whw, xi hw, wi Gdzie h·, ·i jest iloczynem skalarnym.

2 Ćwiczenia

Samoorganizacja graf na płaszczyźnie

• stwórz graf (macierz sąsiedztwa) f u n c t i o n g = g r a f ( n )

g = z e r o s( n , n );

o = eye( n -1 , n - 1 ) ;

g (1: n -1 , 2:end) = g (1: n -1 , 2:end) + o ; g = g + g ’;

end

• zaimplementuj algorytm Kohonena f u n c t i o n xy = k o h o n e n ( g );

% i l o s c w i e r z c h o l k o w n = l e n g t h( g );

% s t a r t o w e p o z y c j e xy = r a n d( n , 2 ) ;

% il i t e r a c j i T = 1 0 0 0 0 ; for t = 1: T

% s i l a p r z y c i a g a n i a a l p h a = t * 1 . 0 / ( T + 1 ) ;

% l o s u j e m y p u n k t z k w a d r a t u [0 ,1] \ t i m e s [0 ,1]

p = r a n d(1 ,2);

% i l o c z y n z e w n e t r z n y : t w o r z y nam t a b l i c e z l o z o n a z k o p i i

% w e k t o r a p

p1 = o n e s (1 , n ) ’* p ;

% o b l i c z e m y o d l e g l o s c i d = ( xy - p1 ) . ^ 2 ;

d = sum( d ’);

% n a j b l i z s z y

i = f i n d( d <= min( d ));

% s a s i e d z i n a j b l i z s z e g o : nb = g ( i , : ) ;

nbi = f i n d( nb > 0);

nbi = [ i , nbi ];

% k o r e k t a wag

p1 = o n e s (1 ,l e n g t h( nbi )) ’* p ;

xy ( nbi , :) = a l p h a * xy ( nbi , :) + (1 - a l p h a ) .* p1 ;

(5)

% r e n d e r o w a n i e co 1 0 0 0 i t e r a c j i g p l o t( g , xy , " ro - " ) ;

s l e e p ( 1 ) ; end

end % for

end % f u n c t i o n

• wyświetl wyniki n = 50;

g = g r a f ( n );

XY = r a n d( n , 2 ) ; f i g u r e( 1 ) ; g p l o t( g , XY );

f i g u r e( 2 ) ; spy( g );

f i g u r e( 3 ) ;

g l p o t ( g , k o h o n e n ( g ) , ’ ro - ’);

3 Zadania

Strony z przykładowymi implementacjami:

http://www.sund.de/netze/applets/gng/full/GNG-U_0.html http://www-users.mat.uni.torun.pl/~philip/java/SOM.html

3.1 Zadanie 1 — algorytm Kohonena

Zaimplementuj algorytm Kohonena dla wejść numerycznych lub / i symbolicznych. Pomysły na wejścia numeryczne: sa- moorganizacja grafu na płaszczyźnie lub w przestrzeni, krzywa wypełniająca figurę (por. krzywa Peano), powierzchnia wypełniająca bryłę, nakładanie tekstury na model trójwymiarowy, nakładanie siatki na kostkę RGB, CMY(K), walec HSV, stożek HSL. Przykładowe dane symboliczne: klasyfikacja stron www, fragmentów tekstów w języku naturalnym, piosenek...

W tym przypadku należy przygotować dane uczące i „miarę odległości” między nimi.

Uwagi:

Grafy powinny mieć dość regularną strukturę: łańcuch, cykl, krata, hiperkostka, drzewo binarne (trudno się uczy!), torus.

Jeżeli jest to problem na płaszczyźnie to dodatkowo graf powinien być planarny.

3.2 Zadanie 2 — Składowe główne (obrazy)

Wykorzystując regułę Hebba lub / i regułę Oja znajdź pierwszą (lub k pierwszych) składową główną dla zadanych danych uczących. Danymi mogą być np. fragmenty obrazów (ok 10 x 10 do 32 x 32 pikseli), zbiory danych w przestrzeni lub na płaszczyźnie (dość nietrywialne), statystyki logowania na serwer wydziałowy (komenda last ), statystyki ruchu w sieci (tcpdump, wireshark), listy procesów w systemie (ps -l ) itp. Dane symboliczne w miarę możliwości należy zamienić na numeryczne (np. nazwa użytkownika na uid, numer portu i adres w postaci liczbowej, typ protokołu z /etc/protocols, data na dni miesiąca, tygodnia, godziny, itp).

3.3 Zadanie 3 — Segmentacja

Za pomocą algorytmu/ów klasyfikujących wykonaj segmentację1 obrazu pod kątem barwy, tj podział obrazu na obszary charakteryzujące się podobnym kolorem. Można wykonać dla obrazów w odcieniach szarości, niezależnie dla każdego kanału R, G, B, bądź na całej przestrzeni RGB, CMY, HSV, etc. W obliczeniach warto rozważyć przypisanie kolorom ich wag np.

ilości pikseli o danym kolorze. Zadanie jest liczone jako lista czwarta — samoorganizacja.

1Tak, wiem, że są do tego dedykowane i efektywniejsze algorytmy

(6)

3.4 Zadanie 4 — Rysowanie grafu na płaszczyźnie

Za pomocą algorytmu Kohonena przemapuj graf na płaszczyznę (dla ambitnych i na wyższą ocenę: na torus / powierzchnię sfery).

Przykładowe grafy do mapowań:

• łańcuch (ścieżka wierzchołków)

• pierścień (cykliczna ścieżka wierzchołków)

• siatka kwadratowa

• periodyczna siatka kwadratowa

• hiperkostka d-wymiarowa

• drzewo binarne

• graf losowy Erd˝osa-R´enyiego, zob np. http://www.renyi.hu/∼p erdos/1959-11.pdf

• graf losowy Wattsa-Strogatza doi:10.1038/30918

• graf losowy Alberty-Barabasiego doi:10.1103/RevModPhys.74.47

Cytaty

Powiązane dokumenty

Program to zbiór deklaracji, czyli opisu obiektów, które b¸edziemy używać, oraz poleceń (instrukcji), czyli opisu akcji, które b¸edziemy wykonywać. Dost¸epnymi obiektami s¸

W Rozmyślaniach dominikańskich Maryja zwraca się do Gabriela dwukrotnie: raz jeszcze przed śmiercią Syna, kiedy anioł nie odpowiada na jej wołanie (R 11) i w opisanej już

METODA ODCINKOWA – pośrednia metoda wyznaczania przepływu wody; odcinkowy pomiar przepływu polega na pomiarze prędkości przepływu na wybranym odcinku cieku wodnego za

Na rysunku 8.10a przedstawiono wykres energii potencjalnej E p (x) jako funkcji położenia cząstki, dla układu zawierającego cząstkę, poruszającą się w jednym wymiarze, nad

[r]

Pomysły na wej- ścia numeryczne: samoorganizacja grafu na płaszczyźnie lub w przestrzeni, krzywa wypełniająca figurę (por. krzywa Peano), powierzchnia wypełniająca

Celem badania jest określenie wpły- wu wzrostu gospodarczego na emisję zanieczyszczeń poprzez weryfikację środowisko- wej krzywej Kuznetsa oraz ocena wpływu wytwarzania energii

oraz: dodawanie i odejmowanie wektorów, mnożenie wektora przez skalar, translacja, norma, wektor prostopadły, ortogonalny, przeciwny, zerowy, normalny, binormalny, składowy,