Revenir au site

La rubrique IA :

Comment les applications savent-elles ce que vous allez écrire ? 

1 mars 2021

Si vous avez un smartphone et que vous vous en servez pour son usage premier, c’est à dire envoyer des messages, vous avez sûrement remarqué, quand vous tapez le début d’une phrase, que vos applications de messagerie arrivent à vous suggérer une suite, parfois pertinente. Comment savent-elles donc ce que vous allez écrire ? 

Intro : Conversation entre humains

Je suis sûre qu’il vous est déjà arrivé, lors d’une conversation, d’aider quelqu’un à finir sa phrase. Par exemple, pendant une discussion sur un de vos sujets de prédilection, la personne avec laquelle vous parlez commence une phrase, et ne trouve plus ses mots. Pour l’aider, vous lui en suggérez, qui termineraient sa phrase de façon plausible, et après quelques essais, félicitations ! C’était le mot juste : la conversation peut reprendre son cours. 
Proposer des mots en fonction du contexte, c’est exactement ce que font les logiciels qui suggèrent la suite de vos phrases, grâce à un mécanisme qu’on appelle le modèle de langue. Nous allons ici en étudier deux types.

1. Une vision initialement statistique de la langue

Vous savez quels mots succèdent aux autres, parce que vous avez appris à parler. Comment un programme informatique, lui, peut-il le savoir ?  Et bien, avec des statistiques, pardi ! Des chercheurs en informatique appliquée à la linguistique ont mis au point, dans les années 90, des modèles appelés “modèles de langue”. Ceux-ci fonctionnent selon l’idée suivante : si on possède de grandes quantités de texte dans une langue, on peut observer statistiquement quels mots succèdent à quels autres.

Si on a suffisamment de textes sur lesquels faire ces calculs, le modèle pourra donc prédire de façon réaliste quelle est la suite la plus probable d’un début de phrase (en fonction, cependant, de ce qu’on lui aura montré; le modèle ne peut pas prédire ce qu’il n’a jamais vu). Par exemple, si nos données initiales contiennent 1000 fois “Le ciel est bleu” et 500 fois “Le ciel est gris”, la probabilité de “bleu” après “Le ciel est” est de 66% pour le modèle. Cependant, on ne peut pas étudier les probabilités de toutes les combinaisons de mots possibles, même si ce serait plus précis : les calculs seraient énormes ! Dans nos données, on doit donc faire des choix : on étudie seulement la probabilité qu’a un mot d’apparaître après les “n” mots qui le précèdent. Dans l’exemple au dessus, on a regardé la probabilité de “bleu” et “gris” quand n=3, donc après 3 mots (et on choisit en général des n pas trop grands). Les modèles de langue statistiques ainsi construits s’appellent des n-grams. 

Cependant, il y a un grand nombre de cas où le contexte proche n’est pas suffisant. Par exemple, dans la phrase “Je les vis de [?]”, un modèle uniquement statistique aura du mal a savoir si “les vis de” fait référence à un objet (vis de fixation?) ou au verbe au passé (voir de loin?). Comment faire, alors, si on souhaite obtenir des informations plus complexes sur les mots et leurs relations, pour prédire avec plus de précision ?

2. Une petite révolution informatique

Pour ce faire, des chercheurs, travaillant dans le domaine du traitement automatique des langues (un sous domaine de l’intelligence artificielle), ont développé dans les 20 dernières années de nouvelles méthodes informatiques pour obtenir ces informations de façon plus efficace et précise. Ces méthodes utilisent ce qu’on appelle des réseaux de neurones.

2.1. “Mathématiser” des mots, la puissance de l’informatique

Un réseau de neurones est une grosse fonction (une succession de calculs mathématiques qui transforment des nombres en d’autres nombres). Or, on veut appliquer ce réseau, donc ces calculs, à des mots. Bizarre, bizarre… Comment peut-on appliquer une addition, ou une multiplication à un mot ? 

Et bien, la première étape du travail consiste tout bêtement à transformer les mots en quelque chose d’utilisable pour des calculs mathématiques : des nombres. Comment faire ?
Le plus simple serait d’associer chaque mot à un unique nombre, par exemple son index dans la liste alphabétique de tous les mots du français. Cependant, un seul nombre, ça nous donne trop peu d’informations ! C’est comme pour mieux connaître les élèves d’une classe : si vous n’avez que la moyenne générale pour chaque élève, ça ne vous donne pas beaucoup d’informations, alors que si vous avez, pour chaque élève, la liste de ses moyennes matière par matière, c’est déjà plus indicatif pour connaître les profils individuels. Par exemple, savoir que Claude a comme moyennes [17, 18, 6.5, 6.5] et Alix [12, 10, 14, 12], c’est plus informatif que de savoir que les deux élèves ont 12 de moyenne générale. On veut donc associer chaque mot à une liste de nombres, ce qu’en mathématiques on appelle un vecteur.

Comment choisir ces vecteurs pour qu’ils contiennent des informations intéressantes sur nos mots ? On pourrait décider de leur contenu manuellement, avec par exemple le premier nombre qui indique si le mot est un objet, une personne,  ou un animal, le deuxième si le mot est masculin, neutre, ou féminin, etc, mais ce serait terriblement long et compliqué; et comment choisir de bonnes catégories ?

Des chercheurs ont donc créé des méthodes pour trouver ces vecteurs automatiquement. Un des réseaux de neurones les plus connus pour ça s’appelle word2vec. On lui demande de travailler sur une tâche adjacente : à partir des vecteurs de deux mots, il doit dire s’ils sont susceptibles d’être voisins ou non, donc d’apparaître à proximité l’un de l’autre ou pas. Hors, pour l’instant, nous n’avons pas ces vecteurs, car nous les cherchons : au début, l’association mot-vecteur est en fait effectuée complètement au hasard ! C’est le réseau, en essayant d’apprendre quels mots sont voisins, qui va changer leurs valeurs, pour que des mots qui apparaissent dans les mêmes contextes aient une représentation mathématique proche.

Au final, on obtient ainsi les représentations mathématiques de nos mots, sur lesquels on pourra donc faire des calculs mathématiques. Elles sont appelées embeddings (plongement lexical en français). Contrairement aux listes de moyennes de nos élèves, ici, on ne sait pas à quoi correspondent les différents nombres de nos listes (car le réseau de neurones les a appris tout seul, de façon difficilement interprétable pour un être humain, en cherchant juste à minimiser ses erreurs). Cependant, de façon surprenante, des chercheurs ont constaté que des calculs mathématiques sur ceux-ci avaient beaucoup de sens linguistique : l’exemple le plus connu est que le calcul “roi” moins “homme” plus “femme” donne “reine” ! On a donc capturé avec ces représentations mathématiques des notions de linguistique (un roi, quand on remplace le concept homme par femme, est une reine). Pas mal, n’est ce pas ? 

 “Non, vos phrases ne sont pas prédites par cet oiseau”

2.2 Comprendre la langue à partir de phrases à trou

Maintenant que nous avons transformé nos mots en représentations mathématiques, que pouvons nous donc en faire ? Vous souvenez-vous des modèles de langues statistiques, qui s'intéressaient au contexte ? Et bien, nous allons appliquer le même type de raisonnement, avec cette fois de nouveaux réseaux de neurones, des modèles de langues neuronaux. Un modèle de langue neuronal “apprend” à associer, à un contexte, le mot correspondant. 

Si je vous dis “La [ ?] tous les chats sont gris”, vous pouvez deviner, si vous connaissez l’expression, que le mot [ ?] est “nuit”. Une des façons de faire apprendre un modèle de langue neuronal est très similaire : on lui montre plein de phrases à trou ou des débuts de phrases (des contextes), en lui demandant de faire une proposition de mot pour les combler, puis on compare chaque proposition faite à la vraie réponse attendue. Chacune de ces étapes (proposition de réponse à partir d’une phrase à trou, amélioration du modèle en comparant avec la vérité) est calculée à partir des représentations mathématiques.

Pour que le modèle s’améliore, on veut réduire la différence entre chaque proposition et la bonne réponse associée : pour chaque contexte, on modifie donc la mécanique interne du modèle, afin que les calculs faits rapprochent sa proposition de la bonne réponse. Ainsi, si jamais le modèle est confronté de nouveau, plus tard, à un contexte similaire, ses calculs donneront directement une réponse plus proche de la vérité. (Le mécanisme qu’on vient de voir, qui revient en arrière sur les calculs passés pour améliorer les calculs futurs s’appelle la rétro-propagation. C’est un aspect très intéressant des réseaux de neurones, mais son fonctionnement détaillé mérite son propre article).

Plus on montre d’exemples au modèle de langue neuronal, plus la façon de faire les calculs pour associer des contextes aux mots appropriés devient précise et adaptée. 

Conclusion

Ainsi, à notre question de départ, nous pouvons répondre que les applications de messagerie ne “savent” pas ce que vous allez écrire, mais qu’elles utilisent des modèles de langue pour proposer des mots plausibles pour vos phrases. Ces modèles mathématiques (statistiques pour les plus anciens, neuronaux pour les plus récents) ont appris des associations entre des mots et leurs contextes. Et voilà! Petite question, d’ici la prochaine fois : à quoi ces modèles de langue peuvent-ils servir, mis à part suggérer des mots? Pourriez vous rédiger votre dissertation avec un modèle de langue entraîné sur des textes de philosophes? 

La réponse au prochain épisode de la rubrique IA, où l’on verra comment fonctionne la génération automatique de texte !

En savoir plus

Article paru dans Je Science donc J'écris n°26 - Mars 2021