Hopfield Networks
Les réseaux de Hopfield sont des mémoires associatives récurrentes qui récupèrent des motifs stockés à partir d’indices bruités, reliant la récupération fondée sur l’énergie aux mécanismes modernes d’attention.
Les réseaux de Hopfield sont des réseaux neuronaux récurrents qui stockent des motifs et les récupèrent à partir d’entrées incomplètes ou altérées. Ils fonctionnent comme une mémoire associative : une partie d’un motif sert d’indice pour récupérer le motif entier. Une mémoire stockée se comporte comme une vallée dans un paysage énergétique, et l’état changeant du réseau converge vers une vallée voisine.
John J. Hopfield a présenté le modèle en 1982 dans ses travaux sur le calcul collectif dans les réseaux neuronaux. « Réseau de Hopfield », « réseau Hopfield » et « modèle de Hopfield » sont des synonymes courants. Cette architecture appartient à la famille des réseaux neuronaux récurrents, car des connexions de rétroaction mettent à jour à plusieurs reprises son état interne.
Comment les réseaux de Hopfield stockent et récupèrent les motifs#
Un réseau de Hopfield classique comprend des neurones interconnectés dont les états sont généralement représentés par −1 ou +1. Ses poids du modèle sont symétriques : la connexion du neurone A au neurone B est égale à celle du neurone B au neurone A. Les configurations standard fixent les connexions d’un neurone à lui-même à zéro. L’apprentissage hebbien stocke des motifs en renforçant les connexions entre les neurones dont les états concordent dans les exemples stockés. Sur le plan computationnel, cela ajoute le produit extérieur de chaque motif — une matrice de produits deux à deux — à la matrice des poids.
Lors de la récupération, chaque neurone additionne ses entrées pondérées et applique une fonction d’activation à seuil. La mise à jour asynchrone modifie un neurone à la fois. Avec des poids symétriques, des connexions de neurones à eux-mêmes nulles et des états inchangés en cas d’égalité exacte au seuil, chaque changement d’état réduit une fonction d’énergie jusqu’à ce que le réseau atteigne une configuration stable. Cette configuration est un attracteur ; les états de départ qui y convergent forment son bassin d’attraction. La mise à jour simultanée de tous les neurones peut provoquer des oscillations entre plusieurs configurations.
Le stockage et la récupération sont des opérations distinctes. Le stockage modifie les connexions ; la récupération modifie les états des neurones tout en maintenant ces connexions fixes. La récupération relève donc de l’optimisation de l’état plutôt que d’une nouvelle étape de rétropropagation.
Récupération de motifs en Python#
L’exemple PyTorch suivant stocke un motif binaire à l’aide de la règle hebbienne, inverse deux éléments, puis récupère la mémoire par des mises à jour asynchrones.
import torch
memory = torch.tensor([1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0])
weights = torch.outer(memory, memory) / memory.numel()
weights.fill_diagonal_(0)
state = memory.clone()
state[[1, 6]] *= -1
initial_errors = int((state != memory).sum())
while True:
previous = state.clone()
for i in range(state.numel()):
field = weights[i] @ state
# Preserve the current state when the weighted input is zero.
if field != 0:
state[i] = field.sign()
if torch.equal(state, previous):
break
print(f"Bit errors: {initial_errors} -> {int((state != memory).sum())}")La sortie est Bit errors: 2 -> 0 : les mises à jour récurrentes reconstruisent le motif stocké à partir de son indice altéré, selon la dynamique standard de la mémoire associative.
Réseaux continus, attention et applications#
Les réseaux de Hopfield continus utilisent des sorties neuronales graduées, telles qu’une sigmoïde, et évoluent vers un équilibre. Hopfield a établi cette formulation en 1984. Les réseaux de Hopfield modernes étendent la mémoire associative au moyen de différentes fonctions d’énergie et de capacités de stockage supérieures ; leurs variantes à états continus opèrent sur des vecteurs à valeurs réelles.
Hubert Ramsauer et ses collègues ont établi en 2020 le lien entre la récupération par les réseaux de Hopfield modernes et les mécanismes d’attention. Une requête est comparée aux vecteurs stockés, softmax convertit les scores de similarité en poids, et une combinaison pondérée récupère les informations associées. L’opération d’attention utilisée dans un Transformer peut ainsi être interprétée comme une mémoire associative.
Pour les représentations d’images, Ultralytics YOLO26 propose l’extraction de caractéristiques via model.embed() et renvoie des plongements d’images. Ces vecteurs fournissent la représentation à valeurs réelles utilisée par les couches modernes de mémoire associative.
Parmi les applications établies figurent la récupération de motifs visuels stockés, le regroupement de grandes collections de caractéristiques et l’optimisation sous contraintes. En 1985, Hopfield et David Tank ont appliqué un réseau analogique au problème du voyageur de commerce, en encodant la qualité des itinéraires et les contraintes dans le paysage énergétique. La mise en commun par les réseaux de Hopfield modernes contribue également à la classification des répertoires immunitaires, en agrégeant des informations issues de centaines de milliers séquences biologiques grâce à l’apprentissage à instances multiples.
Concepts connexes et limites de stockage#
Un autoencodeur apprend une fonction d’encodage-décodage qui reconstruit les entrées ; un réseau de Hopfield classique reconstruit les motifs en convergeant vers des attracteurs. Une banque de mémoire stocke des représentations pour un accès ultérieur, tandis que la dynamique de Hopfield définit la manière dont un indice récupère un état associé.
Les réseaux classiques présentent des erreurs de récupération lorsque les mémoires interfèrent. Les motifs corrélés créent de la diaphonie, et des attracteurs parasites peuvent renvoyer des mélanges de mémoires stockées. Pour les grands réseaux hebbiens classiques qui stockent des motifs binaires aléatoires et approximativement non corrélés, l’estimation courante de la capacité est d’environ 0,14 fois le nombre de neurones, en tolérant une faible proportion d’erreurs de récupération — soit environ 140 motifs pour 1 000 neurones.










