title: Réseau de neurones de Hopfield
text: # Réseau de neurones de Hopfield
  
  Le réseau de neurones d'Hopfield est un modèle de réseau de neurones récurrents à temps discret dont la matrice des connexions est symétrique et nulle sur la diagonale et où la dynamique est asynchrone (un seul neurone est mis à jour à chaque unité de temps). Il a été popularisé par le physicien John Hopfield en 1982. Sa découverte a permis de relancer l'intérêt dans les réseaux de neurones qui s'était essoufflé durant les années 1970 à la suite d'un article de Marvin Minsky et Seymour Papert. Les réseaux de Hopfield rentrent dans le cadre des modèles à base d'énergie.
  
  Un réseau de Hopfield est une mémoire adressable par son contenu : une forme mémorisée est retrouvée par une stabilisation du réseau, s'il a été stimulé par une partie adéquate de cette forme.
  
  ## Structure
  
  Ce modèle de réseau est constitué de N neurones à états binaires (-1, 1 ou 0, 1 suivant les versions) tous interconnectés. L'entrée totale d'un neurone i est donc :
  
      $I_{i}=\sum _{j}w_{ij}V_{j}$
  
  où :
  
  * $w_{ij}$ est le poids de la connexion du neurone i au neurone j ;
  * $V_{j}$ est l'état du neurone j.
  
  L'état du réseau peut être caractérisé par un mot de N bits correspondant à l'état de chaque neurone.
  
  ## Dynamique
  
  Le fonctionnement du réseau est séquencé par une horloge. On notera :
  
  * $V_{i}(t)$ ou $V_{i}$ l'état du neurone i à l'instant t ;
  * $V_{i}(t+1)$ l'état du neurone i à l'instant t + dt où dt désigne l'intervalle de temps entre 2 tops d'horloge.
  
  Il existe plusieurs alternatives assez équivalentes pour la mise à jour de l'état des neurones :
  
  * le mode stochastique original de Hopfield où chaque neurone modifie son état à un instant aléatoire selon une fréquence moyenne égale pour tous les neurones. Plus simplement on peut considérer qu'à chaque top d'horloge, on tire au hasard un neurone afin de le mettre à jour ;
  * un mode synchrone où tous les neurones sont mis à jour simultanément ;
  * un mode séquentiel où les neurones sont mis à jour selon un ordre défini.
  
  Le calcul du nouvel état du neurone i se fait ainsi :
  
  $V_{i}(t+1)=\left\{{\begin{matrix}1&\mathrm {si} \sum _{j}{w_{ij}V_{j}}>0,\\-1&\mathrm {sinon} \end{matrix}}\right.$
  
  ## Apprentissage
  
  L'apprentissage dans un réseau d'Hopfield consiste à faire en sorte que chacun des prototypes à mémoriser soit :
  
  * un état stable du réseau ;
  * un état attracteur permettant de le retrouver à partir d'états légèrement différents.
  
  ### Règle d'apprentissage de Hebb pour les réseaux de Hopfield
  
  Pour estimer les poids, on peut utiliser un apprentissage hebbien, inspiré de la règle de Hebb. Qui donne pour retenir $p$ motif d'entraînement :
  
      $w_{ij}={\frac {1}{n}}\sum _{k=1}^{p}x_{i}^{k}x_{j}^{k}\,$
  
  où $w_{ij}$ est le poids de la connexion entre le neurone $j$ et le neurone $i$, $n$ est la dimension du vecteur d'entrée, et $x_{i}^{k}$ et $x_{j}^{k}$ sont respectivement la $k$ième entrée des neurones $i$ et $j$.
  
  Si les bits correspondant aux neurones $i$ et $j$ sont égaux dans le motif $\mu$, alors le produit $\epsilon _{i}^{\mu }\epsilon _{j}^{\mu }$ sera sois positif. Cela aurait, à son tour, un effet positif sur le poids $w_{ij}$ et les valeurs de $i$ et $j$ auront tendance à devenir égales. L'inverse se produit si les bits correspondant aux neurones $i$ et $j$ sont différents.
  
  L'apprentissage hebbien minimise la fonction d'énergie, c'est-à-dire que si deux unités sont actives simultanément, le poids de leurs connexions est augmenté ou diminué.
  
  ### Règle d'apprentissage de Storkey
  
  Cette règle a été introduite par Amos Storkey en 1997 et est à la fois locale et incrémentielle. Storkey a également montré qu'un réseau Hopfield entraîné à l'aide de cette règle a une plus grande capacité qu'un réseau correspondant entraîné à l'aide de la règle de Hebb. Le réseaux suit la règle d'apprentissage de Storkey si il obéit :
  
  $w_{ij}^{\nu }=w_{ij}^{\nu -1}+{\frac {1}{n}}\epsilon _{i}^{\nu }\epsilon _{j}^{\nu }-{\frac {1}{n}}\epsilon _{i}^{\nu }h_{ji}^{\nu }-{\frac {1}{n}}\epsilon _{j}^{\nu }h_{ij}^{\nu }$
  
  où $h_{ij}^{\nu }=\sum _{k=1~:~i\neq k\neq j}^{n}w_{ik}^{\nu -1}\epsilon _{k}^{\nu }$ est une forme de champ local au niveau du neurone i.
  
  Cette règle d'apprentissage est locale, puisque les synapses ne prennent en compte que les neurones à leurs côtés. La règle utilise plus d'informations provenant des modèles et des poids que la règle de Hebb généralisée, en raison de l'effet du champ local.
  
  ## Limites
  
  Le réseau de Hopfield a cependant des limites bien connues : il ne peut stocker qu'environ 0,14 $n$ motifs avec $n$ le nombre de neurones. Des modèles ultérieurs, s'inspirant du réseau de Hopfield mais en modifiant les règles de stockage et d'accès, permettent d'agrandir cette limite de stockage.
  
  