VT2021 GPT fiche

= Auteurs =
 * AGUIAR Mathilde (mathilde.aguiar@etu.univ-grenoble-alpes.fr)
 * HAJJI Oumaima (oumaima.hajji@etu.univ-grenoble-alpes.fr)

= Introduction au Traitement automatique des Langues (TAL) =

Le Traitement automatique des Langues (TAL), en français, ou Natural Language Processing (NLP), en anglais, désigne l’ensemble des techniques informatiques mises en œuvre pour traiter le langage naturel (oral ou écrit) par une machine. On y retrouve notamment le Text-to-Speech, la traduction automatique, l’analyse de sentiments, ou encore la reconnaissance d’entités nommées. Le TAL fait appel à la fois à des méthodes statistiques ou des modèles deep learning pour les méthodes les plus récentes. C’est dans ce domaine, entre autres, qu’a décidé d’investir OpenAI, la société à l’origine des modèles GPT.

= L'architecture Transformer =

GPT, Generative Pre-trained Transformer, est un réseau de neurones basé sur l’architecture dite “Transformers”, comme son nom l’indique.

Avant 2018, les approches classiques pour les modèles de langues consistaient à une succession de couches de convolution et de couches de réseau de neurones récurrents. Cette approche comporte certains désavantages comme être vraiment coûteuse en calculs mais aussi 2 problèmes majeurs en termes de traitement du langage naturel. En effet, ce type d’architecture n’est pas performant sur de longues séquences données en entrée, dû à des limitations de mémoire. De plus, ils ne sont pas optimisés pour apprendre les dépendances entre des éléments distants au sein d’une même séquence, ce qui pose problème pour des langues basées sur des constructions Sujet Objet Verbe, comme par exemple le coréen ou le japonais. L’avantage de l’architecture Transformers [1] est son mécanisme d’attention. Ce mécanisme permet de considérer tous les tokens précédent de la séquence et donc d’avoir une contextualisation de chaque token.



= Première approche, GPT-1 =

Avant la création et le développement du modèle GPT-1, la majorité des modèles TAL ont été entraînés pour des tâches spécifiques (ex: analyse des sentiments, implication textuelle, ..) par des méthodes de classification non supervisée. Mais cette approche a quelque problèmes:
 * On a besoin des données de grandes tailles pour une tâche spécifique.
 * Ces modèles ne peuvent être utilisés que pour ces tâches précises.

Le premier modèle GPT propose une solution à ce problème: l’utilisation des données non marquées et du fine-tuning pour entraîner les modèles en donnant des exemples de tâches spécifiques. Cette approche peut être vue comme une succession des deux concepts: un pré-entraînement non supervisé suivi par un fine-tuning supervisé.



Figure 2: Approche GPT-1

Le modèle développé est basé sur une architecture Transformer 12 couches avec des mécanismes d’attention ce qui le rend capable de gérer des dépendances sur le long-terme. Le modèle utilise le principe de Transfer Learning ce qui lui permet d’être capable de réaliser 4 types de tâches : l’inférence en langage naturel, la réponse à des questions, l’analyse des similarités et la classification de textes. GPT-1 a réussi à surpasser largement les modèles spécifiques de chacune des tâches citées précédemment. Grâce à ces travaux on constate également que les architectures Transformer obtiennent de meilleurs résultats avec un entraînement non supervisé.

=  Le second modèle, GPT-2 =

Ce modèle a été le deuxième dans la série GPT de OpenAI. Lors du développement de ce modèle, des datasets plus grands ont été utilisés pour effectuer l’entraînement, et on a ajouté beaucoup plus de paramètres. En effet, le nombre de paramètres des quatres modèles de GPT-2 varie entre 117 pour le plus petit modèle, et 1.5 pour le plus large [2].

Objectifs des entraînements

 * Le développement de GPT-2 avait pour but la création des systèmes plus généraux qui peuvent exécuter plusieurs tâches sans avoir besoin de créer manuellement des datasets d’entraînement pour chacune des tâches [3].


 * Task conditioning: pour qu’un système ‘général’ puisse pouvoir exécuter des tâches différentes avec le même input, il faut changer l’expression probabilistique de ce modèle pour tenir en compte non seulement le input et output, mais aussi la tâche. L’expression devient donc: p(output/input) → p(output/input,tâche).


 * L’une des capacités de GPT-2 est ‘Zero Shot Learning’, cela veut dire que le modèle peut exécuter une tâche sans avoir déjà vu un exemple de cette tâche. Cela est grâce au fait que GPT-2 peut comprendre une tâche en lisant et en analysant les instructions données. Cette faculté est appelée: ‘Zero Shot Task Transfer’.

Dataset

 * Contrairement à l’ancienne approche en entraînant les modèles sur des datasets spécifiques appartenant à un même domaine textuel, la nouvelle méthode a été de trouver un dataset plus grand et qui contient une variété des textes dans des domaines différents.


 * En s’inspirant de l’approche des archives comme Common Crawl, ils ont créé un nouveau web scrape avec des données déjà filtrées par des humains pour avoir des données de qualité. Et pour ne pas faire cela manuellement (puisque c’est cher), ils ont choisi de récupérer des posts sur Reddit (ayant au moins 3 karma). Le résultat est donc la création de leur dataset appelé WebText (de taille 40GB, 8 millions documents) [3].



Figure 3: manifestations naturelles des textes traduits dans WebText

L’architecture du modèle

 * Le nombre de paramètres: 1.5 milliards de paramètres (10 fois plus que GPT-1).


 * La taille du vocabulaire: 50257 tokens ont été utilisés dans le vocabulaire.


 * Word embedding (ou plongement lexical): les vecteurs utilisés étaient de 1600 dimensions.

Performance
GPT-2 a été évalué sur plusieurs tâches différentes (ex: la compréhension, la génération automatique des résumés, ..).



Figure 4: les performances de GPT-2 suivant plusieurs critères

= Le modèle open-source, GPT-J =

Un mot sur GPT-J
C’est un modèle de 6B paramètres utilisant l’approche transformer pour générer du texte. C’est un projet Open Source de Eleuther.ai, publié sur github[4] par Ben Wang and Aran Komatsuzaki. GPT-J a été entraîné avec la dataset pile de Eleuther.ai [5].

Le dataset Pile
Cette dataset (825 GB) respecte les principes d’une bonne dataset dont on a parlé dans la partie GPT-2. En effet, elle contient des données diversifiée qui couvrent plusieurs domaines ce qui la rend la meilleure dataset pour entraîner un modèle général et pour pouvoir exécuter des différentes tâches [6]. Elle se compose de 22 sous datasets qui rentrent dans des différents domaines. Les documents d’une dataset peuvent être revus plusieurs fois ‘epochs’ durant un ‘epoch’ sur la dataset entière. Par exemple, puisque Wikipedia est considérée comme une source des documents de bonne qualité, son ‘epoch’ est vu 3 fois plus que d’autres datasets.



Figure 5: Les sous datasets de la Pile [7]

Utilisation du modèle
GPT-J a été particulièrement développé pour améliorer la génération des textes suivant les instructions données. En fournissant une ‘prompt’ en entrée, GPT-J renvoie un texte en respectant les paramètres donnés. Il répond bien à des prompts de différents types, par exemple [8]:



Figure 6: exemple de 'prompt' donnée en entrée à GPT-J

Performance
On peut voir dans la figure Y que GPT-J a des performances meilleures que celles de GPT-2 et GPT-Neo dans les tests faits sur ces datasets. Il est plus performant que des modèles de GPT-3 dans quelques cas (notamment GPT-3-1.3B, GPT-3-Babbage, GPT-3-2.7B qui ont beaucoup moins de paramètres que lui).



Figure 7: Comparaison des performances de GPT-J et des autres modèles [8]

= Le plus récent, GPT-3 =

L’objectif de GPT-3
Les modèles actuels ont été conçus pour réaliser des tâches spécifiques que l’on leur a spécifiées avant l’exécution de la tâche en elle-même. Le problème de cette méthode est qu’elle nécessite un grand nombre de ressources pour chaque type de tâche et pour certaines tâches on peut avoir du mal à collecter suffisamment de données pour réaliser un entraînement complet. De plus, comme le but est de se rapprocher au maximum de la méthode d’apprentissage humaine, nous n’avons pas besoin d’une quantité astronomique d’exemples pour comprendre comment réaliser telle ou telle tâche et nous sommes également capables de mixer ou passer aisément d’une tâche à l’autre.

Les différentes approches
Le but de OpenAI est de réaliser un modèle étant capable de reproduire au mieux la méthode d’apprentissage des humains. Pour cela, ils ont expérimenté différentes approches pour pré-entraîner leur modèle. Certaines avaient déjà été testées avec GPT-2, comme le zero-shot learning.


 * La première approche est la plus classique : le fine-tuning. Son avantage est qu’elle permet de bonnes performances mais elle nécessite une quantité importante de données labellisées et spécifiques pour chaque tâche à réaliser. Les chercheurs de OpenAI n’ont donc pas fine-tuned leur modèle.


 * Le few-shot learning : on donne au modèle quelques exemples de tâches à réaliser mais on ne met pas à jour les poids pendant la période d’inférence. On donne donc K exemples de tâches ainsi que le résultat qui serait attendu et ensuite on donne un exemple final et on demande au modèle quel est sa prédiction.


 * Le One-shot learning : seulement une démonstration (exemple et prédiction attendue) est autorisée mais on précise aussi la nature de la tâche à effectuer via une phrase en langage naturel en plus de la donnée en entrée.


 * Le Zero-shot learning : Aucune démonstration n’est autorisée. Le modèle dispose seulement d’une phrase descriptive de la tâche en langage naturel. C’est de ce type d’apprentissage que veut se rapprocher le plus GPT3 car il mimique l’apprentissage humain au maximum. Cependant il reste le plus compliqué à mettre en place car le modèle a du mal à comprendre le format de la tâche demandée.



Figure 8: Les différentes approches utilisées pour GPT-3

L’architecture du modèle

 * Nombre de paramètres : 175 milliards de paramètres pour le modèle principal baptisé “GPT-3” et de 13 milliards à 125 millions pour les 7 sous-modèles GPT-3 (GPT-3 Small, GPT-3 Medium, etc.).


 * Architecture Transformers, identique à celle de GPT-2

Pas beaucoup d’évolution au niveau de l’architecture même de GPT-3 mise à part l’augmentation drastique du nombre de paramètres.



Figure 9: informations sur les différents modèles de GPT-3 [9]

Limitations
Malgré le fait que GPT-3 atteigne d'excellents scores sur de nombreuses tâches, le modèle possède certaines limites. Tout d’abord, il est plutôt faible sur les tâches de synthèse de textes, il fait beaucoup de répétitions et même des contradictions. Un autre problème récurrent chez les modèles de deep learning est le biais, et GPT-3 n’y échappe pas non plus. Certains utilisateurs ont pu constater des biais racistes ou misogynes comme par exemple l’association du mot “Islam” avec “terrorisme” qui revient souvent dans les phrases générées par le modèle [10].

Autres modèles issus de GPT-3
Pour l’utilisation de l’API de OpenAI, il existe différents modèles à notre disposition pour les fine-tune : davinci, curie, babbage, et ada. Les 2 premiers sont les plus complets, mais chacun a ses tâches “préférées”.

Applications en production qui utilisent GPT-3

 * Duolingo : Utilise GPT-3 pour donner des corrections en grammaire Française.


 * HyperClova : modèle TAL de coréen basé sur GPT-3, développé par Naver.


 * 500+ Openers for Tinder : GPT-3 a généré des centaines de phrases d’introduction pour les conversations Tinder.

= Bibliographie = [1] Attention Is All You Need: https://arxiv.org/abs/1706.03762

[2] The true names/sizes of the 4 GPT-2 models (Issue): https://github.com/openai/gpt-2/issues/209

[3] Language Models are Unsupervised Multitask Learners : https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf

[4] Le projet sur github pour plus d’informations: https://github.com/kingoflolz/mesh-transformer-jax/

[5] Documentation de GPT-J sur Huggingface: https://huggingface.co/docs/transformers/model_doc/gptj

[6] Documentation de la pile: https://pile.eleuther.ai/

[7] The Pile: An 800GB Dataset of Diverse Text for Language Modeling: https://arxiv.org/pdf/2101.00027.pdf

[8] GPT-J-6B: 6B JAX-Based Transformer (Aran Komatsuzaki): https://arankomatsuzaki.wordpress.com/2021/06/04/gpt-j/

[9] Language Models are Few-Shot Learners: https://arxiv.org/pdf/2005.14165.pdf

[10] How Biased is GPT-3: https://medium.com/fair-bytes/how-biased-is-gpt-3-5b2b91f1177