Pourquoi les GANs échouent
- Effondrement de mode : le générateur produit la même image quel que soit le bruit
- Instabilité d'entraînement : les pertes G et D oscillent sans converger
- Gradients qui s'annulent : le discriminateur devient trop fort
Correctif 1 : normalisation spectrale
from torch.nn.utils import spectral_norm
self.conv = spectral_norm(nn.Conv2d(in_ch, out_ch, 4, 2, 1))
Correctif 2 : label smoothing pour le discriminateur
real_labels = torch.ones(B) * 0.9 # not exactly 1.0
fake_labels = torch.zeros(B) + 0.1 # not exactly 0.0
Correctif 3 : pénalité de gradient (WGAN-GP)
Pénalise la norme du gradient du discriminateur — la variante GAN la plus stable pour les applications réelles.
Correctif 4 : Two Time-Scale Update (TTUR)
Utilisez des taux d'apprentissage différents : G=0.0001, D=0.0004.