Normalizing Flows¶
Dans ce cours, nous présentons les Normalizing Flows qui sont des modèles génératifs de representation learning. Ils sont un peu moins connus que les VAE, GAN ou modèles de diffusion mais ils ont quand même de nombreux avantages non négligeables.
Les GAN et les VAE ne peuvent pas évaluer avec précision l'exactitude de la distribution de probabilité (un GAN ne le fait pas du tout et un VAE utilise la ELBO) et cela cause des problèmes lors de l'entraînement : les VAE ont tendance à produire des images floues tandis que les GAN sont sujets au mode collapse lors de l'entraînement.
Les Normalizing Flows propose une solution à ce problème.
Comment ça marche ?¶
Un Normalizing Flow peut être décrit comme une série de transformations bijectives. Ces transformations sont utilisées pour modéliser des distributions complexes de données, telles que celles des images, en les transformant en une distribution simple, comme une distribution gaussienne centrée réduite.
Les Normalizing Flows sont entraînés en maximisant la vraisemblance des données, ce qui est généralement formulé comme la minimisation du negative log-likelihood par rapport à la densité de probabilité réelle des données. En d'autres termes, on ajuste les paramètres des transformations pour que la distribution générée par le flow soit aussi proche que possible de la distribution cible des données.
Figure extraire de blogpost.
Avantages et désavantages¶
Les principaux avantages de Normalizing Flows sont les suivants :
- Leur entraînement est très stable
- Ils convergent beaucoup plus simplement que les GAN ou les VAE (Yay)
- Il n'y a pas besoin de générer un bruit pour pouvoir générer des données
Cela semble assez génial mais il y a quand même quelques désavantages :
- Empiriquement, on constate qu'ils sont moins expressifs que les GAN ou les VAE
- Il y a une contrainte sur l'espace latent car on a besoin de fonctions bijectives et d'une préservation du volume. Cette contrainte fait que l'espace latent n'est pas vraiment utilisable car de grande dimension donc dur à interpreter.
- Empiriquement, les éléments générés sont souvents moins bons que ceux des GAN ou des VAE.
Note : Il y a un aspect théorique important derrière les Normalizing Flows mais nous n'allons pas entrer dans les détails dans ce cours. Pour en apprendre plus, vous pouvez vous réferrer au cours CS236 de stanford et en particulier à ce lien.