Réseau de neurones de Hopfield
# 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.

