Sztuczna sieć neuronowa - sieci Hopfielda

Sieć neuronowa Hopfield została wynaleziona przez dr. Johna J. Hopfielda w 1982 r. Składa się z pojedynczej warstwy zawierającej jeden lub więcej w pełni połączonych neuronów nawracających. Sieć Hopfield jest powszechnie używana do zadań auto-asocjacji i optymalizacji.

Dyskretna Sieć Hopfielda

Sieć Hopfielda, która działa w sposób dyskretny lub innymi słowy, można powiedzieć, że wzorce wejściowe i wyjściowe są dyskretnymi wektorami, które mogą mieć charakter binarny (0,1) lub bipolarny (+1, -1). Sieć ma symetryczne wagi bez połączeń samoczynnych tj.wij = wji i wii = 0.

Architektura

Oto kilka ważnych punktów, o których należy pamiętać w przypadku dyskretnej sieci Hopfield:

  • Model ten składa się z neuronów z jednym wyjściem odwracającym i jednym nieodwracającym.

  • Sygnał wyjściowy każdego neuronu powinien być wejściem innych neuronów, ale nie własnym.

  • Waga / siła połączenia jest reprezentowana przez wij.

  • Połączenia mogą być zarówno pobudzające, jak i hamujące. Byłoby pobudzające, gdyby sygnał wyjściowy neuronu był taki sam jak wejście, w przeciwnym razie hamowałby.

  • Wagi powinny być symetryczne, tj wij = wji

Dane wyjściowe z Y1 zamierzam Y2, Yi i Yn mieć ciężary w12, w1i i w1nodpowiednio. Podobnie, inne łuki mają na sobie ciężary.

Algorytm treningowy

Podczas treningu dyskretnej sieci Hopfield wagi będą aktualizowane. Jak wiemy, możemy mieć binarne wektory wejściowe, jak również bipolarne wektory wejściowe. W związku z tym w obu przypadkach aktualizacje wagi można przeprowadzić za pomocą następującej relacji

Case 1 - Wzorce wejść binarnych

Zestaw wzorców binarnych s(p), p = 1 to P

Tutaj, s(p) = s1(p), s2(p),..., si(p),..., sn(p)

Macierz wagi jest podana przez

$$ w_ {ij} \: = \: \ sum_ {p = 1} ^ P [2s_ {i} (p) - \: 1] [2s_ {j} (p) - \: 1] \: \: \: \: \: dla \: i \: \ neq \: j $$

Case 2 - Bipolarne wzorce wejściowe

Zestaw wzorców binarnych s(p), p = 1 to P

Tutaj, s(p) = s1(p), s2(p),..., si(p),..., sn(p)

Macierz wagi jest podana przez

$$ w_ {ij} \: = \: \ sum_ {p = 1} ^ P [s_ {i} (p)] [s_ {j} (p)] \: \: \: \: \: for \ : i \: \ neq \: j $$

Algorytm testowania

Step 1 - Zainicjuj wagi, które są uzyskiwane z algorytmu uczącego przy użyciu zasady Hebbiana.

Step 2 - Wykonaj kroki 3-9, jeśli aktywacje sieci nie są skonsolidowane.

Step 3 - Dla każdego wektora wejściowego Xwykonaj kroki 4-8.

Step 4 - Ustaw początkową aktywację sieci równą zewnętrznemu wektorowi wejściowemu X w następujący sposób -

$$ y_ {i} \: = \: x_ {i} \: \: \: dla \: i \: = \: 1 \: do \: n $$

Step 5 - Dla każdej jednostki Yiwykonaj kroki 6-9.

Step 6 - Obliczyć wejście netto sieci w następujący sposób -

$$ y_ {ini} \: = \: x_ {i} \: + \: \ displaystyle \ sum \ limits_ {j} y_ {j} w_ {ji} $$

Step 7 - Zastosuj aktywację w następujący sposób na wejściu netto, aby obliczyć moc -

$$ y_ {i} \: = \ begin {cases} 1 & if \: y_ {ini} \:> \: \ theta_ {i} \\ y_ {i} & if \: y_ {ini} \: = \: \ theta_ {i} \\ 0 & if \: y_ {ini} \: <\: \ theta_ {i} \ end {cases} $$

Tutaj $ \ theta_ {i} $ jest progiem.

Step 8 - Prześlij to wyjście yi do wszystkich innych jednostek.

Step 9 - Przetestuj połączenie w sieci.

Ocena funkcji energii

Funkcja energii jest definiowana jako funkcja, która jest powiązaną i nierosnącą funkcją stanu systemu.

Funkcja energii Ef⁡, zwany także Lyapunov function określa stabilność dyskretnej sieci Hopfielda i charakteryzuje się następująco:

$$ E_ {f} \: = \: - \ Frac {1} {2} \ Displaystyle \ sum \ limit_ {i = 1} ^ n \ Displaystyle \ suma \ limity_ {j = 1} ^ n y_ {i} r_ {j} w_ {ij} \: - \: \ displaystyle \ sum \ limit_ {i = 1} ^ n x_ {i} y_ {i} \: + \: \ displaystyle \ sum \ limity_ {i = 1} ^ n \ theta_ {i} y_ {i} $$

Condition - W stabilnej sieci, gdy zmieni się stan węzła, powyższa funkcja energetyczna będzie się zmniejszać.

Załóżmy, że node i zmienił stan z $ y_i ^ {(k)} $ na $ y_i ^ {(k \: + \: 1)} $ ⁡, a następnie zmiana energii $ \ Delta E_ {f} $ jest określona przez następującą relację

$$ \ Delta E_ {f} \: = \: E_ {f} (y_i ^ {(k + 1)}) \: - \: E_ {f} (y_i ^ {(k)}) $$

$$ = \: - \ lewo (\ początek {tablica} {c} \ Displaystyle \ suma \ limity_ {j = 1} ^ n w_ {ij} y_i ^ {(k)} \: + \: x_ {i} \: - \: \ theta_ {i} \ end {array} \ right) (y_i ^ {(k + 1)} \: - \: y_i ^ {(k)}) $$

$$ = \: - \ :( net_ {i}) \ Delta y_ {i} $$

Tutaj $ \ Delta y_ {i} \: = \: y_i ^ {(k \: + \: 1)} \: - \: y_i ^ {(k)} $

Zmiana energii zależy od tego, że tylko jedna jednostka może aktualizować swoją aktywację na raz.

Ciągła Sieć Hopfielda

W porównaniu z dyskretną siecią Hopfielda, sieć ciągła ma czas jako zmienną ciągłą. Jest również używany w problemach z asocjacjami samochodowymi i optymalizacją, takich jak problem komiwojażera.

Model - Model lub architekturę można zbudować, dodając komponenty elektryczne, takie jak wzmacniacze, które mogą odwzorowywać napięcie wejściowe na napięcie wyjściowe za pomocą funkcji aktywacji sigmoidalnej.

Ocena funkcji energii

$$ E_f = \ Frac {1} {2} \ Displaystyle \ sum \ limity_ {i = 1} ^ n \ suma _ {\ substack {j = 1 \\ j \ ne i}} ^ n y_i y_j w_ {ij} - \ Displaystyle \ suma \ limity_ {i = 1} ^ n x_i y_i + \ Frac {1} {\ lambda} \ Displaystyle \ suma \ limity_ {i = 1} ^ n \ suma _ {\ substack {j = 1 \\ j \ ne i}} ^ n w_ {ij} g_ {ri} \ int_ {0} ^ {y_i} a ^ {- 1} (y) dy $$

Tutaj λ jest parametrem wzmocnienia i gri przewodność wejściowa.