变分下界(variational lower bound)通常用于衡量变分分布与真实后验分布之间的差异。
E
L
B
O
=
E
[
l
o
g
p
(
x
,
z
)
−
l
o
g
q
(
z
)
]
ELBO = E[log\ p(x, z) - log\ q(z)]
ELBO=E[logp(x,z)−logq(z)] 其中,ELBO 代表变分下界(Evidence Lower BOund),x代表观测数据,z代表未知变量,p(x, z)表示真实的联合分布,q(z)表示变分分布。
3.7 代入本文中场景
有一张图 x(后验分布),想把它映射成 z,假设 z 是混合高斯分布(先验分布),各维可能描述颜色,材质……,用函数函数 g() 把 x 分解成高斯分布,它的逆过程是用 f() 根据高斯分布还原原始图 x‘ ,最终恢复的图片 x’=f(g(x)),目标是想让 x’-x 值尽量小,就是说:图 x 转成潜空间 z 再转回原始图 x’,图像最好没变化。 综上所述,无论x是什么,通过变换,产生的x’都与x很像,中间过程的 z 还能用高斯参数表示,求这样的函数f和g的神经网络。
3.8 蒙特卡洛估计
蒙特卡洛估计(Monte Carlo estimation)是一种基于随机抽样的统计估计方法,用于计算复杂问题的数值近似解。其基本思想是通过生成大量的随机样本,利用这些样本的统计特性来估计问题的解。
边界似然(Marginal Likelihood)是各观测数据点(每张图片)在给定模型下的概率之和(原图的概率),值越大模型越好,它描述的是图像重建的好不好(重建损失)。
l
o
g
p
θ
(
x
(
1
)
,
⋅
⋅
⋅
,
x
(
N
)
)
=
∑
i
=
1
N
l
o
g
p
θ
(
x
(
i
)
)
log\ p_θ(x^{(1)}, · · · , x^{(N)}) = \sum^N_{i=1} log\ p_θ(x^{(i)})
logpθ(x(1),⋅⋅⋅,x(N))=i=1∑Nlogpθ(x(i)) 各数据点的概率:
l
o
g
p
θ
(
x
(
i
)
)
=
D
K
L
(
q
φ
(
z
∣
x
(
i
)
)
∣
∣
p
θ
(
z
∣
x
(
i
)
)
)
+
L
(
θ
,
φ
;
x
(
i
)
)
log\ p_θ(x(i)) = D_{KL}(q_φ(z|x^{(i)})||p_θ(z|x^{(i))}) + L(θ, φ; x^{(i)})
logpθ(x(i))=DKL(qφ(z∣x(i))∣∣pθ(z∣x(i)))+L(θ,φ;x(i)) 前半部分 DKL 是z的模拟值和真实后验的 KL 散度,KL 散度一定大于0,后半部分 L 是变分下界(建模的目标):
log
p
θ
(
x
(
i
)
)
≥
L
(
θ
,
ϕ
;
x
(
i
)
)
=
E
q
ϕ
(
z
∣
x
)
[
−
log
q
ϕ
(
z
∣
x
)
+
log
p
θ
(
x
,
z
)
]
\log p_{\boldsymbol{\theta}}\left(\mathbf{x}^{(i)}\right) \geq \mathcal{L}\left(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{x}^{(i)}\right)=\mathbb{E}_{q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})}\left[-\log q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})+\log p_{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z})\right]
logpθ(x(i))≥L(θ,ϕ;x(i))=Eqϕ(z∣x)[−logqϕ(z∣x)+logpθ(x,z)] 这里的E是期望,右测是变分下界 ELBO 的公式。 通过移项得到了变分下界的目标函数,公式如下:
L
(
θ
,
ϕ
;
x
(
i
)
)
=
−
D
K
L
(
q
ϕ
(
z
∣
x
(
i
)
)
∥
p
θ
(
z
)
)
+
E
q
ϕ
(
z
∣
x
(
i
)
)
[
log
p
θ
(
x
(
i
)
∣
z
)
]
\mathcal{L}\left(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{x}^{(i)}\right)=-D_{K L}\left(q_{\boldsymbol{\phi}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right) \| p_{\boldsymbol{\theta}}(\mathbf{z})\right)+\mathbb{E}_{q_{\boldsymbol{\phi}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right)}\left[\log p_{\boldsymbol{\theta}}\left(\mathbf{x}^{(i)} \mid \mathbf{z}\right)\right]
L(θ,ϕ;x(i))=−DKL(qϕ(z∣x(i))∥pθ(z))+Eqϕ(z∣x(i))[logpθ(x(i)∣z)] 目标函数是最大化变分下界(Variational Lower Bound):第一项 KL散度(Kullback-Leibler Divergence)衡量了潜在变量的分布与先验分布之间的差异(z的差异:越小越好),第二项 重建损失(Reconstruction Loss)衡量了重建样本与原始样本之间相似度(x为原图的概率:越大越好),所以整体 L 越大越好。
z 对应的多个高斯分布的均值和方差都不是固定的值,它们通过神经网络计算得来,神经网络的参数通过训练得到。
4.2 具体实现
这里引入了噪声变量e作为辅助变量,来实现 q 的功能。
z
~
=
g
ϕ
(
ϵ
,
x
)
\widetilde{z}=g_\phi(\epsilon,x)
z=gϕ(ϵ,x) 对某个函数 f(z) 的期望进行蒙特卡洛估计,具体通过采样实现,其minibatch 是从有N个数据点的数据集中,随机抽取M个点:
L
(
θ
,
ϕ
;
X
)
≃
L
~
M
(
θ
,
ϕ
;
X
M
)
=
N
M
∑
i
=
1
M
L
~
(
θ
,
ϕ
;
x
(
i
)
)
\mathcal{L}(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{X}) \simeq \widetilde{\mathcal{L}}^{M}\left(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{X}^{M}\right)=\frac{N}{M} \sum_{i=1}^{M} \widetilde{\mathcal{L}}\left(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{x}^{(i)}\right)
L(θ,ϕ;X)≃LM(θ,ϕ;XM)=MNi=1∑ML(θ,ϕ;x(i)) 可以将KL散度看成限制参数φ的正则化项。而重建误差部分:先用函数 gφ(.) 将数据点 x 和随机噪声向量映射到该数据点的近似后验样本z,然后计算 log pθ(x(i)|z(i,l)),等于生成模型下数据点 x(i) 的概率密度,从而计算重建误差。
4.3 变分自编码器
在变分自编码器的场景中,先验是中心各向同性的多元高斯分布:
log
q
ϕ
(
z
∣
x
(
i
)
)
=
log
N
(
z
;
μ
(
i
)
,
σ
2
(
i
)
I
)
\log q_{\boldsymbol{\phi}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right)=\log \mathcal{N}\left(\mathbf{z} ; \boldsymbol{\mu}^{(i)}, \boldsymbol{\sigma}^{2(i)} \mathbf{I}\right)
logqϕ(z∣x(i))=logN(z;μ(i),σ2(i)I) 其中均值和标准差是编码 MLP 的输出。由于是高斯分布:
z
(
i
,
l
)
=
g
ϕ
(
x
(
i
)
,
ϵ
(
l
)
)
=
μ
(
i
)
+
σ
(
i
)
⊙
ϵ
(
l
)
z^{(i,l)} = g_\phi(x^{(i)}, \epsilon^{(l)}) = μ^{(i)} + σ^{(i)} \odot \epsilon^{(l)}
z(i,l)=gϕ(x(i),ϵ(l))=μ(i)+σ(i)⊙ϵ(l) 引入高斯分布的KL散度,最终目标函数是: