Perceptron (wersja bez współczynnika momentum tutaj)
Powrót do: sztuczna inteligencja

Poniższy aplet przedstawia działanie perceptronu – najprostszej sieci neuronowej służącej do klasyfikacji danych. Schematycznie można go przedstawić w następujący sposób.


Aplet poniżej symuluje perceptron składający się z trzech wejść oraz jednego wyjścia. Perceptron posiada już tę interesującą właściwość sieci neuronowych, iż sam koryguje wagi poszczególnych wejść sygnałowych aby uzyskać zadany wynik („uczy się”).
Sam proces jest stosunkowo prosty do opisania. Otóż perceptron zwraca zazwyczaj dwie wartości (np. 0 lub 1), klasyfikując obiekt na wejściu do jednej z grup na podstawie tak zwanej funkcji aktywacji.
Funkcja aktywacji neuronu przedstawiona jest zazwyczaj wzorem podobnym do:

F(x) = 1 jeśli F(net)>=0
F(x) = 0 jeśli F(net)<0


F(net) ma natomiast następujący wzór:

F(net) = w0*1 + w1*x +w2*y


Żeby sprawę uprościć, najłatwiej wytłumaczyć działanie na przykładzie. Weźmy 4 punkty na układzie współrzędnych 2 niebieskie (klasa 0) i 2 czerwone (klasa 1). Umieśćmy je na układzie współrzędnych a następnie nakażmy perceptronowi znalezienie linii podziału pomiędzy Tymi dwoma grupami (a zatem zakwalifikowanie punktów do dwóch różnych klas).

Aplet umożliwia umieszczanie punktu na dwa sposoby. Wybieramy klasę punktu (niebieski albo zielony)

A następnie albo klikamy myszką na białym obszarze z układem współrzędnych, albo, jeśli chcemy umieścić punkty dokładnie w odpowiednich współrzędnych, wpisujemy współrzędną x w pierwsze pole tekstowe za przyciskiem „Nowy punkt”, współrzędną y w drugie pole, a następnie klikamy wspomniany przycisk „Nowy punkt”.

Dodajmy dwa niebieskie punkty we współrzędnych (1,0) oraz (2,-1) a następnie dwa czerwone we współrzędnych (1,-1) i (3,-3). Rozkład punktów powinien wyglądać następująco

Z tą różnicą że prosta może przebiegać inaczej. Jej kierunek zależy bowiem od wag perceptronu, które są początkowo losowe. Ich wartość możemy podejrzeć (lub też ustawić) w lewej części apletu.

W ramach przypomnienia podany jest tam też wzór na prostą na podstawie wartości poszczególnych wag.

Kiedy mamy już wszystko przygotowane czas przejść do głównego działania apletu.

W dolnej części apletu mamy panel sterowania. Perceptron może sprawdzać przynależność do danej klasy – punkt po punkcie lub też dla wszystkich punktów na raz. Odpowiednio będzie to odpowiadało przyciskom „1 krok” oraz „1 seria”. Jeśli sprawdzany punkt nie będzie należał do odpowiedniej klasy wagi perceptronu zostają przeliczone według wzoru:

W0nowe = W0stare + deltaY*wsp. uczenia+(W0nowe-W0stare)*wsp momentum
W1nowe = W1stare + deltaY*X*wsp. uczenia+(W0nowe-W0stare)*wsp momentum
W2nowe = W2stare + deltaY*Y*wsp. uczenia
+(W0nowe-W0stare)*wsp momentum

Gdzie deltaY = różnica między wynikiem funkcji F(net) a wartością oczekiwaną (0 lub 1).
Funkcja F(net) w tym przypadku będzie miała postać W0*1 + W1*x +W2*y.  Żeby obserwować zmiany wag, oprócz obserwacji pól tekstowych, można również podejrzeć konsolę środowiska Java, gdzie wypisywane są informacje dodatkowe. W tym celu klikamy prawym przyciskiem myszy na ikonke Javy na pasku zadań obok zegarka (ang. tray) i wybieramy opcje „open console”.
Przyciski „krok - pętla” oraz „seria – pętla” załączają timer dla perceptronu, który, jak nazwa przycisku wskazuje, sprawdza punkt po punkcie aż do skutku, lub też skanuję wszystkie punkty naraz, również do skutku. Każda pętla jest zliczana po lewej stronie panelu, co daje możliwość porównania skuteczności apletu dla różnych  punktów oraz parametrów.
Gdy chcemy zacząć badania od nowa, klikamy na przycisk „Resetuj wagi” – randomizuje on wartości wag oraz resetuje liczniki. Jeśli chcemy pozbyć się wszystkich punktów klikamy przycisk „Czyść”

Życzę owocnych badań!
Paweł Poliwoda

Linki:
http://isl.ira.uka.de/neuralNetCourse/ - International Center for Advanced Communication Technologies, materiały
http://en.wikipedia.org/wiki/Perceptron - Wikipedia, uzupełnienia o Perceptronie
http://www.wsti.pl – Wyższa Szkoła Technologii Informatycznych w Katowicach
http://www.linkedin.com/in/paulpoliwoda - profil autora

 

Twoja przegladarka nie obsluguje apletow