Passer au contenu principal

IA générative : attention au contre sens !

IA générative : attention au contre sens !

Depuis quelques semaines, ChatGPT ne cesse d’alimenter les polémiques et les discussions bien au-delà de la sphère des experts de l’IA. Révolution technologique enthousiasmante pour les uns, gadget dangereux menaçant la production de connaissance pour les autres. ChatGPT a quelque peu hystérisé le débat public et mis en lumière un type particulier d’intelligence artificielle : les modèles génératifs. Mais sait-on réellement ce que signifie le terme « génératif » ?

Le grand public y voit un algorithme capable de générer de nouvelles données, là où un data scientist attentionné y voit tout autre chose : une route sinueuse pour arriver à cet objectif alors qu’il existe un moyen beaucoup plus direct, les modèles discriminatifs. Le but des modèles génératifs n’est en effet paradoxalement pas de générer de nouvelles données. Alors pourquoi un tel engouement pour les modèles génératifs et une telle incompréhension ?

Cet article a pour objectif de présenter cette vision plus rigoureuse du terme « génératif », à première vue paradoxale, mais pourtant plus cohérente du point de vue probabiliste. Il vise à expliciter les notions utilisées pour désigner le fonctionnement de ChatGPT.

Comment générer de nouvelles données ?

Générer de nouvelles données est l’essence même de tout algorithme d’apprentissage automatique : les modèles forgent leur apprentissage sur la base d’expériences de manière à s’améliorer selon une certaine mesure de performance. Suivant le type de problématique, les tâches et la nature des données créées sont différentes.

Quelles données génère-t-on ?

Dans un problème de classification supervisée, on cherche à générer des numéros de classes à associer aux données qui n’en ont pas. Par exemple, lors de la détection de fraudes ou d’anomalies, on cherche à générer les étiquettes « fraude », « non fraude » et éventuellement « suspicion de fraude » pour chaque événement.

Dans un problème de régression, on cherche à générer une valeur d’une variable cible : Cette valeur générée peut correspondre à une valeur physique comme la température de chauffe qui permettrait de garder un bâtiment à une température idéale. Elle peut aussi correspondre à un score de confiance, de risque ou de priorité.

Pour de la recommandation par filtrage collaboratif, on cherche à générer la note qu’aurait mis l’utilisateur aux produits qu’il n’a pas encore notés.

Dans le cas de ChatGPT, on cherche à générer une séquence de mots (la réponse de ChatGPT) à partir d’une autre séquence de mots (la question qu’on lui pose)…

Modèle discriminatif

Ce dernier exemple est une tâche que l’on appelle souvent « sequence to sequence ». Si on note x la question et y la réponse, on peut dire qu’on observe la valeur x et qu’on cherche à prédire la valeur y. D’un point de vue probabiliste, on peut dire que x est la valeur prise par une variable aléatoire X. De la même manière, y est la valeur (inconnue) que prend la variable aléatoire Y. Le problème de « sequence to sequence » consiste à estimer la probabilité d’avoir la variable aléatoire Y égale à y sachant que la variable aléatoire X vaut x. En notation mathématique, on cherche à estimer P(Y | X = x) que l’on appelle probabilité conditionnelle.

Évaluer la probabilité conditionnelle est l’objectif (probabiliste) des modèles dits discriminatifs. C’est le chemin direct pour générer de nouvelles données et c’est justement l’objectif du modèle GPT, l’ancêtre de ChatGPT.

Modèle génératif

Les modèles génératifs ne cherchent pas à estimer directement la probabilité conditionnelle P(Y | X = x). Pour le faire, ils utilisent un moyen indirect qui consiste à appliquer le théorème de Bayes :

P(Y | X = x) = P(X | Y = y) P(Y) / P(X)

Un modèle génératif cherche à estimer P(X | Y = y), c’est-à-dire la probabilité d’avoir généré les questions en considérant qu’il a observé les réponses. Ceci va à l’encontre de la réalité mais est totalement possible dans le cadre formel des calculs probabilistes. Une définition alternative de modèle génératif est d’estimer la distribution jointe P(X, Y), c’est-à-dire la probabilité de générer à la fois les questions et les réponses.

Dans les faits, ChatGPT repose, comme tous ses prédécesseurs (GPT, GPT-2 et GPT-3), sur des modèles discriminatifs  !

Mais alors pourquoi parle-t-on de modèle génératif pour la famille des modèles GPT ?

Entraînement

Pour expliquer à quel moment un modèle génératif est utilisé dans ChatGPT (et ses prédécesseurs), il est important d’expliquer ce que signifie entraîner un modèle : un modèle d’intelligence artificielle est une fonction qui, pour des entrées données va produire des sorties. Cette fonction utilise des paramètres qui définissent son comportement.

Prenons l’exemple de la prédiction du prix de l’immobilier. On peut considérer un modèle simple qui donne le prix d’un bien en multipliant le nombre de mètres carrés par un coefficient. Ce coefficient est le (seul) paramètre de notre modèle.

Entraîner un modèle consiste à fixer ses paramètres de telle sorte qu’il reproduise au mieux les sorties attendues sur des données connues d’entraînement. Dans l’exemple précédent, il s’agit de déterminer le coefficient à partir d’exemples de logements où on connaît à la fois la surface et le prix de vente. Notre modèle, une fois entraîné, ne va pas donner les prix exacts mais va s’en approcher le plus possible.

Cette erreur sur les prix peut-être modélisée par une probabilité. On peut chercher à modifier les paramètres de sorte à maximiser la probabilité d’avoir les sorties lorsque l’on connaît les entrées. On retrouve là notre probabilité conditionnelle P(Y | X = x). Dans notre exemple « y » représente le prix et « x » la surface.

L’entraînement du modèle de GPT qui, pour une séquence de mots, prédit une autre séquence de mots, se fait dans une phase que l’on appelle « fine tuning ». Mais au préalable de cette étape d’entraînement, une étape de pré-entraînement est réalisée.

Pré-entraînement

« Improving Language Understanding by Generative Pre-Training » est le titre de l’article scientifique ayant présenté la première version de GPT. On y voit bien que le terme « génératif » ne s’applique pas à l’ensemble du modèle mais seulement à une partie de « pré-entraînement ».

Dans cette étape dite de pré-entraînement, on ne cherche pas à entraîner le modèle sur la tâche de prédiction de réponses à des questions : il ne s’agit pas de l’entraînement du modèle discriminatif. On l’entraîne sur une autre tâche : modéliser le langage naturel.

Modélisation du langage naturel

Modéliser le langage naturel consiste à estimer la probabilité d’obtenir chaque séquence de mots.

Si on note « s » une séquence de mots et qu’on la représente par une variable aléatoire S, on cherche à trouver les paramètres θ d’un modèle de sorte à maximiser la vraisemblance, c’est-à-dire à maximiser la probabilité d’obtenir la séquence de mots en considérant qu’on connaît les valeurs des paramètres : P(S ; θ). Alternativement, on peut dire qu’on maximise la probabilité d’avoir en même temps le premier mot w1, le deuxième w2, le troisième w3 etc. C’est ce qu’on appelle une probabilité jointe : P(w1, w2, w3…). On retrouve donc ici la définition d’un modèle génératif : estimer la probabilité jointe.

Note aux lecteurs de l’article scientifique : la première formule représente cette probabilité jointe mais est exprimée comme un produit de probabilités conditionnelles pour la présenter sous la forme d’un modèle autorégressif unidirectionnel. Il ne s’agit donc pas ici d’un modèle discriminatif comme peut le laisser penser à première vue la formule.

Idée fondamentale des modèles GPT

L’idée principale des modèles GPT est qu’en utilisant une architecture transformer, la phase de pré-entraînement améliore la qualité des résultats.

La version 1 de GPT opère par la suite un « fine tuning » qui consiste à l’entraîner spécifiquement sur la tâche sur laquelle on va l’utiliser. La version 2 de GPT « Language Models are Unsupervised Multitask Learners », n’opère pas d’entraînement spécifique sur la tâche sur laquelle il est évalué mais sur plusieurs tâches différentes et opère un apprentissage par transfert. La version 3 de GPT « Language Models are Few-Shot Learners » fait de même, améliorant significativement les performances avec une volumétrie de données phénoménale ainsi qu’un coût exorbitant pour l’entraînement. InstructGPT « Training language models to follow instructions with human feedback » présente une adaptation où le modèle est ensuite entraîné spécifiquement avec un apprentissage par renforcement. Enfin, ChatGPT est très similaire à InstructGPT avec quelques petits changements.

Votre projet et vos données

Nous l’avons vu, les modèles génératifs ne sont qu’une technique particulière pour générer des données et résoudre un problème d’apprentissage automatique. Le terme ne doit pas être associé directement à la nature du problème que vous souhaitez résoudre du point de vue métier.

Ce qui fait la qualité d’un modèle, ce sont les données, leur volume mais aussi leur qualité. ChatGPT s’est entraîné à modéliser le langage naturel, d’où sa capacité à bien rédiger, mais il s’est aussi entraîné sur des jeux labellisés pour répondre à des questions. Enfin, il a amélioré ses performances grâce à de nombreux retours d’utilisateurs.

Il est de bon ton de rappeler que ChatGPT est efficace pour une tâche sur laquelle il a été spécifiquement conçu et entraîné, mais ne résout pas tous les problèmes d’intelligence artificielle, loin de là. Il repose sur des concepts qui ne sont pas nouveaux et que nous avons l’habitude d’utiliser à Kernix. Pour exploiter ces formes performantes de modèles et techniques, rien de mieux que vos données !

 

Illustration : Jade KAÏDI

IA générative : attention au contre sens !
Haut de page
Haut de page