Module 1 — Du perceptron au réseau multicouche
Le cours précédent s'achevait sur une idée : un modèle n'apprend que ce que l'espace des variables rend exprimable, et c'est pourquoi nous construisions ces variables à la main. Le deep learning propose exactement l'inverse — laisser le réseau construire ses propres représentations. Ce module part de l'unité de calcul élémentaire pour montrer d'où vient cette capacité.
Le calcul d'un neurone, en entier
Un neurone artificiel ne fait que deux choses : une somme pondérée, puis une transformation non linéaire. Rien de plus.
Formellement, pour des entrées :
Chaque terme a un rôle distinct qu'il faut savoir nommer. Les poids mesurent l'influence de chaque entrée, et ce sont eux que l'entraînement ajuste. Le biais décale le seuil de déclenchement : sans lui, le neurone serait contraint de passer par l'origine, ce qui l'empêcherait de représenter des relations pourtant simples. La fonction d'activation introduit la non-linéarité, et le module suivant lui est entièrement consacré.
Vous reconnaîtrez peut-être une structure familière : avec égale à la fonction sigmoïde, ce neurone est une régression logistique. C'est un point de repère utile — un réseau de neurones n'est pas une rupture conceptuelle, c'est un empilement d'objets que vous connaissez déjà.
Pourquoi un neurone seul ne suffit pas
Le perceptron, proposé par Frank Rosenblatt en 1957, se heurte à une limite que Marvin Minsky et Seymour Papert ont formalisée en 1969 : il ne sait tracer qu'une frontière linéaire.
L'exemple canonique est la fonction XOR, qui vaut 1 lorsque les deux entrées diffèrent :
| XOR | ||
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Placez ces quatre points dans le plan et cherchez une droite qui sépare les 1 des 0. Il n'en existe aucune : les deux points positifs occupent des coins opposés. Aucun réglage des poids ne résout ce problème, parce que l'obstacle n'est pas dans l'apprentissage mais dans la forme du modèle.
Cette démonstration a coûté cher. Elle a largement contribué au premier hiver de l'IA, une décennie de désintérêt pour les réseaux de neurones — alors que la solution était à portée de main.
Ce que la profondeur change
La solution consiste à empiler des couches. Une couche cachée de deux neurones suffit pour XOR : le premier apprend une frontière, le second une autre, et la couche de sortie combine les deux en une région non linéaire.
Le vocabulaire se fixe ici. La couche d'entrée ne calcule rien, elle expose les variables. Les couches cachées produisent des représentations intermédiaires — « cachées » parce qu'on n'observe jamais directement leur contenu. La couche de sortie produit la prédiction, et sa taille est dictée par la tâche : un neurone pour une régression ou une classification binaire, autant de neurones que de classes pour une classification multiclasse.
On appelle profondeur le nombre de couches, et largeur le nombre de neurones par couche.
Universalité, et pourquoi elle ne dit pas ce qu'on croit
Le théorème d'approximation universelle établit qu'un réseau à une seule couche cachée peut approcher n'importe quelle fonction continue avec la précision voulue, à condition d'avoir assez de neurones.
Ce résultat est souvent mal cité, alors qu'il faut en retenir surtout ses silences. Il affirme qu'un tel réseau existe, sans dire comment le trouver — or c'est précisément le travail de l'entraînement. Il ne borne pas le nombre de neurones nécessaires, qui peut être astronomique. Et il ne promet rien sur la généralisation : approcher parfaitement les données d'entraînement, c'est la définition même du surapprentissage.
D'où la question qui compte vraiment : si une couche suffit en théorie, pourquoi empiler ? Parce que la profondeur est plus efficace. Certaines fonctions qu'un réseau profond représente avec un nombre modeste de neurones exigeraient un nombre exponentiellement plus grand de neurones sur une seule couche. La profondeur permet une composition hiérarchique : les premières couches captent des motifs simples, les suivantes les combinent en motifs plus abstraits. En vision, cette hiérarchie se lit presque à l'œil nu — contours, puis textures, puis parties d'objets, puis objets — et le cours sur les réseaux convolutifs y reviendra en détail.
Le cours précédent consistait à construire les bonnes variables à la main, à partir de la connaissance du domaine. Un réseau profond apprend ces représentations depuis les données brutes. C'est ce qui explique sa domination là où les variables sont difficiles à formuler : pixels, son, texte. Sur données tabulaires, en revanche, l'ingénierie des variables associée à un gradient boosting reste très souvent supérieure — et c'est un arbitrage à faire lucidement, non une question de mode.
En résumé
- Un neurone calcule une somme pondérée plus un biais, suivie d'une fonction d'activation ; avec une sigmoïde, c'est exactement une régression logistique.
- Le perceptron seul ne trace qu'une frontière linéaire et échoue sur XOR : l'obstacle est la forme du modèle, pas l'apprentissage.
- Empiler des couches cachées permet des frontières non linéaires ; profondeur et largeur désignent respectivement le nombre de couches et de neurones.
- L'universalité garantit l'existence d'une solution à une couche, sans rien dire de sa taille, de sa trouvabilité ni de sa généralisation ; la profondeur vaut pour son efficacité de représentation.
Module suivant : les fonctions d'activation, cette non-linéarité sans laquelle un réseau profond s'effondrerait en un simple modèle linéaire.