RCP211 – Modèles génératifs
Auto-encodeurs variationnels
25 septembre 2024
Conservatoire national des arts & métiers
Table of contents
1. Rappels sur les auto-encodeurs
2. Principe du VAE
3. Inférence variationnelle
4. Optimisation des VAE
1
Rappels sur les auto-encodeurs
Auto-encodeurs (récapitulatif, 1/2)
Principe de l’auto-encodeur
Apprendre une compression avec les pertes les + faibles possibles.
Pour une variable aléatoire X ∈ Rn , un réseau auto-encodeur
modélise H = D ◦ E telle que :
∥H(x) − x∥ ≤ ε
• E représente l’encodeur Rn → Rd
• D représente le décodeur Rd → Rn
L’auto-encodeur construit un espace latent Z qui est l’espace de
dimension d contenant les codes z = E(x).
2
Auto-encodeurs (récapitulatif, 2/2)
Fonction de coût
On cherche les poids θ du réseau de neurones H tels que :
θ∗ = arg min L(x, x)
ˆ = ∥D(E(x)) − x∥
θ
La fonction de coût de reconstruction dépend de la tâche (erreur
quadratique, absolue, entropie croisée…).
Optimisation
Apprentissage classique comme n’importe quel réseau de
neurones : algorithme de rétroprogation et descente de gradient
stochastique.
Le décodeur et l’encodeur sont appris conjointement (le gradient est
rétropropagé du décodeur vers l’encodeur).
3
Auto-encodeurs (récapitulatif, 2/2)
Fonction de coût
On cherche les poids θ du réseau de neurones H tels que :
θ∗ = arg min L(x, x)
ˆ = ∥D(E(x)) − x∥
θ
La fonction de coût de reconstruction dépend de la tâche (erreur
quadratique, absolue, entropie croisée…).
Optimisation
Apprentissage classique comme n’importe quel réseau de
neurones : algorithme de rétroprogation et descente de gradient
stochastique.
Le décodeur et l’encodeur sont appris conjointement (le gradient est
rétropropagé du décodeur vers l’encodeur).
3
Applications des auto-encodeurs : débruitage
Débruitage/restauration
Fonction de coût : ∥H(x̃) − x∥ où x̃ = x + ε une version bruitée de x
Diverses applications
• Compression de signaux avec pertes
• Réduction de dimension non-linéaire
4
Applications des auto-encodeurs : débruitage
Débruitage/restauration
Fonction de coût : ∥H(x̃) − x∥ où x̃ = x + ε une version bruitée de x
Diverses applications
• Compression de signaux avec pertes
• Réduction de dimension non-linéaire
4
Applications des auto-encodeurs : AE convolutif
Guo et al., Deep Clustering with Convolutional Autoencoders, ICONIP 2017
→ cf. séance de TP
5
L’auto-encodeur comme modèle génératif
Décoder = générer
Le décodeur D est un modèle génératif P(X|z).
1. Choisir au hasard un code latent z de dimension d
2. Décoder ce vecteur
Micro-quiz : à quoi peut-on s’attendre en pratique ?
1. Une observation synthétique mais plausible
2. Une reconstruction médiocre
Limites de cette approche
• Comment choisir z ? A priori on ne sait pas !
• Pas de régularité (= continuité) dans l’espace latent z
• d << n mais d reste grand en pratique
6
L’auto-encodeur comme modèle génératif
Décoder = générer
Le décodeur D est un modèle génératif P(X|z).
1. Choisir au hasard un code latent z de dimension d
2. Décoder ce vecteur
Micro-quiz : à quoi peut-on s’attendre en pratique ?
1. Une observation synthétique mais plausible
2. Une reconstruction médiocre
Limites de cette approche
• Comment choisir z ? A priori on ne sait pas !
• Pas de régularité (= continuité) dans l’espace latent z
• d << n mais d reste grand en pratique
6
L’auto-encodeur comme modèle génératif
Décoder = générer
Le décodeur D est un modèle génératif P(X|z).
1. Choisir au hasard un code latent z de dimension d
2. Décoder ce vecteur
Micro-quiz : à quoi peut-on s’attendre en pratique ?
1. Une observation synthétique mais plausible
2. Une reconstruction médiocre
Limites de cette approche
• Comment choisir z ? A priori on ne sait pas !
• Pas de régularité (= continuité) dans l’espace latent z
• d << n mais d reste grand en pratique
6
Principe du VAE
De l’auto-encodeur à l’auto-encodeur variationnel
Idée générale
une observation = une distribution
• une donnée x correspond à plusieurs z possibles,
• l’encodeur ne produit pas un code mais une distribution p(z|x).
En général, on choisira une distribution gaussienne dont les
paramètres (µx , σx ) sont prédits par l’encodeur.
Avantages
• L’espace latent est moins clairsemé
• Échantillonnage plus aisé pour un x donné
P
• p(z) plus facile à estimer : p(z) = xi ∈X p(z|xi )
7
De l’auto-encodeur à l’auto-encodeur variationnel
Idée générale
une observation = une distribution
• une donnée x correspond à plusieurs z possibles,
• l’encodeur ne produit pas un code mais une distribution p(z|x).
En général, on choisira une distribution gaussienne dont les
paramètres (µx , σx ) sont prédits par l’encodeur.
Avantages
• L’espace latent est moins clairsemé
• Échantillonnage plus aisé pour un x donné
P
• p(z) plus facile à estimer : p(z) = xi ∈X p(z|xi )
7
Schéma du VAE
Schéma général
échantillonnage
Encodeur Décodeur
VAE gaussien
8
Schéma du VAE
Schéma général
échantillonnage
Encodeur Décodeur
VAE gaussien
échantillonnage
Encodeur Décodeur
8
Générer des données
Récapitulons…
• L’encodeur produit une distribution pϕ (z|x)
• Typiquement, pϕ (z|x) = N (µx , σx )
• On échantillonne pϕ (z|x) pour trouver un (ou plusieurs) code z
• Le décodeur reconstruit x à partir de z
Échantillonnage lors de l’inférence
À l’inférence, comment choisir z ?
• Option 1 : échantillonner sur la loi a posteriori
∑ ∑
• p(z) = n1 ni=1 pϕ (z|x) = n1 ni=1 N (µxi , σxi )
• approximation mauvaise si peu de données, dimension de z grande,
etc.
• cher à calculer si beaucoup de données (n grand)
• Option 2 : forcer p(z) à suivre une loi a priori
9
Générer des données
Récapitulons…
• L’encodeur produit une distribution pϕ (z|x)
• Typiquement, pϕ (z|x) = N (µx , σx )
• On échantillonne pϕ (z|x) pour trouver un (ou plusieurs) code z
• Le décodeur reconstruit x à partir de z
Échantillonnage lors de l’inférence
À l’inférence, comment choisir z ?
• Option 1 : échantillonner sur la loi a posteriori
∑ ∑
• p(z) = n1 ni=1 pϕ (z|x) = n1 ni=1 N (µxi , σxi )
• approximation mauvaise si peu de données, dimension de z grande,
etc.
• cher à calculer si beaucoup de données (n grand)
• Option 2 : forcer p(z) à suivre une loi a priori
9
Générer des données
Récapitulons…
• L’encodeur produit une distribution pϕ (z|x)
• Typiquement, pϕ (z|x) = N (µx , σx )
• On échantillonne pϕ (z|x) pour trouver un (ou plusieurs) code z
• Le décodeur reconstruit x à partir de z
Échantillonnage lors de l’inférence
À l’inférence, comment choisir z ?
• Option 1 : échantillonner sur la loi a posteriori
∑ ∑
• p(z) = n1 ni=1 pϕ (z|x) = n1 ni=1 N (µxi , σxi )
• approximation mauvaise si peu de données, dimension de z grande,
etc.
• cher à calculer si beaucoup de données (n grand)
• Option 2 : forcer p(z) à suivre une loi a priori
9
Régularisation
La divergence de Kullback-Leibler
Mesure de dissimilarité entre deux distributions P(x) et Q(x)
P P(xi )
• DKL (P|Q) = i P(xi ) log Q(x i)
A priori gaussien dans les VAE
Objectif : on exige que p(z) suive approximativement la loi normale
∈ Rd
• on impose :
DKL ( qϕ (z|x) | p(z) ) ≤ ε
| {z } |{z}
approximation du postérieur par l’encodeur la loi a priori
• avec qϕ (z|x) = N (µx , σx )
• on choisit comme prior : p(z) = N (0, I)
10
Régularisation
La divergence de Kullback-Leibler
Mesure de dissimilarité entre deux distributions P(x) et Q(x)
P P(xi )
• DKL (P|Q) = i P(xi ) log Q(x i)
A priori gaussien dans les VAE
Objectif : on exige que p(z) suive approximativement la loi normale
∈ Rd
• on impose :
DKL ( qϕ (z|x) | p(z) ) ≤ ε
| {z } |{z}
approximation du postérieur par l’encodeur la loi a priori
• avec qϕ (z|x) = N (µx , σx )
• on choisit comme prior : p(z) = N (0, I)
10
Fonction de coût
Fonction de coût du VAE
L(θ, ϕ; x) = Eqϕ (z|x) [∥x̂ − x∥] + DKL (qϕ (z|x)|p(z))
• Reconstruction : « similarité » entre l’entrée et la sortie
• dépend du problème (MSE, MAE, BCE…)
• Régularisation : divergence-KL (contrainte de proximité au prior)
• Expression analytique dans le cas où tout est gaussien :
1
DKL (qϕ (z|x)|p(z)) = (tr(σx ) + µtx µx − d − log det(σx )
2
11
Inférence variationnelle
Théorie
Cadre formel
• D = {x1 , . . . , xn } un jeu de données i.i.d. issues d’un processus
génératif pD .
• On cherche le modèle génératif qui permet d’approcher pD .
• Soit z ∈ Z une variable latente qui suit une distribution a priori
pθ∗ (z), paramétrée par θ∗ .
• on suppose que xi s’obtient par la réalisation de pθ∗ (xi |zi )
• en pratique, on ne connaît ni θ∗ , ni les variables latentes zi
12
Trouver la distribution latente
Modèle génératif
On cherche θ qui maximise la
(log-)vraisemblance sur D :
θ̂ = arg max EpD [log pθ (x)]
θ
Problèmes
• pθ (x) est difficile à calculer…
Z
pθ (x) = pθ (z)pθ (x|z)dz
• pθ (z|x) est inconnu…
• Z est trop grand pour
échantillonner efficacement
13
Trouver la distribution latente
Modèle génératif
On cherche θ qui maximise la
(log-)vraisemblance sur D :
θ̂ = arg max EpD [log pθ (x)]
θ
Problèmes
• pθ (x) est difficile à calculer…
Z
pθ (x) = pθ (z)pθ (x|z)dz
• pθ (z|x) est inconnu…
• Z est trop grand pour
échantillonner efficacement
13
Trouver la distribution latente
Modèle génératif
On cherche θ qui maximise la
(log-)vraisemblance sur D :
θ̂ = arg max EpD [log pθ (x)]
θ
Problèmes
• pθ (x) est difficile à calculer…
Z
pθ (x) = pθ (z)pθ (x|z)dz
• pθ (z|x) est inconnu…
• Z est trop grand pour
échantillonner efficacement
13
Approximation du postérieur
Comment choisir qϕ (z|x) ?
On cherche à être proche du véritable postérieur pθ (z|x) :
ϕ̂ = arg min KL(qϕ (z|x)|pθ (z|x))
ϕ
On peut montrer que :
KL(qϕ (z|x)|pθ (z|x)) = −Eqϕ (z|x) [log pθ (x|z)] − KL(qϕ (z|x)|pθ (z)) + log pθ (x)
= −L(θ, ϕ; x) + log pθ (x)
Minimiser la divergence KL revient à maximiser L.
14
ELBO
Définition
ELBO (evidence lower-bound) est définie par :
L(θ, ϕ; x) = Eqϕ (z|x) [log pθ (x|z)] − KL (qϕ (z|x) || pθ (z))
Minimiser la divergence KL revient à maximiser l’ELBO.
Fonction objectif de l’inférence variationnelle
• On cherche θ qui vérifie θ̂ = arg maxθ EpD [log pθ (x)]
• Or, log pθ (x) = KL (qϕ (z|x)|pθ (z|x)) + L(θ, ϕ; x)
• Comme la divergence KL est positive, il vient :
log pθ (x) ≥ L(θ, ϕ; x)
Maximiser l’ELBO revient donc à maximiser la vraisemblance.
15
ELBO
Définition
ELBO (evidence lower-bound) est définie par :
L(θ, ϕ; x) = Eqϕ (z|x) [log pθ (x|z)] − KL (qϕ (z|x) || pθ (z))
Minimiser la divergence KL revient à maximiser l’ELBO.
Fonction objectif de l’inférence variationnelle
• On cherche θ qui vérifie θ̂ = arg maxθ EpD [log pθ (x)]
• Or, log pθ (x) = KL (qϕ (z|x)|pθ (z|x)) + L(θ, ϕ; x)
• Comme la divergence KL est positive, il vient :
log pθ (x) ≥ L(θ, ϕ; x)
Maximiser l’ELBO revient donc à maximiser la vraisemblance.
15
Lien avec les VAE
L(θ, ϕ; x) = Eqϕ (z|x) [log pθ (x|z)] − KL (qϕ (z|x) || pθ (z))
| {z } | {z }
Espérance de la vraisemblance Écart au prior
Quelles fonctions choisir comme postérieur et prior ?
• Un choix naturel pour qϕ (z|x) : une gaussienne N (µ, σ)
• ses paramètres dépendent de x
• Un choix naturel pour pθ (z) : la loi normale N (0, I)
• structure simple et facile à échantillonner
Vraisemblance
Dans notre cas, en notant f le décodeur :
arg max Eqϕ (z|x) [log p(x|z)] = arg min Eqϕ (z|x) ∥x − f(z)∥
16
Optimisation des VAE
Entraînement en pratique par descente de gradient
Schéma du VAE
échantillonnage
Encodeur Décodeur
1. Création d’un batch {xi }
2. Passage dans l’encodeur
• Calcul de µxi , σxi pour chaque i
3. Échantillonnage de zi ∼ N (µxi , σxi ) ← non dérivable !
4. Passage dans le décodeur
• Calcul de xˆi
5. Calcul de la fonction de coût
6. Calcul du gradient, rétropropagation
17
Entraînement en pratique par descente de gradient
Schéma du VAE
échantillonnage
Encodeur Décodeur
1. Création d’un batch {xi }
2. Passage dans l’encodeur
• Calcul de µxi , σxi pour chaque i
3. Échantillonnage de zi ∼ N (µxi , σxi ) ← non dérivable !
4. Passage dans le décodeur
• Calcul de xˆi
5. Calcul de la fonction de coût
6. Calcul du gradient, rétropropagation
17
Entraînement en pratique par descente de gradient
Schéma du VAE
échantillonnage
Encodeur Décodeur
1. Création d’un batch {xi }
2. Passage dans l’encodeur
• Calcul de µxi , σxi pour chaque i
3. Échantillonnage de zi ∼ N (µxi , σxi ) ← non dérivable !
4. Passage dans le décodeur
• Calcul de xˆi
5. Calcul de la fonction de coût
6. Calcul du gradient, rétropropagation
17
Entraînement en pratique par descente de gradient
Schéma du VAE
échantillonnage
Encodeur Décodeur
1. Création d’un batch {xi }
2. Passage dans l’encodeur
• Calcul de µxi , σxi pour chaque i
3. Échantillonnage de zi ∼ N (µxi , σxi ) ← non dérivable !
4. Passage dans le décodeur
• Calcul de xˆi
5. Calcul de la fonction de coût
6. Calcul du gradient, rétropropagation
17
Entraînement en pratique par descente de gradient
Schéma du VAE
échantillonnage
Encodeur Décodeur
1. Création d’un batch {xi }
2. Passage dans l’encodeur
• Calcul de µxi , σxi pour chaque i
3. Échantillonnage de zi ∼ N (µxi , σxi ) ← non dérivable !
4. Passage dans le décodeur
• Calcul de xˆi
5. Calcul de la fonction de coût
6. Calcul du gradient, rétropropagation
17
Entraînement en pratique par descente de gradient
Schéma du VAE
échantillonnage
Encodeur Décodeur
1. Création d’un batch {xi }
2. Passage dans l’encodeur
• Calcul de µxi , σxi pour chaque i
3. Échantillonnage de zi ∼ N (µxi , σxi ) ← non dérivable !
4. Passage dans le décodeur
• Calcul de xˆi
5. Calcul de la fonction de coût
6. Calcul du gradient, rétropropagation
17
Entraînement en pratique par descente de gradient
Schéma du VAE
échantillonnage
Encodeur Décodeur
1. Création d’un batch {xi }
2. Passage dans l’encodeur
• Calcul de µxi , σxi pour chaque i
3. Échantillonnage de zi ∼ N (µxi , σxi ) ← non dérivable !
4. Passage dans le décodeur
• Calcul de xˆi
5. Calcul de la fonction de coût
6. Calcul du gradient, rétropropagation
17
Entraînement en pratique par descente de gradient
Schéma du VAE
échantillonnage
Encodeur Décodeur
1. Création d’un batch {xi }
2. Passage dans l’encodeur
• Calcul de µxi , σxi pour chaque i
3. Échantillonnage de zi ∼ N (µxi , σxi ) ← non dérivable !
4. Passage dans le décodeur
• Calcul de xˆi
5. Calcul de la fonction de coût
6. Calcul du gradient, rétropropagation
17
Entraînement en pratique par descente de gradient
Schéma du VAE
échantillonnage
Encodeur Décodeur
1. Création d’un batch {xi }
2. Passage dans l’encodeur
• Calcul de µxi , σxi pour chaque i
3. Échantillonnage de zi ∼ N (µxi , σxi ) ← non dérivable !
4. Passage dans le décodeur
• Calcul de xˆi
5. Calcul de la fonction de coût
6. Calcul du gradient, rétropropagation
17
Reparametrization trick
Astuce
Ne pas échantillonner z directement en réécrivant : z = µ + σ ⊙ ε
avec ε un bruit gaussien aléatoire ∼ N (0, I).
18
β-VAE
L(θ, ϕ; x) = Eqϕ (z|x) ∥x̂ − x∥ +β · KL (qϕ (z|x) || pθ (z))
| {z } | {z }
Erreur de reconstruction Écart au prior
β contrôle le dilemme reconstruction/structure de l’espace latent :
• β = 1 : VAE classique,
• β > 1 : encodage plus efficace et plus proche du prior mais
reconstruction moins bonne,
• β < 1 : meilleure reconstruction mais espace latent moins bien
structuré.
19