Ce que calcule un réseau
Les couches comme fonctions paramétrées, le motif affine-puis-non-linéarité, et pourquoi empiler des applications linéaires seules n'apporte rien.
Un réseau de neurones est une composition de fonctions simples avec des constantes réglables. Rien dans cette phrase n’est métaphorique, et cette leçon la rend concrète avant tout entraînement.
Une couche est une fonction avec des paramètres
La couche entièrement connectée standard - dense - calcule
où est une matrice de poids, un vecteur de biais et une non-linéarité appliquée élément par élément. Deux choses distinctes s’y produisent : une application affine , puis une non-linéarité appliquée à chaque coordonnée indépendamment.
Le cadrage de Chollet est utile : les couches sont les briques de l’apprentissage profond, et la forme des données sélectionne la brique. Les vecteurs vont aux couches denses ; les séquences en tenseurs 3D vont aux couches récurrentes ou de convolution 1D ; les images en tenseurs 4D vont aux couches de convolution 2D.
Compter les paramètres
Une couche dense de entrées vers sorties contient une matrice plus un biais par unité de sortie :
De 4 entrées vers 3 sorties, cela fait . Oublier le vecteur de biais est la faute habituelle et donne 12.
Pourquoi la non-linéarité n’est pas optionnelle
Supposons que nous supprimions et empilions trois couches denses :
Développez. Les matrices de poids s’effondrent en un unique produit et les biais en un unique vecteur, laissant - une application affine. Trois couches, et la famille de fonctions est exactement ce qu’une seule couche pouvait déjà exprimer.
La profondeur seule n’achète rien. Une composition d’applications affines est affine. Le pouvoir expressif que la profondeur apporte n’arrive qu’une fois qu’une non-linéarité s’intercale entre les couches, et c’est pourquoi est structurelle et non décorative.
S'exécute dans votre navigateur. La première exécution télécharge l'environnement Python (~10 Mo), puis il est mis en cache.
La ReLU, précisément
Le choix standard est l’unité linéaire rectifiée :
Raschka le dit simplement : elle rabat les entrées négatives à 0. C’est toute la définition. Elle n’écrase pas les valeurs dans - c’est la sigmoïde logistique - et elle ne normalise rien.
Son effet sur la passe arrière compte autant que sur la passe avant : la dérivée vaut là où et là où , de sorte qu’une unité inactive pour un exemple ne laisse repasser aucun gradient pour cet exemple.
Une passe avant déroulée
Deux entrées, deux unités cachées, une sortie :
Les deux entrées sont positives, la ReLU les laisse donc inchangées, et
Ce seul nombre est ce que le réseau croit actuellement. La leçon suivante demande à quel point il se trompe et pousse cette erreur à rebours jusqu’à chaque poids.
La figure ci-dessous est ce même réseau, en coupe : la sortie en fonction de la première entrée, la seconde étant au curseur. Retirez la nonlinéarité et la coupe devient une droite, car les deux couches se multiplient en la seule ligne [-0,05 ; -0,05]. L’écart à l’affinité tombe à zéro à la précision machine, et l’effondrement devient vérifiable plutôt que postulé.
Remettez ReLU et regardez où vous vous tenez. À l’entrée traitée (1, 2) les deux unités sont allumées, le redresseur ne fait donc rien du tout, et le réseau comme sa forme réduite renvoient -0,15. La nonlinéarité ne gagne son salaire qu’en franchissant une frontière : en (2 ; -1,5) les deux unités sont éteintes et les réponses valent 0 et -0,025.
La profondeur n’achète donc pas une courbe. Elle achète des régions, dont chacune reste une application affine, et les brisures de la coupe sont exactement là où une pré-activation traverse zéro. Cela vaut d’être emporté vers la leçon suivante, car c’est aussi pourquoi une unité éteinte ne renvoie aucun gradient.
Interactif : l’effondrement, et ce qui l’empêche
Retirez la nonlinéarité et la coupe devient une droite.
- Pré-activations
- 0.700, 1.000
- Sortie
- -0.150
- La couche réduite dit
- -0.150
- Unités éteintes
- 0
- Écart à l’affinité
- 0.150
Les deux couches se multiplient en la seule ligne [-0.050, -0.050], de sorte que sans nonlinéarité trois couches ou trente expriment exactement ce qu’une seule exprime : l’écart à l’affinité vaut 2e-16, soit zéro à la précision machine. Remettez ReLU et il vaut 0.150. Mais regardez où vous êtes. Les deux unités sont allumées, le redresseur ne fait donc rien ici, et le réseau renvoie -0.150 tandis que sa forme réduite renvoie -0.150 : le même nombre. C’est vrai aussi à l’entrée (1, 2) de la leçon. La profondeur n’achète pas une courbe. Elle achète des RÉGIONS, dont chacune reste une application affine, et les brisures de la coupe sont là où une pré-activation traverse zéro. Franchissez-en une et les deux réponses se séparent. Une note de comptage tant que la couche est sous les yeux : une couche dense de quatre entrées vers trois sorties contient 15 paramètres, et non 12. C’est le vecteur de biais que l’on oublie.
Poursuivez avec la rétropropagation et la descente de gradient pour le traitement général.
Références et lectures complémentaires
- François Chollet, Deep Learning with Python, Manning (2nd edition, MEAP), 2020· Bibliothèque de référence Kudos AI
- Sebastian Raschka, Build a Large Language Model (From Scratch), Manning, 2025· Bibliothèque de référence Kudos AI
Les œuvres protégées par le droit d’auteur sont citées à titre de référence uniquement et ne sont pas hébergées ici ; veuillez consulter l’éditeur pour y accéder.
Débloquez tout le parcours
Cette première leçon est gratuite. Inscrivez-vous pour passer le quiz de maîtrise, gagner de l’XP et débloquer tous les modules, avec d’autres exemples interactifs et exécutables.