S’il fallait choisir, parmi toutes les notions qui permettent de décrire comment fonctionnent les algorithmes d’intelligence artificielle dite générative (diffusion, transformers, backpropagation…), s’il ne fallait en retenir qu’une seule, ce serait celle d’espace latent.
Prenons un cas classique, un algorithme dont on souhaite qu’il soit capable de distinguer les images de chats de celles de chiens.
Image : collection d’exemples soumises à l’algorithme pour son entraînement. Pour plus de clarté, il n’y en a que trois, et sans arrière-plan, il en faut évidemment beaucoup plus, et faire varier les contextes, les poses, l’éclairage…
Notre algorithme se calibre sur une collection d’exemples. On peut dire dire qu’il décele des différences et des similarités entre les images d’entraînement. À noter que ces différences ne sont pas programmées. On ne lui indique pas que les chats et les chiens se distinguent plus facilement si on prête attention à la présence de moustache ou à la forme des oreilles. Les différences sont inférées de l’entraînement, ce qui fait qu’au bout du compte on ne sait pas ce que « regarde » un algorithme pour établir sa distinction (à quelles caractéristiques il fait plus ou moins attention). (mais on peut en avoir une idée, après coup, par des méthodes élaborées).
Une manière de décrire le processus serait de dire que l’entraînement de l’algorithme revient à positionner les images d’exemples les unes par rapport aux autres en fonction des différences décelées.
Imaginons que la taille fasse partie des différences décelées. L’entraînement de l’algorithme revient à positionner les images, les unes par rapport aux autres, en fonction de la taille.
Agencement des images en fonction d’une dimension, la taille
Si la forme des oreilles fait également partie des différences décelées, l’entraînement de l’algorithme revient à positionner les images les unes par rapport aux autres, en fonction de la taille et de la forme des oreilles.
Agencement des images en fonction de la taille et de la forme des oreilles
Mathématiquement, c’est comme si les images étaient rangées dans un espace à deux dimensions, chaque dimension correspondant à une différence décelée, ici la taille et la forme des oreilles.
Enfin, imaginons que la couleur de l’image fasse également partie des caractéristiques décelées. L’entraînement de l’algorithme revient donc à positionner les images les unes par rapport aux autres, en fonction de la taille, de la forme des oreilles, et de la couleur. Elles sont agencées dans un espace multidimensionnel de taille trois, chaque axe ou dimension correspondant à une de ces trois caractéristiques.
Positionnement des images dans un espace multidimensionnel de taille trois
Bien que nous soyons incapables de nous représenter au-delà de ces trois dimensions, il faut imaginer que les algorithmes font la même chose, ils « rangent » les objets dans des espaces à des dizaine de milliers de dimensions correspondant chacune à des différences qu’ils ont détectées, appelés « espace latent ». L’espace est dit « latent » car il n’existe pas vraiment, il est induit par l’algorithme à partir des différences détectées entre ses objets d’entraînement, c’est la manière dont il les classe.
Comprendre l’IA générative : les notions comme régions de l’espace latent
Chaque point de l’espace latent correspond à une combinaison de caractéristiques particulières (taille, oreilles, couleur, etc.). La distance entre les points correspond aux relations de similarité et de différence entre les exemples. Par conséquent, les objets similaires en viennent à être regroupés dans des « régions » de cet espace multidimensionnel. En voici une visualisation en trois dimensions :
«
Région des chats » et « région des chiens » dans un espace latent à trois dimensions
Une fois l’entraînement effectué, c’est-à-dire une fois que l’algorithme aencodé une collection d’exemples dans un espace multidimensionnel des caractéristiques différenciantes (l’espace latent), l’algorithme dispose d’une définition des objets : chaque objet suffisamment représenté dans la base de données d’exemples correspond à une région de l’espace latent. Lorsqu’on lui présente une nouvelle image, ses caractéristiques permettront de la positionner dans l’espace latent et donc de voir, dans l’exemple qui nous occupe, si elle appartient à la région des chats ou des chiens : elle sera reconnue comme une image de chat ou de chien.
Inversement, il est possible de désigner un point de la région des chats, et de demander à l’algorithme de produire une image ayant la combinaison de caractéristiques correspondantes.
Le dessin donne une idée de la combinaison de caractéristiques souhaitées à l’algorithme, qui produit une image de chat possédant ces caractéristiques
Ou encore, il est possible de sélectionner un point intermédiaire entre la région des chats et celle des chiens pour voir à quoi ressemblerait un animal qui aurait des caractéristiques « à mi-chemin » entre celles de chaque espèce.
Image de chat-chien
Intéragir avec l’espace latent : produire une nouvelle image
La « sélection » du point, autrement dit la communication à l’algorithme de la combinaison de caractéristiques souhaitées, peut se faire de différentes manières (esquisses, textes…). La manière privilégiée aujourd’hui est la description textuelle (ou prompt), ce qui est assez pauvre, étant donné la variété des caractéristiques qui composent une image. Lorsque le prompteur a une intention précise, les images proposées en sont souvent assez « loin » et il faut « tâtonner » dans l’espace latent en reformulant le prompt, parfois sans succès. Certaines personnes ont développé assez de familiarité avec les outils pour tâtonner moins longtemps que les autres et vendent leur compétence (prompt engineers).
Intéragir avec l’espace latent : moduler une image existante
Dans la mesure où l’algorithme a été entraîné à reconnaître qu’il s’agit du même objet quelles qu’en soit ses variations, il a également encodé les variations elles mêmes. Il est capable de reconnaître un chien, quelle que soit sa taille, quelle que soit sa couleur, qu’il ait ou non la gueule ouverte, etc. La combinaison de caractéristiques correspondant à « avoir la gueule ouverte » est un vecteur dans l’espace latent. Dès lors, il est possible d’appliquer ce vecteur à une image pour lui appliquer la qualité correspondante.
L’image d’origine est tranformée en lui appliquant les vecteurs correspondant aux qualités souhaitées (posture, âge, genre, coiffure…). Image : Sieun Park, « How to edit images with GANs? Controlling the Latent Space of GANs », Medium, 17 août 2021.
En plus de produire de nouvelles images, l’IA générative permet donc de moduler les images existantes en lui appliquant des qualités. Cette modulation peut se décrire comme une exploration de l’espace latent. On peut comparer la modulation d’une image à une forme de scultpure sur un matériau souple (argile ou pâte à modeler) : il est possible d’étirer l’image, de modifier son orientation, d’en changer une partie… Étant donné les possibilités que cela ouvre, on peut penser qu’il y aura des innovations au niveau des interfaces pour que les utilisateurs en aient une perception plus intuitive.
Et le texte ?
L’utilisation du texte repose sur le même principe. En utilisant différentes méthodes (notamment, remplir des textes à trous), les algorithmes sont entraînés à associer les mots et leur contexte et en inférer des relations de distances et de proximité entre les mots qui correspondent à leur similarité, ou plus précisément par subsituabilité (ils peuvent apparaître dans le même contexte). Ainsi, « chien » sera plus proche de « chat » que de étagère. Cela conduit également à encoder les analogies au sens large (une chose est à une autre ce que ceci est à cela) sous forme de vecteur dans l’espace latent.
Une projection de l’espace vectoriel des mots dans un espace en trois dimensions permet de visualiser les vecteurs encodant la relation de genre, de temporalité, ou la relation pays / capitale. Image : word2vec tutorial, TensorFlow
En étendant l’entraînement à des formes textuelles plus grandes que les mots, les algorithmes encodent des notions et des qualités plus élaborées, comme le style littéraire ou la relation entre un texte et son résumé.
Quelle gamme de gestes créatifs ?
En amont de l’utilisation des algorithmes, il faut constituer la collection d’exemples qui permettra de les entraîner. C’est d’abord une curation (sélection de textes et d’images) qui va cadrer le répertoire des formes possibles, et définir une certaine tonalité – le reflet de la majorité des exemples utilisés.
Lors de l’entraînement, il est possible d’orienter ce répertoire en favorisant ou défavorisant certaines formes (apprentissage par renforcement). C’est une couche supplémentaire de curation.
L’usage de l’algorithme commence par une description (généralement le « prompt ») de la forme qu’il doit fournir, ou bien par l’envoi d’une forme déjà existante à moduler. Lorsque l’algorithme fournit la forme initiale, on peut parler à la fois de collage puisqu’elle est le résultat d’une combinaison de formes existantes (les éléments de la base de données d’entraînement), mais aussi d’esquisse puisque elle sert de point de départ au processus créatif.
Une fois la forme esquissée ou fournie à l’algorithme, il est possible de la moduler de plusieurs manières :
– obtenir des variations aléatoires, notamment lorsque l’esquisse ne convient pas mais que l’on ne sait pas comment décrire ce qu’il faudrait changer pour qu’elle convienne
– étirer la forme (outpainting, texte plus long…)
– moduler une caractéristique locale : ajouter des lunettes, enlever un élément, changer l’arrière-plan…
– moduler une caractéristique globale. Pour les images : le style général, la résolution, l’éclairage… Pour le texte : le niveau de complexité, le niveau de politesse, le niveau de sérieux…
– les modulations peuvent se faire en transférant une caractéristique d’une forme à une autre : appliquer l’expression d’un visage à un autre, ou appliquer le style de Balzac à une recette de cuisine… A nouveau, on se rapproche du collage.