# Réseau de Hopfield

Le réseau de 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 fut inventé par Shun'ichi Amari en 1972 et 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 entrent 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 de 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 $x_{i}^{\mu }x_{j}^{\mu }$ sera 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 de 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éseau suit la règle d'apprentissage de Storkey s'il obéit :
$w_{ij}^{\nu }=w_{ij}^{\nu -1}+{\frac {1}{n}}x_{i}^{\nu }x_{j}^{\nu }-{\frac {1}{n}}x_{i}^{\nu }h_{ji}^{\nu }-{\frac {1}{n}}x_{j}^{\nu }h_{ij}^{\nu }$
où $h_{ij}^{\nu }=\sum _{k=1~:~i\neq k\neq j}^{n}w_{ik}^{\nu -1}x_{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.