变分自编码器
基本思想:VAE在2013年提出,假设数据 x i x_i xi是由一个随机过程产生的,该随机过程分为两步:
- 由先验分布 P θ ∗ ( z ) P_{\theta^*}(z) Pθ∗(z)产生隐变量 z i z_i zi,
- 再由条件分布 P θ ∗ ( x ∣ z i ) P_{\theta^*}(x|z_i) Pθ∗(x∣zi)产生数据 x i x_i xi。
p
θ
(
x
i
)
p_{\theta}(x_i)
pθ(xi)可以表示为:
p
θ
(
x
i
)
=
∫
p
θ
(
x
i
∣
z
)
p
θ
(
z
)
d
z
p_{\theta}(x_i)=\int p_{\theta}(x_i|z)p_\theta(z)dz
pθ(xi)=∫pθ(xi∣z)pθ(z)dz
VAE的核心就是找到一个容易生成数据
x
x
x的
z
z
z的分布,即后验分布
q
ϕ
(
z
∣
x
)
q_{\phi}(z|x)
qϕ(z∣x),VAE需要用神经网络拟合一个分布
p
θ
(
z
∣
x
)
p_\theta(z|x)
pθ(z∣x)和
q
ϕ
(
z
∣
x
)
q_{\phi}(z|x)
qϕ(z∣x)接近。VAE假设每个
x
i
x_i
xi服从标准正态分布。
损失函数:
x的似然函数可以写为:
l
o
g
(
p
θ
(
x
i
)
)
=
D
K
L
(
p
θ
(
z
∣
x
i
)
∣
∣
q
ϕ
(
z
∣
x
i
)
)
+
L
(
θ
,
ϕ
,
x
i
)
log(p_{\theta}(x_i))=D_{KL}(p_{\theta}(z|x_i)||q_{\phi}(z|x_i))+L(\theta,\phi,x_i)
log(pθ(xi))=DKL(pθ(z∣xi)∣∣qϕ(z∣xi))+L(θ,ϕ,xi)
其中
L
(
θ
,
ϕ
,
x
i
)
L(\theta,\phi,x_i)
L(θ,ϕ,xi)为变分下界,因为KL散度的值是非负的,因此要最大化似然函数即最大化变分下界
L
(
θ
,
ϕ
,
x
i
)
L(\theta,\phi,x_i)
L(θ,ϕ,xi),即最大化:
L
(
θ
,
ϕ
,
x
i
)
=
l
o
g
(
p
θ
(
x
i
∣
z
)
)
−
D
K
L
(
p
θ
(
z
∣
x
i
)
∣
∣
q
ϕ
(
z
∣
x
i
)
)
L(\theta,\phi,x_i)=log(p_{\theta}(x_i|z))-D_{KL}(p_{\theta}(z|x_i)||q_{\phi}(z|x_i))
L(θ,ϕ,xi)=log(pθ(xi∣z))−DKL(pθ(z∣xi)∣∣qϕ(z∣xi))
则VAE的孙树函数分为两个部分
KL散度的计算公式为:
D
K
L
(
p
(
x
)
∣
∣
q
(
x
)
)
=
∑
i
=
1
n
p
(
x
)
l
o
g
p
(
x
)
q
(
x
)
D_{KL}(p(x)||q(x))=\sum_{i=1}^{n}p(x)log\frac{p(x)}{q(x)}
DKL(p(x)∣∣q(x))=i=1∑np(x)logq(x)p(x)
VAE的KL损失计算当前z的分布与标准正态分布之间的KL散度,假设即
p
θ
(
z
∣
x
i
)
p_{\theta}(z|x_i)
pθ(z∣xi)~
N
(
μ
i
,
σ
i
)
N(\mu_i,\sigma_i)
N(μi,σi)
D
K
L
(
p
θ
(
z
∣
x
i
)
∣
∣
q
ϕ
(
z
∣
x
i
)
)
=
μ
i
2
+
σ
i
2
−
l
o
g
(
σ
i
2
)
−
1
D_{KL}(p_{\theta}(z|x_i)||q_{\phi}(z|x_i))=\mu_i^2+\sigma_i^2-log(\sigma_i^2)-1
DKL(pθ(z∣xi)∣∣qϕ(z∣xi))=μi2+σi2−log(σi2)−1
则VAE的损失函数如下:
L
(
θ
,
ϕ
,
x
)
=
∑
i
=
1
n
(
−
(
μ
i
2
+
σ
i
2
−
l
o
g
(
σ
i
2
)
−
1
)
+
m
s
e
(
x
i
,
x
i
^
)
)
L(\theta,\phi,x)=\sum_{i=1}^{n}(-(\mu_i^2+\sigma_i^2-log(\sigma_i^2)-1)+mse(x_i,\hat{x_i}))
L(θ,ϕ,x)=i=1∑n(−(μi2+σi2−log(σi2)−1)+mse(xi,xi^))
VAE应用场景
VAE,GAN等统称为生成模型,生成模型的应用主要有以下几个方面:
- 图像生成,风格转换
- NLP领域:文本生成
- 数据补全,自动补全因意外缺失的部分特征
- 学习数据的embedding特征