变分自编码器ELBO的求解---随机梯度变分估计(SGVB)

变分自编码(VAE)一文中我们已经求解了VAE的ELBO,这里再进一步分析求解ELBO的方法,也就是SGVB估计。

两种形式的ELBO

变分自编码器的ELBO其实有两种形式:
第一种是:
ELBO=Eqφ(zx)[logpθ(x,z)qφ(zx)]=Eqφ(zx)[logpθ(z)pθ(xz)qφ(zx)]=Eqφ(zx)[logpθ(xz)]KL[qφ(zx)pθ(z)](1) \tag{1} \begin{aligned} ELBO = & E_{q_{\varphi}(z|x)}[log{p_{\theta}(x, z) \over q_{\varphi}(z|x) }] \\ = & E_{q_{\varphi}(z|x)}[log{p_{\theta}(z)p_{\theta}(x|z) \over q_{\varphi}(z|x)}] \\ = & E_{q_{\varphi}(z|x)}[logp_{\theta}(x|z)] - KL[q_{\varphi}(z|x)||p_{\theta}(z)] \end{aligned}
第二种是:
ELBO=Eqφ(zx)[logpθ(x,z)qφ(zx)]=Eqφ(zx)[logpθ(x,z)qφ(zx)]=Eqφ(zx)[logpθ(x,z)]+Hqφ(zx)(z),Hqφ(zx)(z)=zqφ(zx)logqφ(zx)dz(2) \tag{2} \begin{aligned} ELBO = & E_{q_{\varphi}(z|x)}[log{p_{\theta}(x, z) \over q_{\varphi}(z|x) }] \\ = & E_{q_{\varphi}(z|x)}[log{p_{\theta}(x,z) \over q_{\varphi}(z|x)}] \\ = & E_{q_{\varphi}(z|x)}[logp_{\theta}(x,z)] + H_{q_{\varphi}(z|x)}(z) \\ 其中,H_{q_{\varphi}(z|x)}(z) = & \int_{z}-q_{\varphi}(z|x)logq_{\varphi}(z|x)dz \end{aligned}

SGVB估计求解ELBO

先求解(1)式,先考虑(1)式中的第一项,第一项式期望的形式,期望可以通过蒙特卡洛估计来求解,不懂的可以看这篇博客蒙特卡洛估计

qφ(zx)q_{\varphi}(z|x)中依据z的概率分布采样L个点,即
Eqφ(zx)[logpθ(xz)]1Ll=1Llogpθ(xz(l))(3)\tag{3}E_{q_{\varphi}(z|x)}[logp_{\theta}(x|z)] \approx {1 \over L}\sum_{l =1}^{L}logp_{\theta}(x|z^{(l)})
这样通过采样貌似可以,但是我们还要通过采样来反向梯度优化φ\varphi,这样采样之后Eqφ(zx)[logpθ(xz)]E_{q_{\varphi}(z|x)}[logp_{\theta}(x|z)]就与φ\varphi无关了,因此这个操作是不可导的,就需要重参数化技巧来使采样操作可导。我们假设z(l)=gφ(x,ε(l))ε(l)p(ε)z^{(l)} = g_{\varphi}(x, \varepsilon^{(l)}),\varepsilon^{(l)} \sim p(\varepsilon),其中p(ε)gφp(\varepsilon)和g_{\varphi}都是形式已知的。这样(3)式对φ\varphi就可导了,因为gφg_{\varphi}中含有参数φ\varphi
(3)式就变成了:
Eqφ(zx)[logpθ(xz)]1Ll=1Llogpθ(xgφ(x,ε(l)))ε(l)p(ε)(4) \tag{4} E_{q_{\varphi}(z|x)}[logp_{\theta}(x|z)] \approx {1 \over L}\sum_{l =1}^{L}logp_{\theta}(x|g_{\varphi}(x,\varepsilon^{(l)})) \\ \varepsilon^{(l)} \sim p(\varepsilon)
(4)式就是用SGVB估计得到的。
所以(1)式可进一步写成
L(φ,θ,x)=1Ll=1Llogpθ(xz(l))KL(qφ(zx)pθ(z))=1Ll=1Llogpθ(xgφ(x,ε(l)))KL(qφ(zx)pθ(z))(5)\tag{5} \begin{aligned} L(\varphi,\theta,x) = & {1 \over L}\sum_{l =1}^{L}logp_{\theta}(x|z^{(l)}) - KL(q_{\varphi}(z|x)||p_{\theta}(z)) \\ = & {1 \over L}\sum_{l=1}^{L}logp_{\theta}(x|g_{\varphi}(x, \varepsilon^{(l)})) -KL(q_{\varphi}(z|x)||p_{\theta}(z)) \\ \end{aligned}
其中ε(l)p(ε)\varepsilon^{(l)} \sim p(\varepsilon)

在实际计算时,我们假设pθ(z)N(z;0,I)qφ(zx)N(z;μ,σ)zJp_{\theta}(z)\backsim N(z;0,I),q_{\varphi}(z|x) \backsim N(z;\mu,\sigma),z的维度是J,二者的KL散度可以得到解析形式:
在这里插入图片描述
在这里插入图片描述
因此,最后(5)式就变成了:

L(φ,θ,x)=1Ll=1Llogpθ(xgφ(x,ε(l)))+12j=1J(1+log(σj2)μj2σj2))ε(l)p(ε)(6) \tag{6} \begin{aligned} L(\varphi,\theta,x) = {1 \over L}\sum_{l=1}^{L}logp_{\theta}(x|g_{\varphi}(x, \varepsilon^{(l)})) +{1 \over 2} \sum_{j=1}^{J}(1+log(\sigma_{j}^{2})-\mu_{j}^{2}-\sigma_{j}^{2})) \\ 其中\varepsilon^{(l)} \sim p(\varepsilon) \end{aligned}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章