Generative Adversarial Network

Images générées par BigGAN https://openreview.net/pdf?id=B1xsqj09Fm

Voyez-vous ces images ? Elles ont l’air réelles n’est-ce pas ? Elles ont pourtant été générées par un ordinateur. Laissez-moi vous expliquer comment.

Les modèles génératifs accomplissent l’exploit de créer de nouvelles données à partir d’une base de données existante. Par exemple, en donnant une base de données de couchers de soleil au modèle, il est capable, à partir de cette base, de créer une photographie de coucher de soleil différente de celles présentes dans la base de données. Un GAN (generative adversarial network) est un modèle génératif qui est constitué de deux réseaux de neurones antagonistes. Un générateur qui va être entraîné à générer de nouvelles données suivant une distribution donnée et un discriminateur qui va être entraîné à différencier les données générées par le générateur et les données réelles.

 

Le générateur et le discriminateur jouent à un jeu où ils sont l’un contre l’autre. Ce sont des adversaires (d’où le terme « adversarial »), le générateur tente de tromper le discriminateur tandis que le discriminateur va recevoir en entrée les vraies données et les fausses données, qui ont été générées par le générateur, et tenter de les distinguer.

 

Après avoir entraîné le discriminateur, le générateur va ajuster ses paramètres pour créer de nouvelles images. Ce processus va se répéter jusqu’à ce que le discriminateur n’arrive plus à distinguer les vraies des les fausses données.

 

Dans cet article, nous nous intéresserons à l’architecture d’un GAN classique, puis, nous survolerons rapidement l’élégante théorie mathématique à l’origine de son succès, et pour finir nous admirerons ses applications qui sont tout bonnement fascinantes.

 

Les GANs, une révolution

Un soir de l’année 2014, Ian Goodfellow va boire un verre avec ses amis doctorants. Des amis travaillant sur un sujet assez complexe lui demandent son aide. Ils travaillent sur un projet d’ordinateur capable de créer des photographies. L’idée des amis de Goodfellow était de faire une analyse statistique complexe des éléments qui composent une photographie. Cette approche requiert un nombre très important de calculs et Goodfellow explique que cela ne fonctionnera pas.

 

Réfléchissant au problème penché au-dessus de sa bière, une idée vint à son esprit. Et si l’on entraînait deux réseaux de neurones l’un contre l’autre ? Ses amis étaient sceptiques mais il décida de tester malgré tout. Goodfellow coda l’algorithme dans la nuit puis le testa. Cela fonctionna du premier coup !

Taxonomie des modèles génératifs
Taxonomie des modèles génératifs

En observant cette taxonomie des modèles génératifs, on comprend en quoi les GANs sont révolutionnaires :

  • Ils ne nécessitent pas de chaîne de Markov pour faire des estimations comme pour la machine de Boltzmann ou les GSNs
  • Le modèle est asymptotiquement consistent contrairement aux auto-encodeurs variationnels.
  • Ils ne nécessitent pas que la transformation soit inversible comme c’est le cas pour la méthode de changement de variable.

Entrons dans le vif du sujet, quelle est l’architecture d’un GAN ?

 

Architecture d’un GAN (generative adversarial network)

Architecture générale

L’architecture générale d’un GAN (generative adversarial network) est assez simple à comprendre. Comme nous l’avons décrit au début de l’article, un GAN est composé d’un générateur et d’un discriminateur. Le générateur prend en entrée un vecteur latent aléatoire Z et a pour sortie une donnée générée G(Z). Nous notons x un échantillon de la base de données réelles. Nous supposons que X suit une distribution de probabilité p_x qui est la distribution des échantillons dans la base de données réelles. L’objectif du GAN (generative adversarial network) est d’approcher la distribution p_x par la distribution p_g qui est la distribution de probabilité des échantillons de la base de données générées G(Z). X et G(Z) sont donnés en entrée au discriminateur qui va tenter de différencier les vraies données des fausses données.

 

Pour mieux comprendre le fonctionnement du discriminateur, considérons Y une variable aléatoire qui prend la valeur 1 si l’image est réelle et la valeur 0 si elle est fausse. Soit v un vecteur que l’on va donner au discriminateur en entrée, la sortie du discriminateur est D(v) qui correspond à la probabilité que Y=1 sachant v, donc D(v)= P(Y=1|v). Le discriminateur estime donc la probabilité que l’élément donné en entrée soit un échantillon de la base de données réelles.

Par la suit on notera :

  • D(x) la prédiction du discriminateur pour les données réelles.
  • D(G(z)) la prédiction du discriminateur pour les données générées.

Avant d’aller plus loin dans l’architecture du générateur et du discriminateur, introduisons la fonction de perte du modèle que l’on retrouve dans l’article de Goodfellow.

Jeu de minmax

Le problème est vu comme un problème de minmax dont la solution est un équilibre de Nash.

 

Architecture du générateur

Le générateur est un réseau de neurones qui a pour but de créer de fausses données qui vont être fournies au discriminateur lors de son entraînement. Il prend en entrée un vecteur aléatoire d’une taille fixe et a pour sortie des données générées.

 

Le principal objectif du générateur est que les échantillons de la base de fausses données qu’il génère soient classifiés par le discriminateur comme des échantillons de la vraie base de données. Ainsi lorsque D(G(z)) est proche de 1, le générateur a atteint son objectif. Il cherche donc à maximiser D(G(z)), ce qui revient à minimiser 1- D(G(z)).

Générateur (Réseau de neurones)

La méthode de rétropropagation est utilisée pour ajuster chaque poids du réseau de neurones dans la bonne direction en calculant l’impact de chaque poids dans la sortie. On utilise également la rétropropagation pour obtenir le gradient qui permet de mettre à jour les poids du générateur.

Méthode de rétropropagation

 

 

Architecture du discriminateur

Le discriminateur est un réseau de neurones qui classifie les données qui lui sont fournies en entrée pour distinguer les vraies données, provenant de la base de données réelles, de celles produites par le générateur.

Discriminateur (Réseau de neurones)

La fonction de perte du discriminateur pénalise ce dernier s’il classifie mal les échantillons donnés en entrée. Ainsi, le discriminateur cherche à maximiser D(x) et 1-D(G(z)), en effet comme x provient de la base de données réelles D(x) doit être proche de 1, et comme G(z) est généré par le générateur D(G(z)) doit être proche de 0.

Comme le générateur, le discriminateur met à jour ses poids grâce à la rétropropagation.

Mise-à-jour des poids grâce au rétropropagation

Finalement, le modèle consiste en des entraînements successifs du générateur et du discriminateur, suivis d’une mise à jour des paramètres, et on répète ce processus jusqu’à ce que le modèle converge.

 

Convergence

Contrairement aux autres modèles de réseau de neurones profond que l’on entraîne avec une fonction de perte objective jusqu’à la convergence du modèle, le GAN (generative adversarial network) n’a pas de fonction de perte objective. En effet, le générateur et le discriminateur ont chacun leur propre fonction de perte qui ne peuvent pas être minimisées simultanément. De plus, l’équilibre recherché est un équilibre de Nash. On ne peut donc pas observer l’avancement de l’entraînement et la qualité du modèle uniquement avec la fonction de perte. Ce qui complique l’entraînement des GANs.

Dans le cas de la génération d’image, on évalue la qualité du modèle en regardant la qualité des images générées.

Dans le cas plus général, des mesures quantitatives existent comme l’Inception score et la distance de Fréchet.

 

Applications

Avec le développement du Deep learning, l’augmentation des données est devenue un problème majeur en machine learning. En effet, les modèles de deep learning nécessitent un volume important de données pour être entraînés. De ce fait, la génération de nouvelles données, plus spécifiquement des images, est la première application des GANs décrite dans l’article de Ian Goodfellow et al. en 2014. Cependant, les GANs peuvent être utilisés pour d’autres types de données comme le texte, le son, les voix, la musique et les données structurées comme les molécules.

Exemple de photographies de chambre générées par un GAN
Exemple de photographies de chambre générées par un GAN. Source:Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks, 2015.

Vous connaissez peut-être les générateurs de visage humain qui permettent de générer un visage aléatoire qui n’existe pas en un clic. En 2017, Tero, Karras et al. ont démontré la possibilité de générer des photographie réaliste de visage humain, qu’on appelle plus communément les deep fakes, dans leur article “Progressive Growing of GANs for Improved Quality, Stability, and Variation”. Le générateur d’image a été entraîné sur une base de données de visages de célébrités, il y a donc des similarités entre les visages des célébrités et les visages générés. Les visages nous paraissent familiers mais restent différents.

Exemples de visages générés par un GAN. Source: Progressive Growing of GANs for Improved Quality, Stability, and Variation, 2017
Exemples de visages générés par un GAN. Source: Progressive Growing of GANs for Improved Quality, Stability, and Variation, 2017.

Les GANs peuvent être utilisés à d’autre fin que la synthèse d’image, il existe des applications des GANs où la synthèse d’image n’est pas l’objectif principal.

 

C’est le cas pour les articles dans lequel un GAN (generative adversarial network) est utilisé pour faire de la traduction image-à- image.

En 2016, Philip Isola, et al, dans leur article intitulé “Image-to-Image Translation with Conditional Adversarial Networks” utilise un GAN pix2pix pour faire de la traduction image-à-image pour faire de nombreuses tâches telles que :

  • La traduction sémantique d’images en photographie de paysages urbains ou de building.
  • La traduction de photographies satellite à Google Maps.
  • La traduction de photos en plein jour en photos en pleine nuit.
  • La traduction de photos en noir et blanc en photo en couleur
  • La traduction de schémas en photographies en couleur
Example of Photographs of Daytime Cityscapes to Nighttime With pix2pix.Taken from Image-to-Image Translation with Conditional Adversarial Networks, 2016.
Exemple de traduction de photographies de paysages urbains de jour en photographies de nuit avec pix2pix.Source: Image-to-Image Translation with Conditional Adversarial Networks, 2016.
Exemple de traduction schémas en photographies en couleur avec pix2pix. Source Image-to-Image Translation with Conditional Adversarial Networks, 2016.
Exemple de traduction schémas en photographies en couleur avec pix2pix. Source Image-to-Image Translation with Conditional Adversarial Networks, 2016.

 

Exemple de traduction d’une image sémantique (à gauche) en une photographie d’un paysage urbain (à droite) Source High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs, 2017.
Exemple de traduction d’une image sémantique (à gauche) en une photographie d’un paysage urbain (à droite) Source High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs, 2017.

 

Pour conclure, après avoir été introduit en 2014 avec l’article de Ian Goodfellow, les GANs ont connu une remarquable croissance en popularité au sein de la communauté de machine learning. Les GANs ont un large champ d’applications allant au-delà de l’augmentation des données pour atteindre diverses applications telles que les images de haute résolution, la coloration d’image, la manipulation d’image, la synthèse d’image à partir d’un texte, la tarification d’actif, la simulation de marché et bien d’autres encore.

 

Si les applications de l’intelligence artificielle vous intéresse, faites un tour sur notre blog pour en savoir plus sur le Natural Langage Processing

 

Bibliographie

Avijeet Biswal, « The Best Introduction to What Generative Adversarial Networks (GANs », 18 septembre 2021. https://www.simplilearn.com/tutorials/deep-learning-tutorial/generative-adversarial-networks-gans.

Eliot Brion, « Understanding the GAN cost function », 2018. https://eliottbrion.github.io/2018-06-13/understanding-the-GAN-value-function.

Jason Brownlee, « 18 Impressive Applications of Generative Adversarial Networks (GANs) », 14 juin 2019, sect. Generative Adversarial Networks. https://machinelearningmastery.com/impressive-applications-of-generative-adversarial-networks/.

Ian Goodfellow, « Generative Adversarial Nerwork », aout 2016. https://www.iangoodfellow.com/slides/2016-08-31-Berkeley.pdf.

Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, Yoshua Bengio, « Generative Adversarial Nets », 10 juin 2014.

Karras, Tero, Aila, Timo, Laine, Samuli, Lehtinen, Jaakko, « Progressive Growing of GANs for Improved Quality, Stability, and Variation », octobre 2017. https://arxiv.org/pdf/1710.10196.pdf.

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *