Comment fonctionne ChatGPT
Que se cache-t-il derrière les concepts fondamentaux de ChatGPT ?
Par Sau Sheong, publié sur Medium.Il y a actuellement tant d'agitation, d'attente et de crainte autour de ChatGPT, mais à peine quoi que ce soit qui explique comment il fonctionne. Il existe certes beaucoup de documents techniques et similaires, mais pour le citoyen moyen, ils peuvent paraître quelque peu rebutants.
Cet article vise à présenter une vision simple de la manière dont ChatGPT et les technologies d'IA apparentées fonctionnent, sans trop entrer dans les détails. Il y aura bien sûr des termes techniques, mais je vais tenter de les expliquer de manière plus compréhensible. C'est peut-être un objectif ambitieux (expliquer quelque chose sans l'expliquer), mais je vais faire de mon mieux.
L'algorithme de ChatGPT
Commençons par expliquer ce qu'est ChatGPT et comment fonctionne l'algorithme de ChatGPT.
ChatGPT
ChatGPT est un chatbot, un programme informatique capable de simuler des conversations avec des utilisateurs humains. Les chatbots utilisent le natural language processing (NLP) pour comprendre la saisie de l'utilisateur et générer une réponse pertinente à sa question ou à sa demande. Le NLP est un domaine de l'IA qui traite de l'interaction entre les ordinateurs et le langage humain.
ChatGPT utilise GPT (Generative Pre-trained Transformer), un grand modèle de langage développé par OpenAI. À côté de ChatGPT, il existe d'autres chatbots similaires comme Bard de Google et Claude d'Anthropic. D'autres chatbots connus sont Siri d'Apple, Alexa d'Amazon et le Google Assistant.
Les grands modèles de langage
Les grands modèles de langage (LLM) sont des modèles d'IA capables d'apprendre et de générer le langage humain. Les LLM sont une composante essentielle du NLP. Parmi les LLM connus figurent GPT d'OpenAI, LaMDA (Language Model for Dialogue Applications) de Google et LLaMA (Large Language Model Meta AI) de Meta. Ces modèles apprennent à partir d'une grande quantité de données textuelles et utilisent leur savoir pour générer ou comprendre de nouveaux textes.
L'idée fondamentale derrière les LLM consiste à prédire le mot suivant dans une séquence, sur la base des mots précédemment utilisés.
Par exemple, si tu as cette suite de mots :
A quick brown fox jumps over the lazy
Le LLM prédira le mot suivant :
A quick brown fox jumps over the lazy dog
Il utilise pour cela une technique d'IA appelée machine learning.
Machine learning
Le machine learning est une famille d'algorithmes d'IA dans lesquels de grandes quantités de données sont traitées pour entraîner un modèle d'IA qui prend des décisions.
Supposons que tu veuilles apprendre à un enfant à quoi ressemble un chien. Tu pourrais lui montrer beaucoup d'images de différents chiens. Après que l'enfant a vu suffisamment d'images de chiens, il commence à comprendre quelles caractéristiques les chiens ont tendance à présenter : ils ont quatre pattes, une queue, peuvent être de tailles différentes, mais leurs visages ont des structures similaires, etc. Quand l'enfant voit un chien qu'il n'a encore jamais vu, il peut, grâce aux schémas appris, reconnaître qu'il s'agit d'un chien.
Le machine learning fonctionne de manière similaire. Supposons que nous voulions prédire le mot suivant après une séquence de mots. Nous donnons d'abord à l'ordinateur une grande quantité de données textuelles. Cela peut être des livres, des articles, des sites web ou tout ce qui contient des mots. Pendant l'entraînement, le modèle apprend les schémas de la langue. On parle de données d'entraînement. Il apprend que certains mots apparaissent souvent ensemble (comme « brun » et « renard ») et qu'il existe des règles dans la langue que nous suivons généralement (comme le fait que nous plaçons en règle générale les adjectifs avant les noms qu'ils décrivent). Finalement, ces schémas deviennent un modèle : un ensemble de règles apprises qu'il peut utiliser pour prédire le mot suivant.
La brique élémentaire des algorithmes de machine learning utilisés dans le LLM est le réseau de neurones.
Le réseau de neurones
Un réseau de neurones est un algorithme de machine learning qui fonctionne comme nous pensons que le cerveau humain fonctionne. Il se compose de nombreuses petites parties appelées nœuds ou neurones, regroupées en couches, qui collaborent pour apprendre à partir de données.
La phase d'apprentissage d'un réseau de neurones se déroule lors d'un processus appelé entraînement. Prenons l'exemple précédent : nous voulons prédire le mot suivant dans une phrase.
D'abord, avant l'entraînement, nous devons découper les données d'entraînement en séquences de longueurs déterminées, disons 10 mots, pour prédire le mot suivant après la séquence.
Ensuite, nous transformons les mots des séquences en vecteurs, essentiellement une liste de nombres. Ce processus est appelé embedding, et les vecteurs sont parfois appelés embeddings ou word vectors. Des mots qui se ressemblent ont des vecteurs similaires.
Pour entraîner le réseau de neurones, nous alimentons les séquences d'embeddings l'une après l'autre. Après chaque mot, le réseau de neurones met à jour son état interne, composé de nœuds regroupés en couches, selon ce qu'il a appris. Quand tous les embeddings d'une séquence ont été injectés dans le réseau de neurones, nous lui demandons une prédiction.
L'embedding prédit est comparé à l'embedding réel du mot suivant dans la séquence. La différence entre ces embeddings est l'erreur de prédiction, qui sert à ajuster l'état interne du réseau de neurones par un processus appelé backpropagation. Les ajustements se font de manière que l'embedding prédit se rapproche de l'embedding réel.
Ce processus se répète, et le réseau de neurones est entraîné avec toutes les données d'entraînement, jusqu'à ce qu'il soit très doué pour trouver le mot suivant dans une phrase. Au terme de l'entraînement, le modèle peut désormais faire des prédictions. Le processus par lequel un modèle est appelé à prédire est appelé inférence.
Les premiers réseaux de neurones avaient un faible nombre de nœuds et de couches. Avec la disponibilité croissante de données d'entraînement et le développement de méthodes plus raffinées d'organisation des nœuds, le nombre de nœuds et de couches est toutefois devenu énorme, en millions et en milliards. Un autre terme pour les algorithmes avec de si grands réseaux de neurones est le deep learning. Le mot deep dans deep learning se rapporte au nombre de couches dans les couches cachées.
Les algorithmes antérieurs de réseaux de neurones comme les réseaux de neurones récurrents (RNN) et les réseaux Long Short-Term Memory (LSTM) étaient souvent utilisés dans le traitement automatique du langage naturel (NLP), mais présentent des problèmes de stabilité avec des séquences de texte très longues.
En 2017, Google a publié un paper qui présentait le Transformer, un type de réseau de neurones qui a énormément amélioré le NLP et a soudain tout changé.
Transformers
Imagine que tu discutes avec un groupe d'amis de l'organisation d'une soirée cinéma. Quand l'un de tes amis dit quelque chose, tu ne comprends ses mots pas seulement à partir de ce qu'il vient de dire : tu prends en compte toute la conversation : de quel film nous avons parlé, qui est disponible quand, quels snacks nous prévoyons d'acheter, et ainsi de suite. Les transformers font quelque chose de similaire, en particulier lorsqu'il s'agit de langage.
Un transformer est un type d'algorithme de réseau de neurones particulièrement à l'aise avec le contexte dans les données. Il ne se limite pas à regarder seulement le morceau de données en cours de traitement (comme un mot dans une phrase) et le morceau immédiatement précédent. Il peut au contraire prendre en compte tous les points de données (tous les mots de la phrase), déterminer lesquels sont les plus pertinents pour le point de données actuel (le mot) et les utiliser pour mieux comprendre le point de données actuel.
Prenons une phrase en exemple :
Bien que j'aie déjà dîné, j'ai encore faim.
Quand un transformer veut comprendre le mot faim, il ne regarde pas seulement les mots immédiatement précédents comme j'ai encore. Il prend aussi en compte dîné, issu de parties antérieures de la phrase, car c'est pertinent pour comprendre pourquoi quelqu'un pourrait avoir faim.
Cette capacité vient du mécanisme d'attention qu'utilisent les transformers. Il leur permet de prêter attention à différentes parties des données d'entrée selon leur pertinence. Cela rend les transformers excellents pour des tâches comme la traduction automatique et la génération de texte, où la compréhension complète du contexte des données d'entrée est décisive.
Tous les LLM récemment créés, y compris GPT, sont basés sur les transformers.
Tokens
Nous avons parlé de mots dans une phrase pour l'entraînement ou l'inférence, mais en réalité les LLM ne travaillent pas avec des mots. Ils utilisent des tokens.
Un token est une portion de texte. Les mots fréquents et courts correspondent en règle générale à un seul token. Les mots longs et plus rarement utilisés sont généralement divisés en plusieurs tokens. Tu peux saisir directement ton texte dans le tokenizer d'OpenAI et voir comment il est découpé en tokens.
Tu te demandes peut-être pourquoi les mots sont tokenisés de cette manière.
Supposons que nous utilisions chaque lettre comme token. Le texte est ainsi découpé en tokens et le nombre total de tokens différents reste petit. Toutefois, nous ne pouvons coder presque pas autant d'informations. Dans l'exemple ci-dessus, 8 tokens ne peuvent coder que ChatGPT, tandis que 8 tokens OpenAI peuvent coder la phrase entière. Les LLM actuels ont une limite au nombre maximal de tokens qu'ils peuvent traiter : nous voulons donc emballer autant d'informations que possible dans chaque token.
Que se passerait-il si chaque mot était un token ? Par rapport à l'approche d'OpenAI, nous n'aurions besoin que de 5 tokens pour représenter la même phrase, ce qui est plus efficace. Toutefois, les LLM doivent disposer d'une liste complète des tokens qu'ils pourraient rencontrer, et cette méthode ne peut pas gérer les mots inventés (très fréquents dans la fiction) ni les mots spécialisés (très fréquents dans les documents techniques).
L'entraînement de ChatGPT
Maintenant que nous comprenons l'algorithme de ChatGPT, comprenons comment il a été entraîné. Commençons par quelques bases de l'apprentissage supervisé et non supervisé.
Dans l'apprentissage supervisé, il s'agit d'un type de machine learning où nous fournissons au modèle des données d'entrée et les sorties correctes. Supposons que tu veuilles entraîner un modèle à classer des articles de presse en différentes catégories comme économie, sport ou divertissement. Tu commencerais par collecter un jeu de données d'articles de presse étiquetés. Pour chaque article, tu l'étiquetterais manuellement avec la catégorie correspondante. Une fois le jeu de données constitué, tu peux l'utiliser pour entraîner le modèle.
L'apprentissage non supervisé concerne en revanche les données non étiquetées. Le modèle reçoit des entrées, mais il n'y a pas de sorties correctes explicites. Le modèle doit trouver lui-même des structures dans les entrées. Un exemple en est le clustering, où le modèle regroupe des données similaires.
Avant GPT, la plupart des modèles NLP étaient entraînés avec l'apprentissage supervisé pour des usages spécifiques comme la classification de textes ou l'analyse de sentiments. Le problème est qu'il est difficile de trouver de grandes quantités de données étiquetées. De plus, ces modèles sont très spécialisés et ne peuvent être utilisés que pour l'usage pour lequel ils ont été entraînés.
GPT est en revanche d'abord pré-entraîné avec l'apprentissage non supervisé sur des données non étiquetées, puis fine-tuné avec l'apprentissage supervisé pour des tâches spécifiques.
Le fine-tuning
Dans le machine learning existe le concept de transfer learning. L'idée est d'utiliser un modèle entraîné pour une tâche comme point de départ pour une tâche apparentée. C'est très utile, car l'entraînement de ces modèles depuis zéro peut exiger beaucoup de données et de ressources de calcul.
Le fine-tuning est un type spécifique de transfer learning. Dans le contexte de GPT, le fine-tuning signifie que le modèle, déjà entraîné sur une grande quantité de données textuelles (la phase de pré-entraînement), est ensuite entraîné davantage sur une tâche plus spécifique.
Supposons par exemple que tu aies un modèle GPT pré-entraîné sur une grande quantité de texte internet. Tu veux maintenant créer un chatbot qui donne des conseils de nutrition saine. Le modèle GPT a appris beaucoup de la langue pendant le pré-entraînement, mais n'est peut-être pas très doué pour donner des conseils nutritionnels spécifiques.
Tu collectes donc un jeu de données de conversations où des personnes donnent de bons conseils de nutrition saine. Ensuite, tu prends ton modèle GPT pré-entraîné et tu le fine-tunes avec ce nouveau jeu de données. Le modèle a maintenant appris de tes conversations spécifiques sur les conseils nutritionnels et a légèrement ajusté ses paramètres pour devenir meilleur dans cette tâche.
Essentiellement, le fine-tuning nous permet d'adapter un modèle général à des tâches spécifiques, en sorte qu'il devient plus utile et plus efficace pour des usages différents. L'avantage est que nous n'avons pas à entraîner de zéro un modèle complexe comme GPT, ce qui peut économiser d'importantes ressources de temps, de données et de calcul.
En outre, il s'est avéré que les modèles GPT seulement pré-entraînés et non fine-tunés sont en eux-mêmes assez performants. Les modèles entraînés mais non fine-tunés sont appelés foundation models.
Différents types de modèles
Les modèles peuvent être entraînés pour différentes tâches (ou les foundation models peuvent être fine-tunés). Si tu utilises par exemple un modèle de completion, tu pourrais lui donner un prompt comme celui-ci :
Il était une fois, dans un royaume lointain
Le modèle prend ce prompt et génère le reste du texte ainsi :
Il était une fois, dans un royaume lointain, un chevalier valeureux et un dragon redoutable.
La plupart des modèles de langage sont des modèles de completion minimaux.
Un modèle conversationnel (comme ChatGPT) est entraîné avec des données conversationnelles, comme par exemple des dialogues de livres, des scénarios ou des transcriptions de conversations parlées. Le modèle apprend ainsi à comprendre la nature aller-retour des conversations, y compris la relation entre les réponses et les messages précédents.
Un modèle d'instructions (comme InstructGPT) est entraîné à comprendre les instructions humaines et à y répondre. Cela peut inclure des données d'entraînement constituées de commandes et des actions correspondantes, ou d'instructions et des réponses correspondantes.
Un modèle questions-réponses (Q&R) est entraîné avec des données comprenant des questions et leurs réponses, comme les données de sites de Q&R, de manuels scolaires ou d'autres ressources éducatives. Le modèle apprend ainsi à donner des réponses informatives et précises à des questions directes.
L'entraînement de ChatGPT
ChatGPT est basé sur GPT-3.5, respectivement GPT-4, puis est fine-tuné deux fois : d'abord au moyen de l'apprentissage supervisé, ensuite au moyen de l'apprentissage par renforcement.
Dans la première étape, le fine-tuning supervé (SFT), des formateurs humains de l'IA fournissent des conversations où ils jouent les deux rôles : l'utilisateur et un assistant IA. Les formateurs reçoivent des suggestions écrites par le modèle pour les aider à formuler leurs réponses. Avec ce nouveau jeu de données, ChatGPT est fine-tuné.
Dans la deuxième étape, ChatGPT est fine-tuné à l'aide d'une technique appelée apprentissage par renforcement avec feedback humain (RLHF).
L'apprentissage par renforcement est un type de machine learning où un agent (en l'occurrence ChatGPT) apprend par essais et erreurs à se comporter dans un environnement. L'agent reçoit des récompenses pour des actions qui conduisent à des résultats souhaités, et des punitions pour des actions qui conduisent à des résultats indésirables. Avec le temps, l'agent apprend à effectuer des actions qui maximisent ses récompenses.
Des formateurs IA mènent des conversations avec ChatGPT en utilisant les mêmes prompts, afin de créer plusieurs complétions alternatives. Les formateurs IA classent ces complétions pour entraîner un modèle de récompense. Dans l'apprentissage par renforcement, un modèle de récompense est un moyen de donner à l'agent un feedback sur sa performance. Il reçoit une action et indique à quel point elle est bonne ou mauvaise. L'objectif du modèle de récompense est de maximiser la somme des récompenses au fil du temps.
Enfin, ChatGPT est fine-tuné pour générer des sorties qui obtiennent une évaluation élevée selon ce modèle de récompense.
L'utilisation de ChatGPT
On pourrait penser qu'il est assez vain de parler de l'utilisation de ChatGPT, puisque c'est un chatbot et qu'on discute simplement avec lui. Ce n'est pas tout à fait faux, mais ce n'est peut-être pas la meilleure manière d'utiliser ChatGPT. Si tu n'es pas prudent, tu pourrais recevoir des informations fausses et trompeuses.
Hallucination
Occasionnellement, les LLM produisent des résultats faux ou absurdes, même s'ils peuvent être présentés avec assurance. C'est ce qu'on appelle une hallucination.
Les LLM peuvent générer des hallucinations pour plusieurs raisons. Premièrement, ces modèles sont entraînés avec des masses de données textuelles issues d'internet, qui contiennent aussi bien des informations correctes qu'incorrectes. Bien qu'ils apprennent beaucoup de ces données, ils peuvent occasionnellement générer des réponses factuellement fausses ou inventer des choses.
Deuxièmement, les LLM n'ont pas de véritable compréhension ni de bon sens comme les humains. Ils fonctionnent à partir de schémas présents dans les données avec lesquelles ils ont été entraînés. Quand ils rencontrent donc une question ou un thème dont ils n'ont rien appris, ils peuvent tenter de générer une réponse qui sonne plausible mais qui est en réalité inventée.
En outre, les LLM peuvent être sensibles à de légères modifications dans la formulation de l'entrée, ce qui conduit à des variations dans leurs réponses. Parfois, ces variations peuvent mener à des incohérences ou à des réponses absurdes.
Il existe plusieurs façons connues de réduire les hallucinations dans les LLM.
L'un des moyens importants de réduire les hallucinations dans les LLM consiste à améliorer les données d'entraînement. Des données plus diversifiées et de meilleure qualité peuvent conduire à des réponses plus exactes et moins hallucinatoires.
Une supervision humaine détaillée, en particulier pendant le fine-tuning, peut aussi contribuer à diminuer les hallucinations. Les humains peuvent donner du feedback en temps réel, corriger les imprécisions et améliorer la capacité du modèle à fournir des réponses fiables.
Certaines modifications architecturales peuvent éventuellement atténuer les hallucinations, comme le développement de modèles mieux capables de maintenir un récit cohérent sur de longs passages de texte.
Un prompt bien conçu peut amener le LLM à fournir des réponses exactes, pertinentes et non hallucinatoires. Il est donc important de comprendre comment la conception du prompt influence les réponses de l'IA.
Prompting
Un prompt est un texte court utilisé pour guider un LLM dans la génération d'une réponse. L'idée est de donner au modèle du contexte ou de la direction pour le type de texte généré. Sans prompt, un modèle de langage ne saurait pas où commencer.
Un prompt bien conçu peut aider le LLM à générer de bonnes et exactes réponses et à réduire ou éviter les hallucinations. Voici quelques conseils pour écrire de bons prompts :
- C'est évident, mais parfois nous oublions d'écrire simplement et de donner des instructions claires. Des prompts ambigus peuvent conduire à des réponses intéressantes, mais ils peuvent aussi livrer de fausses réponses.
- Utilise des séparateurs pour marquer clairement les différentes parties du prompt. En écrivant des prompts, tu utilises souvent des instructions et des données. Si tu les sépares clairement, le LLM ne sera pas confus et ne les mélangera pas pour générer des hallucinations.
Résume le texte délimité par des doubles crochets en une seule phrase courte de pas plus de 10 mots. [[ C'était le meilleur des temps, c'était le pire des temps, c'était l'âge de la sagesse, c'était l'âge de la sottise, c'était l'époque de la croyance, c'était l'époque de l'incrédulité, c'était la saison de la lumière, c'était la saison des ténèbres, c'était le printemps de l'espoir, c'était l'hiver du désespoir, nous avions tout devant nous, nous n'avions rien devant nous, nous allions tous directement au ciel, nous allions tous directement dans la direction opposée : en bref, l'époque ressemblait tellement à l'époque actuelle que certaines de ses autorités les plus bruyantes insistaient pour qu'elle ne soit reçue qu'au plus haut degré de comparaison, soit en bien soit en mal.]]
L'époque était, paradoxalement, marquée par des contrastes et des similitudes extrêmes.
- Demande au LLM de vérifier des conditions avant de donner la réponse correspondante. La vérification de conditions peut empêcher le LLM d'inventer des choses quand il ne connaît pas la réponse.
Résumez le texte délimité par des doubles crochets en une seule phrase courte de pas plus de 10 mots. S'il s'agit déjà d'une seule phrase de moins de 10 mots, dites simplement : « C'est déjà résumé. » [[L'époque était, paradoxalement, marquée par des contrastes et des similitudes extrêmes.]]
C'est déjà résumé.
- Donne des exemples des réponses souhaitées avant de poser la requête. Tu peux guider le LLM en lui donnant des exemples de la manière dont il doit répondre.
Donne-moi en une phrase courte des informations clés sur une ville. Par exemple : Moi : « Parle-moi de Paris. » Toi : « C'est une ville de romantisme et d'histoire. » Moi : « Parle-moi de Londres. » Toi : « C'est une ville de diversité culturelle et de bâtiments emblématiques. » Moi : « Parle-moi de Singapour. » Toi :
« Singapour est un city-state dynamique connu pour sa propreté et son multiculturalisme. »
- Indique les étapes pour accomplir la tâche. Si tu connais les étapes exactes que tu veux que le LLM exécute pour obtenir la réponse finale, il peut être utile d'indiquer ces étapes pour le guider sur le chemin.
- Itère et affine le prompt. La création d'un prompt est souvent itérative. Tu écris une version simple et l'affines encore et encore, en ajoutant des détails et de la clarté, jusqu'à obtenir le type de réponse souhaité.
Conclusion
ChatGPT et les autres chatbots LLM comme Bard et Claude sont fascinants. Un regard sous la surface, pour comprendre les fondements de leur fonctionnement, peut nous donner de meilleures perspectives pour mieux les utiliser pour nous.
Amusez-vous bien en chattant !