Réseau de neurones artificiels - Hopfield Networks

Le réseau de neurones Hopfield a été inventé par le Dr John J. Hopfield en 1982. Il se compose d'une seule couche qui contient un ou plusieurs neurones récurrents entièrement connectés. Le réseau Hopfield est couramment utilisé pour les tâches d'auto-association et d'optimisation.

Réseau Hopfield discret

Un réseau de Hopfield qui fonctionne en ligne discrète ou en d'autres termes, on peut dire que les modèles d'entrée et de sortie sont des vecteurs discrets, qui peuvent être de nature binaire (0,1) ou bipolaire (+1, -1). Le réseau a des poids symétriques sans auto-connexions, c'est-à-direwij = wji et wii = 0.

Architecture

Voici quelques points importants à garder à l'esprit concernant le réseau Hopfield discret -

  • Ce modèle se compose de neurones avec une sortie inverseuse et une sortie non inverseuse.

  • La sortie de chaque neurone doit être l'entrée d'autres neurones mais pas l'entrée de soi.

  • Le poids / la force de connexion est représenté par wij.

  • Les connexions peuvent être à la fois excitatrices et inhibitrices. Ce serait excitateur, si la sortie du neurone était la même que l'entrée, sinon inhibitrice.

  • Les poids doivent être symétriques, c'est-à-dire wij = wji

La sortie de Y1 aller à Y2, Yi et Yn avoir les poids w12, w1i et w1nrespectivement. De même, d'autres arcs ont les poids sur eux.

Algorithme de formation

Pendant la formation du réseau Hopfield discret, les pondérations seront mises à jour. Comme nous savons que nous pouvons avoir les vecteurs d'entrée binaires ainsi que les vecteurs d'entrée bipolaires. Par conséquent, dans les deux cas, les mises à jour de poids peuvent être effectuées avec la relation suivante

Case 1 - Modèles d'entrée binaires

Pour un ensemble de modèles binaires s(p), p = 1 to P

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

La matrice de poids est donnée par

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

Case 2 - Modèles d'entrée bipolaires

Pour un ensemble de modèles binaires s(p), p = 1 to P

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

La matrice de poids est donnée par

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

Algorithme de test

Step 1 - Initialisez les poids, qui sont obtenus à partir de l'algorithme d'entraînement en utilisant le principe Hebbian.

Step 2 - Effectuez les étapes 3 à 9, si les activations du réseau ne sont pas consolidées.

Step 3 - Pour chaque vecteur d'entrée X, effectuez les étapes 4 à 8.

Step 4 - Rendre l'activation initiale du réseau égale au vecteur d'entrée externe X comme suit -

$$ y_ {i} \: = \: x_ {i} \: \: \: pour \: i \: = \: 1 \: à \: n $$

Step 5 - Pour chaque unité Yi, effectuez les étapes 6 à 9.

Step 6 - Calculez l'entrée nette du réseau comme suit -

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

Step 7 - Appliquer l'activation comme suit sur l'entrée nette pour calculer la sortie -

$$ 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} $$

Ici $ \ theta_ {i} $ est le seuil.

Step 8 - Diffuser cette sortie yi à toutes les autres unités.

Step 9 - Testez le réseau pour la conjonction.

Évaluation de la fonction énergétique

Une fonction énergétique est définie comme une fonction liée et non croissante de l'état du système.

Fonction énergétique Ef⁡, ⁡ aussi appelé Lyapunov function détermine la stabilité du réseau de Hopfield discret, et se caractérise comme suit -

$$ E_ {f} \: = \: - \ frac {1} {2} \ displaystyle \ sum \ limits_ {i = 1} ^ n \ displaystyle \ sum \ limits_ {j = 1} ^ n y_ {i} y_ {j} w_ {ij} \: - \: \ displaystyle \ sum \ limits_ {i = 1} ^ n x_ {i} y_ {i} \: + \: \ displaystyle \ sum \ limits_ {i = 1} ^ n \ theta_ {i} y_ {i} $$

Condition - Dans un réseau stable, chaque fois que l'état du nœud change, la fonction d'énergie ci-dessus diminue.

Supposons que le nœud i a changé d'état de $ y_i ^ {(k)} $ à $ y_i ^ {(k \: + \: 1)} $ ⁡ alors le changement d'énergie $ \ Delta E_ {f} $ est donné par la relation suivante

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

$$ = \: - \ left (\ begin {array} {c} \ displaystyle \ sum \ limits_ {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} $$

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

Le changement d'énergie dépend du fait qu'une seule unité peut mettre à jour son activation à la fois.

Réseau Hopfield continu

En comparaison avec le réseau de Hopfield discret, le réseau continu a le temps comme variable continue. Il est également utilisé dans les problèmes d'association automatique et d'optimisation tels que le problème du voyageur de commerce.

Model - Le modèle ou l'architecture peut être construit en ajoutant des composants électriques tels que des amplificateurs qui peuvent mapper la tension d'entrée à la tension de sortie via une fonction d'activation sigmoïde.

Évaluation de la fonction énergétique

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

Ici λ est le paramètre de gain et gri conductance d'entrée.