Leçon 2 — Pourquoi la profondeur
Le mot « profond » de deep learning désigne une chose précise : le nombre de couches empilées. Reste à savoir pourquoi empiler change quoi que ce soit, puisqu'un théorème ancien affirme qu'une seule couche assez large suffit en principe.
Le paradoxe de départ
Le théorème d'approximation universelle, établi à la fin des années 1980, dit qu'un réseau à une seule couche cachée, pourvu qu'elle contienne assez de neurones, peut approcher n'importe quelle fonction continue avec la précision souhaitée.
En principe, la profondeur est donc inutile. En pratique, elle est décisive. La contradiction se résout en remarquant ce que le théorème ne dit pas :
- Il ne dit pas combien de neurones il faudrait. La réponse est souvent un nombre astronomique, croissant exponentiellement avec la complexité du problème.
- Il ne dit pas que ces poids sont trouvables par l'entraînement. Exister et être atteignable par descente de gradient sont deux choses différentes.
- Il ne dit rien de la quantité de données nécessaire.
Autrement dit : un réseau plat peut tout représenter, et un réseau profond peut l'apprendre. C'est la différence qui compte.
Ce que la profondeur produit réellement
Voici l'observation qui a convaincu la communauté, et elle est empirique avant d'être théorique. Quand on examine un réseau de vision entraîné, couche par couche, on découvre une progression très régulière.
Personne n'a programmé cette hiérarchie. Elle a émergé de l'entraînement. On n'a jamais dit au réseau « commence par les contours » : il l'a découvert parce que c'est la façon la plus économique de résoudre le problème avec les ressources dont il dispose.
C'est ce qu'on appelle l'apprentissage de représentations, et c'est la véritable rupture apportée par le deep learning. Là où le machine learning classique exigeait qu'un humain décrive les variables pertinentes — le feature engineering de la leçon 3 du cours ML —, le réseau profond construit lui-même ses descriptions intermédiaires.
L'économie est frappante. Un détecteur de contours appris à la couche 2 est réutilisé par toutes les couches suivantes, pour tous les objets. Un réseau plat devrait réapprendre l'équivalent séparément pour chaque catégorie.
Ces représentations intermédiaires ne sont pas spécifiques à la tâche d'origine. Un réseau entraîné à distinguer mille catégories d'objets a appris, au passage, à décrire des images en général. On peut donc reprendre ces couches et les réutiliser pour un problème complètement différent, avec très peu de données. C'est exactement le transfer learning de la leçon 5, et c'est ce qui rend le deep learning accessible à des équipes sans data center.
Ce qui bloquait, avant 2012
Si la profondeur est si utile, pourquoi les réseaux profonds n'ont-ils pas fonctionné pendant vingt ans ? Parce qu'on ne savait pas les entraîner. Trois obstacles, tous techniques, tous résolus.
Le gradient qui s'évanouit
C'est l'obstacle principal. La rétropropagation, décrite dans le cours de mathématiques, remonte l'erreur de la sortie vers l'entrée en multipliant les pentes couche après couche.
Si chaque facteur est inférieur à un — ce que produisaient les fonctions sigmoïdes utilisées à l'époque —, le produit devient minuscule après vingt couches. Les premières couches reçoivent un gradient pratiquement nul : elles n'apprennent plus rien. On avait un réseau profond dont seule la partie haute apprenait.
Le symptôme inverse existe aussi : si les facteurs dépassent un, le produit explose et l'entraînement divergeait.
Les trois inventions qui ont débloqué la situation
ReLU (leçon 1). En laissant passer les valeurs positives sans les écraser, elle ne réduit pas le gradient. Ce simple remplacement de la sigmoïde a été un déclencheur.
La normalisation par lots. À chaque couche, on recentre et remet à l'échelle les valeurs qui circulent. Cela maintient les grandeurs dans une plage saine tout au long du réseau, stabilise l'entraînement, et autorise des taux d'apprentissage plus élevés — donc un entraînement plus rapide.
Les connexions résiduelles. L'idée, publiée en 2015 avec l'architecture ResNet, est d'une élégance rare : on ajoute un raccourci qui permet à l'information de sauter par-dessus une ou deux couches. Le gradient dispose alors d'un chemin direct vers les couches basses, sans traverser toutes les multiplications.
L'effet a été spectaculaire : on est passé de réseaux d'une vingtaine de couches, difficiles à entraîner, à des réseaux de plus de cent couches qui s'entraînent sans difficulté particulière. Les connexions résiduelles sont aujourd'hui présentes dans pratiquement toutes les architectures, transformeurs compris.
Combien de couches, alors ?
La question pratique. Il n'existe pas de règle universelle, mais des ordres de grandeur stables selon le domaine.
| Type de problème | Profondeur usuelle |
|---|---|
| Données tabulaires (si vraiment un réseau) | 2 à 4 couches — au-delà, aucun gain |
| Classification d'images de petite taille | 10 à 20 couches |
| Vision à l'état de l'art | 50 à 200 couches |
| Modèles de langage | 12 à 100 blocs de transformeur |
Ajouter des couches augmente le nombre de paramètres, donc l'appétit en données, le temps d'entraînement et le risque de surapprentissage. Sur un jeu de données modeste, un réseau plus profond est souvent moins bon. Et sur des données tabulaires, la question ne se pose généralement pas : un gradient boosting fait mieux, plus vite, en restant explicable.
Ce que la profondeur ne résout pas
Trois limites subsistent, et il vaut mieux les connaître.
Elle ne remplace pas les données. Un réseau profond sur trois cents exemples surapprendra, quelle que soit son architecture.
Elle aggrave l'opacité. Plus il y a de couches, moins on peut relier une décision à une explication lisible. On peut visualiser les zones qui ont pesé, on ne peut pas produire de règle équivalente.
Elle ne crée pas de généralisation hors domaine. Un réseau très profond reste incapable d'extrapoler au-delà de son expérience : il interpole finement à l'intérieur de ce qu'il a vu.
En trois phrases
Un réseau à une seule couche peut en théorie tout représenter, mais un réseau profond peut l'apprendre avec un nombre de paramètres et d'exemples réaliste : la profondeur fait émerger une hiérarchie de représentations, des contours aux objets, que personne n'a programmée. Cette hiérarchie est réutilisable pour d'autres tâches, ce qui fonde le transfer learning et rend le domaine accessible sans data center. Ce qui bloquait avant 2012 était le gradient qui s'évanouit sur les couches basses, résolu par ReLU, la normalisation par lots et les connexions résiduelles.
Suite — Leçon 3 : les convolutions, l'architecture des images →