在變分自編碼(VAE)一文中我們已經求解了VAE的ELBO,這裏再進一步分析求解ELBO的方法,也就是SGVB估計。
兩種形式的ELBO
變分自編碼器的ELBO其實有兩種形式:
第一種是:
ELBO===Eqφ(z∣x)[logqφ(z∣x)pθ(x,z)]Eqφ(z∣x)[logqφ(z∣x)pθ(z)pθ(x∣z)]Eqφ(z∣x)[logpθ(x∣z)]−KL[qφ(z∣x)∣∣pθ(z)](1)
第二種是:
ELBO===其中,Hqφ(z∣x)(z)=Eqφ(z∣x)[logqφ(z∣x)pθ(x,z)]Eqφ(z∣x)[logqφ(z∣x)pθ(x,z)]Eqφ(z∣x)[logpθ(x,z)]+Hqφ(z∣x)(z)∫z−qφ(z∣x)logqφ(z∣x)dz(2)
SGVB估計求解ELBO
先求解(1)式,先考慮(1)式中的第一項,第一項式期望的形式,期望可以通過蒙特卡洛估計來求解,不懂的可以看這篇博客蒙特卡洛估計。
從qφ(z∣x)中依據z的概率分佈採樣L個點,即
Eqφ(z∣x)[logpθ(x∣z)]≈L1l=1∑Llogpθ(x∣z(l))(3)
這樣通過採樣貌似可以,但是我們還要通過採樣來反向梯度優化φ,這樣採樣之後Eqφ(z∣x)[logpθ(x∣z)]就與φ無關了,因此這個操作是不可導的,就需要重參數化技巧來使採樣操作可導。我們假設z(l)=gφ(x,ε(l)),ε(l)∼p(ε),其中p(ε)和gφ都是形式已知的。這樣(3)式對φ就可導了,因爲gφ中含有參數φ。
(3)式就變成了:
Eqφ(z∣x)[logpθ(x∣z)]≈L1l=1∑Llogpθ(x∣gφ(x,ε(l)))ε(l)∼p(ε)(4)
(4)式就是用SGVB估計得到的。
所以(1)式可進一步寫成
L(φ,θ,x)==L1l=1∑Llogpθ(x∣z(l))−KL(qφ(z∣x)∣∣pθ(z))L1l=1∑Llogpθ(x∣gφ(x,ε(l)))−KL(qφ(z∣x)∣∣pθ(z))(5)
其中ε(l)∼p(ε),
在實際計算時,我們假設pθ(z)∽N(z;0,I),qφ(z∣x)∽N(z;μ,σ),z的維度是J,二者的KL散度可以得到解析形式:
因此,最後(5)式就變成了:
L(φ,θ,x)=L1l=1∑Llogpθ(x∣gφ(x,ε(l)))+21j=1∑J(1+log(σj2)−μj2−σj2))其中ε(l)∼p(ε)(6)