Comment fonctionne l'astuce de reparamétrage pour les VAE et pourquoi est-ce important?


57

Comment fonctionne l' astuce de reparamétrage pour les autoencodeurs variationnels (VAE)? Existe-t-il une explication simple et intuitive sans simplifier les calculs sous-jacents? Et pourquoi avons-nous besoin du "truc"?


5
Une partie de la réponse consiste à remarquer que toutes les distributions Normal ne sont que des versions mises à l'échelle et traduites de Normal (1, 0). Pour dessiner à partir de Normal (mu, sigma), vous pouvez dessiner à partir de Normal (1, 0), multiplier par sigma (échelle) et ajouter mu (traduire).
moine

@monk: cela aurait dû être Normal (0,1) au lieu de (1,0) juste sinon la multiplication et le décalage seraient complètement des fils de foin!
Rika

@Breeze Ha! Oui, bien sûr, merci.
Moine

Réponses:


57

Après avoir lu les diapositives de l'atelier de Kingma sur les NIPS 2015 , je me suis rendu compte que nous avions besoin de l'astuce de reparamétrage pour pouvoir effectuer une rétro-propagation via un nœud aléatoire.

Intuitivement, sous sa forme initiale, l' échantillon Vaes à partir d' un noeud aléatoire qui est évaluée par le modèle paramétrique q ( z | & phiv , x ) de la vraie postérieure. Backprop ne peut pas circuler à travers un nœud aléatoire.zq(zϕ,x)

L'introduction d'un nouveau paramètre nous permet de reparamétrer z de manière à permettre à backprop de circuler à travers les nœuds déterministes.ϵz

forme originale et reparamétrée


3
Pourquoi est-il déterministe maintenant à droite? z
bringingdownthegauss

2
Ce n'est pas, mais ce n'est pas une « source de hasard » - ce rôle a été repris par . ϵ
quant_dev

Notez que cette méthode a été proposée plusieurs fois avant 2014: blog.shakirm.com/2015/2015/…
quant_dev

2
Si simple, si intuitif! Très bonne réponse!
Serhiy

2
Malheureusement, ce n'est pas le cas. La forme originale peut toujours être rétropactable avec une variance plus élevée. Les détails peuvent être trouvés de mon post .
JP Zhang

56

Supposons que nous ayons une distribution normale paramétrée par θ , en particulier q θ ( x ) = N ( θ , 1 ) . Nous voulons résoudre le problème ci-dessous min θqθqθ(x)=N(θ,1) Ceci est bien sûr un problème plutôt idiot et le θ optimalest évident. Cependant, ici, nous voulons simplement comprendre en quoi l’astuce de reparamétrage aide à calculer le gradient de cet objectif E q [ x 2 ] .

minθEq[x2]
θEq[x2]

θEq[x2]

θEq[x2]=θqθ(x)x2dx=x2θqθ(x)qθ(x)qθ(x)dx=qθ(x)θlogqθ(x)x2dx=Eq[x2θlogqθ(x)]

qθ(x)=N(θ,1)

θEq[x2]=Eq[x2(xθ)]

θqθx

x=θ+ϵ,ϵN(0,1)
Eq[x2]=Ep[(θ+ϵ)2]
pϵN(0,1)Eq[x2]
θEq[x2]=θEp[(θ+ϵ)2]=Ep[2(θ+ϵ)]

Voici un cahier IPython que j’ai écrit et qui examine la variance de ces deux méthodes de calcul des gradients. http://nbviewer.jupyter.org/github/gokererdogan/Notebooks/blob/master/Reparameterization%20Trick.ipynb


4
Quelle est la thêta "évidente" de la première équation?
gwg

2
c'est 0. une façon de voir cela est de noter que E [x ^ 2] = E [x] ^ 2 + Var (x), qui est thêta ^ 2 + 1 dans ce cas. Donc, thêta = 0 minimise cet objectif.
Goker

Donc, ça dépend complètement du problème? Pour dire min_ \ theta E_q [| x | ^ (1/4)] cela pourrait être complètement différent?
Anne van Rossum

Qu'est-ce qui dépend du problème? La thêta optimale? Si oui, cela dépend certainement du problème.
Goker

θEq[x2]=Eq[x2(xθ)qθ(x)]θEq[x2]=Eq[x2(xθ)]

17

La réponse de Goker donne un exemple raisonnable des mathématiques de "l'astuce de reparamétrage", mais une certaine motivation pourrait être utile. (Je n'ai pas l'autorisation de commenter cette réponse; voici donc une réponse séparée.)

Gθ

Gθ=θExqθ[]

Exqθ[Gθest(x)]

Gθest(x)=1qθ(x)θqθ(x)=θlog(qθ(x))

xqθGθestGθθ

GθestGθ

Gθxxqθ(x)1qθ(x)xGθqθGθestxqθθ, qui peut être loin de l’optimum (par exemple, une valeur initiale choisie arbitrairement). Cela ressemble un peu à l’histoire de la personne ivre qui cherche ses clés près du réverbère (car c’est là où il peut voir / échantillonner) plutôt que près de là où il les a laissées.

xϵpθGθp

Gθ=θEϵp[J(θ,ϵ)]=Eϵp[θJ(θ,ϵ)]
J(θ,ϵ)

θJ(θ,ϵ)pϵpθp

θJ(θ,ϵ)GθGθϵppϵJ

J'espère que ça aide.


"Le facteur 1 / qθ (x) augmente votre estimation pour tenir compte de cela, mais si vous ne voyez jamais une telle valeur de x, cette mise à l'échelle ne vous aidera pas." Pouvez-vous expliquer plus?
czxttkl

qθxxGθest(x)1/qθ

10

Permettez-moi d’abord d’expliquer pourquoi nous avons besoin d’une astuce de reparamétrage dans VAE.

VAE a encodeur et décodeur. Le décodeur prélève des échantillons au hasard à partir de Z ~ q (z∣ϕ, x) postérieur vrai . Pour implémenter un codeur et un décodeur en tant que réseau de neurones, vous devez effectuer une backpropagation via un échantillonnage aléatoire. Le problème est que backpropogation ne peut pas circuler à travers un nœud aléatoire. pour surmonter cet obstacle, nous utilisons la technique du reparamétrage.

Maintenant, venons à tromper. Puisque notre postérieur est normalement distribué, nous pouvons l'approcher d'une autre distribution normale. Nous approximons Z avec ε normalement distribué .

entrez la description de l'image ici

Mais comment est-ce pertinent?

Maintenant, au lieu de dire que Z est échantillonné à partir de q (z∣ϕ, x) , nous pouvons dire que Z est une fonction qui prend un paramètre (ε, (µ, L)) et que ces µ, L proviennent du réseau neuronal supérieur (codeur). . Par conséquent, tout ce dont nous avons besoin est des dérivées partielles par rapport à µ, L et ε ne sont pas pertinentes pour la prise de dérivés.

entrez la description de l'image ici


Meilleure vidéo pour comprendre ce concept. Je recommanderais de regarder la vidéo complète pour une meilleure compréhension, mais si vous voulez comprendre uniquement le truc du reparamétrage, regardez à partir de 8 minutes. youtube.com/channel/UCNIkB2IeJ-6AmZv7bQ1oBYg
Sherlock

9

Je pensais que l’explication trouvée dans le cours Stanford CS228 sur les modèles graphiques probabilistes était très bonne. Vous pouvez le trouver ici: https://ermongroup.github.io/cs228-notes/extras/vae/

J'ai résumé / copié les parties importantes ici pour plus de commodité / ma propre compréhension (bien que je recommande fortement de vérifier le lien d'origine).

ϕEzq(z|x)[f(x,z)]

Si vous connaissez les estimateurs de fonction de score (je crois que REINFORCE n'en est qu'un cas particulier), vous remarquerez que c'est en gros le problème qu'ils résolvent. Cependant, l'estimateur de la fonction de score présente une variance élevée, ce qui entraîne souvent des difficultés pour l'apprentissage des modèles.

qϕ(z|x)

ϵp(ϵ)gϕ(ϵ,x)qϕ

Par exemple, utilisons un q très simple à partir duquel nous échantillonnons.

zqμ,σ=N(μ,σ)
q
z=gμ,σ(ϵ)=μ+ϵσ
ϵN(0,1)

p(ϵ)

ϕEzq(z|x)[f(x,z)]=Eϵp(ϵ)[ϕf(x,g(ϵ,x))]

Cela a moins de variance, pour des raisons non triviales. Voir la partie D de l'annexe ici pour une explication: https://arxiv.org/pdf/1401.4082.pdf


Bonjour, savez-vous pourquoi, dans la mise en œuvre, ils divisent la norme par 2? (ie std = torch.exp (z_var / 2)) dans le reparamétrage?
Rika le

4

Nous avons notre modèle probabiliste. Et voulez récupérer les paramètres du modèle. Nous réduisons notre tâche à l'optimisation de la variation inférieure (VLB). Pour ce faire, nous devrions pouvoir faire deux choses:

  • calculer VLB
  • obtenir un gradient de VLB

Les auteurs suggèrent d'utiliser l'estimateur de Monte Carlo pour les deux. Et en fait, ils introduisent cette astuce pour obtenir un estimateur de gradient de Monte Carlo de VLB plus précis.

C'est juste une amélioration de la méthode numérique.


2

L'astuce de reparamétrage réduit considérablement la variance de l'estimateur MC pour le gradient. C'est donc une technique de réduction de la variance :

ϕEq(z(i)x(i);ϕ)[logp(x(i)z(i),w)]

ϕEq(z(i)x(i);ϕ)[logp(x(i)z(i),w)]=Eq(z(i)x(i);ϕ)[logp(x(i)z(i),w)ϕlogqϕ(z)]
p(x(i)z(i),w)logp(x(i)z(i),w)est très grand et la valeur elle-même est négative. Nous aurions donc une grande variance.

z(i)=g(ϵ(i),x(i),ϕ)

ϕEq(z(i)x(i);ϕ)[logp(x(i)z(i),w)]=Ep(ϵ(i))[ϕlogp(x(i)g(ϵ(i),x(i),ϕ),w)]

p(ϵ(i))p(ϵ(i))ϕ

z(i)z(i)=g(ϵ(i),x(i),ϕ)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.