diffusion model evolution
前言:扩散模型的推导过程以及基础概率论知识
概率论基础
1、概率 p(x)
事件A的概率是对事件A在试验中出现的可能性大小的一种度量,事件A的概率表示为 P ( A ) P(A) P(A)
2、概率分布
反映随机变量 X X X(可能是离散型、也可能是连续型)的所有可能取值(如 X = x 1 , x 2 , . . . . X=x_1,x_2,.... X=x1,x2,....),将随机变量取这些值的概率一一列举出来的概率分布就是该随机变量的概率分布。对于离散型随机变量,它的概率分布可以用枚举法表示 P ( X = x i ) P(X=x_i) P(X=xi);对于连续型随机变量,它的概率分布可以用 P ( X ) P(X) P(X)表示。
-----------以上两个概念都是概念性的东西,并没有公式---------------
3、概率密度函数
设
X
X
X为一连续型随机变量,
x
x
x为任意实数,
X
X
X的概率密度函数记为
f
(
x
)
f(x)
f(x),概率密度函数满足条件:
(1)
f
(
x
)
≥
0
f(x) \ge 0
f(x)≥0;(2)
∫
+
∞
−
∞
f
(
x
)
d
x
=
1
\int_{+\infty}^{-\infty}f(x)dx=1
∫+∞−∞f(x)dx=1
概率密度函数f(x)和概率p(x)的关系:对于任何实数
x
1
<
x
2
x_1<x_2
x1<x2,
p
(
x
1
<
x
<
x
2
)
p(x_1<x<x_2)
p(x1<x<x2)是该概率密度曲线下从
x
1
x_1
x1到
x
2
x_2
x2的面积:
p
(
x
1
<
x
<
x
2
)
=
∫
x
1
x
2
f
(
x
)
d
x
p(x_1<x<x_2)=\int_{x_1}^{x_2}f(x)dx
p(x1<x<x2)=∫x1x2f(x)dx
4、分布函数
连续型随机变量的概率也可以用分布函数
F
(
x
)
F(x)
F(x)来表示,分布函数的定义为:
F
(
x
)
=
p
(
X
≤
x
)
=
∫
−
∞
x
f
(
t
)
d
t
F(x)=p(X\le x)=\int_{-\infty}^{x}f(t)dt
F(x)=p(X≤x)=∫−∞xf(t)dt其中,
−
∞
<
x
<
+
∞
-\infty < x < + \infty
−∞<x<+∞。分布函数是随机变量最重要的概率特征,分布函数可以完整地描述随机变量的统计规律。
分布函数和概率密度函数的关系:分布函数是概率密度函数曲线下小于
x
x
x的面积
5、均值和方差
凡是随机变量符合一定的分布,就有均值和方差。
VAE
VAE 模型是一种包含隐变量的生成模型,它利用神经网络训练得到两个函数(也称为推断网络和生成网络),进而生成输入数据中不包含的数据。
VAE的工作原理:
假如输入的图像特征是
X
X
X(这个
X
X
X代表很多特征点的集合,可以理解为随机变量),
X
X
X符合分布
P
(
X
)
P(X)
P(X),它的分布函数为
P
(
x
)
P(x)
P(x),VAE的目的就是通过估计出这个分布(即通过 VAE 模型的参数计算出来的特征符合
P
(
X
)
P(X)
P(X))。首先,
P
(
X
)
P(X)
P(X)可以看作是各种高斯混合分布的叠加(任意的数据分布,都可以由若干的
m
m
m个高斯分布组成),公式表示如下:
P
(
X
)
=
∑
P
(
z
)
P
(
x
∣
z
)
P(X)=\sum P(z)P(x|z)
P(X)=∑P(z)P(x∣z)
x
x
x表示随机变量
X
X
X的取值,
P
(
z
)
P(z)
P(z)是第
z
z
z个高斯分布,
P
(
x
∣
z
)
P(x|z)
P(x∣z)是取到第
m
m
m个高斯分布的概率(或权重)。
上面的情况表示的是有限个高斯分布的(离散)形式,但现实情况下,
P
(
X
)
P(X)
P(X)通常是由无限个的高斯组成的,因此,将其变成积分的形式,代表无限个高斯分布的组合。上式可以写为:
P
(
x
)
=
∫
z
P
(
z
)
P
(
x
∣
z
)
d
z
P(x)=\int_{z}P(z)P(x|z)dz
P(x)=∫zP(z)P(x∣z)dz
其中,
P
(
z
)
P(z)
P(z)表示高斯分布,
z
∼
N
(
0
,
1
)
z\sim N(0,1)
z∼N(0,1),而
P
(
x
∣
z
)
P(x|z)
P(x∣z)是未知的,可以立即为条件分布(在高斯分布
z
z
z出现的情况下,特征
x
x
x出现的概率满足的分布),它的均值和方差为,
x
∣
z
∼
N
(
μ
(
z
)
,
σ
(
z
)
)
x|z \sim N(\mu(z), \sigma(z))
x∣z∼N(μ(z),σ(z))。于是我们真正需要求解的就是
μ
(
z
)
\mu(z)
μ(z)和
σ
(
z
)
\sigma(z)
σ(z)的表达式,所以VAE引入encoder和decoder来求解。
第一个神经网络叫做Encoder,它求解的结果是
q
(
z
∣
x
)
q(z|x)
q(z∣x),
q
(
x
)
q(x)
q(x)可以代表任何分布。第二个神经网络叫做Decoder,它求解的是
μ
(
z
)
\mu(z)
μ(z)和
σ
(
z
)
\sigma(z)
σ(z),等价于求解
P
(
x
∣
z
)
P(x|z)
P(x∣z),其中,第一个神经网络Encoder的目的就是辅助第一个Decoder求解
P
(
x
∣
z
)
P(x|z)
P(x∣z)。
VAE的工作原理更深入:
上面讲到,模型的目的就是估计输入图像的特征(随机变量)
X
X
X的分布
P
(
X
)
P(X)
P(X),然后通过该分布生成符合该分布的新图像出来。由上面的介绍可知,分布函数
P
(
x
)
P(x)
P(x)表示的是随机变量
X
X
X的取值小于某一数值
x
x
x的概率,我们希望学习尽可能多的数据,即随机变量
X
X
X的取值范围足够大,所以
X
X
X的分布函数
P
(
x
)
P(x)
P(x)也越大,这等价于求解:
m
a
x
i
m
u
m
L
=
∑
x
l
o
g
P
(
x
)
maximum L=\sum_{x}logP(x)
maximumL=x∑logP(x)给定任意一个分布
q
(
x
)
q(x)
q(x),有
∫
z
q
(
z
)
q
(
x
∣
z
)
d
z
=
1
\int_{z}q(z)q(x|z)dz=1
∫zq(z)q(x∣z)dz=1,于是根据贝叶斯定理可以推导出:
l
o
g
P
(
x
)
=
l
o
g
∫
z
q
(
z
∣
x
)
P
(
x
)
d
z
=
∫
z
q
(
z
∣
x
)
l
o
g
P
(
z
,
x
)
P
(
z
∣
x
)
d
z
=
∫
z
q
(
z
∣
x
)
l
o
g
P
(
z
,
x
)
q
(
z
∣
x
)
⋅
q
(
z
∣
x
)
P
(
z
∣
x
)
d
z
=
∫
z
q
(
z
∣
x
)
l
o
g
P
(
z
,
x
)
q
(
z
∣
x
)
d
z
+
∫
z
q
(
z
∣
x
)
l
o
g
q
(
z
∣
x
)
P
(
z
∣
x
)
d
z
=
∫
z
q
(
z
∣
x
)
l
o
g
P
(
z
,
x
)
q
(
z
∣
x
)
d
z
+
K
L
(
q
(
z
∣
x
)
∣
∣
P
(
z
∣
x
)
)
\begin{align}logP(x)=log\int_{z}q(z|x)P(x)dz\\=\int_{z}q(z|x)log\frac{P(z,x)}{P(z|x)}dz\\ =\int_{z}q(z|x)log\frac{P(z,x)}{q(z|x)}\cdot\frac{q(z|x)}{P(z|x)}dz\\= \int_{z}q(z|x)log\frac{P(z,x)}{q(z|x)}dz+\int_{z}q(z|x)log\frac{q(z|x)}{P(z|x)}dz\\=\int_{z}q(z|x)log\frac{P(z,x)}{q(z|x)}dz+KL(q(z|x)||P(z|x))\end{align}
logP(x)=log∫zq(z∣x)P(x)dz=∫zq(z∣x)logP(z∣x)P(z,x)dz=∫zq(z∣x)logq(z∣x)P(z,x)⋅P(z∣x)q(z∣x)dz=∫zq(z∣x)logq(z∣x)P(z,x)dz+∫zq(z∣x)logP(z∣x)q(z∣x)dz=∫zq(z∣x)logq(z∣x)P(z,x)dz+KL(q(z∣x)∣∣P(z∣x))
(
5
)
(5)
(5)式中右边第二项为
q
(
z
∣
x
)
q(z|x)
q(z∣x)和
P
(
z
∣
x
)
P(z|x)
P(z∣x)两个分布之间的KL散度距离,根据KL公式性质,该项恒大于等于0,记:
L
b
=
∫
z
q
(
z
∣
x
)
l
o
g
P
(
z
,
x
)
q
(
z
∣
x
)
d
z
=
∫
z
q
(
z
∣
x
)
l
o
g
P
(
x
∣
z
)
⋅
P
(
z
)
q
(
z
∣
x
)
d
z
\begin{align}L_b=\int_{z}q(z|x)log\frac{P(z,x)}{q(z|x)}dz=\int_{z}q(z|x)log\frac{P(x|z)\cdot P(z)}{q(z|x)}dz\end{align}
Lb=∫zq(z∣x)logq(z∣x)P(z,x)dz=∫zq(z∣x)logq(z∣x)P(x∣z)⋅P(z)dz于是可以得到:
l
o
g
P
(
x
)
=
L
b
+
K
L
(
q
(
z
∣
x
)
∣
∣
P
(
z
∣
x
)
)
≥
L
b
\begin{align}logP(x)=L_b + KL(q(z|x)||P(z|x))\ge L_b\end{align}
logP(x)=Lb+KL(q(z∣x)∣∣P(z∣x))≥Lb
原来是要求使得
l
o
g
P
(
x
)
logP(x)
logP(x)最大化的
P
(
x
∣
z
)
P(x∣z)
P(x∣z),现在引入了一个
q
(
z
∣
x
)
q(z|x)
q(z∣x),就转换成了同时求
P
(
x
∣
z
)
P(x∣z)
P(x∣z)和
q
(
z
∣
x
)
q(z|x)
q(z∣x)使得
l
o
g
P
(
x
)
logP(x)
logP(x)最大化,不妨来观察下
l
o
g
P
(
x
)
logP(x)
logP(x)和
L
b
L_b
Lb的关系:
根据公式
P
(
x
)
=
∫
z
P
(
z
)
P
(
x
∣
z
)
d
z
P(x)=\int_zP(z)P(x|z)dz
P(x)=∫zP(z)P(x∣z)dz,当我们固定住
P
(
x
∣
z
)
P(x|z)
P(x∣z)时,由于
P
(
z
)
P(z)
P(z)是固定的,所以
P
(
x
)
P(x)
P(x)也是固定的,那么
l
o
g
P
(
x
)
logP(x)
logP(x)也就固定住了。而根据
6
6
6 式可知,如果调节
q
(
z
∣
x
)
q(z|x)
q(z∣x)使得分布
q
(
z
∣
x
)
q(z|x)
q(z∣x)与分布
P
(
z
∣
x
)
P(z|x)
P(z∣x)接近相等,即
L
b
L_b
Lb越来越大,如果分布
q
(
z
∣
x
)
q(z|x)
q(z∣x)与分布
P
(
z
∣
x
)
P(z|x)
P(z∣x)完全相等,即KL散度为0时,此时
L
b
L_b
Lb就完全等同于
l
o
g
P
(
x
)
logP(x)
logP(x)。所以,无论
l
o
g
P
(
x
)
logP(x)
logP(x)的值如何,总可以通过调节
q
(
z
∣
x
)
q(z|x)
q(z∣x)使得
L
b
L_b
Lb等于它,又因为
L
b
L_b
Lb是
l
o
g
P
(
x
)
logP(x)
logP(x)的下界,所以求解
m
a
x
l
o
g
P
(
x
)
max logP(x)
maxlogP(x)等价于求解:
m
a
x
i
m
u
m
(
L
b
)
\begin{align} maximum (L_b) \end{align}
maximum(Lb)
从宏观角度来看,调节
P
(
z
∣
x
)
P(z|x)
P(z∣x)就是相当于调节Decoder,调节
q
(
z
∣
x
)
q(z|x)
q(z∣x)就是调节Encoder,于是VAE模型的算法便是:Decoder每改进一次,Encoder就调节成跟其一致,并且利用约束项迫使Decoder在训练的时候“只能前进,不能后退”。这便是VAE的巧妙设计之处。
现在只需求解
m
a
x
i
m
u
m
(
L
b
)
maximum (L_b)
maximum(Lb),注意到:
L
b
=
∫
z
q
(
z
∣
x
)
l
o
g
P
(
x
∣
z
)
⋅
P
(
z
)
q
(
z
∣
x
)
d
z
=
∫
z
q
(
z
∣
x
)
l
o
g
P
(
z
)
q
(
z
∣
x
)
d
z
+
∫
z
q
(
z
∣
x
)
l
o
g
P
(
x
∣
z
)
d
z
=
−
K
L
(
q
(
z
∣
x
)
∣
∣
P
(
z
)
)
+
∫
z
q
(
z
∣
x
)
l
o
g
P
(
x
∣
z
)
d
z
\begin{align}L_b=\int_{z}q(z|x)log\frac{P(x|z)\cdot P(z)}{q(z|x)}dz\\=\int_{z}q(z|x)log\frac{P(z)}{q(z|x)}dz+\int_{z}q(z|x)log{P(x|z)}dz\\=-KL(q(z|x)||P(z))+\int_{z}q(z|x)log{P(x|z)}dz \end{align}
Lb=∫zq(z∣x)logq(z∣x)P(x∣z)⋅P(z)dz=∫zq(z∣x)logq(z∣x)P(z)dz+∫zq(z∣x)logP(x∣z)dz=−KL(q(z∣x)∣∣P(z))+∫zq(z∣x)logP(x∣z)dz
所以,求解
m
a
x
i
m
u
m
(
L
b
)
maximum (L_b)
maximum(Lb)等价于求解KL的最小值和KaTeX parse error: Expected '}', got 'EOF' at end of input: …(z|x)log{P(x|z)的最大值,第一项的展开式等于:
∑
i
=
1
j
e
x
p
(
σ
i
)
−
(
1
+
σ
i
)
+
(
m
i
)
2
\begin{align}\sum_{i=1}^{j}exp(\sigma_i)-(1+\sigma_i)+(m_i)^2\end{align}
i=1∑jexp(σi)−(1+σi)+(mi)2
于是,第一项式子就是第二节VAE模型架构中第二个损失函数的由来。
第二项注意到:
m
a
x
m
u
m
∫
z
q
(
z
∣
x
)
l
o
g
P
(
x
∣
z
)
d
z
=
m
a
x
m
u
m
E
q
(
z
∣
x
)
[
P
(
x
∣
z
)
]
\begin{align} maxmum \int_{z}q(z|x)logP(x|z)dz\\=maxmum E_{q(z|x)}[P(x|z)] \end{align}
maxmum∫zq(z∣x)logP(x∣z)dz=maxmumEq(z∣x)[P(x∣z)]
上述的这个期望,也就是表明在给定
q
(
z
∣
x
)
q(z|x)
q(z∣x)的情况下,
P
(
x
∣
z
)
P(x|z)
P(x∣z)的值尽可能高,第二项式子就是第二节VAE模型架构中第一个损失函数的由来。