Comment l'IA comprend les mots

Les modèles de langage larges (Large Language Models, ou LLMs).

Vous devez avoir entendu ces mots avant. Ils représentent un type spécifique d'algorithmes basés sur l'apprentissage automatique qui comprennent et peuvent générer du langage, un domaine souvent appelé traitement du langage naturel ou NLP (natural language processing).

Vous avez certainement entendu parler du modèle de langage le plus connu et le plus puissant : GPT-3. GPT-3, comme je l'ai décrit dans ma vidéo qui le couvre, est capable de prendre du texte, de le comprendre et de générer du texte en retour. Mais soyez prudent ici; il ne le comprend pas vraiment. En fait, c'est loin d'être compréhensible. GPT-3 et d'autres modèles basés sur le langage utilisent simplement ce que nous appelons des dictionnaires de mots pour les représenter sous forme de nombres, se souviennent de leurs positions dans la phrase, et c'est tout.

En utilisant quelques nombres et indices, appelés plongements lexicaux, ils sont capables de regrouper des phrases similaires, ce qui signifie également qu'ils sont en mesure de comprendre les phrases en les comparant à des phrases connues, par exemple, notre ensemble de données. C'est le même processus pour les modèles de synthèse d'images qui prennent votre phrase pour générer une autre image. Ils ne la comprennent pas vraiment, mais ils peuvent la comparer à des images similaires connues, produisant une sorte de compréhension des concepts présents.

Dans cet article, nous donnerons un aperçu de ce que ces puissants modèles d'apprentissage automatique voient à la place des mots, appelés plongements lexical (word embeddings), et comment les produire avec un exemple fourni par Cohere.

Nous avons parlé de plongements lexical et de GPT-3, mais quel est le lien entre les deux ? Les plongements lexicaux sont ce que voient les modèles et comment ils traitent les mots que nous connaissons. Et pourquoi utiliser des plongements ? Eh bien, parce que, pour le moment, les machines ne peuvent pas traiter les mots, et nous avons besoin de chiffres pour entraîner ces grands modèles. Grâce à un ensemble de données soigneusement construit, nous pouvons utiliser les mathématiques pour mesurer la distance entre les plongements et corriger notre réseau en fonction de cette distance, rapprochant itérativement nos prédictions du sens réel et améliorant les résultats. Tout ça grâce au fait que nous utilisons des chiffres plutôt que des concepts abstraits comme des mots.

Les plongements sont également ce que les modèles comme CLIP, Stable Diffusion ou DALLE utilisent pour comprendre des phrases et générer des images. Cela se fait en comparant à la fois les images et le texte dans le même espace de plongements, ce qui signifie que le modèle ne comprend ni le texte ni les images, mais il peut comprendre si une image est similaire à un texte spécifique ou non. Donc, si nous trouvons suffisamment de paires image-légende, nous pouvons former un modèle énorme et puissant comme DALLE pour prendre une phrase, l'intégrer, trouver son clone d'image le plus proche et le générer en retour.

Ainsi, l'apprentissage automatique avec du texte consiste à comparer des plongements lexicaux, mais comment obtenir ces plongements?

Nous l'obtenons en utilisant un autre modèle formé pour trouver le meilleur moyen de générer des plongements similaires pour des phrases similaires tout en conservant les différences de sens pour des mots similaires par rapport à l'utilisation d'un dictionnaire 1: 1 simple. Les phrases sont généralement représentées par des jetons spéciaux marquant le début et la fin de notre texte.

Ensuite, comme je l'ai dit, nous avons nos “plongements positionnels” (positional embeddings), qui indiquent la position de chaque mot les uns par rapport aux autres, souvent à l'aide de fonctions sinusoïdales, comme affiché ci-dessus. J'ai lié un excellent article à ce sujet dans les références si vous souhaitez en savoir plus.

Enfin, nous avons nos plongements lexicaux. Nous commençons avec tous nos mots divisés en un tableau, tout comme une table de mots. À partir de maintenant, ce ne sont plus des mots. Ce ne sont que des jetons, ou des nombres, pris de tout le dictionnaire anglais.

Vous pouvez voir ici que tous les mots maintenant sont représentés par un numéro indiquant où ils se trouvent dans le dictionnaire, ayant ainsi le même numéro pour toutes les “banques” même si leurs significations sont différentes dans la phrase que nous avons.

Maintenant, nous ajoutons un peu d'intelligence à cela, mais pas trop. Cela se fait grâce à un modèle formé pour prendre cette nouvelle liste de nombres et le plonger davantage dans une autre liste de nombres qui comprend mieux la phrase. Par exemple, il n'y aurait plus le même plongement pour les deux mots « banque » ici. Ceci est possible, car le modèle utilisé pour ce faire a été entraîné sur de nombreuses données textuelles annotées et a appris à plonger des phrases de sens similaire les unes à côté des autres et des phrases opposées éloignées les unes des autres, permettant ainsi à nos plongements d'être moins biaisées par notre choix de mots que le simple initial 1: 1 mot:indice que nous avions initialement.

Phrase en exemple venant de Chris McCormick.

Voici à quoi ressemble l'utilisation des plongements dans un très court exemple de NLP. Il y a plus de liens ci-dessous pour en savoir plus sur les plongements et comment les coder vous-même.

Ici, nous allons prendre quelques articles du site Hackernews et construire un modèle capable de récupérer le message le plus similaire d'une nouvelle phrase d'entrée.

Pour commencer, nous avons besoin d'un ensemble de données. Dans ce cas, il s'agit d'un ensemble pré-plongé de 3’000 publications sur Hackernews qui ont déjà été plongés dans des chiffres.

Image du Notebook de Cohere sur les plongements lexicaux.

Ensuite, nous construisons une mémoire enregistrant tous ces plongements pour une comparaison future. En gros, nous sauvegardons simplement ces plongements de manière efficace.

Image du Notebook de Cohere sur les plongements lexicaux.

Ensuite, lorsqu'une nouvelle requête est effectuée, par exemple ici en demandant « Quelle est votre vision de la vie la plus profonde ? », vous pouvez générer son plongement en utilisant le même réseau de plongement. Habituellement, il s'agit de BERT ou d'une version de celui-ci, et nous comparons la distance dans l'espace de plongement à tous les autres posts Hackernews dans notre mémoire. Notez qu'il est vraiment important ici de toujours utiliser le même réseau, que ce soit pour générer votre jeu de données ou pour l'interroger. Comme je l'ai dit, il n'y a pas de véritable intelligence ici, ni que le modèle ne comprenne réellement les mots. Il vient d'être formé pour plonger des phrases similaires à proximité dans l'espace de plongement, rien de plus.

Image du Notebook de Cohere sur les plongements lexicaux.

Si vous envoyez votre phrase à un autre réseau pour générer un plongement et que vous comparez ce plongement à ceux que vous aviez sur un autre réseau, rien ne fonctionnera.

Ce serait comme les gens sympathiques qui ont essayé de me parler en hébreu à ECCV la semaine dernière. Ce n'était tout simplement pas dans un “espace de plongement” que mon cerveau pouvait comprendre.

Heureusement pour nous, notre cerveau peut apprendre à passer d'un espace de plongement à un autre, comme je peux le faire avec le français et l'anglais, mais cela demande beaucoup de travail et d'entraînement, et il en est de même pour les machines.

Quoi qu'il en soit, pour en revenir à notre problème, nous avons pu trouver les messages les plus similaires. C'est plutôt cool, mais y sommes-nous parvenu ? Comme je l'ai mentionné, c'est parce que le réseau, BERT dans ce cas, apprend à créer des intégrations similaires à partir de phrases similaires. Nous pouvons même le visualiser en deux dimensions comme celui-ci, où vous pouvez voir comment deux points similaires représentent des sujets similaires.

Image du Notebook de Cohere sur les plongements lexicaux.

Vous pouvez faire beaucoup d'autres choses une fois que vous avez ces plongements, comme extraire des mots-clés, effectuer une recherche sémantique, effectuer une analyse des sentiments ou même générer des images, comme nous l'avons dit et démontré dans les articles précédents. J'ai beaucoup de vidéos et articles couvrant ceux-ci et j’ai listé quelques liens intéressants pour apprendre à jouer avec les plongements lexicaux ci-bas, grâce à l'équipe Cohere.

Merci pour la lecture!

Louis

Références

►BERT Word Embeddings Tutorial: https://mccormickml.com/2019/05/14/BERT-word-embeddings-tutorial/#why-bert-embeddings
►Cohere’s Notebook from the code example: https://colab.research.google.com/github/cohere-ai/notebooks/blob/main/notebooks/Basic_Semantic_Search.ipynb
►Ma Newsletter (anglais): https://www.louisbouchard.ai/newsletter/

Louis-François Bouchard

Hello! Je suis Louis-François Bouchard, de Montréal, Canada, aussi connu sous le nom de 'What's AI' et j'essaie de partager et de vulgariser tout ce qui est en lien avec l'intelligence artificielle. Mon objectif est de démystifier la «boîte noire» de l'IA pour tous et de sensibiliser les gens aux risques de son utilisation.

https://www.youtube.com/channel/UCIUgms0TE2WhQijbU-IMYyw
Précédent
Précédent

Générez de faux visages en temps réel avec l'IA !

Suivant
Suivant

Galactica : Qu'est-ce que c'est et que s'est-il passé ?