IA générative : comment ça fonctionne ?

Article

Actu

L’IA générative en quelques mots 

L’intelligence artificielle générative, ou IAG, est une branche fascinante de l’IA. Contrairement à l’IA traditionnelle, qui se concentre sur l’analyse ou la classification de données existantes, l’IAG, elle, est capable de créer du contenu original. Cela inclut des images, du texte ou encore de la musique ! 

Si vous êtes nouveau, dans ce domaine, pas d'inquiétude. Vous pouvez d’ailleurs commencer par jeter un coup d'œil à notre premier article sur le sujet. 😉

En quoi l’IAG est-elle différente ?  

Là où l’IA traditionnelle se base sur ce qui existe déjà, l’IA générative fonctionne à partir de modèles de langage et de réseaux neuronaux entraînés sur d'immenses ensembles de données. 

Ces modèles sont capables de générer des résultats réalistes en fonction des informations qu’on leur fournit. Et le plus fascinant ?🥁Les réponses générées peuvent être du texte brut (qu’on appelle un prompt), des questions, ou encore des commandes en code. 

Quelques exemples pour mieux comprendre ? 

  1. Génération de texte : par exemple, si vous demandez à ChatGPT de traduire la phrase “The cat is sitting on the branch of the tree”, il vous répondra “Le chat est assis sur la branche de l’arbre”. 

  2. Génération d’images : si vous entrez une instruction comme “un chat sur une branche”, une image est générée à partir de cette demande. Voici d’ailleurs un exemple avec l’outil Midjourney 👇🏼.


L’objectif ici est de mieux comprendre comment ces modèles fonctionnent et ce qui se cache derrière cette technologie de pointe. 

Les modèles derrière l’IAG : aperçu de 3 approches.

Les GANs (Réseaux Antagonistes Génératifs) 

Les GANs, introduits en 2014, sont au cœur de la génération de contenus. 

L’idée est simple : deux réseaux neuronaux, un générateur et un discriminateur, s’affrontent dans un jeu sans fin 🤜🏼🤛🏽. 

Le générateur crée du contenu (comme des images) tandis que le discriminateur essaie de distinguer les vraies données des fausses. Plus ils “jouent”, plus le générateur s’améliore, jusqu’à ce qu’il devienne presque indiscernable pour le discriminateur. 



Prenons un exemple dans le cas de la génération d’image de chat :

  1. On récupère des images de chat qui seront considérées comme l’échantillon «Valide», auquel on affecte la valeur 1 (:point informatif: dans un problème de classification binaire, la convention est d’affecter la valeur 1 à ce qui est Vrai, et 0 à ce qui est Faux).

  2. Initialiser le générateur avec des valeurs aléatoires et assigner 0 à la sortie (puisque toutes les images de l’échantillon sont fausses).

  3. Envoyer les données réelles et les données générées au discriminateur, puis mettre à jour les modèles :

    1. Mettre à jour le discriminateur en fonction de l’erreur de classification commise

    2. Mettre à jour le générateur en fonction de l’erreur de génération commise

    3. La compétition entre les deux réseaux induits par la répétition des étapes 2 et 3 conduit à l'amélioration constante de la qualité des résultats générés par le générateur.  

Les modèles de diffusion 

Les modèles de diffusion sont un peu plus récents (introduits en 2017 par Aäron van den Oord, Oriol Vinyals et Koray Kavukcuoglu). 

Ils sont utilisés par des outils comme DALL-E, Stable Diffusion, Midjourney pour générer des images ultra-réalistes, contrairement aux modèles génératifs classiques, le modèle de diffusion fonctionne en inversant un processus de génération, ce qui lui permet de produire des résultats de haute qualité avec une grande cohérence.


Comment cela fonctionne-t-il ?🤔

Illustrons encore une fois le processus d’entraînement du modèle dans le cas d’une image. 

On commence par récupérer une image de chat : comme aucune dégradation ne lui a été appliquée on va la noter :

On ajoute un bruit aléatoire (dont les paramètres sont connus) sur plusieurs étapes : 

Point informatif : 

L’idéal serait de pouvoir estimer précisément le bruit dans une image, ce que l’on pourrait décrire par :

Cependant, en pratique, c'est une tâche particulièrement complexe. Pour contourner ce défi, les chercheurs ont développé une méthode astucieuse : plutôt que de tenter d'estimer l'image elle-même, ils estiment directement le bruit qui la compose. En supprimant ce bruit, on peut ainsi passer d’une image fortement bruitée à une version beaucoup plus nette et claire 🫨.

Ce processus est répété un grand nombre de fois sur un ensemble massif d’images. Grâce à cela, l’IA finit par maîtriser une fonction capable d'inverser le bruit aléatoire et de générer des images tout en respectant fidèlement les contraintes et les caractéristiques des exemples d’entraînement.

Les Transformers 

Si vous avez déjà entendu parler de ChatGPT, vous avez déjà rencontré les Transformers.

Les modèles basés sur les Transformers représentent une avancée majeure dans le domaine de l'intelligence artificielle générative (IAG). Introduits en 2017 par des chercheurs de Google dans leur article phare "Attention is All You Need", ces algorithmes ont révolutionné le traitement du langage naturel. C'est d'ailleurs cette technologie qui sous-tend des modèles populaires comme ChatGPT (qui signifie Chat Generative Pre-trained Transformer), ainsi que des générateurs d’images comme MidJourney ou DALL·E, en leur permettant de comprendre le contexte du texte pour générer des images pertinentes.

Le concept central des Transformers repose sur l'attention, et plus précisément l'auto-attention, un mécanisme essentiel que nous décrirons en détail dans cet article. Prenons l'exemple d’un modèle de traduction automatique. Comment passer de la phrase anglaise « the cat is sitting on the branch of the tree » à la phrase française « le chat est assis sur la branche de l’arbre » ?

Comme pour tout modèle mathématique, la première étape consiste à convertir les mots en nombres. Chaque mot de la phrase sera transformé en vecteur. Bien que le processus complet de "tokenization" soit généralement nécessaire pour décomposer ces mots, pour cet exemple, nous allons simplifier l'explication. Pour en savoir plus, n'hésitez pas à consulter notre série d'articles sur les concepts mathématiques de base en IA.

Il est aussi essentiel de spécifier à l'ordinateur la position des mots dans la phrase, comme le montre le schéma suivant👇🏼.


L'objectif est désormais de déterminer à quel point un mot est contextuellement lié à un autre dans une phrase. Plutôt que d'analyser les mots « cat », « is », et « sitting » de façon isolée, on cherche à comprendre comment ces mots interagissent entre eux et à intégrer ces relations dans la représentation de chaque mot.

Pour cela, le mécanisme d'attention repose sur 3️⃣ matrices :

  • Key (noté K)

  • Query (noté Q)

  • Value (noté V)

Ces matrices permettent d'évaluer l’importance de chaque mot en fonction des autres, renforçant ainsi le lien contextuel entre eux.


*Figure 5 Schématisation du calcul du score d'attention pour le mot "The" (schéma perso)

Dans un premier temps, il s'agit de mesurer la pertinence d'un mot par rapport aux autres dans une phrase. Par exemple, dans le schéma, on cherche à déterminer à quel point « The » est relié à « The », « cat » et « is ». 

Mathématiquement, cela s'exprime de la manière suivante :

À la fin de ce processus, on est en mesure de mesurer à quel point « The » est lié aux autres mots, autrement dit, on obtient le score d'attention du mot « The ». Ce score est ensuite soumis à la fonction softmax, qui le convertit en probabilité.

(:point_information: Pour plus de détails, n'hésitez pas à consulter la série d'articles sur les Concepts mathématiques de base utilisés en IA). 🤖


La dernière étape du calcul consiste à multiplier les scores d'attention obtenus par les vecteurs de valeur (en bleu dans le schéma). Cette étape est cruciale, car elle permet de pondérer chaque vecteur de valeur en fonction de son importance relative, définie par les scores d'attention. 

Ce processus est essentiel pour diriger et combiner les informations pertinentes, générant ainsi une représentation significative et pondérée de la séquence en fonction de la tâche à accomplir.

Et voilà… Vous connaissez maintenant l'origine de la formule :

En répétant ce processus pour chaque mot, on obtient une couche d'attention. En superposant plusieurs couches, on augmente la complexité des relations que le modèle peut apprendre.

Bien que nous n'entrions pas ici dans les détails des relations entre les couches et l'architecture du modèle (encodeur-décodeur), le schéma suivant en illustre l'idée générale 😉: 


* Figure 7 Architecture d'un Transformer (source : https://lbourdois.github.io/blog/nlp/Transformer/)

Partager cet article

Partager cet article

Partager cet article

Nos derniers articles et livres blancs