Les réseaux de neurones : couches et non-linéarité
Ce que ce chapitre apporte 6 points
- Reconnaître qu'un neurone est exactement le modèle linéaire du chapitre 8.
- Montrer qu'empiler des couches sans non-linéarité ne produit rien de nouveau.
- Écrire la passe avant et la passe arrière d'un réseau à une couche cachée, et vérifier le gradient rétropropagé par différence finie.
- Dire ce que garantit le théorème d'approximation universelle, et ce qu'il ne garantit pas.
- Choisir un nombre de cellules cachées et reconnaître un échec d'initialisation.
- Nommer les difficultés propres aux réseaux profonds.
Un neurone
Un neurone calcule une somme pondérée de ses entrées, ajoute un biais, puis applique une fonction non linéaire appelée activation :
Avec la fonction logistique pour activation, c'est exactement la régression logistique du chapitre 8. Rien de plus, et le vocabulaire ne doit pas faire croire le contraire.
Un neurone est une droite, et le restera. La partie est une combinaison linéaire, donc une droite en deux dimensions, un plan en trois, un hyperplan au-delà. L'activation ne fait qu'écraser le résultat entre deux bornes : elle change la valeur rendue, jamais la forme de la frontière.
La figure ci-dessous le vérifie. Un réseau réduit à une seule cellule cachée, entraîné aussi longtemps qu'on veut sur le damier, se stabilise à sept erreurs sur vingt-huit, c'est-à-dire au plancher que le chapitre 8 avait établi pour une droite.
Ce n'est donc pas la non-linéarité seule qui débloque le problème : c'est le fait d'en avoir plusieurs, et de les combiner.
7 erreurs sur 28. La frontière se déforme encore : chaque cellule cachée tire dans sa direction, et la sortie combine leurs avis.
Un neurone à activation logistique, c'est…
Empiler ne suffit pas
Le bloc ne se contente pas de l'affirmer : il calcule , obtient une droite, et vérifie qu'elle commet exactement les mêmes erreurs que le réseau à huit cellules.
Quel que soit le nombre de couches empilées, tant qu'aucune n'est non linéaire, le tout se replie sur une droite. Cent couches sans activation valent une régression linéaire, en plus lent.
C'est la raison pour laquelle l'activation est entre les couches et non seulement à la fin : c'est elle qui empêche l'effondrement.
Empiler dix couches sans aucune activation donne…
Plusieurs cellules, et la frontière se courbe
Aucune erreur. Une couche cachée de 4 cellules a produit une frontière qu'aucune droite ne pouvait tracer.
Comment quatre droites font une frontière courbe. Chaque cellule cachée calcule sa propre combinaison et l'écrase entre et . Chacune est donc une question binaire floue : « ce point est-il d'un côté ou de l'autre de ma droite, et à quel point ».
La couche de sortie ne voit plus les attributs d'origine : elle voit les réponses des quatre cellules. Dans cet espace-là, les classes sont devenues séparables par un simple hyperplan, ce qu'elles n'étaient pas dans l'espace de départ.
C'est la seconde issue annoncée au chapitre 8 : plutôt que de changer d'espace à la main en ajoutant l'attribut , on laisse le réseau construire lui-même l'espace où le problème devient facile. C'est là toute la différence, et c'est ce qui a rendu ces méthodes irremplaçables.
La rétropropagation
Avant : puis .
Arrière : partir de l'écart à la sortie, , et le ramener derrière la couche cachée par la règle de dérivation des fonctions composées :
Les gradients s'en déduisent : , .
Le terme est la dérivée de , exprimée à partir de sa propre valeur.
La différence de coût est décisive : par différence finie, obtenir le gradient d'un modèle à paramètres demande passes avant. Par rétropropagation, une passe avant et une passe arrière suffisent, quel que soit .
Sur un modèle à un milliard de paramètres, le premier est impensable et le second est une routine. C'est cette seule différence qui rend l'apprentissage profond possible, et c'est pourquoi la découverte de 1986 a compté.
1.Qu'est-ce que la rétropropagation ?
2.Comment vérifier qu'un gradient rétropropagé est juste ?
Combien de cellules, et l'initialisation
12 erreurs sur 28. La frontière se déforme encore : chaque cellule cachée tire dans sa direction, et la sortie combine leurs avis.
Le paysage. Ajouter des cellules ne rend pas la surface d'erreur plus lisse par magie, mais multiplie les chemins qui descendent. Un modèle un peu large trouve plus facilement une issue qu'un modèle exactement dimensionné.
La régularisation existe. Le chapitre 7 l'a montré : ce n'est pas le nombre de paramètres qui nuit à la généralisation, c'est leur liberté. Un réseau plus large et pénalisé se comporte mieux qu'un réseau étroit et laissé libre.
Le réflexe qui consiste à réduire la taille du modèle quand il sur-apprend n'est donc pas le premier à avoir. Pénaliser, ou collecter davantage, viennent avant.
Ce qu'une seule couche cachée peut faire
Une seule couche cachée, avec assez de cellules et une activation non polynomiale, approche n'importe quelle fonction continue sur un domaine borné, avec la précision que l'on veut.
Il ne dit pas combien de cellules. « Assez » peut vouloir dire un nombre astronomique, croissant exponentiellement avec la dimension d'entrée.
Il ne dit pas qu'on trouvera ces poids. Il affirme qu'ils existent. Rien ne garantit qu'une descente de gradient les atteigne, et la figure aux deux cellules montre qu'elle échoue déjà sur un damier.
Il ne dit rien de la généralisation. Approcher parfaitement la fonction sur les points connus est exactement ce que le chapitre 7 appelle apprendre le bruit.
Il ne justifie pas la profondeur. Il porte sur une seule couche cachée. Si la profondeur s'est imposée, c'est parce que certaines fonctions demandent exponentiellement moins de cellules quand on empile les couches, et parce que les couches successives apprennent des représentations réutilisables. Ce n'est pas une question de pouvoir d'expression, c'est une question d'économie.
1.Le théorème d'approximation universelle garantit…
2.Pourquoi ReLU plutôt que la sigmoïde dans les couches cachées profondes ?
Ce qui va mal en profondeur
Quatre difficultés, et leurs remèdes.
Les gradients qui s'évanouissent. La rétropropagation multiplie les dérivées locales couche après couche. Avec une sigmoïde, dont la dérivée ne dépasse jamais 0,25, dix couches multiplient par au plus , soit un millionième : les premières couches n'apprennent plus rien. Le remède principal a été de remplacer la sigmoïde par ReLU, , dont la dérivée vaut 1 sur toute la partie active.
La saturation. Un neurone dont l'entrée est très grande en valeur absolue a une dérivée quasi nulle et cesse d'apprendre. C'est la même raison qui, au chapitre 8, disqualifiait la perte carrée sur une sigmoïde.
L'initialisation. Des poids trop grands saturent d'emblée, des poids trop petits laissent le signal s'éteindre. Les recettes usuelles règlent l'écart-type initial en fonction du nombre d'entrées de chaque couche.
Le déséquilibre entre couches. La normalisation par lots et les connexions résiduelles, qui laissent le signal court-circuiter une couche, sont les deux réponses qui ont rendu les réseaux très profonds entraînables.
import torch, torch.nn as nn
modele = nn.Sequential(nn.Linear(2, 4), nn.Tanh(), nn.Linear(4, 1))
perte, opt = nn.BCEWithLogitsLoss(), torch.optim.Adam(modele.parameters(), lr=0.05)
for _ in range(3000):
opt.zero_grad()
e = perte(modele(Z).squeeze(), y)
e.backward() # la retropropagation, ecrite a la main plus haut
opt.step()
e.backward() fait exactement ce que le bloc de vérification a écrit en dix lignes, à ceci près qu'il le déduit tout seul de la suite des opérations. BCEWithLogitsLoss combine sigmoïde et perte logarithmique en un seul calcul, plus stable numériquement que les deux séparés. Et Adam est l'optimiseur décrit au chapitre 6.
Mettre en pratique
Un réseau se compte en paramètres, et ce compte dit à la fois ce qu'il peut apprendre et ce qu'il risque de sur-apprendre.
Compter les paramètres d'un réseau
- 1.
Une couche reçoit 4 entrées et produit 5 sorties. Combien de poids comporte-t-elle ?
- 2.
Combien de biais comporte-t-elle ?
- 3.
Un réseau enchaîne une couche de 4 vers 5, puis une couche de 5 vers 3. Combien de paramètres compte-t-il au total ?
- 4.
Ces deux couches sont empilées SANS fonction d'activation entre elles. À combien de couches ce réseau équivaut-il ?
Ce que la non-linéarité achète. Sans elle, empiler dix couches ne produit rien de plus qu'une seule : la composée reste linéaire, donc la frontière reste une droite. Les quarante-trois paramètres du réseau ci-dessus n'auraient alors pas plus de pouvoir que les quinze d'une couche unique de 4 vers 3.
La fonction d'activation n'est donc pas un réglage de confort. C'est la seule chose qui distingue un réseau profond d'un modèle linéaire coûteux.
Le réseau à deux cellules de la coopérative reconnaît-il les deux sortes de parcelles que la rouille frappe ?
Chaque parcelle est décrite par deux attributs codés 0 ou 1 : vaut 1 si elle est en fond de vallée humide, vaut 1 si elle a été semée tard. Le réseau calcule deux cellules cachées avec l'activation ReLU, puis un score de sortie, passé dans la sigmoïde pour donner la probabilité d'être touchée :
Calculer la probabilité pour les quatre sortes de parcelles : = (1, 1), (0, 0), (1, 0) et (0, 1).
Par où commencer ? Calculer les deux cellules cachées pour chaque parcelle avant le score de sortie : chacune répond à une seule question.
Pourquoi deux cellules cachées, et non une seule ?
Le corrigé
- Calculer la première cellule. vaut 1 pour (1, 1) et 0 pour les trois autres : elle ne s'allume que pour une parcelle humide semée tard.
- Calculer la seconde cellule. vaut 1 pour (0, 0) et 0 pour les trois autres : elle ne s'allume que pour une parcelle sèche semée tôt.
- Calculer le score de sortie. pour (1, 1) et (0, 0), pour (1, 0) et (0, 1).
- Passer à la probabilité. pour les deux sortes de parcelles touchées, pour les deux autres.
- Vérifier ce qu'une couche ajoute. Les quatre parcelles forment un damier : aucune droite, donc aucun neurone seul, ne met (1, 1) et (0, 0) d'un même côté. Ici chaque cellule isole un coin, et la sortie, qui ne voit que et , les sépare par un simple seuil sur leur somme.
Deux cellules cachées suffisent en théorie pour le damier. Faut-il s'en tenir là ?
Par où commencer ? Relire ce que la troisième figure du chapitre a montré du réseau à deux cellules, selon son départ.
Le corrigé
- Mesurer la fiabilité. Le chapitre le mesure : avec deux cellules, une initialisation sur trois échoue et reste bloquée, à douze erreurs sur vingt-huit. Avec trois, les trois initialisations réussissent. Le minimum théorique est fragile.
- Penser au paysage d'erreur. Des cellules supplémentaires multiplient les chemins qui descendent, et rendent les creux sans issue plus rares.
- Se rappeler que la régularisation existe. Le chapitre 7 a montré que ce n'est pas le nombre de paramètres qui nuit à la généralisation, mais leur liberté.
- Conclure, et vérifier l'ordre des gestes. Garder de la marge. Rétrécir le modèle dès qu'il sur-apprend n'est pas le bon premier geste : pénaliser, ou collecter plus de données, viennent avant.
Un réseau à deux cellules repère les lampadaires défaillants d'une ville. Lesquels signale-t-il ?
Chaque lampadaire est décrit par deux attributs codés 0 ou 1 : vaut 1 s'il fait nuit selon le capteur de lumière, vaut 1 si la lampe est allumée. Un lampadaire est suspect quand les deux sont en désaccord : éteint la nuit, ou allumé le jour. Le réseau calcule :
Calculer la probabilité de défaillance pour = (1, 0), (0, 1), (1, 1) et (0, 0).
Par où commencer ? Calculer les deux cellules cachées pour chaque lampadaire avant le score de sortie.
Le corrigé
- Calculer la première cellule. vaut 1 pour (1, 0) seulement : la nuit, lampe éteinte.
- Calculer la seconde cellule. vaut 1 pour (0, 1) seulement : le jour, lampe allumée.
- Calculer le score de sortie. pour (1, 0) et (0, 1), pour (1, 1) et (0, 0).
- Passer à la probabilité. Environ 0,88 pour les deux lampadaires en désaccord, qui sont signalés, et 0,12 pour les deux autres.
- Vérifier en comparant au cas précédent. Les coins réunis ne sont plus les mêmes : ici (1, 0) et (0, 1), là (1, 1) et (0, 0). Mais c'est le même damier, et la même architecture le résout : une cellule par coin à isoler, une sortie qui les additionne. Seuls les poids des cellules ont changé.
Chapitre révisé en novembre 2026 · Une erreur dans ce chapitre ?
Dans la bibliothèque d'exercices
Compter les paramètres, et les deux cellules qui suffisent une fois sur trois.
- Compter les paramètres d'un réseauNiveau 1
- Deux cellules suffisent, et échouent une fois sur troisNiveau 2
- Plusieurs couches sans activation, une seule droiteNiveau 2
- Le gradient qui ne passe pas la vérificationNiveau 2
- Le gradient qui s'évanouit sur six couchesNiveau 3
- Un neurone qui note une parcelleNiveau 1