L'apprentissage automatique peut être défini comme l'ensemble des méthodes qui permettent à un automate de faire quelque chose pour lequel il n'a pas été programmé explicitement. Cela veut dire, par exemple, parvenir à identifier des tumeurs sur une radiographie sans qu'une méthode explicite de calcul ne soit utilisée.
Dans un tel cas, il faut tout de même entraîner l'automate, mais sans lui indiquer quelles règles utiliser. Par contre, il y a des règles implicites : le choix des cas pour l'entraînement, la réponse qu'on fournit, le coût de l'erreur, etc.
On appelle apprentissage supervisé une situation où le jeu d'entraînement vient avec la classification attendue (tumeur ou pas de tumeur, par exemple). Il existe aussi un apprentissage non supervisé, où c’est à l'automate de détecter lui-même les corrélations ou regroupements. Ici, nous nous concentrerons sur la première approche.
John Joseph Hopfield (1933 -- ) est un physicien de la matière condensée qui s'est intéressé, dans les années 1970, à des problèmes biologiques et a publié, en 1982, un modèle de réseaux de neurones simplifié, basé sur le modèle de Hebb.
Rapidement, le modèle de Hopfield a été déployé pour l'étude des systèmes complexes, entre autres, et à des questions liées à l'entreposage d'information. Le modèle de Hopfield ramène les neurones à deux états : actif (si le neurone reçoit un influx électrique supérieur à un seuil donné) et inactif. La réponse des neurones est donc une fonction non-linéaire de la somme des entrées, c'est-à-dire du poids de la force des synapses qui relient ces neurones.
Le réseau de Hopfield est un réseau non-dirigé d'éléments dans deux états : \( +1 \) (actif) ou \( -1 \) (inactif). Ceci permet de réécrire le problème comme celui d'un ensemble de spins d'Ising dont l'interaction est donnée par \( w_{ij} \). L'objectif de ce modèle n'est pas d'identifier des corrélations, mais simplement d'étudier comment on peut emmagasiner et retrouver l'information.
Pour reproduire le modèle de Hebb, Hopfield ajoute un seuil à l'interaction d'Ising : un spin \( S_i \) passe à \( +1 \) seulement si la somme des interactions sur ce spin est supérieure à un seuil d'activation \( A_i \). La règle d'évolution, si l'on pose le seuil \( A_i = 0 \) pour tous les \( i \), est donc simplement :
\[ S_i(t+1) = \begin{cases} +1 & \text{si } \sum_{j \neq i} w_{ij} S_j(t) > 0 \\ -1 & \text{si } \sum_{j \neq i} w_{ij} S_j(t) \leq 0 \end{cases} \]
Une différence plus importante avec le modèle d'Ising est le fait que la constante d'interaction, le poids \( w_{ij} \), n'est pas fixe, mais évolue. En effet, ce modèle tente de reproduire la façon dont l'information est stockée dans le cerveau : l'évolution des poids synaptiques va permettre de renforcer l'apprentissage d'une information, définie par l'orientation des spins : \( \{S\} \).
Pour ce faire, on doit entraîner les synapses : \[ \Delta w_{ij} = \eta S_i S_j \] où \( \eta > 0 \) représente le taux d'apprentissage.
Ce processus d'apprentissage est répété pour une série de \( P \) patrons binaires (\( +1, -1 \)) de longueur \( N \), qui représentent le nombre de neurones : \( \xi^1, \dots, \xi^P \). Par exemple, le patron \( \xi^1 = 1011\cdots 1 \) indique l'état des neurones pour le patron numéro 1.
À la fin de la période d'apprentissage, la mémoire du réseau correspondra à : \[ w_{ij} = \frac{1}{N} \sum_{\alpha=1}^{P} \xi_i^{\alpha} \xi_j^{\alpha} \] où le facteur \( \frac{1}{N} \) correspond au taux d'apprentissage \( \eta = \frac{1}{N} \).
Une fois les patrons appris, on doit pouvoir les retrouver en entrant une configuration de spins proche d'une des solutions, mais qui contient des erreurs.
Considérons l'apprentissage d'un seul patron :
Si, lorsqu'on évalue la valeur des spins à \( t'' = t+2 \), le système ne change pas par rapport à \( t' = t+1 \), c'est-à-dire \( \{S\}_{t+2} = \{S\}_{t+1} \), alors le système est stable.
On peut aussi avoir une solution cyclique donnée par : \[ \{S\}_1, \{S\}_1, \{S\}_3, \{S\}_3, \cdots, \{S\}_1 \]
L'information est emmagasinée dans ce réseau d'interactions, \( w_{ij} \) : \[ w_{ij} = \frac{1}{N} \xi_i \xi_j \]
Dans ce cas, la dynamique du système aura la forme : \[ S_i' = \mathrm{sgn} \left( \xi_i \cdot \frac{1}{N} \sum_j \xi_j S_j \right) \]
où l'on peut définir le terme de recouvrement comme : \[ m = \frac{1}{N} \sum_j \xi_j S_j \] et donc : \[ S_i' = \mathrm{sgn}(\xi_i m) \]
Lorsque \( \xi = \{S\} \), on a \( m = 1 \) et on retrouve un état stable, ou, dans un contexte dynamique, un état stationnaire. Même chose si \( m = -1 \) et \( \{S\} = -\xi \).
Si \( m > 0 \), les itérations ne peuvent que faire augmenter \( m \). Idem lorsque \( m < 0 \) : les itérations ne font que faire décroître \( m \).
On peut, dans ces conditions, conclure que ces états stationnaires sont des attracteurs de la dynamique.
Que se passe-t-il lorsque l'on veut mémoriser plusieurs patrons ? Dans ce cas, la matrice de poids n'est qu'une superposition des patrons uniques :
\[ \begin{split} \sum_{j \neq i} w_{ij} \xi_j^{\beta} &= \frac{1}{N} \sum_{j \neq i} \sum_{\alpha = 1}^{P} \xi_i^{\alpha} \xi_j^{\alpha} \xi_j^{\beta} \\ &= \xi_i^{\beta} + \frac{1}{N} \sum_{j \neq i} \sum_{\alpha \neq \beta}^{P} \xi_i^{\alpha} \xi_j^{\alpha} \xi_j^{\beta} \\ &= \xi_i^{\beta} \left( 1 + \frac{1}{N} \sum_{j \neq i} \sum_{\alpha \neq \beta}^{P} \xi_i^{\alpha} \xi_i^{\beta} \xi_j^{\alpha} \xi_j^{\beta} \right) \end{split} \]
Le dernier terme est appelé le terme d'interférence. Lorsque celui-ci est plus grand que \( -1 \) pour tous les \( i \), alors le \( \beta \)-ième patron est dans un état stationnaire :
\[ \xi_i^{\beta} = \mathrm{sign} \left( \sum_j w_{ij} \xi_j^{\beta} \right) \]
S'il y a trop de patrons à stocker, la mémoire déborde, les patrons font de l'interférence et le système commence à oublier.
Le réseau de Hopfield a ses avantages, mais il est aussi connu pour ses limites. Dans mon cas, il semble qu’on ne puisse stocker que trois images différentes, ce qui est assez faible — mais ce n’est pas surprenant. Ces réseaux ont plusieurs contraintes bien connues :