Vous connaissez l'expression "Quand on a un marteau, tout ressemble à un clou" ? Eh bien, dans le domaine de 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 des transformateurs. Les transformateurs sont des modèles qui peuvent être conçus pour traduire des textes, écrire des poèmes et des éditoriaux, et même générer du code informatique. En fait, une grande partie de la recherche est construite sur des transformateurs, comme AlphaFold 2, le modèle qui prédit les structures des protéines à partir de leurs séquences génétiques, ainsi que de puissants modèles de traitement du langage naturel (NLP) comme GPT-3, BERT, T5, Switch, Meena et d'autres. Vous pourriez dire qu'ils sont plus que satisfaisants... euh, oubliez ça.
Les transformateurs
Si vous voulez rester branché sur l'apprentissage automatique et surtout sur la PNL, vous devez connaître au moins un peu les Transformers. Dans cet article, nous allons donc vous expliquer ce qu'ils sont, comment ils fonctionnent et pourquoi ils ont eu un tel impact.Un transformateur est un type d'architecture de réseau neuronal. Pour résumer, les réseaux neuronaux 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 neuronaux optimisés pour différents types de données. Par exemple, pour analyser des images, nous utilisons généralement des réseaux neuronaux convolutifs ou "CNN". Vaguement, ils imitent la façon dont le cerveau humain traite les informations visuelles.
Et depuis 2012 environ, nous avons réussi à résoudre des problèmes de vision avec des CNN, comme l'identification d'objets sur des photos, la reconnaissance de visages et la lecture de chiffres manuscrits. Mais pendant longtemps, il n'existait rien de comparable pour les tâches linguistiques (traduction, résumé de texte, génération de texte, reconnaissance d'entités nommées, etc.) C'était regrettable, car le langage est le principal moyen de communication des humains.
Avant l'introduction de Transformers en 2017, la façon dont nous utilisions l'apprentissage profond pour comprendre le texte était avec un type de modèle appelé réseau neuronal récurrent ou RNN qui ressemblait à quelque chose comme ceci :
Supposons que vous vouliez traduire une phrase de l'anglais au français. Un RNN prendrait en entrée une phrase en anglais, traiterait les mots un par un, puis, séquentiellement, sortirait leurs équivalents français. Le mot clé ici est "séquentiel". Dans le langage, l'ordre des mots est important et vous ne pouvez pas les mélanger. La phrase :
"Jane est allée chercher des ennuis."
signifie quelque chose de très différent de la phrase :
"Les ennuis sont partis à la recherche de Jane"
Ainsi, tout modèle destiné à comprendre le langage doit saisir l'ordre des mots. Les réseaux neuronaux récurrents y parvenaient en traitant un mot à la fois, dans une séquence.
Mais les RNN avaient des problèmes. Tout d'abord, ils avaient du mal à traiter de grandes séquences de texte, comme de longs paragraphes ou des essais. Lorsqu'ils arrivaient à la fin d'un paragraphe, ils oubliaient ce qui s'était passé au début. Un modèle de traduction basé sur les RNN, par exemple, pourrait 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 que l'on appelle le problème du gradient disparaissant/explosif (il suffisait parfois de recommencer la formation et de croiser les doigts). Plus problématique encore, parce qu'ils traitaient les mots de manière séquentielle, les RNN étaient difficiles à paralléliser. Il n'était donc pas possible d'accélérer l'apprentissage en ajoutant des GPU, ce qui signifiait que l'on ne pouvait pas les entraîner sur une grande quantité de données.
Entrons dans les transformateurs
C'est là que les transformateurs ont tout changé. Mis au point en 2017 par des chercheurs de Google et de l'Université de Toronto, ils étaient initialement conçus pour faire de la traduction. Mais contrairement aux réseaux neuronaux récurrents, les Transformers pouvaient être parallélisés très efficacement. Et cela signifiait, avec le bon matériel, que vous pouviez former des modèles vraiment gros.Gros comment ?
Très gros.
GPT-3, le modèle de génération de texte particulièrement impressionnant qui écrit presque aussi bien qu'un humain, a été entraîné sur quelque 45 To de données textuelles, dont la quasi-totalité du web public.
Si vous vous souvenez d'une chose à propos de Transformers, c'est ceci : combinez un modèle qui se met à l'échelle avec un énorme ensemble de données et les résultats vous étonneront probablement.
Comment fonctionnent les transformateurs ?
Bien que le diagramme de l'article original soit un peu effrayant, l'innovation derrière les transformateurs se résume à trois concepts principaux :Encodages positionnels
Attention
Auto-attention
Encodages positionnels
Commençons par le premier, les encodages positionnels. Disons que nous essayons de traduire un texte de l'anglais au français. Rappelez-vous que les RNN, l'ancienne méthode de traduction, comprenaient l'ordre des mots en les traitant de manière séquentielle. Mais c'est aussi ce qui les rendait difficiles à paralléliser.
Les transformateurs contournent cet obstacle grâce à une innovation appelée codage positionnel. L'idée est de prendre tous les mots de votre séquence d'entrée - une phrase anglaise, dans ce cas - et d'ajouter à chaque mot un numéro correspondant à son ordre. Donc, vous donnez à votre réseau une séquence comme :
[("Dale", 1), ("says", 2), ("hello", 3), ("world", 4)]
D'un point de vue conceptuel, on peut considérer qu'il s'agit de déplacer la charge 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é formé sur des données, il ne sait pas comment interpréter ces encodages positionnels. Mais à 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 un peu simplifié ici - les auteurs originaux ont utilisé des fonctions sinusoïdales pour trouver des codages positionnels, et non les simples entiers 1, 2, 3, 4 - mais l'idée est la même. Stockez l'ordre des mots comme des données, et non comme une structure, et votre réseau neuronal sera plus facile à former.
Attention
LA PROCHAINE PARTIE IMPORTANTE DES TRANSFORMATEURS EST APPELÉE ATTENTION.
Heh.
L'attention est une structure de réseau neuronal dont vous entendrez parler partout dans l'apprentissage automatique ces jours-ci. En fait, le titre de l'article de 2017 qui a présenté Transformers n'était pas intitulé We Present You the Transformer. Il s'appelait plutôt Attention is All You Need.
L'attention a été introduite dans le contexte de la traduction deux ans plus tôt, en 2015. Pour le comprendre, prenez cette phrase d'exemple tirée du document original :
L'accord sur l'Espace économique européen a été signé en août 1992.
Imaginez maintenant que vous essayez 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 passer en revue chaque mot de la phrase anglaise et d'essayer de faire sortir son équivalent français, un mot à la fois. Cela ne fonctionnerait pas bien pour plusieurs raisons, mais tout d'abord, 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. En outre, le français est une langue qui comporte des mots sexués. Les adjectifs "économique" et "européenne" doivent être à la forme féminine 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 de la phrase de sortie. Voici une belle visualisation de cet article original sur l'attention :
Il s'agit d'une sorte de carte thermique qui montre où le modèle "assiste" lorsqu'il sort chaque mot de la phrase française. Comme on peut s'y attendre, lorsque le modèle produit le mot "européenne", il est très attentif aux deux mots "European" et "Economic".
Et comment le modèle sait-il quels mots il doit "assister" à chaque pas de temps ? C'est quelque chose qui est appris à partir des données d'entraînement. En voyant des milliers d'exemples de phrases françaises et anglaises, 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.
Le mécanisme d'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 était utilisé aux côtés de réseaux neuronaux récurrents. L'innovation de l'article de 2017 sur les transformateurs consistait donc, en partie, à abandonner complètement les RNN. C'est pourquoi l'article de 2017 s'intitulait "Attention is all you need".
Auto-attention
Le dernier élément du Transformer (et peut-être le plus important) est une variante de l'attention appelée "auto-attention".Le type d'attention "vanille" dont nous venons de parler a permis d'aligner les mots dans les phrases anglaises et françaises, ce qui est important pour la traduction. Mais qu'en est-il si vous n'essayez pas de traduire des mots, mais plutôt de construire un modèle qui comprend le sens sous-jacent et les modèles du 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 neuronaux puissants, passionnants et cool, c'est qu'ils construisent 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 neuronal de vision, par exemple, vous trouverez des ensembles de neurones qui "reconnaissent" les bords, les formes et même des structures de haut niveau comme les yeux et la bouche. Un modèle entraîné sur des données textuelles peut apprendre automatiquement les parties du discours, les règles de grammaire et si les mots sont synonymes.
Plus la représentation interne du langage qu'un réseau neuronal apprend est bonne, plus il sera performant dans n'importe quelle tâche linguistique. Et il s'avère que l'attention peut être un moyen très efficace d'y parvenir, si elle est portée sur le texte d'entrée lui-même.
Par exemple, prenez ces deux phrases :
"Serveur, puis-je avoir l'addition ?"
"On dirait que je viens de planter le serveur."
Le mot serveur signifie ici deux choses très différentes, que nous, humains, pouvons facilement désambiguïser en regardant les mots environnants. L'auto-attention permet à un réseau neuronal 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 "check", qui permet de distinguer un serveur humain d'un serveur métallique.
Dans la deuxième phrase, le modèle peut être attentif au mot "crashed" pour déterminer que ce "serveur" fait référence à une machine.
L'auto-attention aide les réseaux neuronaux à désambiguïser les mots, à effectuer le marquage des parties du discours, la résolution des entités, l'apprentissage des rôles sémantiques et bien d'autres choses encore.
Donc, nous y voilà.. : Les Transformers, expliqués à 10 000 pieds, se résument à :
Si vous voulez une explication technique plus approfondie, je vous recommande vivement de consulter l'article du blog de Jay Alammar intitulé The Illustrated Transformer.
Que peuvent faire les transformateurs ?
L'un des modèles les plus populaires basés sur les transformateurs s'appelle BERT, abréviation de " Bidirectional Encoder Representations from Transformers ". Il a été introduit par des chercheurs de Google 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 entraîné lui-même, que vous pouvez télécharger et utiliser gratuitement ici. Il a été entraîné 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 le traitement automatique des langues. Il peut être étendu pour résoudre un tas de tâches différentes, comme :
- le résumé de texte
- réponse à des questions
- la classification
- la résolution d'entités nommées
- similarité de texte
- détection de messages offensants/profanation
- compréhension des requêtes des utilisateurs
- et bien d'autres choses encore
BERT a prouvé qu'il était possible de construire de très bons modèles de langage entraînés sur des données non étiquetées, comme des textes extraits de Wikipédia et de Reddit, et que ces grands modèles "de base" pouvaient ensuite être adaptés à de nombreux cas d'utilisation différents à l'aide de données spécifiques au domaine.
Plus récemment, le modèle GPT-3, créé par OpenAI, a époustouflé les gens par sa capacité à générer du texte réaliste. Meena, présenté par Google Research l'année dernière, est un chatbot (akhem, "agent conversationnel") basé sur un Transformer qui peut avoir des conversations passionnantes sur presque tous les sujets .
Les Transformers ont également fait des vagues en dehors du NLP, 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 ?
Comment puis-je utiliser les Transformers ? Maintenant que vous êtes convaincu de la puissance des Transformers, vous voulez 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 les Transformers, comme BERT, à partir de TensorFlow Hub. Pour un tutoriel de code, consultez celui que j'ai écrit sur la création d'applications alimentées par le langage sémantique.
Mais si vous voulez être vraiment à la mode et que vous écrivez Python, je vous recommande vivement la bibliothèque populaire "Transformers" maintenue par la société HuggingFace. Cette plateforme vous permet d'entraîner et d'utiliser la plupart des modèles NLP les plus populaires aujourd'hui, comme BERT, Roberta, T5, GPT-2, d'une manière très conviviale pour les développeurs.