Les réseaux de neurones et l'apprentissage
Origines
Le modèle naturel
Une très grande partie du règne animal exhibe des capacités d'apprentissage, et depuis longtemps les hommes se sont interrogés sur le fonctionnement de notre mémoire, et sur la façon dont elle s'organisait.
L'une des technique utilisée pour conférer à des programmes des capacités d'apprentissage consiste à suivre une approche bio-mimétique : copions le vivant ! Nous allons donc chercher à créer des neurones artificiels, in-silico, suivant une approche connexionniste en les mettant en réseau, et pour ce faire nous commencerons par observer ce que nous savons des cellules neuronales réelles.
Même si les modèles de neurones réels sont toujours incomplets on peut déjà décrire un neurone comme une cellule particulière composée de plusieurs parties :
- Un corps cellulaire (1), noyau ou soma,
- Auquel sont reliées de nombreuses dendrites (2) qui sont comme les portes d'entrées des signaux provenant d'autres neurones,
- Et un axone (3) qui est la voie unique de sortie du neurone, qui va se diviser par la suite pour se connecter aux dendrites d'autres neurones par des synapses.
Les neurones sont organisés en réseau, chacun étant connecté à une multitude d'autres. L'axone en sortie du neurone se connecte aux dendrites en entrée d'autres neurones. Un neurone s'activant propage un signal vers les dendrites en entrées des neurones auxquels il est connecté et forme donc un réseau de communication à travers lequel se propage les signaux.
Entre les axones et les dendrites se situent des liaisons que l'on nomme synapses. Ces liaisons peuvent laisser passer, voire amplifier un influx nerveux ou au contraire l'atténuer.
Cet influx nerveux représente l'information transitant entre chaque neurone. Il peut être plus ou moins fort dans le sens où chaque synapse, en fonction d'un apprentissage, laissera passer plus ou moins cet influx. Ainsi certaines synapses seront inhibitrices car elle bloqueront l'influx, d'autres seront incitatrices car elles laisseront passer l'influx. On appelle cela le poids synaptique.
Lorsqu'un neurone reçoit suffisamment d'influx nerveux, au delà d'un seuil de déclenchement, il peut s'activer et envoyer à son tour un influx à travers son axone aux autres neurones auxquels il est connecté.
Cependant, dans la majeure partie des cellules neuronales, les synapses utilisent des médiateurs chimiques pour faire transiter l'influx. C'est à ce niveau qu'une synapse peut générer plus ou moins de médiateurs chimiques et donc amplifier ou inhiber l'influx électrique.
Le réseau entier de neurones connectés par leur synapses, toutes plus ou moins incitatrices ou inhibitrices, ainsi que les seuils d'activation des neurones, forment un modèle capable de produire des sorties particulières en fonction d'entrées particulières.
L'apprentissage se produit lorsque les pondérations synaptiques se modifient. C'est par changements successifs inhibant ou incitant les synapses que le réseau se transforme pour produire des sorties particulières en fonction des entrées.
Bien entendu le modèle réel des différents types de cellules neuronales est bien plus complexe, mais c'est cette idée simple d'apprentissage par inhibition ou incitation que nous allons utiliser dans la suite.
Historique
L'hypothèse que la mémoire (et la pensée) étaient localisées dans le cerveau et que ce dernier était un ensemble d'éléments interconnectés est ancienne. Cependant, les éléments que nous allons utiliser sont assez récents :
- On attribue généralement à Alcméon de Crotone (-520 à -450), une hypothèse reprise par Démocrite puis Hippocrate selon laquelle ce qui gouverne siège dans le cerveau.
- Aristote ensuite (même s'il imaginait lui que le cœur était le siège de la pensée) décrit la mémoire comme une interconnexion complexe d'éléments simples.
- Galien (env -131 à 201) sera le premier à décrire le parcours de l'influx nerveux à partir du cerveau.
- H. Spencer (1820-1903) Propose que Les états mentaux dépendent strictement des structures nerveuses et de leur évolution. Interprétation de la psychologie à travers des réseaux d'unités fortement connectées.
- S.R. Cajal découvre le neurone : le système nerveux est constitué d'une myriade de cellules interconnectées.
- E.L. Thorndike (1842-1910) Propose le concept de mémoire associative : la fréquence de conjonction d'événements tend à renforcer les liens entre leurs représentations cérébrales.
- Ce n'est qu'en 1955, avec les progrès de la microscopie électronique que ces travaux ont été validés.
La règle de Hebb
Hebb (1904-1985) énonce la règle de co-activation qui reprend l'idée de Throndike :
« Quand l'axone d'une cellule A est suffisamment proche pour exciter une cellule B et que de manière répétée et persistante, il participe à l'activation de B, alors un processus de croissance ou de changements métaboliques se met en œuvre dans l'une ou dans les deux cellules, de telle manière que la capacité de A à activer B en est renforcée. »
Il s'agit là d'une formalisation du mécanisme d'apprentissage. C'est par le biais de modifications successives des synapses et de leur capacité à inhiber ou inciter l'influx nerveux que le réseau se modifie.
Voici une illustration de la règle de Hebb, en rouge les neurones activés :
Soit w_{ij}(t)
le poids de la connexion entre les neurones i
et j
à l'instant t
. Avec f(n)=1
si le neurone n
est activé et f(n)=0
si le neurone est inactif. On a :
w_{ij}(t+1) = w_{ij}(t) + f(i) \cdot f(j)
Un premier modèle, McCulloch et Pitts
Le modèle qu'on considère généralement comme fondateur des réseaux de neurones artificiels à été proposé par W. McCulloch, un neurophysiologiste et W. Pitts un mathématicien. Ils posent l'hypothèse selon laquelle on peut assimiler les signaux neuronaux à des propositions logiques. Ils cherchent alors à modéliser les réseaux de neurones en s'appuyant sur la logique des prédicats en plubliant un article fondateur de la théorie des neurones formels : « A Logical Calculus of Ideas Immanent in Nervous Activity ».
Ces réseaux de neurones n'exhibent pas encore de propriété d'apprentissage proprement dite, mais, nous allons le voir, sont une fondation essentielle des réseaux que nous utiliserons par la suite.
Le modèle
La modélisation de Mc Culloch et Pitts, considère un neurone comme un automate à seuil : il s'active quand la somme des signaux d'entrée dépasse une valeur donnée, le seuil. Il y a deux types d'entrées :
- activatrice et,
- inhibitrice.
Si une seule des entrées inhibitrice est activée, le neurone ne s'active pas.
Les entrées et sorties sont strictement booléennes, activées ou non-activées.
Ici seule la combinaison \{1, 0\}
active la sortie, soit l'entrée activatrice est à zéro, soit elle est inhibée (\{1, 1\}
).
Nous pouvons donc décrire un modèle de neurone de McCulloch et Pitts ainsi :
-
x_{i=1..n}
ensemble d'entrées activatrices ayant des valeurs dans\{1, 0\}
. -
h_{i=1..m}
ensemble d'entrées inhibitrices ayant des valeurs dans\{1, 0\}
. -
\theta
le seuil. -
f
une fonction de transfert. -
s = f(x_i, h_i)
le signal de sortie.
La fonction de transfert ppermet de calculer une sortie pour les entrées. On utilise usuellement la fonction "signe" :
sgn(x) = \left\{ \begin{array}{cc} 0 \textrm{ si } x < 0 \\ 1 \textrm{ si } x \geq 0 \end{array} \right.
Qui nous fournit la fonction de transfert suivante, prenant en compte les entrées inhibitrices :
f(x_i, h_i) = \left\{
\begin{array}{cc}
sgn\left( \sum_{i=1}^{i=n}x_i - \theta \right) \textrm{ si } \sum_{j=1}^{j=m} h_j = 0 \\
0 \textrm{ si } \sum_{j=1}^{j=m} h_j \neq 0
\end{array}
\right.
Ainsi, si \sum h_j = 0
, la fonction s'active dès que la somme des x_i
dépasse \theta
:
Opérateurs booléens
McCulloch et Pitts essayaient de montrer que leur modèle était permettait de modéliser des propositions logiques. En effet, le modèle que nous venons de voir permet de représenter les trois opérateurs booléens élémentaires :
Partant de ces opérateurs, on peut facilement reconnaître n'importe quelle entrée binaire :
On peut montrer qu'il est possible de réaliser une reconnaissance de n'importe quelle fonction booléenne avec un réseau à deux couches. Voici un exemple de fonction reconnaissant quatre valeurs booléennes à trois entrées :
Entrées | Sorties |
---|---|
001 | 1 |
011 | 1 |
101 | 1 |
111 | 1 |
sinon | 0 |
Von Neumann s'inspirera de ce modèle, et plus tard, S.C. Kleene prouvera l'équivalence entre le modèle de McCulloch et Pitts et la machine de Turing, en montrant l'équivalence entre ces réseaux et les automates finis.
Le Perceptron
Mais les réseaux de McCulloch et Pitts sont figés. Or une des grandes propriétés que l'on voulait obtenir au début de ce chapitre était la notion d'apprentissage ! Le Perceptron est le premier modèle opérationnel de réseau "apprenant". Il est du à F. Rosenblat, qui cherchait à comprendre le modèle biologique.
Il est très fortement inspiré de celui de McCulloch et Pitts, mais ajoute un système d'apprentissage, sous la forme d'une matrice d'interactions.
Le modèle
Voici le modèle de base du Perceptron :
-
S-Units : Unités
s
sensitives. -
A-Units : Unités d'
a
association. -
R-Units : Unités de
r
réponse. - Matrice d'interactions : Coefficients de couplage entre unités.
- Les S-Units sont sensibles à des stimulations physiques. Ils
renvoient
+1
si le signal d'entrée dépasse un seuil\theta
,0
sinon. - Les A-Units disposent de connexions entrantes et sortantes.
Ils renvoient
+1
si la somme algébrique de leurs entrées dépasse un certain seuil\theta
,0
sinon. - Les R-Units disposent aussi de connexions entrantes
et sortantes. Ils renvoient
+1
si la somme pondérée des signaux d'entrée dépasse un seuil\theta
,-1
sinon. - La matrice d'interactions définit les coefficients de couplage entre les A-Units et les R-Units (poids synaptiques).
Par la suite, nous ne nous intéresserons qu'à la modélisation du R-Unit. En effet les S-Units et les A-Units représentent les entrées du système et n'évoluent pas, nous allons donc les modéliser par des vecteurs de valeurs. Il y aura autant de valeurs dans ces vecteurs que d'entrées dans le R-Unit.
Le Perceptron se compose donc uniquement d'une cellule prenant n
entrées. Le neurone se déclenche au delà d'un seuil \theta
similairement au modèle de McCulloch et Pitts. La grande différence réside dans le fait que les entrées sont pondérées. Chaque entrée possède un poids modifiable qui nous servira à effectuer l'apprentissage. L'ensemble de ces poids forme la
matrice d'interaction. Ainsi au lieu d'effectuer la somme de ses entrées, le Perceptron réalise une somme pondérée \sum x_i w_i
des valeurs des entrées fois leurs poids respectifs. Si cette somme pondérée dépasse le seuil, le neurone s'active (en d'autres termes, si la somme pondérée moins le seuil dépasse zéro on active le neurone).
Ainsi l'apprentissage se fait par modification de la matrice d'interaction w
. Elle modélise l'action inhibitrice ou activatrice des synapses.
Mais il reste aussi à régler le seuil theta
. En théorie cela modélise le moment où le neurone a reçu suffisamment de signaux en entrée et s'active. Ce seuil fait aussi partie de l'apprentissage, mais nous verrons qu'il est plus compliqué à modifier. Pour éviter de le traiter à part, nous pouvons modifier légèrement le modèle en transformant le seuil en une "fausse" entrée dont la valeur est toujours -1 mais qui possède une pondération w_0
qui va elle aussi évoluer avec les autres pondérations, on appelle cette entrée le Biais. On règle ensuite le seuil \theta
à zéro. Précédemment le seuil était retiré à la somme pondérée, et si le résultat dépassait 0 on activait le neurone. Ici ce seuil est remplacé par cette entrée négative qui va réaliser la même opération.
Processus d'apprentissage
Mais comment modifier la matrice d'interactions pour effectuer l'apprentissage ? Le but consiste à configurer le Perceptron de façon à ce qu'il reconnaisse une ou plusieurs entrées particulières. La phase d'apprentissage va donc viser à modifier progressivement les poids synaptiques pour essayer d'obtenir une sortie désirée en fontion d'entrées ou en d'autres termes de stimuli externes induisant ces changements.
Il existe deux types d'apprentissages : non supervisé et supervisé.
- Apprentissage non supervisé : On ne connaît pas les sorties attendues. Cela est souvent utilisé pour agréger les données en fonction de régularités statistiques.
- Apprentissage supervisé : Pour des entrées données, on connaît les sorties. Cela permet de guider le réseau vers la solution recherchée.
Le Perceptron utilise un apprentissage supervisé par renforcement. En fonction de sorties attendues on modifie peu à peu la configuration pour obtenir ces sorties en fonction d'entrées connues.
Le Perceptron fonctionne sur une variante de la règle de Hebb:
w_{ij}(t+1) = w_{ij}(t) + \eta(s_i\cdot s_j)
Le neurone j
prenant ses entrées sur la sortie du neurone i
, avec :
-
w_{ij}(t)
: le poids de la connexion entrei
etj
au tempst
. -
\eta
: le pas d'apprentissage,0 < \eta \leq 1
. -
s_i
: signal transmis par le neuronei
. -
s_j
: signal transmis par le neuronej
.
Mais la règle de Hebb ne peut que renforcer les pondération synaptiques !
La règle du Perceptron est une version évoluée de la règle de Hebb :
w_{ij}(t+1) = w_{ij}(t) + \eta(d_j - s_j)s_i
-
\eta
: le pas d'apprentissage entre0
et1
. On peut le faire varier durant l'apprentissage, partant d'une valeur élevée, pour arriver à des valeurs plus basses pour affiner la solution. -
d_j
: la sortie désirée. -
s_j
: la sortie obtenue pour l'entrée courante.
Il s'agit donc bien de la même règle de co-activation mais celle ci peut aussi "inhiber" (faire) diminuer les coefficients.
Exemple d'apprentissage
Afin de bien comprendre comment fonctionne l'apprentissage voici un exemple d'évolution.
On cherche à reconnaître un motif en diagonale sur une grille de 2\times 2
pixels.
- Les pixels sont les S-Units, le signal est
1
quand le pixel est noir,0
sinon. - On dispose de
4
neurones d'association, un par pixel, recevant les entrées de ces pixels. - Les neurones d'association transmettent leurs entrées sans changement (
1
s'ils sont reliés à des pixels noirs,0
sinon). En d'autres termes il n'est pas utile de les modéliser. - On a un unique neurone de réponse recevant des entrées des
4
neurones d'association (ici pour simplifier les calculs ses sorties seront soit0
soit1
. - On ajoute une entrée de biais
\theta
sur le neurone de réponse. - À chaque entrée du neurone de réponse, on associe un poids
w_i
aveci = 1..4
, ici initialisés à zéro. - Le biais par convention est associé à l'entrée
0
et relié au neurone de sortie avec un poidsw_0 = \theta
. Sa sortie vaut systématiquement-1 \times w_0
. Ici on l'initialise à2
. - On obtient au final un vecteur de
5
poids qu'il faut ajuster au cours du processus d'apprentissage.
Au cours du processus d'apprentissage :
- On présente successivement l'ensemble des entrées possibles,
- on applique la règle d'apprentissage.
- C'est ce qu'on appelle une itération ou époque.
On continue les itérations jusqu'à ce que les sorties soient acceptables.
Rang | Entrées | \sum w_i s_i |
y |
d |
w_1 |
w_2 |
w_3 |
w_4 |
w_0 |
---|---|---|---|---|---|---|---|---|---|
1.1 | 1,1,1,1,-1 | 1\times 0 + 1\times 0 + 1\times 0 + 1\times 0 + -1\times 2 |
0 | 0 | 0 | 0 | 0 | 0 | 2 |
1.2 | 1,1,1,0,-1 | 1\times 0 + 1\times 0 + 1\times 0 + 0\times 0 + -1\times 2 |
0 | 0 | 0 | 0 | 0 | 0 | 2 |
1.3 | 1,1,0,1,-1 | 1\times 0 + 1\times 0 + 0\times 0 + 1\times 0 + -1\times 2 |
0 | 0 | 0 | 0 | 0 | 0 | 2 |
1.4 | 1,1,0,0,-1 | 1\times 0 + 1\times 0 + 0\times 0 + 0\times 0 + -1\times 2 |
0 | 0 | 0 | 0 | 0 | 0 | 2 |
1.5 | 1,0,1,1,-1 | 1\times 0 + 0\times 0 + 1\times 0 + 1\times 0 + -1\times 2 |
0 | 0 | 0 | 0 | 0 | 0 | 2 |
1.6 | 1,0,1,0,-1 | 1\times 0 + 0\times 0 + 1\times 0 + 0\times 0 + -1\times 2 |
0 | 0 | 0 | 0 | 0 | 0 | 2 |
Pour les entrées de 1 à 6 aucun changement n'est nécessaire car les sorties réelles correspondent aux sorties attendues.
Rang | Entrées | \sum w_i s_i |
y |
d |
w_1 |
w_2 |
w_3 |
w_4 |
w_0 |
---|---|---|---|---|---|---|---|---|---|
1.7 | 1,0,0,1,-1 | 1\times 0 + 0\times 0 + 0\times 0 + 1\times 0 + -1\times 2 |
0 | 1 | 1 | 0 | 0 | 1 | 1 |
En revanche, pour l'entrée 7, la sortie désirée est 1 mais la sortie réelle est 0, en effet :
\sum_{i=1}^4 s_i w_i + s_0 w_0 = 1\times 0 + 0\times 0 + 0 \times 0 + 1\times 0 + -1\times 2 = -2
On applique donc la règle de Hebb étendue :
\begin{array}{lcl}
w_1 \leftarrow w_1 + \eta(d-y)s_1 &=& 0 + 1 \times (1-0)\times 1 = 1\\
w_2 \leftarrow w_2 + \eta(d-y)s_2 &=& 0 + 1 \times (1-0)\times 0 = 0\\
w_3 \leftarrow w_3 + \eta(d-y)s_3 &=& 0 + 1 \times (1-0)\times 0 = 0\\
w_4 \leftarrow w_4 + \eta(d-y)s_4 &=& 0 + 1 \times (1-0)\times 1 = 1\\
w_0 \leftarrow w_0 + \eta(d-y)s_0 &=& 2 + 1 \times (1-0)\times -1 = 1
\end{array}
Exercices
Pour aller plus loin
Références
Une grande partie de cette section a été réalisée grâce au livre "Réseaux neuronaux, une introduction" de Jean-Philippe Rennard aux éditions Vuibert.