Vous n’entraînez PAS ChatGPT en collant vos données
Regardez la vidéo!
« Si je colle les données de mon entreprise dans ChatGPT, est-ce que je viens de l’entraîner ? »
Je reçois sans arrêt différentes versions de cette même question, formulée de plein de façons, du genre : « Est-ce que je peux injecter de la connaissance directement dans le modèle ? » ou formulée plus techniquement, comme : « Ajouter des données via du RAG, est-ce la même chose que modifier l’espace latent ? » Mais sous toutes ces formulations, c’est la même confusion.
Est-ce qu’on est vraiment en train de changer le cerveau du modèle, ou est-ce qu’on lui donne juste une info temporaire ?
Cette question est bien plus importante que les gens ne le pensent, surtout si vous construisez votre propre workflow ou si vous intégrez de l’IA dans vos applications. Mal comprendre cette différence peut vous amener à des hypothèses complètement fausses sur ce que fait le système.
Donc voilà ce qu’on va faire. À la fin de cet article, vous comprendrez clairement la différence entre le prompting, l’utilisation de données externes via du retrieval, et le fait de réellement réentraîner un modèle. Vous saurez ce que ça veut vraiment dire de “changer” un modèle versus juste l’augmenter, et quand faire l’un ou l’autre. Et au passage, on devra couvrir les embeddings et l’espace latent, mais ne vous inquiétez pas, je ne vais pas transformer ça en cours de maths. Les maths, au fond, ne sont pas si importantes.
Ok, imaginez que vous gérez une petite entreprise qui vend du matériel d’escalade, juste pour qu’on ait un exemple cohérent et parce que j’adore le bloc.
Ici, disons aussi que vous avez une politique de retour, un catalogue de produits avec des chaussons, de la magnésie, un harnais, et plus encore, et quelques guidelines internes sur la manière dont vous voulez que vos employés répondent aux clients. Maintenant vous ouvrez ChatGPT, vous collez votre politique de retour dans le prompt, et vous dites : « Réponds aux questions de mes clients en utilisant cette politique. »
Là, est-ce que vous venez d’entraîner le modèle ?
Non. Pas du tout.
Et si vous créez un GPT custom ou un projet pour pouvoir l’utiliser facilement dans le futur ? Est-ce que ça a entraîné votre propre version des modèles ?
Toujours pas.
Ce que vous avez fait, c’est donner au modèle un contexte temporaire. Les paramètres internes du modèle, les vrais nombres qui définissent son comportement, son “cerveau”, n’ont pas changé. Vous n’avez pas mis à jour sa mémoire de manière permanente. Vous n’avez pas modifié son réseau neuronal. Vous avez simplement fourni du texte supplémentaire pour cette interaction, et celles qui suivent dans la même conversation ou le même GPT.
Une fois que la conversation se termine, cette information disparaît. Le prochain utilisateur n’en bénéficie pas. Le modèle ne l’a pas absorbée dans son savoir “de base”. Il n’a rien appris non plus des erreurs qu’il a faites après que vous lui ayez dit de répondre autrement. Il a juste utilisé cette politique dans son contexte pendant qu’il générait la réponse.
Ça, c’est du prompting.
Maintenant, rendons ça un peu plus sophistiqué. Au lieu de coller votre politique de retour à chaque fois, vous construisez un petit système. Vous stockez tous vos documents d’entreprise dans une base de données. Quand un client demande : « J’ai combien de temps pour retourner mes chaussons d’escalade ? », votre système cherche dans vos documents, trouve la politique de retour, et envoie la section pertinente au modèle en même temps que la question.
C’est ce que les gens appellent RAG, pour retrieval-augmented generation.
On stocke l’information à l’extérieur, et le système la récupère à la demande. C’est super utile pour personnaliser facilement des réponses avec nos propres données.
Mais encore une fois, est-ce qu’on a entraîné le modèle ?
Toujours pas.
On n’a encore une fois pas touché à ses paramètres internes. On n’a rien réentraîné. On lui a construit un système de mémoire externe structuré. Le modèle peut maintenant lire vos documents avant de répondre, mais son “cerveau” interne est exactement le même qu’avant.
C’est là que les embeddings entrent en jeu, parce que vous vous demandez peut-être : comment le système sait quel document est pertinent ?
Un embedding, c’est simplement une liste de nombres qui représente un morceau de texte. Vous pouvez le voir comme des coordonnées dans un espace à très haute dimension. Pas juste x et y, mais des milliers de dimensions. Quand on passe votre politique de retour dans un modèle d’embedding, il convertit ce texte en un vecteur dans cet espace. Si on passe la question « J’ai combien de temps pour retourner mes chaussons d’escalade ? » dans le même modèle d’embedding, on obtient un autre vecteur.
Si le sens de deux textes est similaire, leurs vecteurs seront proches dans cet espace. S’ils ne sont pas liés, comme « Comment entretenir le moteur de ma voiture ? », les vecteurs seront loin l’un de l’autre et le modèle saura qu’il ne doit pas utiliser cette information.
Les embeddings, c’est comme ça que ces systèmes comprennent le sens des phrases et des mots. Ils utilisent juste ces vecteurs et les comparent. C’est tout. Si un est plus proche des autres dans cet espace, alors c’est pertinent ou similaire. C’est tout. Ça ne “réfléchit” pas plus que de simples comparaisons vectorielles quand il s’agit de comparer et comprendre des données externes.
Donc dans un système RAG, on convertit tous vos documents en embeddings et on les stocke. Quand une nouvelle question arrive, on la convertit en embedding aussi. Puis on cherche simplement les vecteurs stockés qui sont les plus proches du vecteur de la question. Proche veut dire sémantiquement similaire. Donc voisin dans cet espace.
C’est de la géométrie pure.
Donc, quand vous ajoutez un nouveau document à votre base et que vous calculez son embedding, vous ne modifiez pas la connaissance interne du modèle de langage. Vous n’injectez rien dans son espace latent (c’est comme ça qu’on appelle l’espace vectoriel où on les stocke et on les compare). Vous ajoutez un nouveau livre sur une étagère et vous l’indexez pour pouvoir le retrouver plus tard.
Le modèle lit sur l’étagère quand il en a besoin, et il sait où chercher comme si toutes les phrases étaient rangées par ordre alphabétique, sauf que l’étagère est externe au modèle.
Alors, qu’est-ce que ça voudrait dire de vraiment changer le modèle ?
Un grand modèle de langage, c’est un énorme réseau neuronal avec des millions ou des milliards de paramètres. Les paramètres, c’est juste des nombres, comme ceux de nos vecteurs. Pris individuellement, ils ne veulent rien dire, mais ensemble, ils créent un tout qui a du sens et de l’importance. Dans le modèle, ce sont les poids qui déterminent comment les inputs sont transformés couche par couche à l’intérieur du réseau. Pendant l’entraînement, ces poids sont ajustés très légèrement, encore et encore, pour que le modèle devienne meilleur à prédire le mot suivant.
L’entraînement, ça veut littéralement dire changer ces nombres pour maximiser nos chances de prédire le bon mot suivant.
Si vous fine-tunez un modèle sur les données de matériel d’escalade de votre entreprise, là vous modifiez réellement le cerveau. Vous poussez beaucoup de ces poids dans une direction, de sorte que le comportement global du modèle se déplace. Il peut commencer à répondre plus souvent dans la voix de votre marque. Il peut internaliser des patterns de votre documentation.
Mais même dans ce cas, vous n’insérez pas un fait “propre” à un endroit précis. La connaissance devient distribuée à travers énormément de paramètres. Il n’y a pas un neurone unique étiqueté « politique de retour des chaussons d’escalade ». L’information est étalée dans le réseau d’une manière très interconnectée. Et c’est aussi pour ça que l’entraînement et le réentraînement de modèles est bien plus complexe que d’ajouter une mémoire externe, et pourquoi il peut aussi halluciner, puisque les faits que vous essayez de lui apprendre ne sont pas clairement sauvegardés quelque part, ils influencent juste les générations futures du modèle.
C’est là que le terme “espace latent” que je mentionne souvent apparaît et embrouille les gens.
“Espace latent”, ça sonne mystique, mais ça ne l’est pas. À l’intérieur du modèle, quand les tokens entrent, ils sont convertis en vecteurs internes. À peu près comme ceux dont on a parlé tout à l’heure, liés aux embeddings qu’on récupère dans une mémoire externe. Sauf qu’ici, ils sont internes au modèle. Ces vecteurs sont transformés encore et encore à travers de nombreuses couches. Toutes ces représentations intermédiaires vivent dans ce qu’on appelle l’espace latent. C’est simplement l’espace de représentation interne du réseau. C’est littéralement son cerveau et la manière dont il comprend le monde, en plaçant des vecteurs pour chaque concept et chaque mot.
Mais encore une fois, c’est super important de comprendre que cet espace latent n’est pas une base de données stockée quelque part dans le modèle. Ce n’est pas une carte que vous pouvez ouvrir et éditer. C’est la structure qui émerge de la manière dont les paramètres transforment les inputs.
C’est pour ça que des chercheurs peuvent dire des trucs comme « on ne comprend pas complètement comment il est capable de répondre à telle ou telle question ». C’est parce que cet espace est immense et entraîné sur des trillions de mots, donc on ne peut pas pleinement saisir ce qui est exploité ou pas dans cet espace. Comme notre cerveau. C’est juste trop d’information traitée en même temps et interreliée. Cela dit, on comprend parfaitement ce que fait le modèle, ne croyez pas les gens qui disent que les modèles IA s’entraînent tout seuls et qu’ils deviennent incontrôlables; ils font simplement des tonnes d’additions et de multiplications de vecteurs et de matrices qu’on contrôle totalement pour produire les réponses finales. C’est juste difficile de bien visualiser et de reconnaître ce qui influence quoi, vu à quel point l’espace de nombres est grand, mais c’est justement l’idée: plus on a de nombres pour représenter du sens, plus le modèle peut représenter des patterns complexes et générer les bons mots dans la plupart des scénarios.
Je parle beaucoup d’espace latent et de paramètres, mais « Est-ce que les paramètres, c’est l’espace latent ? » La réponse précise, c’est que les paramètres définissent les transformations, et ces transformations créent la géométrie de l’espace latent. L’espace latent, c’est le comportement induit par les paramètres. Ce n’est pas un objet séparé que vous pouvez manipuler directement.
Et ça explique pourquoi vous ne pouvez pas “injecter” des données dans l’espace latent. Il n’y a pas de panneau de contrôle où vous dites : « Insérer fait : notre fenêtre de retour est de 45 jours. » Si vous voulez que ce soit reflété de manière permanente dans le comportement du modèle, vous devez le réentraîner ou le fine-tuner, ce qui veut dire ajuster les poids via de l’optimisation. Et encore une fois, vous n’avez aucune certitude qu’il va bien le retenir, et vous pourriez aussi casser d’autres parties de sa connaissance en faisant ça, puisque vous transformez cet espace via les modifications des paramètres du modèle.
Si vous voulez de la certitude qu’il connaîtra un fait précis; soit vous lui donnez un contexte temporaire via du prompting, soit vous lui donnez une mémoire externe via du retrieval.
Une dernière clarification rapide sur les modèles de raisonnement récents, parce que ça se rattache au même malentendu. Quand un modèle semble raisonner étape par étape, ce qui se passe en interne, c’est toujours juste des transformations de vecteurs dans l’espace latent. Il n’y a pas un planificateur symbolique séparé assis à l’intérieur, comme nous en tant qu’humains quand on réfléchit. Il n’y a pas une base de connaissances bien organisée avec des faits étiquetés. Il y a des représentations numériques continues qui sont transformées selon les paramètres appris.
Les humains aussi forment des représentations internes, évidemment. Mais les nôtres sont ancrées dans la perception et l’action. On voit des chaussons d’escalade, on les touche, on les utilise, et on met continuellement à jour notre compréhension. La plupart des grands modèles de langage sont entraînés, puis figés. Ils ne mettent pas à jour leurs paramètres chaque fois qu’ils lisent quelque chose de nouveau. Ce serait extrêmement compliqué et coûteux de le faire sur la base de toutes les interactions qu’on a avec ChatGPT.
Donc quand vous collez votre politique de retour dans ChatGPT, vous ne remodelez pas son modèle interne du monde. Vous fournissez du contexte. Quand vous construisez un système RAG, vous construisez une mémoire externe structurée. Et quand vous fine-tunez, vous changez réellement les paramètres internes, ce qui remodèle la géométrie de l’espace latent.
Cette distinction change la manière dont on conçoit des systèmes. Ça vous évite de supposer qu’ajouter des documents à une base vectorielle, c’est la même chose que d’enseigner quelque chose au modèle de façon permanente. Et ça vous aide à comprendre pourquoi « injecte-le juste dans le modèle » n’est pas comme ça que ces systèmes fonctionnent.
Le modèle mental que je veux que vous gardiez est simple. Les paramètres, c’est le cerveau. L’entraînement change le cerveau. Les embeddings, ce sont des coordonnées qui nous permettent d’organiser et de chercher du sens. RAG, c’est une étagère de livres que le cerveau peut consulter. L’espace latent, c’est la géométrie interne créée par les transformations du cerveau.
On veut réentraîner ce cerveau pour lui apprendre une nouvelle langue ou pour qu’il devienne expert dans un domaine spécifique, pas pour lui apprendre des faits précis ou notre politique de retour. Les systèmes basés sur le retrieval, donc ajouter une mémoire au système, sont en général bien moins chers, plus puissants, et plus contrôlables.
Si vous voulez, je peux aller plus loin dans un follow-up sur les systèmes de mémoire à long terme et comment on gère ça, parce que c’est là que ça commence à se brouiller et que ça devient vraiment intéressant. Dites-moi en commentaires si ça vous intéresse !
Merci d’avoir lu jusqu’au bout!