Accueil – Chapitre approfondi 5

À la fin de ce chapitre, tu sauras : pourquoi ajouter beaucoup de couches ne rend pas toujours un réseau meilleur, ce que sont les gradients qui disparaissent, les gradients qui explosent et le gradient instable, comment la saturation des neurones sigmoïdes aggrave ces problèmes, et quelles grandes idées sont utilisées en pratique pour améliorer l’entraînement des réseaux profonds.

Bienvenue dans le chapitre approfondi 5. Dans le chapitre approfondi 4, tu as vu qu’en théorie un réseau de neurones peut approximer presque n’importe quelle fonction. Ici, on regarde le revers de la médaille : en pratique, entraîner des réseaux très profonds peut être difficile. On va voir, avec des expériences simplifiées et des petits modèles jouets, pourquoi certains réseaux apprennent vite alors que d’autres semblent « bloqués ».

Parcours du chapitre (en une image)

Profondeur Gradients ⬇ / ⬆ Instabilité Saturation σ Pistes pratiques

En résumé : ce chapitre explique pourquoi les réseaux profonds sont puissants mais difficiles à entraîner, en montrant les phénomènes de gradients qui disparaissent, qui explosent, et les liens avec la saturation et les choix de modèle.

Lexique

Objectif : connaître les mots importants : gradient qui disparaît, gradient qui explose, gradient instable, couche précoce / tardive, saturation, plateau.

Couche précoce / tardive
Dans un réseau profond, les couches proches de l’entrée sont dites « précoces » ; celles proches de la sortie sont dites « tardives ».
Gradient qui disparaît
Quand on remonte couche par couche, la taille du gradient devient de plus en plus petite (proche de 0). Les premières couches reçoivent alors un signal d’apprentissage très faible.
Gradient qui explose
À l’inverse, le gradient peut devenir très grand dans les premières couches, ce qui rend les mises à jour instables (poids qui changent énormément d’un pas à l’autre).
Gradient instable
Le gradient n’est ni calmement stable ni toujours de la même taille : il a tendance à disparaître ou exploser en remontant, selon les couches. Les différentes couches apprennent alors à des vitesses très différentes.
Saturation
Pour certaines activations (comme la sigmoïde), quand z est très grand ou très petit, la sortie est « bloquée » près de 0 ou 1 et la dérivée σ′(z) est presque nulle : le neurone change très peu même si on modifie les poids.
Plateau
Zone du paysage de la fonction de coût où les dérivées sont très petites sur une grande région : la descente de gradient avance alors très lentement.

Profondeur : promesse et surprise

Objectif : relier l’idée « plus de couches = plus de puissance » avec le fait qu’en pratique, ces couches n’apprennent pas toujours au même rythme.

Dans les chapitres précédents, tu as vu que des réseaux avec plusieurs couches cachées peuvent construire des hiérarchies de concepts (pixels → traits → formes → objets). On pourrait donc penser qu’ajouter des couches améliore toujours la performance. En pratique, ce n’est pas si simple : certaines couches apprennent vite, d’autres presque pas.

Expériences MNIST (version vulgarisée). On peut comparer plusieurs réseaux pour reconnaître les chiffres :

  • Un réseau [784, 30, 10] : 1 couche cachée de 30 neurones.
  • Un réseau [784, 30, 30, 10] : 2 couches cachées de 30 neurones.
  • Un réseau [784, 30, 30, 30, 10], puis [784, 30, 30, 30, 30, 10] : 3 ou 4 couches cachées.

Avec des hyperparamètres fixes, on observe que la précision n’augmente pas forcément quand on ajoute des couches : au-delà d’une certaine profondeur, le réseau plus profond n’est pas vraiment meilleur que le réseau peu profond. Une des raisons vient justement des gradients qui disparaissent ou explosent, que tu vas explorer maintenant.

Profondeur et vitesse d’apprentissage (simplifiée)

Nombre de couches cachées : 2

Facteur moyen par couche (0,5 = les couches près de l’entrée apprennent deux fois plus lentement à chaque étape que les dernières) : 0.80

En résumé : plus de couches donnent plus de puissance théorique, mais les premières couches peuvent apprendre beaucoup plus lentement que les dernières si le gradient n’est pas bien contrôlé.

Gradients qui disparaissent

Objectif : comprendre que le gradient dans les premières couches est le produit de nombreux petits facteurs et peut devenir très petit.

On imagine un petit réseau « en chaîne » avec un neurone par couche. En sortie, une petite variation de la fonction de coût provoque une variation du gradient. En remontant couche par couche, ce gradient est multiplié par des facteurs du type w · σ′(z). Si, en valeur absolue, chaque facteur est un peu plus petit que 1, alors le produit de beaucoup de facteurs devient très petit : c’est un gradient qui disparaît.

Cas jouet : un neurone par couche. Pour un réseau avec un neurone dans chaque couche cachée, on peut montrer que le gradient d’un biais en première couche s’écrit comme un produit :

∂C/∂b₁ ≈ σ′(z₁) · w₂ σ′(z₂) · w₃ σ′(z₃) · … · w_L σ′(z_L) · (∂C/∂a_L)

Ce produit contient un terme w_j σ′(z_j) pour chaque couche. Si la sigmoïde est utilisée, on a en plus que |σ′(z_j)| ≤ 1/4. Si les poids ne sont pas trop grands, alors la plupart des facteurs ont une valeur bien inférieure à 1, et le produit total devient minuscule : les premières couches reçoivent presque aucun signal d’apprentissage.

Vecteurs δ et vitesse d’apprentissage. Dans un vrai réseau, on note souvent δl l’« erreur » de la couche l. La norme ‖δl‖ donne une idée de la vitesse à laquelle la couche l apprend : plus ‖δl‖ est grand, plus les biais et poids de cette couche changent vite. Dans des expériences sur MNIST, on observe que ‖δ1‖ (couche la plus proche des pixels) peut être 100 fois plus petit que ‖δL−1‖ (couche la plus proche de la sortie). Les premières couches restent alors presque figées pendant que les dernières s’ajustent.

Simuler un gradient qui disparaît (modèle simplifié)

Nombre de couches L : 4

Facteur moyen par couche |f| = |w·σ′(z)| : 0.50

Gradient en sortie = 1, gradient en entrée ≈ 0.00

En résumé : si chaque couche multiplie le gradient par un facteur légèrement inférieur à 1, alors le gradient en première couche devient très petit : les premières couches apprennent peu ou pas.

Gradients qui explosent

Objectif : voir que le phénomène inverse peut aussi arriver : des gradients qui grandissent très vite en remontant les couches.

Si, au lieu d’être un peu plus petits que 1, les facteurs |w · σ′(z)| sont un peu plus grands que 1, le produit couche après couche devient énorme. Les poids des premières couches peuvent alors changer très vite, ce qui rend l’apprentissage instable (la loss « explose », les prédictions deviennent incohérentes).

On peut construire un exemple artificiel où tous les poids valent 100 et où les biais sont choisis de façon à garder z ≈ 0 (donc σ′(z) ≈ 1/4). Dans ce cas, chaque facteur w·σ′(z) vaut environ 25. En multipliant plusieurs fois 25, le gradient devient gigantesque très vite : on parle de gradient qui explose.

Simuler un gradient qui explose

Nombre de couches L : 4

Facteur moyen par couche f (> 1) : 1.5

Gradient en sortie = 1, gradient en entrée ≈ 0.00

En résumé : si chaque couche amplifie un peu le gradient, le produit de tous ces facteurs peut devenir immense, rendant les mises à jour de poids ingérables.

Le gradient instable : un message qui se déforme

Objectif : comprendre que, sans précautions particulières, le gradient dans un réseau profond a tendance à disparaître ou exploser d’une couche à l’autre.

Dans un vrai réseau, les facteurs multipliés couche par couche ne sont pas tous < 1 ou tous > 1. Ils peuvent varier un peu au-dessus ou en dessous de 1, selon les poids et les activations du moment. Le gradient qui remonte de la sortie vers l’entrée est donc le produit de beaucoup de facteurs différents. Sans mécanisme particulier, il est très peu probable que tous ces facteurs se compensent juste comme il faut pour que toutes les couches apprennent au même rythme.

On peut voir cela comme un message qu’on fait passer de personne en personne en chuchotant : à chaque étape, le message est un peu amplifié ou atténué. Au bout d’un grand nombre d’étapes, il est rare que le message reste clair : il devient très faible, ou au contraire complètement déformé. C’est le cœur du problème de gradient instable dans les réseaux profonds.

Simuler un gradient instable (facteurs aléatoires)

Nombre de couches : 6

Intervalle des facteurs (fmin, fmax) : 0.70 à 1.30


            
          

En résumé : plus un réseau est profond, plus il est difficile de garder un gradient « bien calibré » qui fasse apprendre toutes les couches au même rythme sans disparaître ni exploser.

Saturation des sigmoïdes et gradients faibles

Objectif : relier la forme de la sigmoïde σ et de sa dérivée σ′(z) au fait que les gradients deviennent très petits dans les ailes de la courbe.

Dans le chapitre approfondi 1, tu as vu que la sigmoïde σ(z) « écrase » ses entrées entre 0 et 1, et que sa dérivée vaut σ′(z) = σ(z)(1−σ(z)). Pour des z très grands positifs ou très grands négatifs, la sortie est proche de 1 ou 0, et σ′(z) est presque 0. Même si le neurone se trompe beaucoup, le terme de gradient contient σ′(z) et se retrouve très faible : le neurone est alors presque « figé ».

Si on initialise les poids avec une variance trop grande, ou si plusieurs couches empilent des valeurs de plus en plus grandes, les z des couches cachées tombent souvent dans ces zones saturées. La dérivée σ′(z) multipliée couche après couche contribue alors fortement au phénomène de gradient qui disparaît.

Regarde σ(z) et σ′(z)

z = 0.0

σ(z) ≈ 0.50   σ′(z) ≈ 0.25

En résumé : si beaucoup de neurones sigmoïdes sont saturés (σ′(z) ≈ 0), alors les gradients deviennent minuscules en remontant le réseau et les couches précoces apprennent très lentement.

Pistes pour mieux entraîner les réseaux profonds

Objectif : découvrir quelques grandes idées utilisées pour limiter les gradients qui disparaissent ou explosent.

Les chercheurs et ingénieurs ont développé plusieurs astuces pour rendre l’entraînement de réseaux profonds plus fiable :

  • Autres activations (tanh, ReLU, etc.) : elles saturent moins ou différemment que la sigmoïde et gardent souvent des gradients plus forts.
  • Meilleure initialisation des poids : adapter la variance des poids au nombre d’entrées du neurone pour éviter des z trop grands dès le départ.
  • Normalisation des activations : garder les valeurs intermédiaires dans une zone raisonnable pour limiter les saturations.
  • Raccourcis (connexions directes entre couches éloignées) : permettre au gradient de « sauter » certaines couches quand c’est utile.

Choisis une stratégie et lis son effet typique

Stratégie :

En résumé : même si les gradients sont naturellement instables dans les réseaux profonds, on peut concevoir des architectures et des règles d’entraînement qui rendent l’apprentissage beaucoup plus stable.

Réseaux profonds en pratique

Objectif : relier les difficultés d’entraînement aux réseaux profonds utilisés aujourd’hui pour les images, le texte, etc.

Les réseaux profonds modernes (réseaux convolutionnels pour les images, architectures avec attention pour le texte, etc.) sont conçus pour profiter de la puissance de la profondeur tout en limitant les problèmes de gradients instables. Ils combinent souvent plusieurs idées : meilleures activations, initialisation soignée, normalisation, raccourcis, régularisation, choix de taux d’apprentissage, etc.

On peut voir le chapitre 4 (universalité) comme une garantie de puissance théorique, le chapitre 3 comme une boîte à outils pour améliorer l’apprentissage, et ce chapitre comme une explication des difficultés propres à la profondeur. Ensemble, ils donnent une image plus complète du deep learning.

Quels réseaux ont le plus de chances d’apprendre correctement ?

Scénario :

En résumé : en combinant de bonnes idées d’architecture et d’optimisation, on peut tirer parti des réseaux profonds malgré les difficultés liées au gradient.

Exercices

Objectif : s’entraîner à reconnaître les situations de gradient qui disparaît, qui explose, et à relier cela à la saturation et aux choix de modèle.

Exercice 1 – Produit de facteurs

Énoncé : on considère un réseau où, en remontant une couche, le gradient est multiplié par un facteur moyen f. Pour chaque couple (L, f), indique si tu t’attends à un gradient qui disparaît, qui explose ou qui reste raisonnable, puis vérifie avec le widget.

Teste tes hypothèses

Nombre de couches L :   Facteur moyen f :

Gradient en entrée ≈ 0.00

Exercice 2 – Vanishing ou exploding ?

Énoncé : pour chaque situation, coche si tu penses qu’il s’agit plutôt d’un gradient qui disparaît ou d’un gradient qui explose :

  • Sit. A : ‖δ1‖ ≈ 10⁻⁴ et ‖δL−1‖ ≈ 1.
  • Sit. B : ‖δ1‖ ≈ 50 et ‖δL−1‖ ≈ 0.5.

Choisis ton diagnostic

Sit. A :

Sit. B :

Exercice 3 – Activation différente, problème différent ?

Énoncé : on a vu que pour la sigmoïde, |σ′(z)| ≤ 1/4. Imagine une activation dont la dérivée peut valoir parfois 5 ou 10. Penses‑tu que cela supprime automatiquement le problème de gradient instable ? Justifie ta réponse qualitativement.

Donne ton intuition puis regarde un indice

Exercice 4 – Un produit |w σ′(wa+b)|

Énoncé (version simplifiée d’un exercice avancé) : on considère le produit |w σ′(wa+b)| pour un neurone sigmoïde. On sait que |σ′(z)| ≤ 1/4. Explique pourquoi il faut que |w| soit au moins modérément grand pour espérer que |w σ′(wa+b)| ≥ 1, puis pourquoi, même dans ce cas, seules certaines valeurs de a rendent ce produit grand.

Joue avec les paramètres

w =   a =   b =

|w σ′(wa+b)| ≈ 0.00

Exercice 5 – Choisir une stratégie

Énoncé : pour chaque situation, choisis une action qui va dans le bon sens parmi : « changer d’activation », « revoir l’initialisation », « ajouter une normalisation », « ajouter des raccourcis ».

Associe une stratégie

  1. Les couches proches de l’entrée reçoivent presque toujours z très grands en valeur absolue.
  2. On soupçonne des saturations dès le début de l’entraînement avec une initialisation N(0,1) très large.
  3. Le réseau est très profond et les premières couches semblent ne rien apprendre du tout.

En résumé : ces exercices t’aident à reconnaître les gradients qui disparaissent ou explosent, à relier cela à la saturation de σ et au produit de nombreux facteurs, et à imaginer des stratégies possibles pour améliorer un réseau profond.

Quiz

Objectif : vérifier que tu as compris les notions de gradients qui disparaissent/explosent, d’instabilité et de saturation, ainsi que les grandes idées pour y faire face.

Choisis un quiz :

Fiche enseignant

Fiche pédagogique pour le chapitre approfondi 5 : objectifs, niveau, durée, pistes de correction des exercices et idées d’activités autour des réseaux profonds et des gradients instables.