31 Commentaires
Avatar de User
Avatar de Samuel

Merci pour cet article.

Lorsqu'on parle de "l'ingrédient clé dans cette affaire", (la pénalité qui est appliquée sur les valeurs des poids pendant l’apprentissage), s'agit-il d'un terme de régularisation appliqué à la fonction de coût ?

Si oui, serait-il envisageable de réduire la durée d'apprentissage de la généralisation en jouant avec ce terme de régularisation (pénaliser plus fort dès le début) ?

Expand full comment
Avatar de Science étonnante

Oui en effet c'est une pénalité de type L2 (dans mon code via l'algo AdamW), et on peut jouer avec ce paramètre. Si on y va trop fort au début, le modèle n'arrive pas vraiment à apprendre.

Par contre j'ai un peu essayé de faire l'inverse : ne pas pénaliser trop au début pour le laisser tranquillement "apprendre par coeur", puis peu à peu augmenter la pression pour le forcer à découvrir des solutions plus parcimonieuses et donc plus généralisables.

Mais il faudrait regarder de façon plus systématique !

(Certains papier essayent aussi des pénalités et des taux d'apprentissage différents sur la partie "embedding" et sur la partie "prédicteur")

Expand full comment
Avatar de Elouan

En attendant David je me permets de te répondre :

Il y a généralement (à ma connaissance) deux méthodes pour ça. La première et celle que j'ai le plus vue c'est effectivement ajouter une fonction de l'amplitude des poids (leur moyenne, leur somme, ou autre chose) à la fonction de coût (ici une cross-entropy pour du multi-classes). Appeler backward sur cette double loss va bien prendre en compte la taille en poids du réseau. La seconde serait de normaliser systématiquement les poids après chaque époque. Ca se fait peu mais produit parfois de bons résultats.

Pour ta seconde question : au départ le modèle va très fortement se tromper sur ses prédictions, tellement que sa loss va être écrasée par la cross-entropy (l'erreur de prédiction), peu importe la pénalisation que tu mets sur la taille du réseau. Pour compenser la partie "classif", il faudrait vraiment une pénalisation d'amplitude des poids énormes, si grande en fait que probablement le réseau ne pourrait même pas apprendre !

Ca n'est que lorsque le réseau se trompe moins et donc que la partie classif de la loss diminue que la pénalité intervient, d'où le grokking une fois à 100% lorsque le réseau n'est que pénalisé par son poids et qu'il doit se simplifier.

Expand full comment
Avatar de Underskore

Merci beaucoup pour cet article, chercher plus que la simple vulgarisation et reproduire le résultat pour mieux le comprendre et l'expliquer/l'expliciter c'est vraiment puissant comme vecteur pédagogique.

Sinon pour le grokking, j'aurai une proposition de traduction, ce serait "déclic". Ça véhicule bien l'idée d'un moment où la compréhension change d'un état incorrect ou incomplet à un état de compréhension plus profonde.

Expand full comment
Avatar de Science étonnante

Ah oui, très bien vu l'idée du déclic !!

Expand full comment
Avatar de Jonathan Desurmont

d’un point de vue neurobiologique, c’est un peu la myelinisation !

Expand full comment
Avatar de Guillaume

C'est passionnant ! Cela dit je me dis que l'exemple présenté contient peut-être un biais:

Si je ne m'abuse, l'addition modulaire est une opération symétrique, donc sélectionner aléatoirement 50% des données pour constituer le jeu d'entraînement revient à sélectionner pas loin de 100% des données à une permutation près.

Il serait peut-être intéressant de voir comment cela se comporte en sélectionnant le jeu d'entraînement pas aléatoirement (par exemple ne jamais avoir de permutation dans les ensembles) pour voir comment cela se comporte (ça permettrait peut-être de faire émerger des choses sur la manière dont le réseau fait émerger un modèle... Après j'y connais rien... :) )

Expand full comment
Avatar de Science étonnante

En effet j'ai pris l'addition pour ne pas me compliquer la vie, mais par exemple dans le papier d'OpenAi dont j'ai montré la courbe, c'est une division modulaire (même si celle-ci a peut-être une symétrie plus subtile ?)

Expand full comment
Avatar de CapeItalist

J'ai adoré l'article, j'ai lu cet autre article sortie en début d'année et qui donne une explication au fait que la régularisation L2 permette le grokking. J'ai trouvé ça vraiment interessant car si l'article dit vrai, cela viendrait uniquement d'une erreur de précision au niveau des nombres à virgule flottantes : https://arxiv.org/abs/2501.04697.

Expand full comment
Avatar de Science étonnante

Formidable ! Ce papier m'a l'air super intéressant !!

Expand full comment
Avatar de Nicolas

Bonjour David, 1 an et demi après, quoi de neuf et aussi étonnant dans le domaine svp?

Merci pour cet article génial... êtes vous devenu encore plus anthropomorphe depuis, surtout avec ChatGPT en mode vocal, étonnant aussi? (Gemini traîne derrière, aussi...étonnamment... bizarre.)

Nous avons enfin un miroir de notre cerveau, si difficile à étudier (malgré le projet européen de cartographique complète, nous n'avons qu'un mm3 de cerveau de souris enfin modélisé avec son fonctionnement à ce jour...): on peut peut-être enfin "jouer" pour, comme un enfant se regardant dans la glace faire ses cabrioles et comprendre ce qu'il ne peut voir, grimaces etc., découvrir comment nous réfléchissons, apprenons, etc. Période fantastique! Encore plus quand ces boîtes seront embarquées dans un robot qui aura une expérience physique proche de la nôtre plutôt que dans un monde irréel qu'est internet. (D'ailleurs je suis surpris et frustré de voir que les ChatGPT et consorts font des codes et apps qu'ils ne voient même pas, donc ne peuvent déboguer si je ne leur dit pas quoi. Pourquoi?)

Il y a 30 ans j'imaginais notre petite cerveau humain comme une boîte noire de réseaux de réseaux de neurones (inter...nets? ;D) où chaque concept est un réseau de neurones interconnectées, connecté lui-même à d'autres concepts-réseaux (roi-homme-femme-reine comme dit ici par exemple), voisins ou parents ou enfants etc. Un énorme graphe de graphes avec propagation d'influx nerveux, et... les influx/input premiers viennent de nos sens. Ces sens amènent des sensations du réel, cohérent, passent par des zones différentes (aires cérébrales du toucher, vue, ouïe, etc.) et se retrouvent "au milieu" en activant le sens, la "simulation" du réel.

Si je vous dit "j'ai mangé une pomme verte" vous avez je-mange-passé-pomme-vert: 5 informations, qui activent d'autres idées, flux neuronaux, questions chez vous: "quand, ce matin ou hier?" par exemple. Mais si je vous dit "Ma mange chaise vole bleu" vous comprenez une construction (sujet verbe complément...) qui semble correcte mais pas le sens... (un peu comme quand vous apprenez une langue étrangère... vous connaissez chaque mot mais l'ensemble vous est inaccessible: une expression locale sans doute?). ça n'a pas de "sens".

Ce genre d'expérience de pensée à la "frontière" intelligible/inintelligible aide à appréhender ce qui marche et ce qui ne marche pas dans notre petite boîte noire crânienne...: effectivement ici, une "chaise" ne vole pas, le réseau de neurones "chaise" n'a jamais eu de lien avec celui "voler" ni "mange. L'influx nerveux perd en cohérence, ça part dans tous les sens, vous ne trouvez pas quoi dire, de suite, de réponse, les flux nerveux n'arrivent pas à se retrouver quelque part pour activer un autre paquet de neurones, graphe, cohérent, aboutissant à une suite, vous êtes perdu. Et pourtant, l'imagination, elle, peut concevoir qu'une chaise vole, et qu'on mange une chaise, mais c'est une création d'un nouveau graphe d'informations, pas une réactivation d'un graphe pré-existant...

On peut alors se poser quelques questions:

- qu'est ce qu'un "graphe" minimal, le "neurone"..ou le "synapse"? Comme un "bit", rien au sens "intelligence, juste un support de fonctionnement? Quelle est la taille minimale d'une "information", 10 ou un million de neurones, combien de synapses activées, combien de relation avec d'autres "informations", etc.?

- quand on dort, nos sens sont coupés du réel, il n'y a plus d'influx provenant d'un système cohérent qu'est le réel... que se passe t-il alors? Des influx "libres" continuent ils de se propager anarchiquement, activant et créant divers concepts, informations plus ou moins cohérentes et parfois totalement incohérentes, jusqu'à se retrouver entre elles et faire une seule information, un "rêve", qui semble tellement réel ou au contraire délirant? ==> et... une IA, un LLM, un réseau de neurones rêve t-il donc de même quand on coupe l'input, en lui laissant du jus (courant e-)? Que dit-elle à son réveil, à quoi a t-elle rêvé? Peut-être faut il justement plusieurs inputs , sens, pour qu'ils entrent en incohérence, or nos LLM aujourd'hui n'en ont pas hors notre entrée clavier?... J'attends les robots humanoïdes, on va être étonnés par leurs hallucinations ou rêves... ;-)

Expand full comment
Avatar de Pierre

Très intéressant.

D’un côté c’est passionnant de découvrir de tels phénomènes et ça laisse augurer de nouvelles capacités à découvrir mais de l’autre ça met clairement en évidence le manque criant de théorie sur un sujet qui remue la terre entière. On est un peu frustré que sur un système aussi simple (des non-linéarités, des additions pondérées et de la rétropropagation du gradient ?) on ne puisse pas s’appuyer sur la moindre théorie pour prévoir son comportement. Il faut le découvrir progressivement en l’observant fonctionner comme le myrmécologue qui observe ses fourmis. Il faut espérer que les résultats montrés ici vont dans le sens d’améliorer nos connaissances.

Expand full comment
Avatar de Olivier Bailleux

Fascinant. Le potentiel des réseaux de neurones est aussi fascinant que la manière dont ils le développent. On prend une architecture assez régulière dans laquelle la fonction à "enseigner" peut-être implémentée. Et le processus d'apprentissage réussi à trouver le chemin évolutionnaire conduisant à une implémentation, un câblage de cette fonction. Qui plus est de manière gloutonne, si je puis me permettre de qualifier ainsi la rétro propagation du gradient. Et, cerise sur le gâteau, le processus d'apprentissage comporte une transition de phase.

Ça me donne envie de comparer la complexité de Kolmogorov (CK) de la fonction à apprendre (extrêmement faible), la CK de l'architecture ou du réseau de neurone vierge (faible), et la CK du réseau de neurone instruit (?). Et de me demander si le phénomène se produit aussi lors de l'apprentissage de fonctions dont la CK est beaucoup plus élevée que celle de l'architecture, comme dans ChatGPT.

Nous sommes en train de vire l'avènement d'une nouvelle informatique qui simule un environnement d'apprentissage pour produire des circuits analogiques sans doute irréductibles au sens de Wolfram, incompréhensibles, ayant des capacités de généralisation défiant l'entendement et qu'on étudie comme on étudie des systèmes physiques, tout en entendant dans le poste de radio qu'un informaticien spécialiste d'IA connexionniste vient de se voir attribuer le prix Nobel de physique. Il se passe des choses complètement dingues. J'ai découvert l'informatique en 1983. J'ai vu toutes les évolutions depuis, et je n'en reviens toujours pas.

Expand full comment
Avatar de bedecarrats

merci pour cet article qui m’a permis de ”grokker” ce qu’est un embedding et de découvrir cette capacité étonnante d’auto structuration de votre modèle de neuron imagerie!

c’est fascinant!

Expand full comment
Avatar de Alan Bryde

C'est passionnant, vous êtes tellement dévoué à transmettre la science aux autres que mes remerciements n'égaleront jamais la patience et le sens du service que vous manifestez ici ! Un immense merci ! Juste quelques précisions pour ceux qui comme moi ne font pas du ML toute la journée.

Les itérations de bases représentées pas le concept d'époque (Epochs ou Iterations) sont des répétitions d'étapes de l'optimization effectuée pour arriver aux bons paramètres dans les fonctions logit (ou autres représentations lisses de phénomènes décisionnels binaires). Spécifiquement voici la description de ce qui se passe, courtesy of ChatGPT:

Dans le contexte de l'entraînement de modèles de Deep Learning, une "époque" fait référence à un passage complet à travers l'ensemble de données d'entraînement. Lorsque vous optimisez un modèle de Deep Learning, vous effectuez généralement les étapes suivantes à chaque époque :

Diviser l'ensemble de données : Avant le début de l'entraînement, vous divisez généralement votre ensemble de données en au moins deux parties : l'ensemble d'entraînement et l'ensemble de validation. Dans certains cas, vous pouvez également avoir un ensemble de test séparé. Cette division est généralement effectuée une seule fois, pas à chaque époque.

Traitement par Mini-lots : Pendant chaque époque, l'ensemble d'entraînement est divisé en sous-ensembles plus petits appelés mini-lots. La taille de ces mini-lots est un hyperparamètre appelé "taille de lot". Si vous avez un ensemble d'entraînement de 1000 échantillons et une taille de lot de 100, vous aurez 10 mini-lots par époque.

Passage Direct (Forward Pass) : Pour chaque mini-lot, le modèle effectue un passage direct où il calcule les prédictions de sortie en fonction de l'état actuel des paramètres du modèle (poids et biais).

Calcul de la Perte : Après le passage direct, le modèle calcule la perte, qui est une mesure de l'écart entre les prédictions du modèle et les valeurs cibles réelles. La fonction de perte utilisée peut varier en fonction de la tâche spécifique (par exemple, l'erreur quadratique moyenne pour la régression, la perte entropique croisée pour la classification).

Passage Inverse (Rétropropagation) : Le modèle calcule les gradients de la perte par rapport aux paramètres, ce qui indique comment les paramètres doivent être ajustés pour minimiser la perte.

Mise à Jour des Paramètres : En utilisant un algorithme d'optimisation (comme SGD, Adam, etc.), le modèle met à jour ses paramètres dans la direction qui réduit la perte.

Répétition pour Tous les Mini-lots : Les étapes 3 à 6 sont répétées pour chaque mini-lot dans l'ensemble d'entraînement.

Validation : Après avoir traité tous les mini-lots (ce qui complète une époque), le modèle est généralement évalué sur l'ensemble de validation pour vérifier comment il se généralise aux données non vues. Cette étape n'implique pas de mise à jour des paramètres.

Répétition pour Plus d'Époques : L'ensemble du processus (étapes 3-8) est répété pour un nombre prédéfini d'époques, ou jusqu'à ce qu'un critère de convergence soit atteint (comme aucune amélioration dans la perte de validation).

Il est important de noter que les ensembles d'entraînement et de validation restent les mêmes tout au long du processus d'entraînement. Le processus d'optimisation itère sur les données en époques, et non sur la phase qui divise l'ensemble de données. Le but d'itérer sur les époques est de raffiner progressivement les poids du modèle à travers une exposition répétée aux données, lui permettant d'apprendre et de mieux se généraliser à partir des échantillons d'entraînement fournis.

Expand full comment
Avatar de Jonathan Desurmont

Fascinant article qui remet un petit peu ta vidéo sur chat gpt en question. Merci pour ton travail.

Expand full comment
Avatar de Clément

Merci David pour toute votre œuvre de vulgarisation !

Ce sujet est fascinant, absolument fascinant ! Je suis très loin d'avoir l'expertise des commentateurs de

ce blog mais ça me permet d'avoir une idée. Mais rassurez-moi, tout cela reste de la "mécanique", de la "mécanique intelligente" certes, mais mécanique !

Expand full comment
Avatar de Elyas

Ça rejoint à mon sens ce que nous apprend la théorie de la complexité de Kolmogorov. Grâce à la pénalité le modèle apprend petit à petit une représentation plus simple qui est aussi plus générale. Et ça contredit ce que nous affirment certains experts comme Yann LeCun comme quoi les LLM n'apprennent pas réellement ; ils semble bien qu'au contraire ils apprennent des représentations plus simples, plus abstraites, qui expliquent leur puissance à généraliser leur données d'entraînement - même si la façon dont on leur apprend n'est pas forcément la voie la plus efficace pour que leurs représentations convergent vers de bonnes représentations.

Expand full comment
Avatar de Julien

Excellent article.

J'ai aussi du mal à réconcilier le fait que d'un côté l'apprentissage semble tendre progressivement (au moins sur ce sous ensemble de l'espace des embeddings) vers cette représentation sous forme d'horloge, et de l'autre la perf sur le set de validation ne bouge pas bcp jusqu'au "déclic".

Aussi l'évolution progressive semble effectivement montrer que ce n'est pas juste un "brute force" où l'on finirait par tomber sur "la bonne combinaison" par chance.

Expand full comment
Avatar de Paul JOUËT

Article fascinant.

Il a bien fait évoluer la vision que j'avais des LLM ou des modèles type transformers en général. Bien que la structure de notre cerveau (des milliards de neurones avec des fonctions relativement simples) a fait émerger des comportements et des raisonnements logiques, je ne voyais pas bien comment reproduire ça concrètement avec des réseaux de neurones.

Maîtriser l'entraînement des modèles pour faire émerger ce genre de logique dans le cadre du langage, couplé avec de grandes tailles de modèles pour permettre un espace vectoriel de "modélisation des concepts" suffisant me semble maintenant une piste prometteuse. L'ingrédient le plus important qui me semble manquer est la possibilité de visualiser ces fameux "modèles mentaux" dans le cadre d'un LLM. La visualisation de votre article est très parlante, mais pour un LLM il faudrait employer des moyens bien + conséquents. Le seul moyen que je vois pour le moment de savoir si le modèle a le bon modèle mental serait de tester ses compétences de façon assez exhaustive pour qu'il ne puisse pas avoir pu apprendre par coeur (ce qui revient à arriver à valider 100% du validation set, donc créer un set exhaustif pour chaque compétence visée)

Je n'ai pas les moyens de tester cette hypothèse, mais je pense qu'entraîner un modèle sur plusieurs tâches et plusieurs types de données différentes à la fois (à la manière de GATO par exemple), en choisissant bien les tâches pour imiter les fondamentaux du raisonnement humain, de façon progressive (pour bien "généraliser" chaque nouvelle compétence) et en adaptant les pénalités de façon dynamique en fonction de la difficulté de la nouvelle tâche (je ne sais pas bien comment, si vous avez des références cela pourrait m'intéresser, j'imagine que par le biais des performances sur train/test et leur vitesse d'évolution on pourrait arriver à créer un indicateur pertinent), nous pourrions atteindre un nouveau niveau de performance pour les IA.

Expand full comment
Avatar de Guillaume

La division modulaire à ma connaissance n'a pas de symétrie, mais ce n'est pas cela que je pointais du doigt. C'est juste que la symétrie permet de le comprendre facilement, vu que cette opération est symétrique et donc qu'une simple permutation permet de le voir pour nos simples cerveau humain.

Mon interrogation est plus sur la capacité à établir un modèle sur un ensemble de résultat incomplet, et comment on génère un ensemble de résultat réellement incomplet et pas uniquement "obfusqué".

Dans le cas de l'addition, utiliser 50% de l'ensemble des résultats choisi aléatoirement implique que le modèle d'entraînement contient tous les cas (ou presque) - mais le réseau de neurones doit réaliser que l'opération est symétrique.

=> est-ce c'est ce qu'il se passe ? => ça peut-être répondu en choisissant les données d'entraînement de tel façon à ne pas embarquer dans le modèle des données symétrique.

Ce que je dis c'est qu'il serait intéressant et voir si le grokking apparaît avant ou après en baisant les données d'entraînement, en particulier sur des opérations simples où l'on est capable de déterminer ce genre de raccourci, et observer les différences dans le modèle en fonction.

En tout cas merci de ce partage !

Expand full comment
Avatar de Science étonnante

Je vois deux manière de tester le truc (je vais essayer) :

- premièrement inspecter le réseau prédicteur pour voir s'il est symétrique. Comme je lui concatène les entrées, on peut voir s'il a "tout seul" décidé de créer des connexions symétriques ou pas.

- entrainer un réseau en ayant viré de l'ensemble d'entrainement des paires symétriques. Donc pour ces paires, le réseau ne peut pas simplement se baser sur symétrie + mémorisation du membre de la paire qu'il a vu dans l'ensemble d'entrainement. Mais je pense que ça devrait marcher puisqu'avec la division modulaire ça marche

Expand full comment
Avatar de Bachir

Article que j'ai d'une seule traite ! Merci

Expand full comment