Generative Adversarial Nets (GAN)

Cette idée est décrite dans l’article Generative Adversarial Nets et depuis abbréviée simple en GAN. C’est une idée plutôt élégante et qui mérite qu’on s’y arrête un peu plus. Elle repose sur une couple de modèles, l’un qui simule des données, l’autre, un classifieur, qui détermine si le premier modèle simule des données proches d’un ensemble de données initial. Les deux modèles convergent vers l’un modèle capable de générer des données proches de vraies données, l’autre capable de différencier entre des fausses et des vraies données.

Algorithme

En quelques mots, cela commence par un jeu de données X_1, ..., X_m. On commence par un générateur G(\Theta, z)z est une variable aléatoire qui sert à générer des observations Y_1, ..., Y_m pour construire un jeu de données (X_1, 1), ..., (X_m, 1), (Y_1, 0), ..., (Y_m, 0), un classifieur est ensuite appris pour distinguer les vraies observations des fausses. On l’appelle le discriminateur D(\Omega, X). A partir de là, on peut calculer un gradient \partial D / \partial X qui sert à améliorer la qualité du générateur. Et on recommence…

  1. Générer aléatoirement des observations z.

  2. Utiliser le générateur pour générer des observations Y_1, ..., Y_m.

  3. Apprendre le classifieur sur le jeu (X_1, 1), ..., (X_m, 1), (Y_1, 0), ..., (Y_m, 0).

  4. Mettre à jour le générateur.

  5. Recommencer jusqu’à convergence.

En termes plus mathématiques…

théorème T1 : Minibatch stochastic gradient descent training of generative adversarial nets

  1. Sample minibatch of m noise samples z(1), …, z(m) from noise prior G(z).

  2. Sample minibatch of m examples x(1), …, x(m) from data generating distribution data(x).

  3. Update the discriminator by ascending its stochastic gradient:

    \nabla_\Theta

  4. Sample minibatch of m noise samples z(1), …, z(m) from noise prior G(z).

  5. Update the generator by descending its stochastic gradient:

    \nabla_\Omega

The gradient-based updates can use any standard gradient-based learning rule. We used momentum in our experiments.