Un neurone
Le chapitre « Deux paris rivaux » a présenté le perceptron de Frank Rosenblatt (1958), une machine qui apprend à partir d’exemples au lieu de suivre des règles écrites à la main. Le chapitre « Les hivers et la bascule » a montré comment cette approche a été mise de côté après 1969, quand Minsky et Papert ont démontré qu’un perceptron ne peut pas apprendre certaines fonctions simples, comme le XOR.
Les réseaux de neurones (neural networks) actuels sont les descendants directs du perceptron. Le plus simple d’entre eux en porte d’ailleurs le nom : le perceptron multicouche (multilayer perceptron, MLP). Ce module explique comment ils fonctionnent, comment ils ont dépassé la limite de 1969, et pourquoi ils dominent l’intelligence artificielle depuis le début des années 2010. Il commence par l’élément de base, le neurone artificiel (artificial neuron).
Un neurone est une régression logistique
Vous connaissez déjà le neurone artificiel, sous un autre nom. C’est la régression logistique (logistic regression) du Module 2.
Un neurone reçoit des nombres en entrée, et il produit un seul nombre en sortie. Il effectue pour cela deux opérations :
- Il multiplie chaque entrée par un poids (weight), il additionne les résultats, et il ajoute un dernier nombre, le biais (bias). On obtient une somme pondérée (weighted sum).
- Il passe cette somme dans une fonction d’activation (activation function). La plus classique est la sigmoïde, qui ramène n’importe quel nombre à une valeur comprise entre 0 et 1.
Pour un neurone à deux entrées, le calcul s’écrit ainsi :
$$\text{sortie} = \sigma(w_1 x_1 + w_2 x_2 + b)$$où $x_1$ et $x_2$ sont les entrées, $w_1$ et $w_2$ les poids, $b$ le biais et $\sigma$ la sigmoïde.
Les poids et le biais sont les paramètres du neurone, au sens du Module 2. Un poids élevé donne beaucoup d’importance à l’entrée correspondante, un poids proche de zéro la fait presque ignorer, et un poids négatif la fait compter contre la conclusion. Comme pour tous les modèles du Module 2, on ne fixe pas ces paramètres à la main. On les règle par descente de gradient (gradient descent), à partir d’exemples.
Un neurone peut avoir beaucoup plus que deux entrées. Prenons l’exemple qui servira dans tout ce module, la reconnaissance de chiffres manuscrits (handwritten digit recognition). Une image de chiffre de 28 pixels sur 28 est une liste de 784 nombres, un par pixel, comme l’a montré le chapitre « Regarder les données ». Un neurone qui reçoit cette image a donc 784 entrées et 784 poids. Sa sortie peut se lire comme une réponse à une question simple, par exemple « cette image est-elle un zéro ? ».
D’où vient le mot « neurone »
Le terme vient d’une analogie avec le cerveau. Un neurone biologique reçoit des signaux d’autres neurones par ses dendrites. Il les combine dans son corps cellulaire. Si le signal combiné est assez fort, il envoie à son tour un signal le long de son axone, vers d’autres neurones. Les points de contact entre neurones s’appellent des synapses, et leur force varie avec l’expérience.
Le neurone artificiel reprend ce schéma en le simplifiant beaucoup. Les entrées jouent le rôle des dendrites, les poids celui des synapses, la somme et la fonction d’activation celui du corps cellulaire, et la sortie celui de l’axone.
Cette analogie a guidé les premiers chercheurs, mais elle est très approximative. Un neurone biologique est beaucoup plus complexe qu’une somme suivie d’une fonction. Le chapitre « L’apprentissage profond » reviendra sur ce que cette comparaison permet de dire, et sur ce qu’elle ne permet pas.
Un neurone à manipuler
Dans l’applet ci-dessous, vous réglez vous-même les entrées et les paramètres d’un neurone, et vous observez sa sortie.
Essayez les trois manipulations suivantes :
- Fixez les deux entrées à 1. Trouvez des poids qui donnent une sortie proche de 1, puis des poids qui donnent une sortie proche de 0.
- Donnez un poids de zéro à la première entrée. Faites varier cette entrée, et observez que la sortie ne change plus.
- Donnez un poids négatif à la seconde entrée. Augmentez cette entrée, et observez que la sortie diminue.
Ce qu’un neurone seul ne peut pas faire
Un neurone seul a la même limite que la régression logistique. Sa somme pondérée définit une frontière droite : d’un côté, la sortie est supérieure à 0,5, et de l’autre, elle est inférieure. Un neurone ne peut donc séparer deux catégories que si une droite suffit à les séparer.
Ce n’est pas toujours le cas. Le XOR, présenté avec sa table de vérité (truth table) au Module 1, en est l’exemple le plus simple. Ses quatre cas occupent les coins d’un carré, et aucune droite ne sépare les deux cas « vrai » des deux cas « faux ». C’est exactement la limite que Minsky et Papert ont démontrée en 1969.
Au Module 2, on contournait cette limite de deux façons : en changeant de modèle, ou en fabriquant à la main une nouvelle caractéristique (feature). Les réseaux de neurones apportent une troisième réponse. On relie plusieurs neurones entre eux, et le réseau fabrique lui-même la caractéristique qui manque. C’est le sujet du chapitre suivant, « Une couche cachée ».