💾 Archived View for tilde.town › ~tickletickle › blog › 2023-09-05.gmi captured on 2023-09-08 at 15:46:04. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

RĂ©pondre automatiquement Ă  des questions

Voilà un billet en français sur un sujet qui m'intéresse particulièrement en

ce moment.

Alors que les bébés acquièrent la capacité de comprendre le langage très

rapidement, cette aptitude est difficile pour les ordinateurs. Malgré ces

difficultés, les progrès récents en intelligence artificielle ont permis

d’étendre les possibilités de compréhension automatique du langage par les

ordinateurs. Comprendre le langage, s’il est exprimé sous la forme d’une

séquence de mots, revient à combiner ces mots pour en déduire un sens. C’est

un problème difficile pour plusieurs raisons. Le langage est ambigu, un même

mot ayant plusieurs sens selon le contexte; il est compositionnel, c’est à

dire que le sens d’une séquence de mot peut, avec un degré variable, être

déterminé en combinant le sens des mots qui la compose; et comprendre demande

souvent une connaissance du monde dans lequel nous vivions. La compréhension

automatique du langage fait partie du traitement automatique du langage (TAL),

un sous-domaine de l’intelligence artificielle, et permet des applications

comme la génération automatique de réponses à des questions.

Être capable de répondre à des questions nécessite non seulement de comprendre

la formulation d’une question, mais aussi de pouvoir mobiliser les

connaissances nécessaires pour y répondre correctement. Ces connaissances

peuvent être explicitées sous la forme d’une base de données ou implicites,

disponibles dans des textes sur le sujet. Dans les deux cas, le défi est de

choisir parmi toutes les informations disponibles celles qui sont pertinentes,

et de raisonner à partir de ces informations pour construire la réponse.

Les progrès récents en intelligence artificielle ont montré au grand public le

potentiel des systèmes de compréhension et de génération du langage naturel à

travers les grands modèles de langages comme ChatGPT, mais les travaux

associés ont commencé il y a plus d’un siècle. En 1912, Andrey Markov, à

l’aide d’un modèle statistique des séquences d’événements, calculait la

probabilité d’un texte à partir des paires de morphèmes (une consonne et une

voyelle consécutives) qu’il contient. Ces travaux ont été repris plus tard par

Claude Shannon pour générer des textes en tirant aléatoirement un mot étant

donné le mot qui le précède, à partir de probabilités que deux mots se suivent

calculées sur des textes.

La méthode mise au point par Shannon, fondatrice des modèles de langages

actuels, permet à la fois de comprendre et de générer du texte. Les modèles de

langage reposent sur l’apprentissage automatique afin d’associer à un contexte

(par exemple le début d’une phrase ou le début d’un texte), la probabilité du

mot suivant. Les réseaux de neurones les plus efficaces pour cette tâche sont

actuellement les “transformers” qui permettent de projeter la représentation

des mots dans un espace vectoriel de grande taille, en fonction des mots avec

lesquels ils apparaissent dans le texte. Ils font appel à un “mécanisme

d’attention” qui met les mots en relation deux à deux et construit une

nouvelle représentation pour chaque position dans le texte, qui peut elle-même

être mise en relation avec les représentations à d’autres positions, créant

petit Ă  petit des abstractions. Ce processus aboutit au calcul de la

probabilité de chaque mot pouvant suivre un contexte, et permet donc de

générer du texte à la manière de Shannon.

Lors de l’entraînement des modèles de langages, de grandes quantités de textes

collectées depuis Internet servent à trouver les paramètres du réseau de

neurones en minimisant la différence entre les textes d’apprentissage et les

prédictions faites par le modèle. Il en résulte que ces modèles ne sont

capables de générer que des textes qui ressemblent à leurs données

d’entraînement. Il existe sur Internet des foires aux questions (FAQ) et

autres contenus similaires, ce qui fait que si l’on utilise une question comme

début de texte, la probabilité de générer une réponse à cette question est non

nulle, et pourrait même être grande si l’entraînement était réalisé sur de

grandes quantités de FAQ.

Les avancées récentes ont donc consisté à continuer l’entraînement des modèles

(les affiner) sur des paires question / réponse pour favoriser ce type de

génération. Ce qui est intéressant c’est qu’un modèle ayant engrangé des

connaissances variées lors de son entraînement initial, devient grâce à ce

processus capable de répondre à des questions sur lesquelles il n’a pas été

entraîné, et donc de capitaliser sur les connaissances acquises. Ce processus

fonctionne pour les questions mais aussi pour d’autres tâches et les

recherches actuelles ont montré que si l’on augmente fortement le nombre de

paramètres apprenables (en quelques sortes la mémoire) et la quantités de

données d’apprentissage, la diversité des “tâches” linguistiques qu’un modèle

de langage peut accomplir après avoir vu un nombre relativement réduit de

tâches est de plus en plus grande : traduire, résumer un texte, générer des

emails, etc.

Les grands modèles de langage sont versatiles, mais contrôler leur

comportement pour faire une tâche particulière et garantir la stabilité des

textes qu’ils génèrent reste difficile. On peut effectuer ce contrôle grâce à

deux méthodes : l’amorçage (prompting) et l’affinage (finetuning). L’amorçage

consiste à trouver une formulation de la tâche donnée comme début de texte qui

pousse le modèle à générer des mots qui y répondent. Cette méthode est peu

coûteuse mais repose surtout sur le savoir-faire et produit des résultats

variables. L’affinage consiste, lui, à donner des exemples de la tâche et

modifier les paramètres du modèle pour qu’il génère la réponse associée.

Contrairement à l’amorçage, il offre de meilleurs résultats mais le coût

associé à l’apprentissage n’est pas raisonnable.

En effet, entraîner des modèles de langage à large échelle nécessite des

ressources de calcul colossales : plusieurs milliers de serveurs de calcul GPU

pendant plusieurs mois. Les recherches actuelles s’orientent donc vers plus de

frugalité et des solutions commencent à apparaître pour modifier un modèle de

langage plus efficacement. La méthode LoRA, par exemple, considère que la

modification faite à chaque matrice de paramètres d’un réseau de neurones peut

être approximée par une matrice de faible rang, elle-même constituée de très

peu de paramètres, réduisant la quantité de mémoire requise lors de

l’apprentissage et garantissant de conserver les connaissances détaillées

capturées par le modèle initial.

Les grands modèles de langage permettent donc de répondre automatiquement à des questions.

La méthode n’est toutefois pas parfaite et repose sur les connaissances

implicites contenues dans les textes d’apprentissages issues d’Internet, avec

leur lot d’erreurs, de désinformations, de biais, et de contenus illicites ou

répréhensibles. Contrôler l’effet de la qualité des données sur les modèles de

langage, leur donner accès à des connaissances explicites comme des manuels de

médecine, ou encore améliorer leur efficacité, sont des pistes de recherche

importantes qu’il reste à explorer. Au-delà de ces améliorations, les méthodes

d’intelligence artificielle peuvent avoir un profond impact sur la société et

posent des questions importantes relatives à l’emploi, la justice et

l’énergie, des questions sur lesquelles planche l’ensemble de la communauté.