Réseau de neurones de Hopfield

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

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é découvert 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 suite à un article de Marvin Minsky et Seymour Papert.

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[modifier | modifier le code]

Un réseau de Hopfield à 4 neurones

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 à 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[modifier | modifier le code]

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}s_j}>0, \\
-1 & \mathrm{sinon}\end{matrix}\right.

Apprentissage[modifier | modifier le code]

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

Pour estimer les poids, on se sert d'un apprentissage hebbien, inspiré de la loi de Hebb (théorisée par Hebb en 1949 et observée réellement dans le cerveau par Bliss et Lomo en 1973). Donc l'une des représentations algébrique est:

w_{ij} = \frac{1}{n} \sum_{k=1}^p x_i^k x_j^k\, ,

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,  p le nombre de motif d'entraînement et  x_i^k et  x_j^k sont respectivement la kième entrée des neurones  i et  j .

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é.

Limites[modifier | modifier le code]

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.

Voir aussi[modifier | modifier le code]

Notes et références[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]

  • Neural Lab - interface graphique en Python et Gtk permettant de manipuler un reseaux de hopfield