Comment GPT-4 sait-il quand arrêter de générer ?
Regardez la vidéo!
Introduction
Il y a quelques jours, une question m'est venue à l'esprit : Comment ChatGPT décide-t-il qu'il doit arrêter de répondre ? Comment sait-il qu'il a fourni une réponse suffisamment bonne ? Comment s'arrête-t-il de parler ?
Deux scénarios peuvent amener le modèle à arrêter de générer : les 'tokens de fin' (EOS tokens) et les 'longueurs maximales de tokens' (Maximum Token Lengths). On va expliquer tout ça, mais on doit d'abord faire un petit détour pour en savoir plus sur les tokens et le processus de génération de GPT…
Tokens
Les modèles de langage (LLM) ne perçoivent pas les mots. Ils n'ont jamais vu un mot. Ce qu'ils voient, ce sont ce que l'on appelle des tokens. Dans le contexte de LLM comme GPT-4, les tokens ne sont pas strictement des mots entiers ; ils peuvent également être des parties de mots, des sous-mots courants, des ponctuations ou même des parties d'images comme des pixels. Par exemple, le mot "incroyable" pourrait être divisé en tokens tels que "inc", "roy", et "able". On les décomposes en composants familiers en fonction de leur fréquence de répétition dans les données d'entraînement, ce qu’on appelle le processus de tokenisation.
Mais on a encore des mots, et les modèles ne connaissent pas les mots... On doit les transformer en nombres afin que le modèle puisse effectuer des opérations mathématiques sur eux, car il n'a aucune idée de ce qu'est un mot. Il ne connaît que des bits et des nombres. Ici, on utilise ce qu’on appelle un dictionnaire de modèle. Ce dictionnaire est essentiellement juste une énorme liste de tous les tokens possibles que nous avons décidés à l'étape précédente. Un peu comme un dictionnaire général regroupant les mots ou sous-mots les plus communs ensembles. On peut maintenant représenter nos mots en nombres en prenant simplement leurs indices dans notre dictionnaire.
Ce processus de tokenisation a deux raisons. Premièrement, diviser les mots en mots communs aide à réduire la taille du vocabulaire du modèle, ce qui rend le traitement plus efficace. Deuxièmement, cela permet au modèle de générer et d'interpréter des textes à un niveau plus granulaire, améliorant sa capacité à comprendre et à produire un langage nuancé.
Le processus de génération
On a maintenant transformé notre question en une liste de tokens. Mais que fait GPT-4 avec ces tokens ? Il les utilise pour générer un nouveau token à la fois, de manière statistique. Cela signifie qu'il générera le prochain token ou mot qui a le plus de sens basé sur tout ce qui a été envoyé et généré auparavant.
Si vous demandez pourquoi vous devriez vous abonner à la chaîne, il répondra en fonction de ce qui a le plus de sens d'après ses données d'entraînement, ici internet, qui dans ce cas semble être en donnant une liste de raisons pour s'abonner.
Il y a donc ici quelques points à comprendre :
Premièrement, le modèle a commencé à générer des mots qui auraient le plus de sens, reformulant la question comme on l’a vu à l'école et poursuivant avec "pour plusieurs raisons" et un deux-points (":"). C'est parce que, dans ses données d'entraînement, la plupart des questions similaires à celle-ci étaient répondues avec de telles listes, il a donc simplement copié ce style.
Ce qui est drôle, c'est qu'il ne pense pas comme nous. Il fonctionne à l'inverse. Nous on réfléchit à la question et on déduit qu’on devrait probablement donner une liste de quelques raisons de s'abonner, puis les énumérer. Dans le cas de GPT, il a déjà commencé à générer sa réponse sans ce plan mental de quoi répondre. Lorsqu'il a généré le signe des deux-points, il s'est dit : « oh, je viens de dire que je donnerais plusieurs raisons et j'ai mis un deux-points ; je devrais probablement commencer à énumérer les choses maintenant ! » et il s’y met.
Mais alors, comment savait-il combien de points il devrait générer et quand arrêter de générer ? Souvenez-vous, il n'y a pas de plan. Il crée juste un mot à la fois basé sur tous les précédents. Il ne sait pas ce qui va venir et quand il a correctement répondu, donc il devrait arrêter de taper. C'est ce qu’on va répondre maintenant...
Comme j’ai dit au début de l’article, il existe deux scénarios potentiels pour faire arrêter la génération par un modèle…
Scénario 1 : Le token EOS <|endoftext|>
Le premier scénario est le plus courant. Lorsqu'il a répondu à votre question, GPT arrête de parler grâce à un token spécial appelé EOS, ou <|endoftext|> (Fin-de-Texte). GPT-4, comme tous les modèles de langages, utilise ce token spécial pour déterminer quand arrêter de générer du texte. Imaginez que vous appreniez à un enfant à reconnaître la fin d'un chapitre dans un livre. Lorsqu'il voit des phrases comme « pour conclure » ou « pour récapituler », l'enfant supposera que nous sommes vers la fin. Eh bien, c'est similaire à la façon dont GPT-4 apprend à arrêter de générer du texte.
Pendant son entraînement, chaque morceau de texte se conclut généralement par un token de fin de texte, enseignant efficacement au modèle à le reconnaître comme un point d'arrêt naturel et le texte qui précède, menant à cette fin — tout comme le point final d'un chapitre, si vous voulez. Par exemple, lorsque vous posez une question simple comme « Quelle est la capitale de la France ? », le modèle génère une réponse et place ensuite le token <|endoftext|> juste après « Paris », signalant l'achèvement de la réponse.
C'est aussi simple que cela. Pendant l’entraînement, tous les exemples qu’on lui donne comportent ce token à la fin. Il apprend essentiellement à arrêter de générer par lui-même en se basant sur ses données d'entraînement. Rien d'autre. Il n'y a pas de longueur donnée, pas de maximum, pas de minimum. Tout fonctionne grâce à la manière dont on l’a entraîné, et grâce à ce token <|endoftext|> spécial, qui est comme n'importe quel autre signe de ponctuation pour lui, juste un autre nombre, mais celui-ci est juste pour que le modèle sache que c'est terminé.
Cela nous amène à notre deuxième scénario qui le fait arrêter de générer : Que se passe-t-il si nous lui demandons d'être plus bref ou plus détaillé, ou si nous définissons manuellement la limite de longueur de token sur la plateforme d'OpenAI ?
Scénario 2 : Longueur maximale de tokens
Lorsque vous définissez une limite maximale de tokens ou que vous la demandez textuellement, GPT-4 utilise son vaste entraînement sur des textes de diverses longueurs pour évaluer comment distribuer le contenu de manière appropriée dans cette contrainte. Par exemple, si vous demandez au modèle d'expliquer brièvement un concept complexe comme la mécanique quantique, il planifie sa réponse pour transmettre les informations les plus critiques avant d'atteindre la limite de tokens, utilisant souvent une phrase d'introduction suivie de points clés, assurant la clarté et la concision. Encore une fois, c'est parce que c'est ainsi que les humains génèrent des résumés concis ou construisent des présentations PowerPoint claires et denses. Il fait juste nous imiter. Cependant, si la question est trop large ou complexe par rapport à la limite de tokens imposé, le modèle pourrait finir par fournir une réponse qui semble incomplète, comme celle-ci.
Comme nous le voyons, ce n'est pas toujours parfait, mais cela continue de s'améliorer. Assez simple et ça semble magique, non ? Tout est basé sur l’entraînement de ces machines pour imiter les interactions humaines et répondre comme nous le ferions dans le même contexte grâce à des travaux d'ingénierie incroyables et des données d'entraînement soigneusement sélectionnées. Rien de magique, rien de trop sophistiqué. C'est purement de l'imitation, des statistiques, et un token important indiquant qu'il est temps de conclure.
<|endoftext|>