Wie funktioniert der Umparametrierungstrick für VAEs und warum ist das wichtig?


57

Wie funktioniert der Umparametrierungstrick für Variations-Autoencoder (VAE)? Gibt es eine intuitive und einfache Erklärung, ohne die zugrunde liegende Mathematik zu vereinfachen? Und warum brauchen wir den "Trick"?


5
Ein Teil der Antwort ist zu bemerken, dass alle Normal-Distributionen nur skalierte und übersetzte Versionen von Normal (1, 0) sind. Um aus Normal (mu, sigma) zu zeichnen, können Sie aus Normal (1, 0) zeichnen, mit Sigma (Skala) multiplizieren und mu (Übersetzen) hinzufügen.
Mönch

@monk: Es hätte normal (0,1) statt (1,0) richtig sein sollen, sonst würde das Multiplizieren und Verschieben komplett Heudraht gehen!
Rika,

@Breeze Ha! Ja, natürlich danke.
Mönch

Antworten:


57

Nachdem ich die NIPS 2015-Workshop-Folien von Kingma gelesen hatte , wurde mir klar, dass wir den Umparametrierungstrick benötigen, um eine Rückübertragung durch einen zufälligen Knoten durchzuführen.

Intuitiv in seiner ursprünglichen Form, VAES Probe aus einem zufälligen Knoten , die durch das parametrische Modell angenähert wird q ( z | & phiv; , x ) der wahren posterior. Backprop kann nicht durch einen zufälligen Knoten fließen.zq(zϕ,x)

Durch die Einführung eines neuen Parameters können wir z so neu parametrisieren , dass Backprop durch die deterministischen Knoten fließt.ϵz

originale und umparametrierte Form


3
Warum ist jetzt rechts deterministisch? z
bringingdownthegauss

2
Es ist nicht, aber es ist keine "Quelle der Zufälligkeit" - diese Rolle wurde von . ϵ
quant_dev

Beachten Sie, dass diese Methode vor 2014 mehrmals vorgeschlagen wurde: blog.shakirm.com/2015/10/…
quant_dev

2
So einfach, so intuitiv! Gute Antwort!
Serhiy

2
Leider ist es nicht. Die ursprüngliche Form kann jedoch mit höherer Varianz immer noch rückpropagierbar sein. Details finden Sie in meinem Beitrag .
JP Zhang

56

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

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(θ+ϵ)]

Hier ist ein von mir geschriebenes IPython-Notizbuch, das die Varianz dieser beiden Methoden zur Berechnung von Verläufen untersucht. http://nbviewer.jupyter.org/github/gokererdogan/Notebooks/blob/master/Reparameterization%20Trick.ipynb


4
Was ist das "offensichtliche" Theta für die erste Gleichung?
GWG

2
es ist 0. Eine Möglichkeit, dies zu sehen, besteht darin, zu beachten, dass E [x ^ 2] = E [x] ^ 2 + Var (x), was in diesem Fall Theta ^ 2 + 1 ist. Theta = 0 minimiert also dieses Ziel.
goker

Kommt es also ganz auf das Problem an? Zum Beispiel kann min_ \ theta E_q [| x | ^ (1/4)] völlig anders sein?
Anne van Rossum

Was hängt vom Problem ab? Das optimale Theta? Wenn ja, hängt es sicherlich vom Problem ab.
goker

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

17

Ein vernünftiges Beispiel für die Mathematik des "Tricks der Neuparametrisierung" ist in der Antwort von Goker angegeben, aber eine gewisse Motivation könnte hilfreich sein. (Ich habe keine Berechtigung, diese Antwort zu kommentieren. Daher hier eine separate Antwort.)

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θθDies kann weit vom Optimum entfernt sein (z. B. ein willkürlich gewählter Anfangswert). Es ist ein bisschen wie die Geschichte des Betrunkenen, der in der Nähe der Straßenlaterne nach seinen Schlüsseln sucht (weil er sie dort sehen / probieren kann), anstatt in der Nähe, wo er sie fallen lässt.

xϵpθGθp

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

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

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

Ich hoffe das hilft.


"Der Faktor 1 / qθ (x) erhöht Ihre Schätzung, um dies zu berücksichtigen. Wenn Sie jedoch nie einen solchen Wert von x sehen, hilft diese Skalierung nicht." Kannst du mehr erklären?
czxttkl

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

10

Lassen Sie mich zunächst erklären, warum wir in VAE einen Umparametrierungstrick benötigen.

VAE verfügt über Encoder und Decoder. Der Decoder tastet nach dem Zufallsprinzip das wahre hintere Z ~ q (z∣ϕ, x) ab . Um Codierer und Decodierer als ein neuronales Netzwerk zu implementieren, müssen Sie durch zufällige Stichproben eine Rückübertragung durchführen, und das ist das Problem, da die Rückübertragung nicht durch zufällige Knoten fließen kann. Um dieses Hindernis zu überwinden, verwenden wir einen Umparametrierungstrick.

Nun kommen wir zum Trick. Da unser posterior normalverteilt ist, können wir es mit einer anderen Normalverteilung approximieren. Wir approximieren Z mit normalverteiltem ε .

Bildbeschreibung hier eingeben

Aber wie ist das relevant?

Anstatt nun zu sagen, dass Z aus q (z∣ϕ, x) abgetastet wird , können wir sagen, dass Z eine Funktion ist, die Parameter (ε, (µ, L)) übernimmt und diese µ, L aus dem oberen neuronalen Netzwerk (Encoder) stammen. . Während die Rückübertragung alles ist, was wir brauchen, ist die partielle Ableitung von µ, L und ε für die Ableitung irrelevant.

Bildbeschreibung hier eingeben


Bestes Video, um dieses Konzept zu verstehen. Zum besseren Verständnis würde ich empfehlen, ein komplettes Video anzuschauen, aber wenn Sie nur den Umparametrierungstrick verstehen möchten, schauen Sie es ab 8 Minuten an. youtube.com/channel/UCNIkB2IeJ-6AmZv7bQ1oBYg
Sherlock

9

Ich fand die Erklärung im Stanford CS228-Kurs über probabilistische Grafikmodelle sehr gut. Es kann hier gefunden werden: https://ermongroup.github.io/cs228-notes/extras/vae/

Ich habe die wichtigen Teile hier aus Gründen der Übersichtlichkeit zusammengefasst / kopiert (obwohl ich dringend empfehle, nur den Original-Link zu lesen).

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

Wenn Sie mit Bewertungsfunktionen vertraut sind (ich glaube, REINFORCE ist nur ein Sonderfall davon), werden Sie feststellen, dass dies so ziemlich das Problem ist, das sie lösen. Der Bewertungsfunktionsschätzer weist jedoch eine hohe Varianz auf, was häufig zu Schwierigkeiten beim Lernen von Modellen führt.

qϕ(z|x)

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

Als Beispiel verwenden wir ein sehr einfaches q, aus dem wir ein Sample erstellen.

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

p(ϵ)

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

Dies hat aus imo nicht trivialen Gründen eine geringere Varianz. In Teil D des Anhangs finden Sie eine Erklärung: https://arxiv.org/pdf/1401.4082.pdf


Hallo, weißt du, warum in der Implementierung sie den Standard durch 2 teilen? (dh std = torch.exp (z_var / 2)) in der Umparametrierung?
Rika

4

Wir haben unser probablistisches Modell. Und möchten Parameter des Modells wiederherstellen. Wir reduzieren unsere Aufgabe auf die Optimierung der unteren Variationsgrenze (VLB). Dazu sollten wir zwei Dinge machen können:

  • VLB berechnen
  • Gradient von VLB erhalten

Autoren schlagen vor, Monte Carlo Estimator für beide zu verwenden. Und tatsächlich führen sie diesen Trick ein, um einen genaueren Monte-Carlo-Gradientenschätzer für VLB zu erhalten.

Es ist nur eine Verbesserung der numerischen Methode.


2

Der Umparametrierungstrick reduziert die Varianz des MC-Schätzers für den Gradienten dramatisch. Es ist also eine Varianzreduktionstechnik :

ϕ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)ist sehr groß und der Wert selbst ist negativ. Wir hätten also eine hohe Varianz.

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),ϕ)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.