Un Variational AutoEncoder (VAE) est une variante d’AutoEncoder qui apprend à générer de nouvelles données similaires à celles de l’ensemble d’entraînement en imposant une distribution probabiliste sur l’espace latent. En VAE, l’objectif est d’apprendre une représentation latente distribuée de manière gaussienne, ce qui permet de générer des échantillons aléatoires depuis cet espace latent pour créer de nouvelles images.
Voici comment construire et entraîner un VAE avec TensorFlow/Keras :
1. Importer les bibliothèques nécessaires
2. Charger et préparer les données (Fashion MNIST)
Nous allons utiliser le dataset Fashion MNIST pour entraîner notre VAE.
3. Architecture du VAE
Le VAE se compose de trois parties :
Encodeur : Il mappe les images d’entrée vers une distribution latente.
Rééchantillonnage : Une étape qui applique une technique appelée “reparameterization trick” pour échantillonner les points de l’espace latent.
Décodeur : Il reconstruit les images à partir des points latents.
a. Fonction de rééchantillonnage
Nous échantillonnons depuis une distribution normale en utilisant le “reparameterization trick”.
b. Construire l’encodeur
L’encodeur encode les images en un vecteur latent (avec une moyenne et une variance log).
c. Construire le décodeur
Le décodeur reconstruit les images à partir des vecteurs latents échantillonnés.
d. Construire le modèle VAE
Nous créons ensuite le modèle VAE complet, qui comprend l’encodeur, la rééchantillonnage et le décodeur.
4. Définir la fonction de perte
La perte du VAE combine deux termes :
Perte de reconstruction : Erreur entre l’image d’entrée et l’image reconstruite.
Perte KL divergence : Divergence entre la distribution latente apprise et une distribution normale standard.
5. Compiler et entraîner le modèle
Nous compilons ensuite le modèle et l’entraînons.
6. Générer des images à partir de l’espace latent
Pour générer de nouvelles images, vous pouvez échantillonner aléatoirement depuis l’espace latent.
Conclusion
Ce Variational AutoEncoder (VAE) est un puissant générateur de nouvelles images, en apprenant à comprimer les données dans un espace latent, puis à les reconstruire avec un décodeur. L’auto-encodeur variationnel est souvent utilisé dans des applications de génération d’images et de compression de données.