變分自編碼器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}

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