另一个能够表达VAE设计思想的例子:
log
p
(
x
)
=
∫
z
q
(
z
∣
x
)
log
p
(
x
)
d
z
=
∫
z
q
(
z
∣
x
)
log
p
(
z
,
x
)
p
(
z
∣
x
)
d
z
=
∫
z
q
(
z
∣
x
)
log
p
(
z
,
x
)
q
(
z
∣
x
)
q
(
z
∣
x
)
p
(
z
∣
x
)
d
z
=
∫
z
q
(
z
∣
x
)
log
p
(
z
,
x
)
q
(
z
∣
x
)
d
z
+
∫
z
q
(
z
∣
x
)
log
q
(
z
∣
x
)
p
(
z
∣
x
)
d
z
=
∫
z
q
(
z
∣
x
)
log
p
(
z
,
x
)
q
(
z
∣
x
)
d
z
+
K
L
(
q
(
z
∣
x
)
∣
∣
p
(
z
∣
x
)
)
这里我们把
q
(
z
;
l
a
m
b
d
a
)
q(z; lambda)
q(z;lambda)换成了
q
(
z
∣
x
)
q(z|x)
q(z∣x),即
l
a
m
b
d
a
lambda
lambda就是
x
x
x,用
q
(
z
∣
x
)
q(z|x)
q(z∣x)来近似
p
(
z
∣
x
)
p(z|x)
p(z∣x);上面式子右边一项为
q
(
z
∣
x
)
q(z|x)
q(z∣x)和
p
(
z
∣
x
)
p(z|x)
p(z∣x)两个分布的KL散度,根据KL散度的非负性,我们得到
log
p
(
x
)
\log_{}{p(x)}
logp(x)的一个下界:
log
p
(
x
)
≥
∫
z
q
(
z
∣
x
)
log
(
p
(
x
∣
z
)
p
(
z
)
q
(
z
∣
x
)
)
d
z
\log_{}{p(x)} \ge \int\limits_{z}^{} q(z|x)\log_{}{(\frac{p(x|z)p(z)}{q(z|x)} )} dz
logp(x)≥z∫q(z∣x)log(q(z∣x)p(x∣z)p(z))dz
我们将这个下界定义为 ELBO = evidence lower bound,记为
L
b
=
∫
z
q
(
z
∣
x
)
log
(
p
(
x
∣
z
)
p
(
z
)
q
(
z
∣
x
)
)
d
z
L_{b}=\int\limits_{z}^{} q(z|x)\log_{}{(\frac{p(x|z)p(z)}{q(z|x)} )} dz
Lb=z∫q(z∣x)log(q(z∣x)p(x∣z)p(z))dz,代入原式可以得到
log
p
(
x
)
=
L
b
+
K
L
(
q
(
z
∣
x
)
∣
∣
p
(
z
∣
x
)
)
\log_{}{p(x)} = L_{b} + KL(q(z|x)||p(z|x))
logp(x)=Lb+KL(q(z∣x)∣∣p(z∣x))
由于 log p ( x ) \log_{}{p(x)} logp(x)不包含 z z z,当通过 q ( z ∣ x ) q(z|x) q(z∣x)来最大化ELBO时, log p ( x ) \log_{}{p(x)} logp(x)为常量, K L ( q ( z ∣ x ) ∣ ∣ p ( z ∣ x ) ) KL(q(z|x)||p(z|x)) KL(q(z∣x)∣∣p(z∣x))的值逐渐变小,最终趋于0,此时 q ( z ∣ x ) q(z|x) q(z∣x)和 p ( z ∣ x ) p(z|x) p(z∣x)的分布会十分接近。通过找 p ( x ∣ z ) p(x|z) p(x∣z)和 q ( z ∣ x ) q(z|x) q(z∣x)来使ELBO达到最大值,从而使 log p ( x ) \log_{}{p(x)} logp(x)也达到最大值。此间关系变化对应下图
即给定数据集后,变分推断的目标变成了最大化证据下界ELBO,ELBO最大化过程结束时,所获得的 q ( z ∣ x ) q(z|x) q(z∣x)就是我们要的输出
那么如何使ELBO的值达到最大呢,从上面 L b L_{b} Lb的推导公式可以看出,求解 max log p ( x ) \max_{}\log_{}{p(x)} maxlogp(x),等价于求解 max L b \max_{} L_{b} maxLb
下面继续求解
log
p
(
x
)
≥
E
L
B
O
=
L
b
=
∫
z
q
(
z
∣
x
)
log
p
(
z
,
x
)
p
(
z
∣
x
)
d
z
=
∫
z
q
(
z
∣
x
)
log
p
(
x
∣
z
)
p
(
z
)
q
(
z
∣
x
)
d
z
=
∫
z
q
(
z
∣
x
)
log
p
(
z
)
q
(
z
∣
x
)
d
z
+
∫
z
q
(
z
∣
x
)
log
p
(
x
∣
z
)
d
z
=
−
K
L
(
q
(
z
∣
x
)
∣
∣
p
(
z
)
)
+
∫
z
q
(
z
∣
x
)
log
p
(
x
∣
z
)
d
z
式子中, p ( z ) p(z) p(z)为 z z z的先验分布,要最大化 E L B O ELBO ELBO,即找到 q ( z ∣ x ) q(z|x) q(z∣x)和 p ( x ∣ z ) p(x|z) p(x∣z),让 K L ( q ( z ∣ x ) ∣ ∣ p ( z ) ) KL(q(z|x)||p(z)) KL(q(z∣x)∣∣p(z))最小,让 ∫ z q ( z ∣ x ) log p ( x ∣ z ) d z \int\limits_{z}^{} q(z|x)\log_{}{p(x|z)} dz z∫q(z∣x)logp(x∣z)dz最大
(
1
)
(1)
(1) 最小化
K
L
(
q
(
z
∣
x
)
∣
∣
p
(
z
)
)
KL(q(z|x)||p(z))
KL(q(z∣x)∣∣p(z))
最小化
K
L
(
q
(
z
∣
x
)
∣
∣
p
(
z
)
)
KL(q(z|x)||p(z))
KL(q(z∣x)∣∣p(z)),即让
q
(
z
∣
x
)
q(z|x)
q(z∣x)和
p
(
z
)
p(z)
p(z)的分布尽量接近,难点在于两者分布的选择。VAE选择
q
(
z
∣
x
)
q(z|x)
q(z∣x)和
p
(
z
)
p(z)
p(z)为各分量独立的正态分布,其中
p
(
z
)
p(z)
p(z)为标准正态分布,即
p
(
z
)
∼
N
(
0
,
I
)
p(z)\sim N(0, I)
p(z)∼N(0,I)
q
(
z
∣
x
)
∼
N
(
μ
,
σ
2
)
q(z|x)\sim N(\mu , \sigma ^{2} )
q(z∣x)∼N(μ,σ2),由KL散度的非负性且仅当
q
(
z
∣
x
)
=
p
(
z
)
q(z|x) = p(z)
q(z∣x)=p(z)时,等式成立,故可直接把
K
L
(
q
(
z
∣
x
)
∣
∣
p
(
z
)
)
≥
0
KL(q(z|x)||p(z)) \ge 0
KL(q(z∣x)∣∣p(z))≥0当作
L
o
s
s
Loss
Loss来训练,此为VAE的损失函数第一项
我们考虑的是各分量独立的多元正态分布,只需推导各分量独立的多元正态分布即可,如下
∫
z
q
(
z
∣
x
)
log
(
q
(
z
∣
x
)
p
(
z
)
)
=
K
L
(
q
(
z
∣
x
)
∣
∣
p
(
z
)
)
=
K
L
(
N
(
μ
,
σ
2
)
∣
∣
N
(
0
,
I
)
)
=
∫
1
2
π
σ
e
−
(
x
−
μ
)
2
2
σ
2
log
{
1
σ
2
e
{
1
2
[
x
2
−
(
x
−
μ
σ
)
2
]
}
}
d
x
=
1
2
∫
1
2
π
σ
e
−
(
x
−
μ
)
2
2
σ
2
[
−
log
σ
2
+
x
2
−
(
x
−
μ
σ
)
2
]
d
x
第一项:
∫
1
2
π
σ
e
−
(
x
−
μ
)
2
2
σ
2
(
−
log
σ
2
)
d
x
\int \frac{1}{\sqrt{2\pi }\sigma } e^{\frac{-(x-\mu )^{2} }{2\sigma ^{2} } }\left (-\log_{}{\sigma ^{2} } \right ) dx
∫2πσ1e2σ2−(x−μ)2(−logσ2)dx,即
(
−
log
σ
2
)
\left (-\log_{}{\sigma ^{2} } \right )
(−logσ2)乘以概率密度的积分1,结果是
(
−
log
σ
2
)
\left (-\log_{}{\sigma ^{2} } \right )
(−logσ2)
第二项:
∫
1
2
π
σ
e
−
(
x
−
μ
)
2
2
σ
2
x
2
d
x
\int \frac{1}{\sqrt{2\pi }\sigma } e^{\frac{-(x-\mu )^{2} }{2\sigma ^{2} } }x^{2} dx
∫2πσ1e2σ2−(x−μ)2x2dx正态分布的二阶矩,结果为
μ
2
+
σ
2
\mu ^{2} +\sigma ^{2}
μ2+σ2
第三项:
∫
1
2
π
σ
e
−
(
x
−
μ
)
2
2
σ
2
[
−
(
x
−
μ
σ
)
2
]
d
x
\int \frac{1}{\sqrt{2\pi }\sigma } e^{\frac{-(x-\mu )^{2} }{2\sigma ^{2} } }\left [- (\frac{x-\mu }{\sigma } )^{2} \right ] dx
∫2πσ1e2σ2−(x−μ)2[−(σx−μ)2]dx,即
x
−
μ
σ
∼
N
(
0
,
1
)
\frac{x-\mu }{\sigma }\sim N(0, 1)
σx−μ∼N(0,1)的二阶矩,结果为-1
故
K
L
L
o
s
s
KL Loss
KLLoss为:
K
L
(
N
(
μ
,
σ
2
)
∣
∣
N
(
0
,
1
)
)
=
1
2
(
−
log
σ
2
+
μ
2
+
σ
2
−
1
)
KL(N(\mu ,\sigma ^{2} )||N(0, 1))=\frac{1}{2} \left ( -\log_{}{\sigma ^{2}+\mu^{2} +\sigma ^{2} -1 } \right )
KL(N(μ,σ2)∣∣N(0,1))=21(−logσ2+μ2+σ2−1)
(
2
)
(2)
(2) 最大化
∫
z
q
(
z
∣
x
)
log
p
(
x
∣
z
)
d
z
\int\limits_{z}^{} q(z|x)\log_{}{p(x|z)} dz
z∫q(z∣x)logp(x∣z)dz
我们可以将该项表达为
max
∫
z
q
(
z
∣
x
)
log
p
(
x
∣
z
)
d
z
=
max
E
q
(
z
∣
x
)
[
log
p
(
x
∣
z
)
]
\max_{} \int\limits_{z}^{} q(z|x)\log_{}{p(x|z)} dz = \max_{} E_{q(z|x)} \left [ \log_{}{p(x|z)} \right ]
maxz∫q(z∣x)logp(x∣z)dz=maxEq(z∣x)[logp(x∣z)]
VAE构造了Encoder来模拟
q
(
z
∣
x
)
q(z|x)
q(z∣x)的过程,即通过Encoder来生成
z
z
z的分布;构造了Decoder来模拟
p
(
x
∣
z
)
p(x|z)
p(x∣z)的过程,即通过Decoder生成x的分布,如果不考虑方差,即通过Decoder的均值输出
μ
\mu
μ同原始
x
x
x的值尽可能地近,从而使
p
(
x
∣
z
)
p(x|z)
p(x∣z)的观测概率更大。该期望的含义可理解为:在给定Encoder的输出
q
(
z
∣
x
)
q(z|x)
q(z∣x)的情况下Decoder输出
p
(
x
∣
z
)
p(x|z)
p(x∣z)的值要尽可能高。此为VAE损失函数的第二项
最后是实现模型的重参数化技巧 r e p a r a m e t e r i z a t i o n reparameterization reparameterization t r i c k trick trick
为了使模型具有生成能力,VAE模型要求每个 p ( z ∣ x ) p(z|x) p(z∣x)都向 N ( 0 , I ) N(0, I) N(0,I)看齐,这样能防止噪声为零同时保证生成能力
如下,如果所有的
p
(
z
∣
x
)
p(z|x)
p(z∣x)都很接近标准的正态分布
N
(
0
,
I
)
N(0, I)
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)=\sum_{x}^{} p(z|x)p(x)=\sum_{x}^{}N(0, I)p(x)=N(0, I)\sum_{x}^{}p(x)=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)是标准正态分布,然后就可能放心地从标准正态分布 N ( 0 , I ) N(0, I) N(0,I)中采样来生成样本了,对应到4.章节中高斯混合模型的原理
参考文章:
VAE的数学推导
VAE的数学推导
对VAE的理解1
对VAE的理解2
VAE和AE及GAN的区别
VAE的通俗理解
VAE背后的数学原理
created by shuaixio, 2022.06.30