Réseau génératif
Mapper une valeur de basse Réseau
dimension vers sortie de génératif
haute dimension (image)
Valeur aléatoire : z
Exemple : Variational Autoencoder (VAE)
GAN
2
GAN
• Approche inspirée de la théorie
des jeux
• Réseau génératif : essaie de
confondre le réseau discriminatif
• Réseau discriminatif (critique) :
?
essaie de distinguer entre les
images réels et les fausses ?
3
Ian Goodfellow et al., “Generative Adversarial Nets”, NIPS 2014
GAN
Générateur cherche à
produire des images vrai ou faux
quelconques ressemblant à
Réseau
celles d’un jeu de données discriminatif
Fausses
images
(générées)
Vraies images (données
d’entraînement)
Réseau
génératif
Valeur aléatoire : z 4
GAN
• Ne cherche pas à modéliser explicitement
la densité (manifold)
• Approche inspirée de la théorie des jeux :
jeu minimax à 2 joueurs
5
GAN
• Discriminateur D (sortie 0 à 1) change ses
poids afin de maximiser V
1 0
Vraies Fausses
données données
log(1) = 0
log(0.1) = -1
log(0) = -Inf 6
GAN
• Générateur G (sortie image) cherche à
confondre le discriminateur D, afin de
minimiser V
0 1
Vraies Fausses
données données
log(1) = 0
log(0.1) = -1
log(0) = -Inf 7
Entraîner le GAN
• Pour cette fonction objective V
• Alternance entre :
– Montée du gradient pour le discriminateur
– Descente du gradient pour le générateur
]
8
Instabilité entrainement
• Cette fonction de perte de G est peu commode
]
… mais le faible gradient
empêche un bon
Bon gradient inutile, car
apprentissage
le générateur confond
bien le discriminateur
Discriminateur a
démasqué le générateur
9
Version améliorée 1
• Montée de gradient pour le générateur
] max
G [log( D(G ( z )))]
Gradient plus fort
là où ça importe
En bref, la forme de la fonction de perte importe beaucoup! 10
Algorithme ca. 2016
11
Version améliorée 2
• Fonction perte précédente difficile à
entraîner
• Autre interprétation du GAN : on veut
que les distributions D(G(z)) et D(x) soient
les plus proches possibles
• Métrique de distance sur distributions
• Perte sur distance Wasserstein
– Earth mover distance (distance du cantonnier)
– (quantité déplacée) x (distance déplacement)
12
Distance de Wasserstein
Mesurer la
distance entre ces Distance Wasserstein discrète = 2+2+1 = 5
2 distributions
+2 +2 +1
13
[Link]
Comparaison des
distances
KL : Kullback-Leibler
JS : Jensen-Shannon
W : Wasserstein
q
q =0
Pas besoin d’avoir
le même support
q 0
14
WGAN
fw doit être K-lipschitzienne
“Weight clipping is a clearly terrible way to enforce a
Lipschitz constraint”
15
M. Arjovsky, S. Chintala, and L. Bottou. Wasserstein gan. arXiv preprint arXiv:1701.07875, 2017.
WGAN-GP (Gulrajani et al., 2017)
Plus de weight clipping!
16
Mode collapse
• Rappel : le GAN génère des images
quelconques (on ne peut spécifier
explicitement le type d’image désiré)
• Générateur risque de perfectionner
un/quelques styles d’image
Significant degree of mode collapse in the GAN MLP [1]
17
[1] Arjovsky et al., Wasserstein GAN, arxiv:1701.07875, 2017.
Métrique d’évaluation
• Classification d’image : précision
• GAN : quantifier le taux de réalisme!
• Problématique similaire à la traduction
– BLEU score n’est pas toujours représentatif
• Parfois recourt à Amazon Mechanical Turk,
pour exploiter jugment humain
18
Inception score IS
• Réseau Inception préentrainé sur ImageNet
• IS Corrèle bien avec scores humains sur CIFAR-10
images générées p est calculé avec Inception
• Plus IS est grand, mieux c’est
• Relié à l’information mutuelle entre marginal et
conditionnel :
– Inception est confiant qu’il n’y a qu’un objet dans
l’image → p(y|x) a une faible entropie
– Genérateur produit une grande variété d’image → p(y)
a une grande entropie
19
Baratt et al. , A Note on the Inception Score, [Link]
GAN MLP→CNN
• Approches précédentes basées sur MLP
• Radford et al. proposent des règles pour
utiliser des CNN : DCGAN
Radford et al, “Unsupervised Representation Learning with Deep Convolutional
20
Generative Adversarial Networks”, ICLR 2016
Résultats (64x64 pixels)
Entraîné sur LSUN bedroom dataset, 3 millions d’images. 22
Interpolation sur z
• Permet d’évaluer si le réseau a appris par cœur
() ou non (☺) les données d’entrainement
• Absence de transitions brusques est bon signe!
23
Algèbre sur z
24
Algèbre sur z
25
CycleGAN
• Pour effectuer des transferts de style
26
Zhu et al., Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks, ICCV 2017.
CycleGAN : faiblement supervisé
• Pas besoin d’apparier les images
27
CycleGAN : faiblement supervisé
x G ( x) F (G ( x))
28
Progressive Growth of GAN
• Cherche à
– stabiliser l’entraînement des
GAN
– augmenter la qualité
– la taille des images de sorties :
1024x1024
• Idées maîtresses :
– faire croitre graduellement le
GAN
– ajouter heuristique pour
encourager la diversité des
images générées (mode collapse)
29
Karras et al., Progressive Growing of GANs for Improved Quality, Stability, and Variation, ICLR 2018.
Croissance progressive
• Permet au réseau de découvrir les structures à
grande échelle, puis de raffiner vers le détail
• Plus rapide, car entrainement majoritairement sur
des images plus petites (gain 2x-6x)
Note : détails fins
sont généralement
problématiques
pour GAN
30
Croissance progressive
• Fondu progressif avec a (0→1) à l’ajout d’une couche
– éviter les chocs/instabilités au moment de l’ajout
– simplifie la problématique, au lieu d’essayer de trouver
directement z→1024² (shaping)
Couches
jamais
gelées
31
Contrer le mode collapse
• Ajout d’un heuristique basé sur des écarts-
types pour chaque minibatch
1. Pour chaque feature et
chaque endroit, calcule f
( x, y )
2. Moyenne globale
unique de (f x , y )
3. Ajoute un feature
map dans D contant
cette valeur unique,
pour toute la batch
(ajouté vers sommet
de D)
32