本文图片和公式统一和原始paper保持一致
Auto-Encoding Variational Bayes
部分公式参考 https://spaces.ac.cn/archives/5253
- 问题描述
考虑数据集
X
=
{
x
(
i
)
}
i
=
1
N
\mathbf{X}=\left\{\mathbf{x}^{(i)}\right\}_{i=1}^{N}
X={x(i)}i=1N包括
N
N
N 个 独立的来自连续或离散变量
x
\mathrm{x}
x的样本.
我们想得到概率分布
p
θ
(
x
)
p_{\boldsymbol{\theta}}(\mathbf{x})
pθ(x)
该变量x由
z
\mathbf{z}
z生成,有以下两个步骤:
z
(
i
)
\mathbf{z}^{(i)}
z(i) 由先验概率
p
θ
∗
(
z
)
p_{\boldsymbol{\theta}^{*}}(\mathbf{z})
pθ∗(z) 生成
x
(
i
)
\mathbf{x}^{(i)}
x(i)由条件概率
p
θ
∗
(
x
∣
z
)
p_{\boldsymbol{\theta}^{*}}(\mathbf{x} \mid \mathbf{z})
pθ∗(x∣z) 生成
遗憾的是很多过程是不可见的,参数
θ
∗
\boldsymbol{\theta}^{*}
θ∗和隐变量
z
(
i
)
\mathbf{z}^{(i)}
z(i) 的值也是未知的。
并且边际似然函数
p
θ
(
x
)
=
p_{\boldsymbol{\theta}}(\mathbf{x})=
pθ(x)=
∫
p
θ
(
z
)
p
θ
(
x
∣
z
)
d
z
\int p_{\boldsymbol{\theta}}(\mathbf{z}) p_{\boldsymbol{\theta}}(\mathbf{x} \mid \mathbf{z}) d \mathbf{z}
∫pθ(z)pθ(x∣z)dz 的计算是十分复杂的(intractable (so we cannot evaluate or differentiate the marginal likelihood)
后验概率
p
θ
(
z
∣
x
)
=
p
θ
(
x
∣
z
)
p
θ
(
z
)
/
p
θ
(
x
)
p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x})=p_{\boldsymbol{\theta}}(\mathbf{x} \mid \mathbf{z}) p_{\boldsymbol{\theta}}(\mathbf{z}) / p_{\boldsymbol{\theta}}(\mathbf{x})
pθ(z∣x)=pθ(x∣z)pθ(z)/pθ(x) 也是 intractable的 (so the EM algorithm cannot be used)
其中:
p
θ
(
z
)
p
θ
(
x
∣
z
)
p_{\boldsymbol{\theta}}(\mathbf{z}) p_{\boldsymbol{\theta}}(\mathbf{x} \mid \mathbf{z})
pθ(z)pθ(x∣z)是生成模型
q
ϕ
(
z
∣
x
)
q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})
qϕ(z∣x)是后验概率
p
θ
(
z
∣
x
)
p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x})
pθ(z∣x)的近似
变分参数
ϕ
\phi
ϕ和生成模型的参数
θ
\boldsymbol{\theta}
θ可以同时被模型学习
假设和datapoint对应的后验概率
p
θ
(
z
∣
x
)
p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x})
pθ(z∣x)是正态分布,每次从中采用一个
z
i
z_i
zi去还原
x
i
x_i
xi,原文中也指出针对每个datapoint都有一个对应的
q
ϕ
(
z
∣
x
(
i
)
)
q_{\boldsymbol{\phi}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right)
qϕ(z∣x(i)),然后利用神经网络拟合均值和方差
VAE的目标是通过从encoder生成的Z中进行采样并进行X的重构,但噪声(方差)会增加重构的难度,但好在方差是神经网络训练出来的,于是模型为了重构质量会尽力让方差为0,但这样做的结果就是失去随机性,也就是不管怎么采样Z最后得到的结果都是均值,也就是另一个神经网络拟合的结果。于是退化成AE。
好在VAE假设后验概率
p
θ
(
z
∣
x
)
p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x})
pθ(z∣x)服从标准正态分布,于是
p
(
Z
)
=
∑
X
p
(
Z
∣
X
)
p
(
X
)
=
∑
X
N
(
0
,
I
)
p
(
X
)
=
N
(
0
,
I
)
∑
X
p
(
X
)
=
N
(
0
,
I
)
p(Z)=\sum_{X} p(Z \mid X) p(X)=\sum_{X} \mathcal{N}(0, I) p(X)=\mathcal{N}(0, I) \sum_{X} p(X)=\mathcal{N}(0, I)
p(Z)=X∑p(Z∣X)p(X)=X∑N(0,I)p(X)=N(0,I)X∑p(X)=N(0,I)
先验
P
(
Z
)
P(Z)
P(Z)也就服从标准正态分布
- 变分下限
边际似然由对每个数据点的边际似然求和组成
log p θ ( x ( 1 ) , ⋯ , x ( N ) ) = ∑ i = 1 N log p θ ( x ( i ) ) \log p_{\boldsymbol{\theta}}\left(\mathbf{x}^{(1)}, \cdots, \mathbf{x}^{(N)}\right)=\sum_{i=1}^{N} \log p_{\boldsymbol{\theta}}\left(\mathbf{x}^{(i)}\right) logpθ(x(1),⋯,x(N))=∑i=1Nlogpθ(x(i))
可以被写成如下形式
log p θ ( x ( i ) ) = D K L ( q ϕ ( z ∣ x ( i ) ) ∥ p θ ( z ∣ x ( i ) ) ) + L ( θ , ϕ ; x ( i ) ) \log p_{\boldsymbol{\theta}}\left(\mathbf{x}^{(i)}\right)=D_{K L}\left(q_{\boldsymbol{\phi}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right) \| p_{\boldsymbol{\theta}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right)\right)+\mathcal{L}\left(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{x}^{(i)}\right) logpθ(x(i))=DKL(qϕ(z∣x(i))∥pθ(z∣x(i)))+L(θ,ϕ;x(i))
推导过程如下
q ϕ ( z ∣ x ( i ) ) q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x}^{(i)}) qϕ(z∣x(i))是假设的分布
等式右边第一项是假设和真正后验概率的KL散度,第二项
L
(
θ
,
ϕ
;
x
(
i
)
)
\mathcal{L}\left(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{x}^{(i)}\right)
L(θ,ϕ;x(i)) 是数据点I边际似然的(变分)下界,可以被写作
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_{\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)]
和
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_{\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)]
推导如下
此时需要优化下界
L
(
θ
,
ϕ
;
x
(
i
)
)
\mathcal{L}\left(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{x}^{(i)}\right)
L(θ,ϕ;x(i)) 但是梯度求解释一个问题用蒙特卡洛方法求解的一般形式如下:
∇
ϕ
E
q
ϕ
(
z
)
[
f
(
z
)
]
=
E
q
ϕ
(
z
)
[
f
(
z
)
∇
q
ϕ
(
z
)
log
q
ϕ
(
z
)
]
≃
1
L
∑
l
=
1
L
f
(
z
)
∇
q
ϕ
(
z
(
l
)
)
log
q
ϕ
(
z
(
l
)
)
\nabla_{\phi} \mathbb{E}_{q_{\phi}(\mathbf{z})}[f(\mathbf{z})]=\mathbb{E}_{q_{\phi}(\mathbf{z})}\left[f(\mathbf{z}) \nabla_{q_{\phi}(\mathbf{z})} \log q_{\phi}(\mathbf{z})\right] \simeq \frac{1}{L} \sum_{l=1}^{L} f(\mathbf{z}) \nabla_{q_{\phi}\left(\mathbf{z}^{(l)}\right)} \log q_{\phi}\left(\mathbf{z}^{(l)}\right)
∇ϕEqϕ(z)[f(z)]=Eqϕ(z)[f(z)∇qϕ(z)logqϕ(z)]≃L1∑l=1Lf(z)∇qϕ(z(l))logqϕ(z(l))
where
z
(
l
)
∼
q
ϕ
(
z
∣
x
(
i
)
)
.
\mathbf{z}^{(l)} \sim q_{\phi}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right) .
z(l)∼qϕ(z∣x(i)).
但该方法存在很大方差
如果假设和真实的后验概率越接近则KL散度越小,下界越接近边际似然函数
l
o
g
p
θ
(
x
)
logp_{\boldsymbol{\theta}}(\mathbf{x})
logpθ(x)
下届又可以分为
q
ϕ
(
z
∣
x
(
i
)
)
q_{\boldsymbol{\phi}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right)
qϕ(z∣x(i)) 和
P
(
z
)
P(\mathbf{z})
P(z)的KL散度和期望
于是最大化下界,第一步是最小化LB中的KL散度,即让
q
ϕ
(
z
∣
x
(
i
)
)
q_{\boldsymbol{\phi}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right)
qϕ(z∣x(i)) 和
P
(
z
)
P(\mathbf{z})
P(z)接近,而
P
(
z
)
P(\mathbf{z})
P(z)是标准正态分布。
第二步最大化上面的期望
总结就是给定一个X,通过
q
ϕ
(
z
∣
x
(
i
)
)
q_{\boldsymbol{\phi}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right)
qϕ(z∣x(i))sample一个Z,使得
P
(
x
∣
z
)
P(x | z)
P(x∣z)最大
其中第一项结果参考
- 重参数技巧
由于 log q ϕ ( z ∣ x ( i ) ) = log N ( z ; μ ( i ) , σ 2 ( i ) I ) \log q_{\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)
采样的操作不可导,但结果可导,利用
1 2 π σ 2 exp ( − ( z − μ ) 2 2 σ 2 ) d z = 1 2 π exp [ − 1 2 ( z − μ σ ) 2 ] d ( z − μ σ ) \begin{aligned} & \frac{1}{\sqrt{2 \pi \sigma^{2}}} \exp \left(-\frac{(z-\mu)^{2}}{2 \sigma^{2}}\right) d z \\ =& \frac{1}{\sqrt{2 \pi}} \exp \left[-\frac{1}{2}\left(\frac{z-\mu}{\sigma}\right)^{2}\right] d\left(\frac{z-\mu}{\sigma}\right) \end{aligned} =2πσ21exp(−2σ2(z−μ)2)dz2π1exp[−21(σz−μ)2]d(σz−μ)
这说明
(
z
−
μ
)
/
σ
=
ε
(z-\mu) / \sigma=\varepsilon
(z−μ)/σ=ε 是服从均值为 0 、方差为 1 的标准正态分布的, 要同时把
d
z
d z
dz 考虑进去, 是因为乘 上
d
z
d z
dz 才算是概率, 去掉
d
z
d z
dz 是概率密度而不是概率。
这时候我们得到:
从
N
(
μ
,
σ
2
)
\mathcal{N}\left(\mu, \sigma^{2}\right)
N(μ,σ2) 中采样一个
Z
Z
Z, 相当于从
N
(
0
,
I
)
\mathcal{N}(0, I)
N(0,I) 中采样一个
ε
\varepsilon
ε, 然后让
Z
=
μ
+
ε
×
σ
Z=\mu+\varepsilon \times \sigma
Z=μ+ε×σ 。