Le générateur

La partie générateur d'un GAN apprend à créer de fausses données en intégrant les commentaires du discriminateur. Il apprend à faire en sorte que le discriminateur classe sa sortie comme réelle.

L'entraînement du générateur nécessite une intégration plus étroite entre le générateur et le discriminateur que l'entraînement discriminateur. La partie du GAN qui entraîne le générateur inclut les éléments suivants:

  • saisie aléatoire
  • générateur, qui transforme l'entrée aléatoire en instance de données
  • réseau discriminateur qui classe les données générées
  • résultat du discriminateur
  • la perte du générateur, qui pénalise le générateur pour avoir échoué à tromper le discriminateur ;

Schéma d'un réseau antagoniste génératif Au centre du diagramme figure une case intitulée "discriminateur". Deux branches alimentent ce champ depuis la gauche.  La branche supérieure commence en haut à gauche du diagramme, avec une case libellée d'images "réelles". Une flèche mène de ce cylindre vers une case libellée "Sample" (Échantillon). Une flèche de la zone libellée "Sample" sert à insérer la zone "Discriminator". La branche inférieure alimente la zone "Discriminateur" à partir d'une zone libellée "Saisie aléatoire". Une flèche mène de la zone de saisie aléatoire vers une zone intitulée "Generator" (Générateur). Une flèche mène de la zone "Générateur" à une seconde case "Exemple". Une flèche mène de la zone "Exemple" à la zone "Discriminateur". À droite de la zone "Discriminateur", deux flèches renvoient vers deux zones à droite du diagramme. Une flèche mène à une zone intitulée "Perte de discrimination". L'autre flèche mène à une zone intitulée "Perte de générateur". Flèche pointée.

Figure 1: Rétropropagation de l'entraînement du générateur

Saisie aléatoire

Les réseaux de neurones nécessitent une forme d'entrée. Normalement, nous saisissons les données avec lesquelles nous voulons effectuer une action, comme une instance sur laquelle nous souhaitons classer ou faire une prédiction. Mais que utilisons-nous comme entrée pour un réseau qui génère des instances de données entièrement nouvelles ?

Dans sa forme la plus basique, un GAN prend un bruit aléatoire comme entrée. Le générateur transforme ensuite ce bruit en une sortie significative. En introduisant du bruit, nous pouvons demander au GAN de produire une grande variété de données, à partir d'échantillons de différents endroits de la distribution cible.

Les tests suggèrent que la répartition du bruit n'a pas d'importance. Nous pouvons donc choisir un élément facile à échantillonner, comme une distribution uniforme. Pour plus de commodité, l'espace à partir duquel le bruit est échantillonné est généralement de dimension inférieure à celle de l'espace de sortie.

Utiliser le discriminateur pour former le générateur

Pour entraîner un réseau de neurones, nous modifions sa pondération afin de réduire l'erreur ou la perte de son résultat. Toutefois, dans notre GAN, le générateur n'est pas directement connecté à la perte que nous essayons d'affecter. Le générateur alimente le réseau du discriminateur, et le discriminateur produit le résultat que nous essayons d'affecter. La perte du générateur pénalise le générateur pour la production d'un échantillon que le réseau discriminateur classe comme faux.

Ce bloc de réseau supplémentaire doit être inclus dans la rétropropagation. La rétropropagation ajuste chaque pondération dans la bonne direction en calculant l'impact des pondérations sur la sortie, c'est-à-dire la manière dont la sortie serait modifiée si vous modifiiez la pondération. Cependant, l'impact d'une pondération de générateur dépend de l'impact des pondérations du discriminateur qui l'alimentent. Ainsi, la rétropropagation commence à la sortie et retransmet le discriminateur dans le générateur.

En même temps, nous ne souhaitons pas que le discriminateur change lors de l'entraînement du générateur. Essayer d'atteindre une cible en mouvement rendrait le problème encore plus difficile pour le générateur.

Nous allons donc entraîner le générateur de la manière suivante:

  1. Exemple de bruit aléatoire
  2. Génère une sortie de générateur à partir du bruit aléatoire échantillonné.
  3. Obtenez une classification "réelle" ou "fausse" du discriminateur pour la sortie du générateur.
  4. Calculer la perte à partir de la classification des discriminateurs
  5. Effectuez une rétropropagation via le discriminateur et le générateur pour obtenir des gradients.
  6. Utilisez les gradients pour modifier uniquement les pondérations du générateur.

Il s'agit d'une itération de l'entraînement de générateur. Dans la section suivante, nous verrons comment jongler avec le générateur et le discriminateur.