Dans l’un des chapitres les plus passionnants de son livre Why Machines Learn, Anil Ananthaswamy montre que les progrès de l’IA des dernières années défient la sagesse conventionnelle de la discipline.
La vertu de la simplicité
En théorie, il existe un compromis entre la précision d’un modèle sur ses données d’entraînement, et sa capacité à généraliser.
Admettons que vous disposiez d’une dizaine d’observations en deux dimensions (par exemple la taille et le poids de dix individus). Vous pouvez représenter ces observations dans un plan : taille en abscisse, poids en ordonnée.
À partir de ces données, votre objectif est d’apprendre à votre IA à prédire le poids d’un individu à partir de sa taille. Vous souhaitez que votre machine découvre la meilleure fonction f telle que f(taille) = poids.
Quelle est la “meilleure” fonction ? On peut envisager plusieurs réponses situées entre deux extrêmes.
À un extrême : la régression linéaire. Une simple droite, qui ne passe pas par tous les points (qui passe peut-être par aucun point), mais qui capture la tendance générale : plus on est grand, plus on est lourd, de manière approximativement proportionnelle.
À l’autre extrême : une courbe très sinueuse qui serpente à travers le nuage et passe exactement par chacun des dix points. Cette fonction vérifie f(taille) = poids pour chacun des dix individus de l’échantillon. Sur les données d’entraînement, son erreur est nulle.
Laquelle des deux est la meilleure ? Contre-intuitivement, plutôt la première !
La seconde fonction minimise certes l’erreur sur les données d’entraînement, mais elle obtient ce résultat en mémorisant le bruit présent dans ces données (les fluctuations aléatoires propres à cet échantillon particulier). Or ce bruit ne se reproduira pas à l’identique sur de nouveaux individus. La fonction sinueuse généralise donc mal en dehors des données d’entraînement. Imaginons par exemple que l’échantillon contienne un individu d’1m70 obèse. La courbe sinueuse, passant par ce point, en déduira que la fonction « poids en fonction de la taille » présente un pic autour d’1m70. Confrontée à un nouvel individu d’1m70, elle lui prédira un poids très élevé. On dit que la courbe sinueuse “sur-apprend”.
La droite linéaire, en revanche, « lisse » l’influence de ce cas particulier au profit de la tendance d’ensemble. Sur les données d’entraînement, elle commet une erreur importante, mais sur de nouveaux individus, ses prédictions restent raisonnables.
Évidemment, parfois les données contiennent des relations non-linéaires, et une fonction plus complexe (mais pas trop) est préférable à une fonction linéaire. Tout le défi du machine learning consiste (ou consistait - on y reviendra) à trouver le bon juste milieu.
La courbe en U
Avant de laisser la machine « découvrir » la bonne fonction, on doit lui spécifier le nombre de paramètres qu’elle pourra ajuster pendant l’entraînement. Si on lui impose de trouver une droite, on lui demande d’ajuster deux paramètres : la pente a et l’ordonnée à l’origine b (une fonction de la forme f(taille) = a × taille + b). La machine peut explorer toutes les droites possibles, mais seulement des droites. Si l’on autorise un polynôme de degré 2, on passe à trois paramètres: la machine peut explorer toutes les paraboles. Avec un polynôme de degré 10 (ou plus), on accède à des courbes capables de serpenter à travers à peu près n’importe quel nuage de dix points.
Au moment de spécifier la fonction, on a donc ce dilemme :
Trop peu de paramètres, et la fonction ne peut capturer les régularités des données. La machine sous-apprend.
Trop de paramètres, et la fonction peut épouser parfaitement les données d’entraînement, y compris leur bruit. La machine sur-apprend.
Cela donne une courbe en U : à mesure que l’on augmente le nombre de paramètres, l’erreur de prédiction sur les nouvelles données, qui part de haut (sous-apprentissage), diminue jusqu’à un minimum (la « zone Goldilocks »), puis remonte (sur-apprentissage). L’ingénieur doit choisir judicieusement le nombre de paramètres pour viser ce minimum.

Le nombre de neurones dans un réseau de neurones joue un rôle analogue au nombre de paramètres dans une fonction (un réseau de neurones n’est au fond qu’une fonction mathématique très complexe - le théorème d’approximation universelle énonce d’ailleurs qu’un réseau de neurones suffisamment grand peut approximer n’importe quelle fonction continue). Plus le réseau dispose de neurones (et donc de connexions, c’est-à-dire de paramètres ajustables), plus la classe de fonctions qu’il peut représenter est vaste, et plus il peut internaliser des relations complexes entre ses entrées et ses sorties.
Imaginons qu’on entraîne un réseau de neurones à classifier des images : il doit prédire, pour chaque image si elle représente une table ou une chaise. On lui fournit pour cela un échantillon de milliers d’images étiquetées.
Premier cas : le réseau est doté de milliards de neurones. Sa capacité de représentation est telle qu’il peut mémoriser chaque image de l’échantillon avec leurs moindres détails. Il apprend que si (comme c’est le cas sur la photo 347) il y a au pixel 867 un pot de Nutella, alors c’est une chaise (la photo 347 représente en effet une chaise). Il atteindra une erreur nulle sur les données d’entraînement, mais, confronté à une photo de table où il y a en arrière-plan un pot de Nutella, il prédira qu’il s’agit d’une chaise. Le réseau a appris des particularités accidentelles de l’échantillon plutôt que les caractéristiques essentielles d’une chaise.
Deuxième cas : le réseau est doté de peu de neurones. Il ne pourra apprendre qu’une règle grossière (par exemple : « si l’objet possède un dossier, c’est une chaise ; s’il est plat et large, c’est une table »). Cette règle marchera mieux sur les nouvelles images ! Paradoxalement, c’est parce qu’il manque de capacité que le petit réseau est contraint à l’intelligence : il doit comprimer l’information, dégager des régularités à un niveau d’abstraction élevé, identifier ce qui fait l’essence d’une chaise. Faute de pouvoir tout retenir, il est forcé de comprendre.
Telle était la sagesse conventionnelle du machine learning jusqu’au début des années 2010. Si l’on voulait capturer des relations très complexes dans les données, il fallait augmenter la taille du réseau ; mais en l’augmentant, on franchissait le seuil au-delà duquel le réseau se contentait de mémoriser ses données d’entraînement et perdait sa capacité à généraliser. C’était considéré comme une limitation fondamentale du deep learning.
Pour contourner ce problème, les chercheurs bricolaient, grâce à une technique appelée la “régularisation”. L’idée était de pénaliser la complexité du réseau afin de le contraindre à rester « simple » tout en disposant de nombreux neurones. On pouvait par exemple désactiver aléatoirement une fraction des neurones à chaque étape d’entraînement pour l’obliger à apprendre des représentations robustes, peu dépendantes d’un petit groupe de paramètres exploitant des particularités accidentelles de l’échantillon d’entraînement1.
Quand soudain, la pratique contredit la théorie
En 2015, Behnam Neyshabur et ses collègues, travaillant sur un réseau de neurones de classification de chiffres manuscrits, observent que lorsqu’on augmente la taille d’un réseau au-delà du point où l’erreur d’entraînement atteint zéro (au-delà du point où le réseau a déjà « appris par cœur » ses données), l’erreur de prédiction sur de nouvelles données, contre toute attente, continue de baisser. Même en corrompant 5% des données d’entraînement (en insérant du bruit), le réseau continue à généraliser correctement aux nouvelles images, et ne sur-apprend pas le bruit. Les chercheurs eux-mêmes ne parviennent pas à expliquer le phénomène : « Que se passe-t-il ici ? » demandent-ils. Au même moment, à la faveur de l’augmentation des capacités de calcul (et donc de la taille des modèles entraînables), d’autres chercheurs observent que des réseaux comportant autant ou plus de paramètres que d’exemples dans leurs données d’entraînement généralisent étonnamment bien.
En 2018, Mikhail Belkin et ses collègues proposent le phénomène de “double descente”. Leur idée : la courbe en U n’est pas fausse mais elle est incomplète. Si l’on continue d’augmenter le nombre de paramètres du réseau au-delà du seuil lui permettant de mémoriser parfaitement ses données, l’erreur de prédiction sur les nouvelles données, après être remontée, redescend, jusqu’à des niveaux inférieurs au minimum de la première partie de la courbe.
Pendant des décennies, on avait considéré qu’il fallait choisir : soit accepter une certaine erreur sur les données d’entraînement pour préserver la capacité de généralisation, soit obtenir une erreur d’entraînement nulle au prix de mauvaises prédictions sur les nouveaux cas. C’était l’un des principes fondamentaux du machine learning. On s’apercevait qu’il était faux.
L’autre double descente
Un phénomène jumeau raconte la même histoire, mais selon un autre axe.
Pour le comprendre, il faut d’abord rappeler une autre stratégie pour éviter le sur-apprentissage. Plutôt que de limiter le nombre de paramètres, on pouvait réduire la durée d’entraînement. L’idée : à taille de réseau constante, plus on entraîne longtemps, plus le réseau ajuste ses poids pour coller à ses données d’entraînement. Au début, il apprend les régularités générales, mais si on le laisse continuer, il finit par apprendre aussi le bruit. On tentait donc d’arrêter l’entraînement « au bon moment ».
On retrouvait la courbe en U, mais avec le temps d’entraînement en abscisse au lieu du nombre de paramètres : l’erreur de prédiction sur des nouvelles données diminuait, passait par un minimum, puis remontait.
Au début des années 2020, un accident fortuit vient remettre en cause cette sagesse. Une équipe d’OpenAI entraîne un petit réseau à effectuer des additions modulo-97. Un des chercheurs part en vacances en oubliant d’arrêter l’entraînement. Le réseau continue donc de s’entraîner bien au-delà du point où son erreur sur les données d’entraînement avait atteint zéro.
Au cours de ce processus, l’erreur du modèle sur de nouvelles données a d’abord diminué (le réseau apprenait), puis augmenté (le réseau sur-apprenait). Mais, et ici commence la terra incognita, l’erreur finissait par redescendre. Après une longue phase de sur-apprentissage, le réseau internalisait dans ses poids la logique sous-jacente à l’addition modulaire2. (Phénomène baptisé “grokking”, mot emprunté à la science-fiction).
Dans cette double descente aussi, la courbe en U classique est incomplète. Si l’on pousse l’entraînement au-delà du point où la théorie dicte d’arrêter, le réseau finit par accéder à une compréhension plus profonde.
Ces deux phénomènes de double descente ont ouvert la voie vers la scaling era (l’ère de la montée en échelle). Que l’on augmente la taille du réseau ou la profondeur de son entraînement, on peut continuer, presque indéfiniment, à augmenter les performances du modèle. D’où la course actuelle: des réseaux de plus en plus gros, nourris par de plus en plus de puissance de calcul et des jeux de données de plus en plus vastes. Avec à chaque fois des gains de performance qui ne semblent pas heurter de mur. C’est dans ce territoire que vivent les LLM: Chat GPT, Claude, Gemini, etc.
Le machine learning est devenu une science expérimentale
Pourquoi ce nouveau monde existe-t-il ? Pourquoi le sur-apprentissage ne menace-t-il pas la généralisation ? Aucune des explications avancées ne fait consensus.
Nous sommes entrés dans ce que le chercheur Mikhaïl Belkin, cité par Anil Ananthaswamy, désigne comme une “terra incognita”. Pendant des décennies, le machine learning a fonctionné comme une science déductive : on déduisait d’une théorie des conclusions pratiques. Désormais, les expériences précèdent la théorie. On observe que « ça marche », et l’on cherche ensuite (parfois sans succès) à comprendre pourquoi. Aujourd’hui, les LLM fonctionnent en pratique, mais pas en théorie.
Si les LLM fonctionnent sans qu’on sache bien pourquoi, alors notre capacité à anticiper leurs comportements émergents, leurs limites, leurs risques, est elle aussi empirique, pas déductive. Nous pouvons difficilement dériver d’une théorie ce qu’un modèle sera, ce qu’il saura faire ou non : il faut le découvrir, pour le meilleur ou pour le pire.
On pouvait aussi pénaliser les poids élevés pour contraindre le réseau à s’appuyer sur un faisceau de signaux plutôt que sur quelques détails isolés - ces détails ayant de bonnes chances d’être des particularités accidentelles de l’échantillon d’entraînement. L’intuition est la suivante :
Si le réseau découvre que sur les données d’entraînement, un détail est, par hasard, parfaitement corrélé avec la bonne réponse, le moyen le plus rapide d’exploiter cette corrélation est de gonfler le poids correspondant. Imaginons par exemple un neurone qui s’active quand il “voit” un certain motif de pixels (disons, le pot de Nutella au pixel 867). Si les poids associés à ce motif sont énormes, son activation va peser lourdement sur la prédiction finale “chaise”. En revanche, avec des poids petits, aucun neurone ne peut à lui seul faire basculer la décision. Le réseau est forcé de s’appuyer sur un faisceau de signaux faibles plutôt que sur un signal fort unique. Or un faisceau de signaux faibles a beaucoup plus de chances de correspondre à l’essence d’une chaise qu’à une coïncidence.
Autrement dit, des poids élevés sont souvent un indice que le réseau a trouvé des “raccourcis” (qu’il a sur-appris). Forcer les poids à rester faibles, c’est fermer au réseau la voie facile (la mémorisation par raccourcis) et l’obliger à emprunter la voie difficile (exploiter des régularités impliquant plusieurs indices, ce qui généralise mieux).
Dans notre exemple plus haut, la courbe sinueuse a en quelque sorte des “poids” très élevés : au moindre minuscule mouvement sur l’axe des abscisses, elle réagit avec de fortes variations sur l’axe des ordonnées. La droite, elle, ne peut faire ça; elle ne peut sur-apprendre. Pénaliser les gros poids interdit les réactions excessives à des détails particuliers.
En sondant les représentations internes du réseau, les chercheurs ont découvert qu’il avait internalisé dans ses poids une représentation équivalente à une fonction trigonométrique, transformant l’addition modulaire en opération de rotation sur un cercle. Bien qu’il n’ait jamais rencontré de trigonométrie dans ses données d’entraînement, le modèle avait reconstruit la structure géométrique régissant le comportement de l’addition modulaire. Il devenait alors capable de réaliser, sans jamais se tromper, des additions modulaires sur des cas jamais rencontrés durant l’entraînement.




