Hopfield Networks
Le reti di Hopfield sono memorie associative ricorrenti che recuperano pattern memorizzati a partire da indizi rumorosi, collegando il recupero basato sull'energia ai moderni meccanismi di attenzione.
Le reti di Hopfield sono reti neurali ricorrenti che memorizzano pattern e li recuperano da input incompleti o corrotti. Fungono da memoria associativa: una parte del pattern funge da indizio per recuperarlo per intero. Un ricordo memorizzato si comporta come una valle nel paesaggio energetico e lo stato mutevole della rete tende a stabilizzarsi in una valle vicina.
John J. Hopfield presentò il modello nel 1982 con il suo lavoro sul calcolo collettivo nelle reti neurali. «Rete di Hopfield», «net di Hopfield» e «modello di Hopfield» sono sinonimi comuni. L'architettura appartiene alla famiglia delle reti neurali ricorrenti, perché le connessioni di feedback aggiornano ripetutamente il suo stato interno.
Come le reti di Hopfield memorizzano e recuperano i pattern#
Una rete di Hopfield classica contiene neuroni interconnessi i cui stati sono comunemente rappresentati con −1 o +1. I suoi pesi del modello sono simmetrici: la connessione dal neurone A al neurone B è uguale a quella dal neurone B al neurone A. Le configurazioni standard impostano a zero le autoconessioni. L'apprendimento hebbiano memorizza i pattern rafforzando le connessioni tra neuroni i cui stati coincidono negli esempi memorizzati. Dal punto di vista computazionale, ogni pattern aggiunge al matrice dei pesi il proprio prodotto esterno, ovvero una matrice di prodotti a coppie.
Durante il recupero, ogni neurone somma i propri input ponderati e applica una funzione di attivazione con soglia. L'aggiornamento asincrono modifica un neurone alla volta. Con pesi simmetrici, autoconessioni nulle e stati invariati in caso di perfetta parità rispetto alla soglia, ogni variazione di stato riduce una funzione energetica finché la rete non raggiunge una configurazione stabile. Questa configurazione è un attrattore; gli stati iniziali che convergono verso di essa formano il suo bacino di attrazione. L'aggiornamento simultaneo di tutti i neuroni può produrre oscillazioni tra configurazioni.
Memorizzazione e recupero sono operazioni distinte. La memorizzazione modifica le connessioni; il recupero modifica gli stati dei neuroni mantenendo fisse quelle connessioni. Per questo, il recupero è una forma di ottimizzazione dello stato, non un altro ciclo di retropropagazione.
Recupero di pattern in Python#
Il seguente esempio in PyTorch memorizza un pattern binario usando la regola di Hebb, inverte due valori e recupera il ricordo tramite aggiornamenti asincroni.
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())}")L'output è Bit errors: 2 -> 0: gli aggiornamenti ricorrenti ricostruiscono il pattern memorizzato a partire dal suo indizio corrotto, usando le dinamiche standard della memoria associativa.
Reti continue, attenzione e applicazioni#
Le reti di Hopfield continue usano output neuronali graduati, come una sigmoide, ed evolvono verso uno stato di equilibrio. Hopfield definì questa formulazione nel 1984. Le moderne reti di Hopfield estendono la memoria associativa con diverse funzioni energetiche e capacità di memorizzazione maggiori; le loro varianti a stato continuo operano su vettori a valori reali.
Nel 2020, Hubert Ramsauer e i suoi colleghi hanno collegato il recupero delle moderne reti di Hopfield ai meccanismi di attenzione. Una query viene confrontata con i vettori memorizzati, softmax converte i punteggi di similarità in pesi e una combinazione ponderata recupera le informazioni associate. Ciò offre un'interpretazione in termini di memoria associativa dell'operazione di attenzione usata in un Transformer.
Per le rappresentazioni delle immagini, Ultralytics YOLO26 mette a disposizione l'estrazione delle caratteristiche tramite model.embed(), restituendo embedding delle immagini. Questi vettori forniscono la rappresentazione a valori reali usata dai moderni livelli di memoria associativa.
Tra le applicazioni consolidate figurano il recupero di pattern visivi memorizzati, il pooling di grandi raccolte di caratteristiche e l'ottimizzazione vincolata. Nel 1985, Hopfield e David Tank applicarono una rete analogica al problema del commesso viaggiatore, codificando la qualità dei percorsi e i vincoli nel paesaggio energetico. Il pooling delle moderne reti di Hopfield supporta anche la classificazione dei repertori immunitari, aggregando informazioni da centinaia di migliaia di sequenze biologiche tramite l'apprendimento a istanze multiple.
Concetti correlati e limiti di memorizzazione#
Un autoencoder apprende una mappatura encoder-decoder che ricostruisce gli input; una rete di Hopfield classica ricostruisce i pattern stabilizzandosi in attrattori. Una banca di memoria memorizza rappresentazioni per renderle accessibili in seguito, mentre le dinamiche di Hopfield definiscono il modo in cui un indizio recupera uno stato associato.
Nelle reti classiche, l'interferenza tra ricordi causa errori di recupero. I pattern correlati generano interferenze e gli attrattori spuri possono restituire combinazioni di ricordi memorizzati. Per le grandi reti classiche hebbiane che memorizzano pattern binari casuali e approssimativamente non correlati, la stima di capacità più nota è circa 0,14 volte il numero di neuroni, ammettendo una piccola percentuale di errori di recupero: all'incirca 140 pattern per 1.000 neuroni.










