Generative Adversarial Networks

Generative Adversarial Networks

2017-02-20T00:00+02:00

Les Generative Adversarial Networks sont nés en 2014 Publication originale - Goodfellow et al. et sont très vite devenus particulièrement populaires dans la communauté scientifiques comme présentant un nouveau modèle de génération de donnée original et particulièrement efficace. Nous proposons ici une petite revue de tâches réalisées aujourd'hui par les GANs et de reprendre ensuite l'état de compréhension scientifique de ces réseaux aujourd'hui.

Il convient en premier de définir ce qu'est un "Generative Model" dans l'absolu. Nous parlons là de réseaux qui, à l'opposé des réseaux usuels permettant de mettre en œuvre la classification ou la prédiction d'une donnée, vont eux être en capacité de générer une nouvelle donnée dans un cadre contrôlé. Un exercice usuel, par exemple, sera de générer à partir d'un dataset de nouvelles photos de visage, parfaitement crédibles mais complètement originales. Cet exemple semble futile, mais il peut être étendu dans des cas pratiques très variées :

gan 2

  • La génération libre, par exemple d'une image à partir d'un texte décrivant l'image. Nous vous invitons à consulter le travail original "Generative adversarial text to image synthesis" (Reed et al.)(https://arxiv.org/abs/1605.05396) où un réseau générait une photographie d'un oiseau particulier à partir d'une simple ligne de texte, ou plus récemment "Text to photo-realistic image synthesis with stacked generative adversarial networks" (Shang et al)(https://arxiv.org/abs/1612.03242) qui améliore grandement ces résultats avec deux GANS travaillant à différents niveaux de détail.
  • gan 3
  • La super-résolution Ledig et al. 2016(https://arxiv.org/abs/1609.04802): produire, à partir d'une image donnée, une image deux à quatre fois plus grande sans pixellisation ou autres effets de "dissimulation" de l'opération. Dans ce contexte, le réseau va générer les détails manquants pour produire la nouvelle image, à la manière typiquement des DCGANs (Deep Convolutionnal GAN).
  • La complétion d'informations fragmentées. Imaginez que vous disposez d'une photographie où un carré gris a été collé au centre, recouvrant donc une partie de l'image. Certains GANs sont spécialisés dans le fait de comprendre la photographie globale et ainsi de générer l'information manquante.
  • La génération de données pour une tâche tierce. Dans le cadre d'une classification d'informations, il est nécessaire (supervised learning) de disposer d'un dataset proprement annoté pour pouvoir entraîner le réseau de neurones. Hors, il peut arriver que le dataset disponible soit insuffisant. Un GAN peut alors jouer un rôle de générateur de donnée manquante afin de faciliter la classification finale voulue.
  • gan 4L'utilisation de sketchs. Zhu et al. 2016 ont proposé un outil dans lequel l'utilisateur dessine un paysage à l'aide de quelques traits très simples, et le réseau se charge de générer la photographie finale correspondant le mieux au sketch esquissé par l'utilisateur. Cette démonstration présage des outils de création de demain, où l'on pourra imaginer un designer choisir un sac existant, dessiner un tout nouveau tracé et observer le résultat directement.
  • Prédiction. Si les réseaux récurrents et leurs dérivés restent l'architecture de choix pour une tâche de prédiction, les GANs dans certains contextes peuvent devenir particulièrement pertinent. Lotter et al. (2015) propose ainsi un réseau apprenant à générer, depuis une suite d'images issues d'une vidéo, l'image suivante. Il s'agit là d'une approche radicalement différente des RCNNs ou pixelCNNs, pouvant donner aussi d'excellents résultats.

À ce stade, pour comprendre réellement l'intérêt de ces outils, il devient nécessaire de rappeler qu'un GAN, à la manière d'un VAE, vise à définir un espace latent simple mathématiquement permettant de représenter correctement la distribution de probabilité cible. Une fois l'apprentissage réalisé, nous devenons capables de parcourir la donnée d'une manière "intelligente". Par exemple, en entraînant un GAN sur un dataset composé de photographies d'individus qui expriment différentes émotions, le réseau pourra apprendre à isoler l'information du sourire comme d'une variable manipulable, permettant ainsi de générer à partir d'une photo normale un équivalent souriant :) Les GANs, fondamentalement, cherchent donc une structuration de la donnée à générer suffisamment simple et exploitable, à la manière d'un VAE ou tout autre modèle d'inférence usuel.

S'il existe aujourd'hui de nombreuses dérivations de l'architecture originale du GAN de Goodfellow, le principe fondamental reste le même. Le réseau se divise en deux parties, deux sous-réseaux qui agissent en coopération :

  • Le premier sous-réseau est un générateur, qui apprendra à créer de nouvelles données
  • Le second sous-réseau est un discriminateur, qui régulièrement apprendra à distinguer une donnée authentique d'une donnée générée par le premier sous-réseau.

Dès lors, chacun va à tour de rôle s'entraîner : le générateur va apprendre à générer quelque chose de "convenable" du point de vue du discriminateur, qui lui va ensuite s'entraîner à nouveau à ne plus se laisser "berner" par le générateur. Les deux sous-réseaux vont ainsi converger, chacun en s'appuyant sur l'autre... Mais seulement quand ils voudront bien converger.

En effet, les GANS présentent aujourd'hui plusieurs difficultés. Non moindre d'entre elles, l'apprentissage qui reste très sensible à l'ensemble des hyper-paramètres et peut ainsi être très laborieux à mettre en place (encore qu'une récente publication, les Wasserstein GAN, Arjovsky et al, propose un apprentissage plus contrôlé). Un autre "problème" fondamental reste l'absence de compréhension fondamentale aujourd'hui sur le bon fonctionnement de ces réseaux, où la communauté scientifique reste cantonnée aux hypothèses. Pour plus de détail sur celles-ci et les mathématiques sous-jacentes, nous vous invitons à consulter le NIPS 2016 Tutorial rédigé par Goodfellow qui récapitule deux années de recherche et de nouvelles propositions.