![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Malgré le battage médiatique actuel, les modèles de langage ne sont pas nouveaux. Nous les avons dans nos téléphones depuis des années, faisant de la saisie semi-automatique. Et, bien qu'ils puissent nous faire gagner quelques secondes sur l'orthographe, personne ne les appellerait jamais "intelligents" ou " sensibles ".
Techniquement, tous les modèles de langage ne sont que des distributions de probabilité de jetons. Ils sont formés pour déterminer le prochain mot ou symbole probable, selon celui qui a été symbolisé, compte tenu des précédents. Mais, ils peuvent également être affinés pour d'autres tâches telles que la traduction linguistique et la réponse aux questions.
La génération de langage est le processus qui consiste à donner à un algorithme un mot aléatoire afin qu'il puisse générer le suivant en fonction des probabilités qu'il a apprises à partir des données d'apprentissage, puis à l'alimenter en continu avec sa propre sortie. Par exemple, si le modèle voit "je", nous nous attendons à ce qu'il produise "suis", puis "bien", et ainsi de suite.
Sa capacité à créer des phrases significatives dépend de la taille de sa fenêtre de référence. Les modèles de base plus anciens, tels que ceux que l'on trouve dans nos téléphones, ne peuvent regarder qu'un ou deux mots en arrière, c'est pourquoi ils sont myopes et oublient le début d'une phrase au moment où ils atteignent le milieu.
Avant les transformateurs, les chercheurs utilisaient des réseaux de neurones récurrents (RNN) pour résoudre le problème de mémoire courte. Sans entrer dans trop de détails, nous pouvons dire que leur astuce consistait à produire un vecteur d'état caché contenant des informations sur tous les nœuds de la phrase d'entrée et à le mettre à jour à chaque nouveau jeton introduit.
Bien que l'idée soit définitivement intelligente, l'état caché finissait toujours par être fortement biaisé vers les entrées les plus récentes. Par conséquent, comme les algorithmes de base, les RNN ont toujours tendance à oublier le début de la phrase, mais pas aussi rapidement.
Plus tard, les réseaux Long Short-Term Memory (LSTM) et Gated Recurrent Unit (GRU) ont été introduits. Contrairement aux RNN vanille, ils avaient des mécanismes intégrés (portes) qui aidaient à conserver la mémoire des entrées pertinentes, même si elles étaient loin de la sortie produite. Mais ces réseaux étaient encore de nature séquentielle et avaient des architectures beaucoup trop complexes. Ils étaient inefficaces et interdisaient le calcul parallèle, il n'y avait donc aucune chance de les exécuter sur plusieurs ordinateurs simultanément pour obtenir des performances ultra-rapides.
En 2017, les transformateurs ont été décrits pour la première fois dans cet article par Google . Contrairement aux LSTM et aux GRU, ils avaient la capacité de choisir activement les segments pertinents pour le traitement à un stade donné et de les référencer lors d'une estimation. Ils étaient plus rapides, plus efficaces et avaient une architecture plus simple basée sur le principe de l'attention .
C'est drôle que si vous lisez le travail maintenant, cela ressemble à un article banal sur la traduction automatique, dont il y avait beaucoup à l'époque. Les auteurs n'ont probablement pas réalisé qu'ils auraient pu inventer l'une des architectures les plus importantes de l'histoire de l'IA.
Dans le contexte de l'apprentissage automatique, l'attention fait référence aux vecteurs attribués à chaque jeton qui contiennent des informations sur sa position dans une séquence et son importance par rapport aux autres éléments d'entrée. Le modèle peut les utiliser lors de la réalisation de prédictions sans nécessiter de traitement en série. Décomposons un peu pour que cela devienne plus clair.
Avant les transformateurs, l'approche traditionnelle du traitement séquence à séquence, telle que la traduction du langage neuronal, consistait à coder toutes les entrées dans un seul état caché à l'aide d'un RNN, puis à décoder la séquence cible à l'aide d'un autre RNN. Tout ce qui importait du côté de l'encodage était l'état final.
En 2014, Bahdanau et al. ont proposé l' idée géniale de rendre tous les états cachés disponibles pour le réseau de décodeurs et de lui permettre de déterminer lesquels d'entre eux étaient les plus importants pour générer la sortie de courant. Le réseau a prêté attention aux parties pertinentes et a ignoré le reste.
Quatre ans plus tard, l'article de Google a été publié. Cette fois, les auteurs ont suggéré d'abandonner complètement les RNN et de se concentrer uniquement sur les phases d'encodage et de décodage. Pour ce faire, ils ont dû apporter certaines modifications au mécanisme original de l'attention , ce qui a conduit au développement de l' auto-attention .
Il est probablement plus simple de considérer l' auto-attention comme un mécanisme de communication entre les nœuds en une seule séquence. La façon dont cela fonctionne est que tous les jetons d'entrée se voient attribuer trois vecteurs - Requête (Q), Clé (K) et Valeur (V) - qui représentent différents aspects de leur intégration initiale.
Les vecteurs de requête (Q) indiquent ce que l'entrée recherche. Considérez-les comme les phrases que vous tapez dans la barre de recherche YouTube.
Les vecteurs clés (K) servent d'identifiants pour l'entrée, l'aidant à localiser les correspondances pour sa requête. Ce sont un peu comme les résultats de recherche Youtube avec des titres pertinents.
Les vecteurs de valeur (V) représentent le contenu réel de chaque jeton et permettent au modèle de déterminer l'importance d'un nœud pertinent par rapport à la requête et de générer une sortie. Celles-ci peuvent être considérées comme des vignettes et des descriptions de vidéos qui vous aident à décider sur quelle vidéo des résultats de recherche cliquer.
Remarque : Dans l'auto-attention, tous les Q, K et V proviennent de la même séquence, alors qu'ils ne le sont pas dans l'attention croisée .
La formule d'auto-attention ressemble à ceci : Attention(Q,K,V) = softmax((QK^T) / sqrt(d_k)V . Et voici la procédure en quelques mots :
Les transformateurs ont été initialement inventés comme une simple alternative aux RNN pour coder des séquences, mais au cours des cinq dernières années, ils ont été appliqués à divers domaines de la recherche sur l'IA, y compris la vision par ordinateur, et ont souvent dépassé les modèles de pointe.
En 2018, cependant, nous ne savions pas à quel point ils pourraient être puissants s'ils étaient agrandis (avec des millions de paramètres), dotés d'une puissance de calcul suffisante et entraînés sur des corpus de texte vastes, divers et non étiquetés provenant du Web.
Le premier aperçu de leurs capacités a été vu dans le Generative Pre-trained Transformer (GPT) développé par OpenAI, qui avait 117 millions de paramètres et a été pré-formé sur des données non étiquetées. Il a surpassé les modèles formés de manière discriminatoire dans 9 des 12 tâches NLP, malgré le fait que ces algorithmes ont été spécifiquement formés pour les tâches et que GPT ne l'était pas.
Viennent ensuite les modèles GPT-2 (le plus grand ayant 1,5 milliard de paramètres), qui ont été suivis par de nombreux autres transformateurs. Et en 2020, OpenAI a finalement publié GPT-3 ; sa plus grande version avait 175 milliards de paramètres et son architecture était essentiellement la même que dans GPT-2.
Il semble que l'objectif d'OpenAI était de déterminer le niveau de performance qu'ils pouvaient tirer de leur modèle en le rendant simplement plus grand et en lui fournissant plus de texte et de puissance. Les résultats ont été étonnants.
Remarque : 175 milliards de paramètres sont considérés comme assez petits selon les normes actuelles.
GPT-3 est capable de générer des textes dans différents styles et formats, tels que des romans, des poèmes, des manuels, des scripts, des articles de presse, des communiqués de presse, des légendes d'images, des paroles de chansons, des e-mails, des réponses de dialogue, etc. Il peut écrire du code, résumer, reformuler, simplifier, catégoriser toute information, et bien plus encore. Il faudrait littéralement un tout autre article juste pour lister toutes ses capacités. Et pourtant, à la base, cette bête est toujours un simple système de saisie semi-automatique.
OK, nous avons donc un modèle de langage incroyablement puissant. Pouvons-nous simplement l'utiliser comme chatbot ? Non.
GPT-3 et ses analogues sont toujours des outils pour la complétion de séquences et rien de plus. Sans une direction appropriée, ils divagueront sur le sujet qu'ils ont choisi à partir de votre question et créeront des articles, des nouvelles, des romans, etc., qui peuvent sembler fluides, cohérents et grammaticalement impeccables, mais ils seront rarement utiles.
Pour créer un chatbot réellement utile, OpenAI a procédé à des ajustements approfondis de GPT-3 ou GPT 3.5, la version mise à jour du modèle - nous ne le savons pas encore exactement. Bien que la plupart des détails sur ce processus n'aient pas encore été révélés, nous savons que le bot a été formé presque de la même manière que InstructGPT , son modèle frère. Et nous avons également remarqué que ce dernier est à bien des égards similaire à Sparrow, la version encore à lancer de DeepMind d'un "agent de dialogue intelligent", décrit dans cet article , qui est sorti un peu plus tard.
Ainsi, sachant que tous les algorithmes basés sur des transformateurs ont effectivement la même architecture, nous pouvons lire le billet de blog d'OpenAI, le comparer à l'article de Sparrow, puis faire des suppositions éclairées sur ce qui se passe sous le capot de ChatGPT.
Le processus de mise au point de l'article comportait trois étapes :
Accumuler des données qui affichent à l'IA comment un assistant doit agir. Ce jeu de données est composé de textes où les questions sont suivies de réponses précises et utiles. Heureusement, les grands modèles de langage pré-formés sont très efficaces en termes d'échantillons, ce qui signifie que le processus n'a probablement pas pris autant de temps.
Essayer le modèle en le faisant répondre aux requêtes et en générant plusieurs réponses à la même question, puis en demandant aux humains d'évaluer chaque réponse. Et en même temps, former un modèle de récompense pour reconnaître les réponses souhaitables.
Utilisation de l'optimisation de la politique proximale d'OpenAI pour affiner le classificateur et garantir que les réponses de ChatGPT reçoivent un score élevé conformément à la politique.
L'article de Sparrow décrit une méthode similaire mais avec quelques étapes supplémentaires. Comme tous les agents de dialogue de DeepMind, Sparrow est conditionné par des invites spécifiques fabriquées à la main qui agissent comme des entrées qui sont toujours données au modèle par les programmeurs et ne peuvent pas être vues par les utilisateurs. ChatGPT est probablement également guidé par ce type d'invites "invisibles".
Pour en faire un assistant efficace, Sparrow s'est vu poser des questions et il a généré des réponses qui ont ensuite été évaluées par des humains sur la base des principes généraux d'utilité et de règles éthiques mis en avant par DeepMind (comme la politesse et l'exactitude). Il y avait aussi un type d'entraînement contradictoire où les humains essayaient activement de faire échouer Sparrow. Ensuite, deux classificateurs de réseaux neuronaux ont été formés pour son évaluation ; un qui note les réponses en termes d'utilité et un qui détermine dans quelle mesure les réponses s'écartent des règles de DeepMind.
ChatGPT sait maintenant ne pas générer de contenu offensant, mais il a parfois produit des réponses insensibles après la publication ; nous pensons qu'OpenAI aurait pu ajouter un autre modèle spécialement conçu pour ne pas laisser passer de texte nuisible. Mais bien sûr, nous ne pouvons pas encore le savoir avec certitude, et ChatGPT lui-même est louche à ce sujet.
Contrairement à ChatGPT, Sparrow sera également en mesure de fournir des preuves à l'appui de ce qu'il dit, car il citera des sources et accédera à la recherche Google. Afin de rendre le modèle capable de le faire, les chercheurs ont mis à jour son invite initiale et y ont introduit deux autres personnages : la requête de recherche et le résultat de la recherche.
Note : Le même principe a probablement été appliqué dans Bard, le concurrent de ChatGPT récemment annoncé par Google.
Après la formation avec deux classificateurs, en utilisant l' ensemble de données ELI5 et les réponses des itérations précédentes de Sparrow, le modèle est capable de générer plusieurs réponses précises et bien documentées à chaque question. La réponse présentée à l'utilisateur est toujours celle qui obtient le score le plus élevé avec le classificateur d'utilité et le plus bas avec le classificateur d'écart de règle.
Bard, le chatbo t de Google basé sur le modèle de langage LaMDA, a été annoncé le 6 février. Il fait déjà le buzz, mais aucun détail précis sur sa formation n'a encore émergé. La version bêta de Sparrow devrait également sortir en 2023. Il reste à voir si l'un de ces bots deviendra presque aussi populaire que ChatGPT. Les deux ont des fonctionnalités uniques qui leur donnent le potentiel de devenir le nouveau chatbot numéro un, mais nous ne pensons pas non plus qu'OpenAI cessera de mettre à jour et d'améliorer son assistant de chat superstar.
Peut-être verrons-nous bientôt ChatGPT avec de nouvelles fonctionnalités encore meilleures. Il est impossible de prédire quelle entreprise finira en tête en termes de domination du marché. Mais, quel que soit le vainqueur du concours, il repoussera encore plus loin les limites de ce qui est perçu comme réalisable avec la technologie de l'IA, et ce sera sûrement passionnant.