You are on page 1of 10

LABORATORIA SUN

Laboratorium 6

opracowanie

krzysztof borzęcki

Laboratorium 6/15
Sieć Hopfielda

1.1 Podstawowe informacje o sieci Hopfielda


Sieć Hopfielda to model rekurencyjnej sieci neuronowej o czasie dyskret-
nym, której macierz połączeń jest symetryczna i zerowa na przekątnej. Sieć
Hopfielda należy do grupy sieci autoasocjacyjnych. Sieć ta został spopularyzo-
wana przez amerykańskiego fizyka Johna Hopfielda w 1982 roku.

1.2 Struktura
Sieć Hopfielda należą do klasy sieci ze sprzężeniem zwrotnym. W sieci Hop-
fielda istnieje tylko jedna warstwa, która działa jednocześnie jako warstwa wej-
ściowa i wyjściowa. Każdy z neuronów (neuronów McCullocha-Pittsa) jest po-
łączony ze wszystkimi innymi poza sobą samym. Neurony mogą przyjmować
wartości −1 i 1 (niektórzy przyjmują też zbiór wartości {0, 1}, ale tu trze-
ba wykonywać dodatkowe przekształcenia). Istnieje także możliwość pracy na
zbiorze {−1, 0, 1}.
Sieć Hopfielda składa się z n neuronów z progami Ti , pobudzanych zarów-
no sygnałami zewnętrznymi, jak i sygnałami sprzężenia zwrotnego od innych
neuronów, zgodnie ze wzorem

(1.1) neti = wiT v + xi − Ti ,

gdzie wektory wagowy wiT i wyjściowy v dane są jako

(1.2) wi = [wi1 wi2 . . . wi(i−1) 0 wi(i+1) . . . win ]T ,

(1.3) vi = [v1 v2 . . . , vn ]T ,

czyli
 
wi1
 wi2 
 
 
 ...  v1
 
 
w  v 
 i(i−1)  2
(1.4) wi =  , v=
 .
 0  . . .
 
w  vn
 i(i+1) 
 ... 
 

win

2
Opracowanie Krzysztof Borzęcki

Rysunek 1.1: Sieć Hopfielda

Opracowanie Krzysztof Borzęcki 3


Opracowanie Krzysztof Borzęcki

Definiując wektory: pobudzeń net, wejściowy x oraz progowy T analo-


gicznie jak wektor wyjściowy, możemy opisać liniową część sieci z rysunku
zależnością macierzową
(1.5) net = Wv + x − T,
gdzie
 
 T
w1 0 w12 . . . w1n
wT 
 2

w
 21 0 . . . w2n 

(1.6) W= = ... .
. . .
 
... ... ...
 
wnT wm1 wm2 ... 0
W modelu Hopfielda macierz wag jest symetryczna, tzn. wij = wji , co widać
na rysunku, gdyż wyjście dowolnego neuronu połączone jest poprzez multipli-
katywne wagi z wejściami pozostałych neuronów, ale nie jest połączone z jego
własnym wejściem.

1.3 Aktualizacja jednej jednostki


Stan sieci neuronowej Hopfielda w pewnym momencie jest opisany przez
wektor v.
Aktualizacje w sieci Hopfielda można przeprowadzić na trzy różne sposoby:
1. Asynchroniczny: w danym momencie aktualizowana jest tylko jedna jed-
nostka. Jednostkę tę można wybrać losowo lub narzucić od początku
określoną kolejność. Stąd występuje podział na aktualizację
(a) Asynchroniczną z kolejnością ustaloną
(b) Asynchroniczną z kolejnością losową
2. Synchroniczny: wszystkie jednostki są aktualizowane w tym samym cza-
sie.

1.3.1 Aktualizacja o charakterze asynchronicznym


Przejścia stanów zachodzą zgodnie z rekurencyjną zależnością
(1.7) vik+1 = f (wiT vk + xi − Ti ), k = 1, 2, . . . ,
gdzie i = 1, 2, . . . , n, a funkcja f jest podana przez

1,

 jeżeli a > 0,
(1.8) f (a) = wcześniejsza wartość, jeżeli a = 0,



−1, jeżeli a < 0.
oraz indeks górny k oznacza indeks aktualizacji rekurencyjnej.
Uwaga. Niektórzy autorzy jako funkcję f przyjmują funkcję signum, czyli
f (a) = sgn(a), a więc istnieje możliwość przyjęcia funkcji


jeżeli a > 0,
1,
(1.9) f (a) = sgn(a) = 0, jeżeli a = 0,



−1, jeżeli a < 0.

4 Opracowanie Krzysztof Borzęcki


Opracowanie Krzysztof Borzęcki

Charakter asynchroniczny oznacza tutaj, że w danej chwili ma miejsce ak-


tualizacja tylko jednej spośród i = 1, 2, . . . , n składowych. Rekurencja zaczyna
się od stanu v0 wymuszonego sygnałem inicjującym. W pierwszym kroku, dla
k = 1, oblicza się vi1 .
Proces aktualizacji rekurencyjnej zatrzymuje się gdy osiągnięto stan sta-
cjonarny (minimum lokalne), brak zmian wyjść przy pełnym cyklu
(1.10) vk+1 = vk .

Aktualizacja asynchroniczna z losowym wyborem składowych


Dla aktualizacji asynchronicznej z losowym wyborem składowych aktuali-
zowane jest wyjście jednego losowo wybranego neuronu, jego wyjście zależy od
już zaktualizowanych neuronów. W tym przypadku wskaźnik i wybierany jest
przypadkowo. Obliczenia dla pozostałych składowych, również wybieranych
losowo, prowadzi się z wykorzystaniem składowych wektora v już zaktualizo-
wanych w tym kroku, uzyskując ostatecznie v1 .

Aktualizacja asynchroniczna z ustalonym wyborem składowych


Dla aktualizacji asynchronicznej z ustalonym wyborem składowych proce-
dura obliczeń jest taka jak wcześniej z tym, że ustalamy wybór składowych.

1.3.2 Aktualizacja o charakterze synchronicznym


Posługując się równaniem macierzowym algorytm aktualizacji o charakte-
rze synchronicznym można zapisać w zwartej postaci
(1.11) vk+1 = Γ[Wvk + x − T], k = 1, 2, . . . ,
a operator Γ ma postać
 
f (·) 0 . . . 0
 0

f (·) . . . 0 

(1.12) Γ[·] =  .. .
...

... . ... 

0 0 . . . f (·)
Zauważmy, że nieliniowe funkcje aktywacji f (·) na przekątnej operatora Γ dzia-
łają niezależnie na łączne pobudzenie każdego z neuronów.
Funkcja f jest podana przez

1,

 jeżeli a > 0,
(1.13) f (a) = wcześniejsza wartość, jeżeli a = 0,


−1, jeżeli a < 0.
Uwaga. Niektórzy autorzy jako funkcję f przyjmują funkcję signum, czyli
f (a) = sgn(a), a więc istnieje możliwość przyjęcia funkcji

1,

 jeżeli a > 0,
(1.14) f (a) = sgn(a) = 0, jeżeli a = 0,



−1, jeżeli a < 0.

Opracowanie Krzysztof Borzęcki 5


Opracowanie Krzysztof Borzęcki

1.4 Funkcja energii


Dla oceny stabilności dynamicznej sieci Hopfielda wprowadźmy tak zwa-
ną funkcję energii lub funkcję energetyczną (zwaną też funkcja stanu),
dodatnią i ograniczoną w przestrzeni wyjść. (Funkcji tej nie należy kojarzyć z
fizycznym pojęciem energii, gdyż nazywamy ją tak ze względu na podobieństwo
ich własności.) Jeżeli zmiany wartości funkcji energetycznej w trakcie wyko-
nywania algorytmu aktualizacji są niedodatnie, to można ją nazwać funkcją
Lapunowa, a sieć jest asymptotycznie stabilna.
W naszym przypadku funkcja energetyczna jest formą kwadratową
1
(1.15) E = E(v) = − · vT · W · v − xT · v + T · v.
2

1.5 Sieć Hopfielda jako pamięć asocjacyjna


1.5.1 Algorytm zapisu
Przy zapisie do pamięci wektorów wzorcowych sm , m = 1, 2, . . . , p, o skła-
dowych +1, −1 wagi wyznaczane są według następującego algorytmu Hebba
p
sm · sTm − p · Ip
X
(1.16) W=
m=1

gdzie I jest macierzą jednostkową o odpowiednim wymiarze, czyli


 
1 0 ··· 0
0
0 1 · · · 0
0
   
" # 1 0 0
h i 1 0 
· · · 0

(1.17) I1 = 1 , I2 = , I3 = 0 1 0 , . . . , Iu = 0 0 1 .
  
0 1 .
 .. .. ..
. . .. 
0 0 1  . .. .
0 0 0 ··· 1
Wagi wyznaczyć można też ze wzoru
p
X
(1.18) wij = (1 − δij ) · (sm )i · (sm )j ,
m=1

gdzie delta Kroneckera to



1 jeśli i = j,
(1.19) δij =
6 j.
0 jeśli i =

1.5.2 Proces odczytu dla działania asynchronicznego


Przy pracy z wektorami binarnymi sygnały wejściowe pamięci, tożsame
z jej stanami, są bipolarnymi wektorami binarnymi o n składowych. Zmianę
składowej stanu autoasocjacyjnej pamięci Hopfielda można wyrazić wzorem
 
n
vik+1 f (wiT vk ) wij vjk  ,
X
(1.20) = =f k = 1, 2, . . . ,
j=1

6 Opracowanie Krzysztof Borzęcki


Opracowanie Krzysztof Borzęcki

gdzie k jest numerem kroku, i zaś jest numerem neuronu, którego stan ulega
zmianie. Reguła przejścia (1.20) została otrzymana ze wzoru (1.7) przy uprasz-
czających założeniach, że zewnętrzne sygnały xi oraz progi Ti , są równe zeru
dla i = 1, 2, . . . , n.

1.5.3 Proces odczytu dla działania synchronicznego


Zmianę stanu autoasocjacyjnej pamięci Hopfielda można wyrazić wzorem

(1.21) vk+1 = Γ[Wvk ], k = 1, 2, . . . ,

gdzie k jest numerem kroku.

1.5.4 Podsumowanie proces zapisu i odczytu


Na starcie danych jest p wektorów

(1.22) {sm }pm=1 = {s1 , s2 , . . . , sm . . . , sp },

gdzie sm ma wymiar n × 1, m = 1, 2, . . . , p. Początkowy wektor stanu v0 ma


wymiar n × 1.
Zapis.
Krok 1. Podstawienie

(1.23) W ←− 0.

Krok 2. Dla m od 1 do p wykonanie

(1.24) W ←− sm · sTm − I.

Krok 3. Po zakończeniu zapisu W jest otrzymana macierzą wag.


Odczyt.
Krok 1. Ustawienie stanu początkowego v0 .
Krok 2. Ustawienie liczb 1, 2, . . . , n w losowej kolejności

(1.25) α1 , α2 , . . . , αn .

Krok 3. Dla i od 1 do n wykonanie


 
n
vα0 i
X
(1.26) =f wαi j vj 
j=1

Krok 4. Jeżeli vα0 i = vαi , i = 1, 2, . . . , n, czyli w danym cyklu nie było


zmian, to zakończenie procesu odczytu i uznanie sygnałów v10 , v20 , . . . , vn0 za
sygnały wyjściowe. W przeciwnym razie przejście do 2.

Opracowanie Krzysztof Borzęcki 7


Opracowanie Krzysztof Borzęcki

1.6 Zadania
Zad. 1.1. Stosując synchroniczny algorytm aktualizacji, znaleźć cykl granicz-
ny, biorąc macierz wagową 2 × 2 o zerowych elementach diagonalnych, a po-
zostałych równych −1 i startując od wektora początkowego v0 = [−1 − 1]T z
zerowymi wektorami x i T. Za funkcję f przyjąć funkcję signum.
Zad. 1.2. Stosując asynchroniczny algorytm aktualizacji, znaleźć stan gra-
niczny sieci Hopfielda, biorąc macierz wagową 2 × 2 o zerowych elementach
diagonalnych, a pozostałych równych −1 i startując od wektora początkowego
v0 = [−1 − 1]T z zerowymi wektorami x i T. Za funkcję f przyjąć funk-
cję signum. Wykonać obliczenia, gdy z aktualizacją startujemy od pierwszej
składowej oraz w drugim przypadku od drugiej składowej.
Zad. 1.3. Dla sieci Hopfielda jako pamięci asocjacyjnej uzyskanych z wektorów
uczących
−1 −1
   
 1  −1
(1.27) s1 =  
s2 =  
−1  1 
   

1 1
wykonać obliczenia:
1. 4 kroki aktualizacji synchronicznej.
2. 8 kroków aktualizacji asynchronicznej dla kolejności ustalonej

(1.28) 4, 3, 2, 1.

3. 8 kroków aktualizacji asynchronicznej dla kolejności losowej

(1.29) 3, 2, 4, 1.

dla wektora
−1
 
−1
(1.30) v0 =   .
 
−1
1
Zad. 1.4. Dla macierzy
0 1 1 −1
 
 1 0 1 −1
(1.31) W=
 
 1 1 0 −1

−1 −1 −1 0
z zerowymi wektorami x i T obliczyć funkcję energii dla wektorów:
1 −1 1
     
−1 −1  1 
(1.32) v1 =   v2 =   v3 =  
     
 1  −1 −1
−1 1 1

8 Opracowanie Krzysztof Borzęcki


Opracowanie Krzysztof Borzęcki

Zad. 1.5. W arkuszu kalkulacyjnym ukształtować dwa wzorce dużych, dru-


kowanych liter O i T (lub innych) na siatce o rozmiarze 4 wiersze i 3 kolumny.
Wyuczyć sieć Hopfilda wzorcami dużych, drukowanych liter O i T (lub innych).
Na rysunku 1.2 przedstawiono dwa wzorce: przypadek 1 i przypadek 2, (dwa
wzorce z wartościami −1, 0, 1).

Rysunek 1.2: Dwa wzorce.

Zaaplikować te dwa przypadki do wyuczonej sieci Hopfilda, wykonując ak-


tualizacje w sieci Hopfielda, obliczając zmiany wzorców według trybów dzia-
łania:
1. Działanie – synchroniczne.
Aktualizację kontynuujemy do czasu, gdy przestaną zachodzić zmiany w
stanach neuronów.
2. Działanie – asynchroniczne wg kolejności ustalonej

(1.33) 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1.

Aktualizujemy stany neuronów według podanej kolejności:

(1.34) 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1.

Kiedy przejdziemy przez wszystkie zaczynamy od początku

(1.35) 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1.

Aktualizację kontynuujemy do czasu, gdy przestaną zachodzić zmiany w


stanach neuronów.
3. Działanie – asynchroniczne wg kolejności losowej:

(1.36) seria 1: 8, 11, 2, 9, 7, 5, 1, 4, 6, 12, 3, 10,

(1.37) seria 2: 6, 1, 11, 12, 2, 9, 3, 5, 7, 10, 4, 8,

(1.38) seria 3: 12, 2, 9, 10, 4, 8, 6, 1, 11, 3, 5, 7,

(1.39) seria 4: jeżeli konieczne, to wg własnej inwencji twórczej.

Aktualizujemy stany neuronów według podanej kolejności, przy pierw-


szej iteracji według serii 1, przy drugiej iteracji według serii 2. Jeżeli na

Opracowanie Krzysztof Borzęcki 9


Opracowanie Krzysztof Borzęcki

żadnym neuronie nie zaszła zmiana stanu, to kończymy proces po drugiej


serii, w przeciwnym wypadku przeprowadzamy trzecią serię aktualizacji
według kolejności serii 3. Tak jak poprzednio sprawdzamy, czy proces
stabilizacji się zakończył —- co oznacza, że nie zaszła żadna zmiana w
stanie neuronów. Jeżeli sieć wymaga dalszych aktualizacji kolejność lo-
sową następnych serii student dobiera według własnej inwencji twórczej.
Dla dwóch przypadków wykonać obliczenia w arkuszu kalkulacyjnym z po-
kolorowanymi komórkami z doborem kolorów wg własnej inwencji. W arkuszu
kalkulacyjnym wykonać odpowiednie opisy objaśniające. W arkuszu obowiąz-
kowo powinno się znaleźć obliczenie dwóch pomocniczych macierzy dla dwóch
wzorców oraz sumarycznej macierzy wag. Ponadto obowiązkowo należy nanieść
zmiany wzorców na siatkach o rozmiarach 4 wiersze i 3 kolumny dla każdego
trybu aktualizacji.

10 Opracowanie Krzysztof Borzęcki

You might also like