La rete di Hopfield è un modello di fisica statistica per la memoria umana, e si compone intuitivamente di una serie di neuroni insieme a delle sinapsi. Una delle caratteristiche fondamentali della memoria umana è l’abilità di riconoscere oggetti anche solo per analogia: siamo in grado di riconoscere una giraffa anche se è seduta, se è obesa, se è appesa a testa in giù, ecc. Hopfield pensava a questo processo come una specie di gruppo di rinormalizzazione: ovvero dato un certo input, che si troverà in un certo punto nello spazio dei parametri, seguiamo l’evoluzione della rete (cioè nell’analogia il gruppo di rinormalizzazione) e andiamo a finire in un punto fisso, che rappresenta un ricordo specifico. Chiaramente questo è un modello molto semplicistico, ma nonostante tutto ha delle proprietà appunto interessanti. Vediamo ora come funziona nel dettaglio.
Matematicamente, la rete di Hopfield è un grafo completo con $N$ vertici, ovvero un grafo in cui ogni vertice è connesso a tutti gli altri. Un esempio con $N=7$ è mostrato qui sotto (preso da Wikipedia):
I vertici del grafo sono i “neuroni” e gli archi sono invece le “sinapsi”. Ad ogni vertice assegniamo uno spin $S_i = \pm 1$. Partendo da un input iniziale $S_i(0)$ facciamo evolvere gli spin nel tempo producendo le configurazioni $S_i(t)$ dove $t=0,1,2,3,\ldots$ è un tempo discreto secondo la regola
$$S_i(t+1) = \mathrm{sgn}\pqty{ \sum_{j=1}^N w_{ij} S_j(t)} $$
I pesi $w_{ij}$ sono assegnati alle sinapsi, e in particolare richiediamo che $w_{ij}=w_{ji}$, cioè la sinapsi ha lo stesso peso in entrambe le direzioni. Talvolta si richiede anche che $w_{ii}=0$ (nel grafico le sinapsi connettono solo neuroni diversi), ma in questo caso eviteremo per semplicità.
Con questa regola, in particolare, se $w_{ij} > 0$ allora se $S_j > 0$, contribuirà positivamente nella somma, e quindi aumenterà la probabilità che anche $S_i > 0$ al passo successivo (stessa cosa se $S_j$ è negativo). Ovvero i neuroni con sinapsi positive si attraggono. Al contrario, i neuroni con sinapsi negative divergono.
Come abbiamo visto prima, ci interessano in particolare i punti fissi della rete, in cui presumibilmente questo sistema dinamico andrà a fissarsi. Questi punti fissi sono appunto i “ricordi”. Supponiamo di voler instillare dei ricordi specifici $R_i^a = \pm 1$, dove $a=1, 2, \ldots, M$ indicizza il ricordo ($M$ è il numero di ricordi) e $i$ indicizza il neurone come prima. Il funzionamento della rete ha due parti:
- nella prima parte “addestriamo” la rete, ovvero scegliamo i pesi $w_{ij}$ in modo tale che i ricordi $R_i^a$ che vogliamo instillare formino i punti fissi della rete con i pesi $w_{ij}$.
- nella seconda parte “utilizziamo” la memoria, ovvero partendo da un certo input iniziale arbitrario $S_i(0)$ aggiorniamo la rete di Hopfield secondo la regola sopra fino a raggiungere uno dei punti fissi.
Vediamo matematicamente come funziona. Prima di tutto, la parte di addestramento. Per quanto riguarda sistemi complicati tipo reti neurali, l’addestramento è effettuato numericamente. Qui invece siamo in grado di dare una soluzione analitica. Poiché i ricordi devono essere i punti fissi della rete, i pesi devono soddisfare l’equazione
$$R_i^a = \mathrm{sgn}\pqty{ \sum_{j=1}^N w_{ij} R_j^a} $$
per ogni $a$. Se dovessimo imparare un solo ricordo $R_i$ una soluzione banale di questa equazione è porre $w_{ij} = R_i R_j$. In questa maniera
$$\sum_{j} w_{ij} R_j = \sum_{j} R_i \underbrace{(R_j)^2}_{=1} =R_i N$$
il cui segno è appunto $R_i$. Perciò abbiamo una soluzione. Se invece abbiamo tanti ricordi, il trucco è prendere la media delle soluzioni, ovvero
$$w_{ij} = \frac{1}{M} \sum_{a=1}^M R_{i}^a R_{j}^a$$
Come vedremo, questa non è una soluzione esatta, ma c’è un’elevata probabilità che lo sia. Notiamo infatti che
$$\sum_{j=1}^N w_{ij} R_j^a =\frac{1}{M} \sum_{b=1}^M R_{i}^b \sum_{j=1}^N R_j^a R_{j}^b=$$
A questo punto nella sommatoria sui ricordi separiamo $b=a$ da $b \neq a$, ottenendo
$$=\frac{1}{M} R_{i}^a \underbrace{\sum_{j=1}^N (R_j^a)^2}_{=N} + \frac{1}{M} \sum_{b=1, b \neq a}^M R_{i}^b \sum_{j=1}^N R_j^a R_{j}^b=\frac{N}{M} R_{i}^a + \frac{1}{M} \sum_{b=1, b \neq a}^M R_{i}^b \sum_{j=1}^N R_j^a R_{j}^b$$
Vogliamo che il segno di quest’ultima espressione sia uguale a $R_{i}^a$. Astraendo un attimo, supponiamo di avere un’espressione della forma $\lambda x + \mu$ dove $x=\pm 1$, e di voler imporre $\mathrm{sgn}(\lambda x + \mu) = \mathrm{sgn}(x)=x$. Allora per $x=1$ dobbiamo avere $\lambda + \mu > 0$, mentre invece per $x=-1$ dobbiamo avere $-\lambda+\mu < 0$. Una soluzione esiste per entrambi i casi, ed è data da $-\lambda < \mu < \lambda$. Ora nel nostro caso $\lambda = N/M$, mentre invece $\mu$ è quell’espressione complicata. Notiamo che $\mu$ è in pratica la somma di $N(M-1)$ variabili binarie (divisa per $M$). Perciò in particolare $\frac{M}{N (M-1)}\mu$ è la media di $N(M-1)$ variabili binarie. Per ricordi generici e $N$ grande, $\frac{M}{N (M-1)}\mu$ è quindi la media di un gran numero di variabili binarie che possiamo pensare come casuali. La media di ogni variabile è zero e la sua varianza è invece uguale ad $1$. Possiamo quindi applicare il teorema del limite centrale, ottenendo che
$$\frac{M}{\sqrt{N(M-1)}} \mu \sim N(0,1)$$
cioè una versione normalizzata di $\mu$ è distribuita normalmente. Ciò vuol dire che la probabilità che $-\lambda < \mu < \lambda$ è la probabilità che una variabile normale sia minore in valore assoluto di $\sqrt{N/(M-1))}$, che è data da
$$\mathrm{erf}\pqty{\sqrt{\frac{N}{2(M-1)}}} \approx 1-\exp{\pqty{-\frac{N}{2(M-1)}}}$$
Supponiamo quindi di avere costruito una rete di Hopfield con $N$ molto grande. Accettando una probabilità $\epsilon$ di scordarsi certi ricordi, possiamo inserire nella rete una quantità di ricordi pari a
$$M \approx \frac{N}{2 \log{(1/\epsilon)}}$$
Questa legge è molto favorevole, perché $M$ è direttamente proporzionale al numero di neuroni.
A partire da questa idea si possono costruire diverse varianti. Ad esempio possiamo scegliere una regola più complicata per i pesi $w_{ij}$ che però garantisce risultati migliori; possiamo affinare l’analisi probabilistica; possiamo anche adattare i pesi numericamente invece che analiticamente, il che praticamente ci porta ad una rete neurale.