Découvrez la première partie de cette série d'articles ici et la deuxième partie ici.
Pour GPT-2 ([7]), pas de révolution algorithmique. L'objectif des chercheurs d'openAI est de produire un algorithme qui soit efficace sur différentes tâches sans avoir été explicitement entraîné pour chacune d'entre elles. Leur approche repose sur deux pans : les données et les tokens.
Les données. Jusqu'à maintenant, nous avons beaucoup parlé des idées mathématiques visant à améliorer les modèles, mais pas des données sur lesquelles ces modèles étaient entraînés. Pour gpt-2, les auteurs ont cherché à créer le plus grand ensemble de données d'entraînement possible. Il existe des bases de données telles Common Crawl qui "crawlent" un peu tout sur internet. Le problème est que le contenu d'internet est en majorité de très mauvaise qualité et inintelligible. on ne peut donc pas entraîner d'algorithme pertinent dessus, et vérifier un dataset de cette envergure pourrait prendre un temps colossal. La solution : faire appel à une communauté gratuite. Les auteurs ont considéré comme valable n'importe quel lien sortant posté sur le réseau social Reddit et ayant reçu au moins 3 karmas (équivalent du "like"). Ils ont ainsi récupéré 45 millions de liens, qui après quelques nettoyages de données ont résulté en 8 millions de documents.
Token. Nous avons jusqu’ici assez peu abordé les tokens, sauf pour en donner une définition simplifiée, où un mot équivaudrait à un symbole et donc à un token . En réalité, la tokenisation a plusieurs facettes. Elle peut se faire au niveau du mot (word-based tokenization) ou au niveau du caractère (character-based tokenization). L’inconvénient de la tokenisation au niveau du caractère est que chaque token n’ayant pas de sens propre et les séquences étant extrêmement longues, il est difficile de générer un texte cohérent. La tokenisation au niveau du mot présente elle aussi des inconvénients : l’ampleur du vocabulaire implique que beaucoup de mots soient très rarement représentés. Il est donc difficile d’obtenir un algorithme plus général. Pour pallier à celà, les auteurs ont travaillé sur une alternative à un niveau intermédiaire, entre le mot et le caractère, appelé “subword tokenization”. Leur technique se base sur le “byte pair encoding”. L’idée est que les mots fréquents ont leurs propres tokens alors que les mots rares sont découpés en plusieurs tokens. Un caractère spécial,mettons </f>, est ajouté après chaque mot réel pour en marquer la fin. Ce “</f>” permettra notamment de distinguer le token “eur</f>” qui peut arriver dans le mot “tracteur” et le mot “euro” ; “eur” devra être complété par un autre token pour fermer le mot “euro”, alors que “tract”+”eur</f>” sera suivi d’un espace. À titre d’exemple, “anticonstitutionnellement” devient “anticonstitutionnellement</f>” puis est (potentiellement) transformé en 3 tokens : “anti”, “constitution”, “nellement</f>”.
Ajoutez à cela des légères modifications à l'algorithme, quelques millions d'euros l'entraîner, sans oublier 1,5 milliards de paramètres et vous obtenez GPT-2, un algorithme unique aussi performant sur des tâches diverses que des algorithmes spécifiquement entraînés.
Avec GPT-3 ([8]), OpenAI poursuit sa quête pour créer un algorithme de langage général capable d'effectuer des tâches précises avec le minimum d'instructions possible. Pour cela, les auteurs continuent de se pencher sur "in-context learning", c'est-à-dire la capacité d'un modèle de langage à répondre correctement à un exercice avec un minimum de contexte et sans entraînement spécifique de son algorithme. Les auteurs distinguent 3 cas pour tester ce modèle :
Ces cas, aussi appelés "contextual training", sont à distinguer du fine tuning où on fournit au modèle un dataset puis poursuit son entraînement avant de le tester. Ici, les exemples sont simplement donnés (comme un début de phrase) mais ne changent en rien les paramètres du modèle.
Concernant le modèle lui-même, pas de changement majeur par rapport à gpt-2. La vraie différence ? Toujours plus de paramètres (175 milliards contre 1,5 milliards pour GPT-2) et toujours plus de textes en entrée. Les auteurs ont également testé différentes variables avec plus ou moins de paramètres pour en mesurer l'impact sur la performance du modèle.
À partir de là, la communication d'openAI concernant les algorithmes derrière l'interface devient plus floue. Tous sont des variantes issues d' améliorations de GPT-3 sans qu'on sache exactement quelles sont les modifications apportées. On devine cependant que le format et le volume des données en entrées, le nombre de paramètres du modèle ainsi que les techniques d'entraînement des modèles ont forcément été des axes majeurs d'amélioration pour openAI. Alors qu'instructGPT est une version plutôt structurée basée sur une suite d'instructions ordonnées, GPT-4 est aujourd'hui la version la plus avancée d'openAI, capable de générer de longues conversations informelles et de traiter aussi bien du texte que des images.
Une différence notable existe cependant entre les versions chatGPT / instructGPT et les versions antérieures telles que GPT-3 : l'apprentissage du modèle. Historiquement, les modèles étaient entraînés pour prédire le prochain mot et donc "simplement" compléter des documents, pas pour répondre à des questions. Si vous posez une question à GPT-2, il risque de répondre par une autre question similaire... Pas forcément très intéressant. On peut essayer de formuler sa question sous la forme d'un début de réponse;par exemple, au lieu de "Peux-tu m'écrire un poème ?", écrire "Voici un poème que j'aime beaucoup :" et demander la complétion. Cela marche mieux mais reste assez peu pratique. Pour passer d'un algorithme de complétion de texte à un algorithme de question / réponse, 3 étapes ont été ajoutées dans l'apprentissage du modèle. :
C'est ce modèle final qui est ensuite mis en production à destination du grand public, et qui est capable de répondre à des questions sur le côté humoristique d'une image comme dans l'exemple ci-dessous.
Conclusion :
La recherche en machine learning concernant le traitement de données textuelles est un des axes de recherches les plus travaillés dans le monde de la recherche. Au cours des 15 dernières années, de très grandes variétés d'algorithmes ont été proposées pour améliorer l'état de l'art. Récemment, la recherche s'est principalement orientée vers l'augmentation de la taille des algorithmes, s'éloignant des techniques de modélisation permettant de mieux comprendre le langage. L'incroyable performance des outils mis à disposition du grand public tend à donner raison à cette direction, très coûteuse en apprentissage (plusieurs millions voire dizaine de millions de dollars) et donc réservée aux GAFAM et associées. À quand la prochaine innovation algorithmique, et quels nouveaux caps permettrait-elle de dépasser ?
Ceci est la dernière partie de cette série de quatre articles de Romain Warlop.
Découvrez les dernières actualités, articles, replays de webinars et événements fifty-five dans notre newsletter mensuelle Tea O’Clock.