VAE的重新参数化技巧如何起作用,为什么它很重要?


57

可变自动编码器(VAE)的重新参数化技巧如何起作用?在不简化基础数学的情况下,是否存在直观而简单的解释?为什么我们需要“把戏”?


5
答案的一部分是注意到,所有正态分布都只是正态(1,0)的缩放和转换版本。要从Normal(mu,sigma)绘制,可以从Normal(1,0)绘制,乘以sigma(比例),然后添加mu(平移)。
和尚

@monk:应该是Normal(0,1)而不是(1,0)对,否则乘法和移位会完全麻烦!
丽卡

@微风哈!是的,当然,谢谢。
和尚

Answers:


57

阅读了Kingma的NIPS 2015研讨会幻灯片后,我意识到我们需要重新参数化技巧才能通过随机节点反向传播。

直观地说,在其原始形式,从随机节点VAES样品其由所述参数模型近似q Ž | φ X 真实的后验的。Backprop无法流经随机节点。zq(zϕ,x)

引入新参数使我们能够以允许反向传递流过确定性节点的方式重新参数化zϵz

原始和重新参数化的表格


3
为什么确定性现在在右边?z
降低

2
这不是,但它不是一个“随机源” -这个角色已经接管了ϵ
–quant_dev

注意,此方法已经提出多次,在2014年之前:blog.shakirm.com/2015/10/...
quant_dev

2
如此简单,如此直观!好答案!
Serhiy

2
不幸的是,事实并非如此。原始形式仍然可以向后传播,但差异较大。细节可以从我的帖子中找到。
JP张军

56

假设我们有一个正态分布由参数θ,特别是q θX = Ñ θ 1 。我们要解决以下问题 最小θqθqθ(x)=N(θ,1) 这当然是一个很愚蠢的问题,并且最佳 θ很明显。但是,这里我们只想了解重新参数化技巧如何帮助计算此目标 E q [ x 2 ]的梯度。

minθEq[x2]
θEq[x2]

计算单程如下 ▿ θ é q [ X 2 ] = ▿ θq θX X 2 d X = X 2 ▿ θ q θX q θX θ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 2 ] = ë q [ X 2X - θ ]qθ(x)=N(θ,1)

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

重新参数化技巧是一种重写期望的方法,以使我们采用梯度的分布与参数无关。为此,我们需要使q中的随机元素与θ无关。因此,我们将x写成 x = θ + ϵ θqθx 然后,我们可以写 Ë q [ X 2 ] = È p [ θ + ε 2 ] ,其中 p是分布 ε,即 Ñ 0 1 。现在,我们可以写出的衍生物 ë q [ X 2 ]如下 ▿ θ é q [ X 2 ] =

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

这是我写的一个IPython笔记本,着眼于这两种计算梯度的方差。 http://nbviewer.jupyter.org/github/gokererdogan/Notebooks/blob/master/Reparameterization%20Trick.ipynb


4
第一个方程的“明显”θ是多少?
gwg

2
它是0。一种查看方式是注意E [x ^ 2] = E [x] ^ 2 + Var(x),在这种情况下为theta ^ 2 + 1。因此,theta = 0使该目标最小化。
戈克

那么,这完全取决于问题吗?例如说min_ \ theta E_q [| x | ^(1/4)]可能会完全不同?
安妮·范·罗苏姆

什么取决于问题?最佳θ?如果是这样,是的,这当然取决于问题。
Goker

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

17

在goker的答案中给出了“重新参数化把戏”数学的一个合理例子,但是一些动机可能会有所帮助。(我无权对此答案发表评论;因此这是一个单独的答案。)

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θθ,可能远非最佳值(例如,任意选择的初始值)。这有点像醉酒的人的故事,他在路灯附近(因为他可以看到/取样)而不是在他放下钥匙的地方寻找他的钥匙。

xϵpθGθp

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

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

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

希望对您有所帮助。


“ 1 /qθ(x)的因数是按比例增加您的估计值,以解决此问题,但是,如果您从未看到过这样的x值,则按比例缩放将无济于事。” 你能解释更多吗?
czxttkl

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

10

首先让我解释一下,为什么在VAE中需要重新参数化技巧。

VAE具有编码器和解码器。解码器从真实后验Z〜q(z∣ϕ,x)中随机采样。要将编码器和解码器实现为神经网络,您需要通过随机采样进行反向传播,这就是问题所在,因为反向传播无法流经随机节点。为了克服这一障碍,我们使用了重新参数化技巧。

现在开始欺骗。因为我们的后验是正态分布的,所以我们可以用另一个正态分布来近似它。我们近似ž与正态分布ε

在此处输入图片说明

但这有什么关系呢?

现在,不用说Z是从q(z∣ϕ,x)采样而来的,我们可以说Z是一个接受参数(ε,(µ,L))的函数,而这些µ,L来自上层神经网络(编码器) 。因此,当反向传播时,我们所需要的只是μ,Lε的偏导数与取导数无关。

在此处输入图片说明


了解该概念的最佳视频。我建议观看完整的视频以更好地理解,但是如果您仅想了解重新参数化技巧,则请从8分钟开始观看。 youtube.com/channel/UCNIkB2IeJ-6AmZv7bQ1oBYg
Sherlock

9

我认为斯坦福CS228课程中关于概率图形模型的解释非常好。可以在这里找到:https : //ermongroup.github.io/cs228-notes/extras/vae/

为了方便/我自己理解,我在这里总结/复制了重要部分(尽管我强烈建议您查看原始链接)。

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

如果您熟悉得分函数估计器(我相信REINFORCE只是其中的特例),您会注意到这几乎是他们解决的问题。但是,得分函数估计器具有较高的方差,从而导致在很多时候学习模型时遇到困难。

qϕ(z|x)

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

例如,让我们使用一个非常简单的q作为样本。

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

p(ϵ)

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

由于重要的原因,这具有较低的方差。在此处查看附录D部分以获取解释:https : //arxiv.org/pdf/1401.4082.pdf


嗨,您知道吗,为什么在实现中将std除以2?(即std = torch.exp(z_var / 2))在重新参数化?
丽卡

4

我们有概率模型。并想恢复模型的参数。我们减少了优化可变下限(VLB)的任务。为此,我们应该能够做两件事:

  • 计算VLB
  • 得到VLB的梯度

作者建议同时使用Monte Carlo估计器。实际上,他们引入了这一技巧,以获得更精确的VLB蒙特卡洛梯度估计器。

这只是数值方法的改进。


2

重新参数化技巧大大降低了梯度的MC估计量的方差。因此,这是一种方差减少技术:

ϕ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)很大,并且值本身为负。所以我们会有很大的差异。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.