在变分自编码(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)