# Réseaux antagonistes génératifs de Wasserstein

Les réseaux antagonistes génératifs de Wasserstein (en anglais Wasserstein Generative Adversarial Network d'où WGAN et Wasserstein GAN) sont une variante des réseaux antagonistes génératifs (GAN), proposée en 2017 qui vise à « améliorer la stabilité de l'apprentissage, à éliminer les problèmes tels que l'effondrement sur les modes et à fournir des courbes d'apprentissage utiles pour le débogage et la recherche d'hyperparamètres »$^,$.
Comparé au discriminateur d'un GAN traditionnel, le discriminateur d'un GAN de Wasserstein, souvent appelé critique, fournit un meilleur signal d'apprentissage pour le générateur. Cela permet à l'entraînement d'être plus stable lorsque le générateur apprend des distributions dans des espaces de très grande dimension.

## Motivation
### GAN

Un GAN classique est basée sur un jeu à somme nulle entre 2 joueurs : générateur et discriminateur. Le jeu est défini sur un espace de probabilité $(\Omega ,{\mathcal {B}},\mu _{r})$. L'ensemble de stratégies du générateur est l'ensemble de toutes les mesures de probabilité $\mu _{G}$ sur $(\Omega ,{\mathcal {B}})$, et l'ensemble de stratégies du discriminateur est l'ensemble des fonctions mesurables $D:\Omega \to [0,1]$.
L'objectif du jeu est le suivant :$L(\mu _{G},D):=\mathbb {E} _{x\sim \mu _{ref}}[\ln D(x)]+\mathbb {E} _{x\sim \mu _{G}}[\ln(1-D(x))].$ Le générateur vise à le minimiser, tandis que le discriminateur vise à le maximiser.
Un théorème de base du jeu GAN stipule que :
Théorème (Le discriminateur optimal correspond à la divergence de Jensen-Shannon) — Pour toute stratégie fixée du générateur $\mu _{G}$, soit la réponse optimale $D^{*}=\arg \max _{D}L(\mu _{G},D)$, then
${\begin{aligned}D^{*}(x)&={\frac {d\mu _{r}}{d(\mu _{r}+\mu _{G})}}\\L(\mu _{G},D^{*})&=2D_{JS}(\mu _{r};\mu _{G})-2\ln 2,\end{aligned}}$
où la dérivée est la dérivée de Radon–Nikodym, et $D_{JS}$ est la divergence de Jensen–Shannon (en).
Répétez ce jeu plusieurs fois, à chaque fois avec le générateur se déplaçant en premier suivit par l discriminateur. Chaque fois que le générateur $\mu _{G}$ change, le discriminateur doit s'adapter en se rapprochant de l'idéal :$D^{*}(x)={\frac {d\mu _{r}}{d(\mu _{r}+\mu _{G})}}.$Puisque nous sommes vraiment intéressés par $\mu _{r}$, la fonction discriminatrice $D$ est en soi plutôt inintéressante. Elle suit simplement le rapport de vraisemblance entre la distribution du générateur et la distribution de référence. À l'équilibre, le discriminateur ne fait que produire ${\frac {1}{2}}$ constamment, ayant renoncé à tenter de percevoir une quelconque différence. En pratique, le générateur ne pourrait jamais atteindre l'imitation parfaite, et le discriminateur serait donc motivé pour percevoir la différence, ce qui lui permet d'être utilisé pour d'autres tâches, telles que la classification d'ImageNet sans supervision.
Concrètement, dans un GAN, si on a un générateur $\mu _{G}$, et un discriminateur qu'on améliore pas à pas, où on dénote $\mu _{D,t}$ le discriminateur à l'étape $t$; alors nous avons (idéalement) que :$L(\mu _{G},\mu _{D,1})\leq L(\mu _{G},\mu _{D,2})\leq \cdots \leq \max _{\mu _{D}}L(\mu _{G},\mu _{D})=2D_{JS}(\mu _{r}\|\mu _{G})-2\ln 2,$ nous voyons donc que le discriminateur est en fait une limite inférieure $D_{JS}(\mu _{r}\|\mu _{G})$.

### Distance de Wasserstein

Ainsi, nous voyons que le rôle du discriminateur est principalement de fournir un retour d'information au générateur, sur à quel point celui-ci est loin de la perfection, où « loin » est défini comme cette divergence de Jensen-Shannon.
Naturellement, cela apporte la possibilité d’utiliser une fonction objectif différente. Il existe de nombreuses divergences possibles parmi lesquelles choisir, comme la famille des divergences f, qui donnerait le f-GAN.
Le GAN de Wasserstein est obtenu en utilisant la distance de Wasserstein. Celle-ci satisfait le « théorème de la dualité de Kantorovich-Rubenstein ». Cette dualité peut être utilisée ce qui rend l'algorithme très efficace à calculer :
Théorème (Dualité de Kantorovich-Rubenstein) — Soit $\Omega$ un espace de probabilité qui est un espace métrique, alors pour tout $K>0$ fixé, $W_{1}(\mu ,\nu )={\frac {1}{K}}\sup _{|f|_{L}\leq K}\mathbb {E} _{x\sim \mu }[f(x)]-\mathbb {E} _{y\sim \nu }[f(y)]$ où $|\cdot |_{L}$ est la norme de Lipschitz.

## Définition

Selon la dualité de Rubenstein-Kantorovitch, la définition du GAN de Wasserstein est claire :
   « Un jeu GAN de Wasserstein est défini par un espace de probabilité $(\Omega ,{\mathcal {B}},\mu _{r})$, où $\Omega$ est un espace métrique, et une constante $K>0$.
   Il y a alors deux joueurs : un generateut and discriminateur (aussi appelé "critique").
   La stratégie du générateur est l'ensemble de toutes les mesures de probabilité $\mu _{G}$ sur $(\Omega ,{\mathcal {B}})$.
   L'ensemble des stratégies du discriminateur est l'ensemble des fonctions mesurables de type $D:\Omega \to \mathbb {R}$ avec la norme Lipschitz bornée : $|D|_{L}\leq K$.
   Le jeu de Wasserstein GAN est un jeu à somme nulle, avec la fonction objective$L_{WGAN}(\mu _{G},D):=\mathbb {E} _{x\sim \mu _{G}}[D(x)]-\mathbb {E} _{x\sim \mu _{r}}[D(x)].$ Le générateur commence et le discriminateur va ensuite. Le générateur vise à minimiser l'objectif, tandis que le discriminateur vise à maximiser l'objectif :$\min _{\mu _{G}}\max _{D}L_{WGAN}(\mu _{G},D).$ »
Par la dualité de Kantorovitch-Rubenstein, pour toute stratégie génératrice $\mu _{G}$, la réponse optimale du discriminateur est $D^{*}$, tel que $L_{WGAN}(\mu _{G},D^{*})=K\cdot W_{1}(\mu _{G},\mu _{r}).$ Par conséquent, si le discriminateur est bon, le générateur serait constamment poussé à minimiser $W_{1}(\mu _{G},\mu _{r})$, et la stratégie optimale pour le générateur est simplement $\mu _{G}=\mu _{r}$, comme il se doit.

## Comparaison avec le GAN classique

Dans le GAN de Wasserstein, le discriminateur fournit un meilleur gradient que dans le GAN traditionnel.
Considérons par exemple un jeu sur les réels où les deux $\mu _{G}$ et $\mu _{r}$ sont gaussiennes. Ensuite, le critique optimal de Wasserstein $D_{WGAN}$ et le discriminateur GAN optimal $D$ sont représentés comme ci-dessous :
Pour un discriminateur fixé, le générateur doit minimiser les objectifs suivants :
* Dans un GAN, $\mathbb {E} _{x\sim \mu _{G}}[\ln(1-D(x))]$ .
* Dans un GAN de Wasserstein, $\mathbb {E} _{x\sim \mu _{G}}[D_{WGAN}(x)]$ .
Soit $\mu _{G}$ paramétré par $\theta$, nous pouvons alors effectuer une descente de gradient stochastique en utilisant deux estimateurs non biaisés du gradient : $\nabla _{\theta }\mathbb {E} _{x\sim \mu _{G}}[\ln(1-D(x))]=\mathbb {E} _{x\sim \mu _{G}}[\ln(1-D(x))\cdot \nabla _{\theta }\ln \rho _{\mu _{G}}(x)]$$\nabla _{\theta }\mathbb {E} _{x\sim \mu _{G}}[D_{WGAN}(x)]=\mathbb {E} _{x\sim \mu _{G}}[D_{WGAN}(x)\cdot \nabla _{\theta }\ln \rho _{\mu _{G}}(x)]$ où nous avons utilisé l'astuce de reparamétrisation (en). Ce n'est pas ainsi que les choses se passent dans la pratique, puisque
$\nabla _{\theta }\ln \rho _{\mu _{G}}(x)$
est en général introuvable, mais c'est éclairant sur le plan théorique.
Comme indiqué, le générateur dans un GAN classique est motivé pour laisser son $\mu _{G}$ « glisser vers le bas du sommet » de $\ln(1-D(x))$ . Il en va de même pour le générateur d'un GAN de Wasserstein.
Pour un GAN de Wasserstein, $D_{WGAN}$ a un gradient de 1 presque partout, tandis que pour GAN, $\ln(1-D)$ a un gradient nul au milieu et un gradient impotant ailleurs. Par conséquent, la variance de l’estimateur dans le GAN est généralement beaucoup plus grande que celle dans le GAN de Wasserstein.
Le problème avec $D_{JS}$ est beaucoup plus grave dans les situations réelles d’apprentissage automatique. Envisagez de former un GAN pour générer ImageNet, une collection de photos de taille 256 x 256. L'espace de toutes ces photos est $\mathbb {R} ^{256^{2}}$, et la distribution des images ImageNet, $\mu _{r}$, se concentre sur une variété de dimension beaucoup plus faible en elle. Par conséquent, toute stratégie de générateur $\mu _{G}$ serait presque sûrement entièrement disjointe de $\mu _{r}$, rendant $D_{JS}(\mu _{G}\|\mu _{r})=+\infty$. Ainsi, un bon discriminateur peut presque parfaitement distinguer $\mu _{r}$ de $\mu _{G}$, ainsi que tout $\mu _{G}'$ proche de $\mu _{G}$. Ainsi, le gradient $\nabla _{\mu _{G}}L(\mu _{G},D)\approx 0$, ne créant aucun signal d'apprentissage pour le générateur.

## Entraînement d'un GAN de Wasserstein

L'entraînement du générateur dans un GAN de Wasserstein est une descente de gradient, la même que dans un GAN (ou pour la plupart des méthodes d'apprentissage profond), mais l'entraînement du discriminateur est différent, car le discriminateur est désormais limité par une norme Lipschitz bornée. Il existe plusieurs méthodes pour imposer cette condition.

### Limite supérieure de la norme Lipschitz

Laissez la fonction discriminatrice $D$ à mettre en œuvre par un perceptron multicouche : $D=D_{n}\circ D_{n-1}\circ \cdots \circ D_{1}$ où $D_{i}(x)=h(W_{i}x)$, et $h:\mathbb {R} \to \mathbb {R}$ est une fonction d'activation fixe avec $\sup _{x}|h'(x)|\leq 1$ . Par exemple, la fonction tangente hyperbolique $h=\tanh$ satisfait à l'exigence.
Ensuite, pour tout $x$, posons $x_{i}=(D_{i}\circ D_{i-1}\circ \cdots \circ D_{1})(x)$, nous avons par la règle de la chaîne : $dD(x)=diag(h'(W_{n}x_{n-1}))\cdot W_{n}\cdot diag(h'(W_{n-1}x_{n-2}))\cdot W_{n-1}\cdots diag(h'(W_{1}x))\cdot W_{1}\cdot dx$ Ainsi, la norme Lipschitz de $D$ est délimité par $\|D\|_{L}\leq \sup _{x}\|diag(h'(W_{n}x_{n-1}))\cdot W_{n}\cdot diag(h'(W_{n-1}x_{n-2}))\cdot W_{n-1}\cdots diag(h'(W_{1}x))\cdot W_{1}\|_{F}$ où $\|\cdot \|_{s}$ est la norme de l'opérateur de la matrice, c'est-à-dire la plus grande valeur singulière de la matrice, c'est-à-dire le rayon spectral de la matrice (ces concepts sont les mêmes pour les matrices, mais différents pour les opérateurs linéaires généraux).
Comme $\sup _{x}|h'(x)|\leq 1$, nous avons que $\|diag(h'(W_{i}x_{i-1}))\|_{s}=\max _{j}|h'(W_{i}x_{i-1,j})|\leq 1,$ et par conséquent la borne supérieure est : $\|D\|_{L}\leq \prod _{i=1}^{n}\|W_{i}\|_{s}$Ainsi, si nous pouvons fixer une limite supérieure aux normes des opérateurs $\|W_{i}\|_{s}$ de chaque matrice, nous pouvons donc fixer la limite supérieure de la norme Lipschitz de $D$ .

### Contrainte sur les poids

Puisque pour tout $m\times l$ matrice $W$, Posons $c=\max _{i,j}|W_{i,j}|$, nous avons $\|W\|_{s}^{2}=\sup _{\|x\|_{2}=1}\|Wx\|_{2}^{2}=\sup _{\|x\|_{2}=1}\sum _{i}\left(\sum _{j}W_{i,j}x_{j}\right)^{2}=\sup _{\|x\|_{2}=1}\sum _{i,j,k}W_{ij}W_{ik}x_{j}x_{k}\leq c^{2}ml^{2}$ en coupant toutes les entrées de $W$ dans un intervalle $[-c,c]$, nous pouvons être borné $\|W\|_{s}$ .
Il s'agit de la méthode de contrainte des poids, proposée dans l'article original.

### Normalisation spectrale

Le rayon spectral peut être calculé efficacement par l'algorithme suivant :
   « Valeur initiale matrice $W$ et valeur initiale $x$
   Itérons $x\mapsto {\frac {1}{\|Wx\|_{2}}}Wx$ jusqu'à la convergence vers $x^{*}$. C'est un vecteur propre de $W$ avec comme valeur propre $\|W\|_{s}$.
   Réponse $x^{*},\|Wx^{*}\|_{2}$ »
En réaffectant $W_{i}\leftarrow {\frac {W_{i}}{\|W_{i}\|_{s}}}$ après chaque mise à jour du discriminateur, nous pouvons fixer une limite supérieure $\|W_{i}\|_{s}\leq 1$, et donc limite supérieure $\|D\|_{L}$ .
L'algorithme peut être encore accéléré par mémoïsation : A l'étape $t$, on garde $x_{i}^{*}(t)$ . Puis à l'étape $t+1$, utiliser $x_{i}^{*}(t)$ comme valeur initiale de l'algorithme. Depuis $W_{i}(t+1)$ est très proche de $W_{i}(t)$, c'est donc $x_{i}^{*}(t)$ proche de $x_{i}^{*}(t+1)$, ce qui permet une convergence rapide.
Il s'agit de la méthode de normalisation spectrale.

### Pénalité sur le gradient

Au lieu de délimiter strictement $\|D\|_{L}$, nous pouvons simplement ajouter un terme de « pénalité sur le gradient » sur le discriminateur, de la forme $\mathbb {E} _{x\sim {\hat {\mu }}}[(\|\nabla D(x)\|_{2}-a)^{2}]$ où ${\hat {\mu }}$ est une distribution fixe utilisée pour estimer dans quelle mesure le discriminateur a violé l'exigence de la norme de Lipschitz. Le discriminateur, en essayant de minimiser la nouvelle fonction de perte, amènerait naturellement $\nabla D(x)$ proche de $a$ partout, faisant ainsi $\|D\|_{L}\approx a$ .
Il s'agit de la méthode de pénalité sur le gradient.