变分自编码(Variational Autoencoder)可以用于生成高精度的图像,我们可以从神经网络、概率图模型这两个角度去描述它。
The Neural Net Perspective
从神经网络的角度来看,VAE 包含了编码器、解码器和损失。
自编码器是输入 X 进行编码后得到 Z,再利用 Z 解码得到 X’。对比 X 与 X’ 的误差,利用神经网络训练使得误差逐渐减小,达到非监督学习的目的。
Encoder
编码是从高维信息降维得到低维信息的过程。可以认为是非线性的 PCA。
这里用 qθ(z|x) 表示编码网络。一般可以假设它服从高斯分布。θ 是编码网络的参数。
Decoder
解码是编码的逆向过程。
以 MNIST 数据集为例,解码器将 Z 的值解码成 784 个伯努利分布的参数,每个伯努利分布描述了一个像素点的灰度值。
用 pϕ(x|z) 表示解码网络。ϕ 是解码网络的参数。
log-likelihood logpϕ(x|z) 可以表示用 z 出重建 x 的有效程度。
Loss
整体损失为单点损失之和,
Loss=N∑i=1li其中单点损失可以表示为
li(θ,ϕ)=−Ez∼qθ(z|xi)[logpϕ(xi|z)]+KL(qθ(z|xi)‖p(z))即解码器的 log-likelihood 再加一个正则项,约束编码器和先验的差距。
一般假设先验服从正态分布,并且让编码器和先验接近,这样可以让编码器尽量的分散,而不是在特定点上过拟合。
通过在损失上梯度下降,可以更新出编码网络的参数。
The Probability Model Perspective
从概率图模型的角度看,它将和变分推理的思路一致。
从观测到隐层,称为推理网络(Inference Network),即编码器;从隐层到观测,称为生成网络(Generative Network),即解码器。
KL 不易计算,因此 VI 优化 证据下界(ELBO) 来求解。
ELBO
由于观测之间不共享同一个潜变量,因此可以写出单点的 ELBO
Li(λ)=Eqλ(z|xi)[logp(xi|z)]−KL(qλ(z|xi)‖p(z))可见 ELBO 与神经网络的损失表达式取反是一致的。λ 是变分参数。
变分参数可以选择多观测共享或不共享。
- Mean-field variational inference
- no shared parameters
- Amortized inference
- global parameters are shared across all datapoints
Inference Network
用推理网络进行编码,即学习出一个分布族里最接近真实后验的变分分布。
q∗λ(z|x)=argminλKL(qλ(z|x)‖p(z|x))Generative Network
用生成式网络进行解码时,往往会假设
p(z)=Normal(0,1)p(x|z)=Normal(μβ(z),σ2β(z))where μ and σ2 are deep networks with parameters β
Amortized Inference
为了让多个数据可以分批训练,假设模型有公共的变分分布,即进行摊余推理。
变分分布依赖于第 i 个数据和共享的变分参数。于是原本的 ELBO 为多个模型参数
L(λ,ϕ1…n)=Eq[logp(β,z,x)]−Eq[logq(β;λ)+n∑i=1q(zi;ϕi)]改写为
L(λ,θ)=Eq[logp(β,z,x)]−Eq[logq(β;λ)+n∑i=1q(zi|xi;ϕi=fθ(xi))]因此 ELBO 的目标式为
L(ν)=n∑i=1Eq(zi;xi,ν)[logp(zi)+logp(xi|zi,θ)−logq(zi;xi,ν)]Reparameterization
ε∼N(0,1)t(ε,xi,ν)=ε+g(xi;ν)∇νL=n∑i=1Es(ε)[∇zi(logp(zi)+logp(xi|zi,θ)−logq(zi;xi,ν))∇νt(ε,ν,xi)]步骤
符合 BBVI 准则。
- samples εi for each data point and calculates zi
- uses these samples to calculate noisy gradients with respect to ν and θ
- follows those gradients in a stochastic optimization
