Sieć Hopfielda

 

Symulacja

 

 

Sieć Hopfielda jest przykładem sieci ze sprzężeniem zwrotnym (tzw. sieć rekurencyjna), gdzie wyjścia poszczególnych neuronów są podawane z odpowiednimi wagami na wejścia każdego z neuronów. Oczywiście do każdego neuronu podpięte jest wejście, którym doprowadzana jest odpowiednia składowa wektora testowego.

 

W przypadku, gdy sieć pracuje jako pamięć autoasocjacyjna (nasz przykład) wagi połączenia wyjścia neuronu z własnym wejściem są zerowane. Wymagane jest także, aby macierz wag W była symetryczna.

Funkcja aktywacji pojedynczego neuronu wygląda następująco:

 

           

 

 

gdzie i oraz j oznaczają numery neuronów N-neuronowej sieci Hopfielda, natomiast k przedstawia chwilę czasową. Należy również zwrócić uwagę na to, że składowe wektora x w chwili czasowej k=0 są przepisywane na wyjścia neuronów, natomiast dla k>0 wejścia są „odpinane” od neuronów (x=0).

 

W trybie odtwarzania wagi połączeń sieci są ustalone i nie ulegają zmianom. To właśnie dzięki nim sieć „pamięta” wektory wzorcowe, których została „nauczona”. Osiągnięcie na wyjściach sieci stanu ustalonego świadczy, o tym że „skojarzyła” ona wejściowy wektor testowy z „podobnym” do niego wektorem wzorcowym. Jeśli sieć nie dąży do stabilnego wyniku, oznacza to, że nie potrafi ona przyporządkować wektorowi wejściowemu żadnego z zapamiętanych wzorców.

 

W trybie uczenia, na podstawie zbioru wektorów uczących obliczane są wagi. Najprostszą metodą (wykorzystywaną w naszym przykładzie) uczenia sieci jest reguła Hebb’a. Wagi obliczane są według wzoru:

 

 

            gdzie k oznacza numer wektora uczącego a K liczbę wszystkich wektorów uczących.

 

Opis symulacji:

 

Za pomocą sieci złożonej z 9 neuronów rozpoznajemy obrazek złożony z 9 pikseli. Czarny piksel jest reprezentowany jako 1 natomiast biały jako -1. W ten sposób otrzymaliśmy 9-cioelementowy wektor testowy. Za pomocą reguły Hebb’a „nauczyliśmy” sieć 3 kształtów, z których 2 przypominają kółko i krzyżyk:

       

            a jako trzeci wektor wzorcowy podaliśmy same -1, co odpowiada pustemu kwadratowi.

X(1)=[1,1,1,1,-1,1,1,1,1]

X(2)=[1,-1,1,-1,1,-1,1,-1,1]

X(3)=[-1,-1,-1,-1,-1,-1,-1,-1,-1]

 

np. w12= w21= [1*1+1*(-1)+(-1)*(-1)]/9=1/9=0.111111

            .

            .

            .

      Kompletną macierz wag przedstawia tabela:

 

 

Neuron 1

Neuron 2

Neuron 3

Neuron 4

Neuron 5

Neuron 6

Neuron 7

Neuron 8

Neuron 9

Neuron 1

0

0.111111

0.333333

0.111111

0.111111

0.111111

0.333333

0.111111

0.333333

Neuron 2

0.111111

0

0.111111

0.333333

-0.111111

0.333333

0.111111

0.333333

0.111111

Neuron 3

0.333333

0.111111

0

0.111111

0.111111

0.111111

0.333333

0.111111

0.333333

Neuron 4

0.111111

0.333333

0.111111

0

-0.111111

0.333333

0.111111

0.333333

0.111111

Neuron 5

0.111111

-0.111111

0.111111

-0.111111

0

-0.111111

0.111111

-0.111111

0.111111

Neuron 6

0.111111

0.333333

0.111111

0.333333

-0.111111

0

0.111111

0.333333

0.111111

Neuron 7

0.333333

0.111111

0.333333

0.111111

0.111111

0.111111

0

0.111111

0.333333

Neuron 8

0.111111

0.333333

0.111111

0.333333

-0.111111

0.333333

0.111111

0

0.111111

Neuron 9

0.333333

0.111111

0.333333

0.111111

0.111111

0.111111

0.333333

0.111111

0

 

 

Na rysunku zawartym w symulacji pokazano wartości wejściowe wektora testowego (w kolejnym kroku, po przepisaniu na wyjścia neuronów są one zerowane), wyjścia sumatora wag, wartości wyjściowe, oraz wartości wyjściowe z poprzedniego kroku obliczeń (wartości kwadratów umieszczonych w kolumnie).

Okazuje się, że gdy na wejście sieci podamy wektor identyczny z wzorcem, wówczas sieć nie zmieni swojego stanu, rozpoznaje ona również obrazy „niewiele” różniące się od wzorców. W niektórych przypadkach pojawia się kolejna cecha sieci Hopfielda - pamiętanie zależności pomiędzy sąsiednimi pikselami, a nie ich wartości. Wtedy otrzymujemy obraz wzorca z odwróconymi kolorami.

 

 

 

 

 

Wykonali: Mariusz Kołton, Marek Kwiatkowski

Opiekun: mgr inż. A.Gołda

Czerwiec 2005