Les transformateurs : le modèle derrière GPT-3, BERT et T5

Vous connaissez cette expression, Quand on a un marteau, tout ressemble à un clou ? Eh bien, dans l'apprentissage automatique, il semble que nous ayons vraiment découvert un marteau magique pour lequel tout est, en fait, un clou, et ils s'appellent Transformers. 

Vous connaissez cette expression, Quand on a un marteau, tout ressemble à un clou ? Eh bien, dans l’apprentissage automatique, il semble que nous ayons vraiment découvert un marteau magique pour lequel tout est, en fait, un clou, et ils s’appellent Transformers. 

Ce billet est plutôt complexe, je suis à ta dispo sur les réseaux sociaux pour répondre aux questions.
Bonne lecture !

Transformer model introduction

Les transformateurs sont des modèles qui peuvent être conçus pour traduire du texte, écrire des poèmes et des éditoriaux, et même générer du code informatique

Sais-tu que plusieurs recherches fascinantes ont été menées sur les Transformers ? Par exemple, AlphaFold 2 est un modèle incroyable qui peut prédire les structures des protéines à partir de leurs séquences génétiques.

C’est une grande avancée dans la recherche médicale, car cela pourrait aider à découvrir de nouveaux médicaments ou traitements pour des maladies comme le cancer ou la maladie d’Alzheimer.

De plus, il y a aussi des modèles puissants de traitement du langage naturel (NLP) tels que GPT-3, BERT, T5, Switch, Meena et autres. Ces modèles sont capables de comprendre et de produire un langage naturel de manière incroyablement précise.

Cela a des implications importantes pour l’industrie de la technologie, car cela peut aider à améliorer les chatbots, les assistants virtuels et les traducteurs automatiques, entre autres. C’est vraiment passionnant de voir où ces recherches vont mener à l’avenir !

Si vous voulez rester à la pointe de l’apprentissage automatique et en particulier de la NLP, vous devez en savoir au moins un peu sur Transformers. 

Donc, dans cet article, nous parlerons de ce qu’ils sont, aussi de leur fonctionnement et de la raison pour laquelle ils ont eu un tel impact.

Un transformateur est un type d’architecture de réseau neuronal. Pour récapituler, les réseaux de neurones sont un type de modèle très efficace pour analyser des types de données complexes comme les images, les vidéos, l’audio et le texte. 

Mais il existe différents types de réseaux de neurones optimisés pour différents types de données. Par exemple, pour analyser des images, nous utiliserons généralement des réseaux de neurones convolutifs ou « CNN ». Vaguement, ils imitent la façon dont le cerveau humain traite les informations visuelles.

Réseau neuronal convolutif, image de Renanar2 sur Wikicommons.

Et depuis 2012 environ , nous avons réussi à résoudre des problèmes de vision avec les CNN, comme l’identification d’objets sur des photos, la reconnaissance de visages et la lecture de chiffres manuscrits. Mais pendant longtemps, rien de comparable n’existait pour les tâches linguistiques (traduction, résumé de texte, génération de texte, reconnaissance d’entités nommées, etc.). C’était malheureux, car le langage est le principal moyen de communication pour les humains.

Avant l’introduction de Transformers en 2017, nous utilisions l’apprentissage en profondeur pour comprendre le texte avec un type de modèle appelé réseau neuronal récurrent ou RNN qui ressemblait à ceci :

Image d’un RNN, de fdeloche sur Wikimedia.

Disons que vous vouliez traduire une phrase de l’anglais vers le français. Un RNN prendrait en entrée une phrase anglaise, traiterait les mots un par un, puis, séquentiellement, recracherait leurs homologues français. Le mot clé ici est « séquentiel ». Dans le langage, l’ordre des mots est important et vous ne pouvez pas simplement les mélanger. La phrase :

« Jane est partie chercher les ennuis. »

signifie quelque chose de très différent de la phrase :

« Les problèmes sont partis chercher Jane »

Ainsi, tout modèle qui va comprendre le langage doit capturer l’ordre des mots, et les réseaux de neurones récurrents l’ont fait en traitant un mot à la fois, dans une séquence.

Mais les RNN avaient des problèmes. Premièrement, ils avaient du mal à gérer de grandes séquences de texte, comme de longs paragraphes ou des essais. Arrivés à la fin d’un paragraphe, ils oubliaient ce qui s’était passé au début. Un modèle de traduction basé sur RNN, par exemple, peut avoir du mal à se souvenir du sexe du sujet d’un long paragraphe.

Pire encore, les RNN étaient difficiles à former. Ils étaient notoirement sensibles à ce qu’on appelle le problème du gradient de disparition/explosion (parfois, il fallait simplement recommencer l’entraînement et croiser les doigts). Encore plus problématique, car ils traitaient les mots de manière séquentielle, les RNN étaient difficiles à paralléliser. Cela signifiait que vous ne pouviez pas simplement accélérer la formation en leur lançant plus de GPU, ce qui signifiait, à son tour, que vous ne pouviez pas les former sur autant de données.

Entrez les transformateurs

C’est là que Transformers a tout changé. Ils ont été développés en 2017 par des chercheurs de Google et de l’Université de Toronto, initialement conçus pour faire de la traduction. Mais contrairement aux réseaux de neurones récurrents, les transformateurs pourraient être parallélisés très efficacement. Et cela signifiait qu’avec le bon matériel, vous pouviez entraîner de très gros modèles.

De quelle taille?

Énormément grand.

GPT-3, le modèle de génération de texte particulièrement impressionnant qui écrit presque aussi bien qu’un humain, a été formé sur quelque 45 To de données textuelles, y compris la quasi-totalité du Web public.

Donc, si vous vous souvenez de quelque chose à propos de Transformers, que ce soit ceci : combinez un modèle qui évolue bien avec un énorme ensemble de données et les résultats vous épateront probablement.

Comment fonctionnent les transformateurs ?

Schéma du transformateur de l’article original : https://arxiv.org/abs/1706.03762

Alors que le diagramme de l’ article original est un peu effrayant, l’innovation derrière Transformers se résume à trois concepts principaux :

  1. Codages positionnels
  2. Attention
  3. Auto-attention

Codages positionnels

Commençons par le premier, les encodages positionnels. Disons que nous essayons de traduire un texte de l’anglais vers le français. N’oubliez pas que les RNN, l’ancienne méthode de traduction, comprenaient l’ordre des mots en traitant les mots de manière séquentielle. Mais c’est aussi ce qui les rendait difficiles à paralléliser.

Les transformateurs contournent cette barrière via une innovation appelée codages positionnels. L’idée est de prendre tous les mots de votre séquence d’entrée – une phrase en anglais, dans ce cas – et d’ajouter à chaque mot un numéro dans son ordre. Ainsi, vous alimentez votre réseau d’une séquence du type :

[("Dale", 1), ("says", 2), ("hello", 3), ("world", 4)]

Conceptuellement, vous pouvez considérer cela comme un déplacement du fardeau de la compréhension de l’ordre des mots de la structure du réseau neuronal vers les données elles-mêmes.

Au début, avant que le transformateur n’ait été entraîné sur des données, il ne sait pas comment interpréter ces encodages positionnels. Mais au fur et à mesure que le modèle voit de plus en plus d’exemples de phrases et de leurs encodages, il apprend à les utiliser efficacement.

J’ai simplifié un peu trop ici – les auteurs originaux ont utilisé des fonctions sinusoïdales pour trouver des encodages positionnels, pas les simples entiers 1, 2, 3, 4 – mais le point est le même. Stockez l’ordre des mots sous forme de données, et non de structure, et votre réseau de neurones devient plus facile à former.

Attention

LA PROCHAINE PARTIE IMPORTANTE DES TRANSFORMATEURS EST APPELÉE ATTENTION.

L’attention est une structure de réseau de neurones dont vous entendrez parler partout dans l’apprentissage automatique de nos jours. En fait, le titre de l’article de 2017 qui a présenté Transformers ne s’appelait pas, We Present You the Transformer. Au lieu de cela, il s’appelait L’attention est tout ce dont vous avez besoin .

L’attention a été introduite dans le contexte de la traduction deux ans plus tôt, en 2015. Pour le comprendre, prenez cet exemple de phrase de l’article original :

The agreement on the European Economic Area was signed in August 1992.

Imaginez maintenant essayer de traduire cette phrase dans son équivalent français :

L’accord sur la zone économique européenne a été signé en août 1992.

Une mauvaise façon d’essayer de traduire cette phrase serait de parcourir chaque mot de la phrase anglaise et d’essayer de recracher son équivalent français, un mot à la fois. Cela ne fonctionnerait pas bien pour plusieurs raisons, mais d’une part, certains mots de la traduction française sont inversés : c’est « European Economic Area » en anglais, mais « la zone économique européenne » en français. De plus, le français est une langue avec des mots genrés. Les adjectifs « économique » et « européenne » doivent être au féminin pour correspondre à l’objet féminin « la zone ».

L’attention est un mécanisme qui permet à un modèle de texte de « regarder » chaque mot de la phrase d’origine lorsqu’il prend une décision sur la façon de traduire les mots dans la phrase de sortie. Voici une belle visualisation de ce document d’attention original :

Figure tirée de l’article « Neural Machine Translation by Jointly Learning to Align and Translate (2015) », https://arxiv.org/abs/1409.0473

C’est une sorte de carte de chaleur qui montre où le modèle « assiste » lorsqu’il sort chaque mot de la phrase française. Comme on pouvait s’y attendre, lorsque le modèle produit le mot « européenne », il s’intéresse fortement aux mots d’entrée « européen » et « économique ».

Et comment le modèle sait-il à quels mots il doit « prêter attention » à chaque pas de temps ? C’est quelque chose qui est appris à partir des données de formation. En voyant des milliers d’exemples de phrases en français et en anglais, le modèle apprend quels types de mots sont interdépendants. Il apprend à respecter le genre, la pluralité et d’autres règles de grammaire.

Il ne comprend pas la grammaire, il apprend statistiquement comment se comporte les mots entre eux.

Le mécanisme de l’attention est un outil extrêmement utile pour le traitement du langage naturel depuis sa découverte en 2015, mais dans sa forme originale, il a été utilisé parallèlement aux réseaux de neurones récurrents. Ainsi, l’innovation du document Transformers 2017 était, en partie, d’abandonner complètement les RNN. C’est pourquoi l’article de 2017 s’intitulait « L’attention est tout ce dont vous avez besoin ».

Auto-attention

La dernière pièce (et peut-être la plus percutante) du Transformer est une torsion de l’attention appelée « self-attention ».

Mais que se passe-t-il si vous n’essayez pas de traduire des mots, mais plutôt de créer un modèle qui comprend le sens sous-jacent et les modèles de langage – un type de modèle qui pourrait être utilisé pour effectuer un certain nombre de tâches linguistiques ?

En général, ce qui rend les réseaux de neurones puissants, excitants et cool, c’est qu’ils créent souvent automatiquement des représentations internes significatives des données sur lesquelles ils sont formés. Lorsque vous inspectez les couches d’un réseau de neurones de vision, par exemple, vous trouverez des ensembles de neurones qui « reconnaissent » les contours, les formes et même les structures de haut niveau comme les yeux et la bouche. Un modèle entraîné sur des données textuelles peut apprendre automatiquement des parties du discours, des règles de grammaire et savoir si les mots sont synonymes.

Plus la représentation interne du langage qu’un réseau neuronal apprend est bonne, mieux il sera dans n’importe quelle tâche linguistique. Et il s’avère que l’attention peut être un moyen très efficace de le faire, si elle est activée sur le texte d’entrée lui-même.

Par exemple, prenez ces deux phrases :

« Serveur, puis-je avoir la note ? »

« On dirait que je viens de planter le serveur. »

Le mot serveur signifie ici deux choses très différentes, que nous, les humains, pouvons facilement lever l’ambiguïté en regardant les mots environnants. L’auto-attention permet à un réseau de neurones de comprendre un mot dans le contexte des mots qui l’entourent.

Ainsi, lorsqu’un modèle traite le mot « serveur » dans la première phrase, il peut être « attentif » au mot « note », ce qui aide à lever l’ambiguïté entre un serveur humain et un serveur métallique.

Dans la deuxième phrase, le modèle pourrait s’occuper du mot « planter » pour déterminer que ce « serveur » fait référence à une machine.

L’auto-attention aide les réseaux de neurones à lever l’ambiguïté des mots, à effectuer le marquage des parties du discours, à résoudre les entités, à apprendre les rôles sémantiques et bien plus encore .

Je vous invite à voir l’usage des transformers dans les mathématiques et notamment les travaux pour voir si la machine « comprend » les math ou non :

Alors, nous y sommes. : Les transformateurs, expliqués à 10 000 pieds, se résument à :

Si vous voulez une explication technique plus approfondie, je vous recommande vivement de consulter le billet de blog de Jay Alammar, The Illustrated Transformer .

Que peuvent faire les transformateurs ?

L’un des modèles basés sur les transformateurs les plus populaires s’appelle BERT, abréviation de « Représentations d’encodeurs bidirectionnels à partir de transformateurs ». Il a été introduit par des chercheurs de Google à l’époque où j’ai rejoint l’entreprise, en 2018, et a rapidement fait son chemin dans presque tous les projets NLP, y compris Google Search .

BERT ne fait pas seulement référence à une architecture de modèle, mais à un modèle formé lui-même, que vous pouvez télécharger et utiliser gratuitement ici . Il a été formé par des chercheurs de Google sur un corpus de texte massif et est devenu une sorte de couteau de poche à usage général pour la PNL. Il peut être étendu pour résoudre un tas de tâches différentes, comme :

– résumé de texte

– réponse aux questions

– classification

– résolution d’entité nommée

– similitude du texte

– détection de messages offensants/blasphèmes

– comprendre les requêtes des utilisateurs

– beaucoup plus

BERT a prouvé que vous pouviez créer de très bons modèles de langage formés sur des données non étiquetées, comme du texte extrait de Wikipedia et Reddit, et que ces grands modèles de « base » pouvaient ensuite être adaptés avec des données spécifiques à un domaine pour de nombreux cas d’utilisation différents.

Plus récemment, le modèle GPT-3 , créé par OpenAI, a époustouflé les gens avec sa capacité à générer du texte réaliste. Meena , introduit par Google Research l’année dernière, est un chatbot basé sur Transformer (akhem, « agent conversationnel ») qui peut avoir des conversations captivantes sur presque tous les sujets (cet auteur a passé vingt minutes à discuter avec Meena de ce que signifie être humain) .

Les transformateurs ont également fait des vagues en dehors de la PNL, en composant de la musique , en générant des images à partir de descriptions textuelles et en prédisant la structure des protéines .

Comment puis-je utiliser les transformateurs ?

Maintenant que vous êtes convaincu de la puissance des transformateurs, vous voudrez peut-être savoir comment vous pouvez commencer à les utiliser dans votre propre application. Pas de problème.

Vous pouvez télécharger des modèles courants basés sur Transformer, tels que BERT, à partir de TensorFlow Hub . Pour un didacticiel de code, consultez celui que j’ai écrit sur la création d’applications alimentées par un langage sémantique.

Mais si vous voulez être vraiment à la mode et que vous écrivez Python, je vous recommande vivement la populaire bibliothèque « Transformers » maintenue par la société HuggingFace . La plate-forme vous permet de former et d’utiliser la plupart des modèles NLP populaires d’aujourd’hui, comme BERT, Roberta, T5, GPT-2, d’une manière très conviviale pour les développeurs.

Partage ton amour pour cet article
Optimized with PageSpeed Ninja