1, gdy 0. sfss +

Transkrypt

1, gdy 0. sfss +
Ćwiczenia nr 2.
Neuron adaline i neuron Hebba. Pierwsze reguła delta. Wsteczna propagacja błędów.
Zad. 1) Napisać i przetestować program do symulacji neuronu typu adaline. Zbadać wpływ stałej
uczenia  na liczbę iteracji, po której uzyskuje się nauczony neuron.
Jak pamiętamy z wykładu neuron Hebba to neuron sigmoidalny lub perceptron ze specjalną regułą
uczenia. W wersji bez nauczyciela umożliwia on klasyfikowanie obiektów bez wcześniejszej wiedzy na
temat przynależności ich do tych klas. Modyfikacja wag ma postać
w(t  1)  w(t )   yx(t ),
(1.1)
gdzie   0 to współczynnik uczenia, w (t )  aktualny wektor wag, x (t )  wektor sygnałów
wejściowych, y  wartość sygnału wyjściowego z neuronu. Powyższą równość wektorową możemy
zapisać dla składowych
wi (t  1)  wi (t )   yxi (t ), dla i  0,1,
gdzie sygnał dla progu x0  1.
Zad. 2) Rozważmy perceptron z bipolarną funkcja aktywacji
1, gdy s  0,
f ( s)  
1, gdy s  0.
Na wejście podajemy figury zaprezentowane na poniższym rysunku:
Obrazy kodujemy wg schematu: +1=kratka czarna, -1=kratka biała.
, n,
(1.2)
Należy przeprowadzić proces uczenia neuronu regułą Hebba. Czy po nauczeniu uzyskamy
(oczekiwany ?) rezultat, tzn. dla figur z pierwszego rzędu na wyjściu będzie jedna wartość, a dla figur
z dolnego rządu  druga?
Zad. 3) Przeprowadzić przykładowe obliczenia dla jednego kroku algorytmu wstecznej propagacji
błędu. Zakładamy, że mamy daną sieć z dwiema warstwami (jedna warstwa ukrytą i jedna warstwa
wyjściowa). Funkcje aktywacji w warstwie wyjściowej są sigmoidalne ( f ( s)  1/(1  e s )), a w
warstwie wyjściowej liniowe ( f (s)  s).
Dla funkcji aktywacji f ( s) modyfikacja wag dla połączeń do danego neuronu ma ogólnie postać
wi  (1   )wi   f (s) xi ,
(1.3)
gdzie  oznacza błąd na wyjściu z danego neuronu. Jest on zdefiniowany jako różnica pomiędzy
wartością oczekiwaną, d, a wartością wyliczaną przez sieć, y, przy aktualnych wagach. Dla warstwy
wyjściowej mamy
 out  d  y
(1.4)
Natomiast dla warstw wejściowych musimy te błędy oszacować na podstawie błędów z warstwy
następnej jako średnią ważoną błędów warstwy następnej:
Nl 1
 i(l )    (j l 1) w(jl,i1) ,
(1.5)
j 0
( l 1)
gdzie  j  błędy na wyjściach neuronów w warstwie następnej (już znane z poprzedniego kroku
obliczeń);