论文阅读的附录(八):Understanding Diffusion Models: A Unified Perspective(五):逐步加噪评分匹配
Understanding Diffusion Models: A Unified Perspective(五):逐步加噪评分匹配
- 文章概括
- 1. Fisher 散度的定义
- 问题
- 2. 数学技巧:积分分部法(Integration by Parts)
- 2.1 回顾积分分部法
- 2.2 多维积分分部公式
- 3. 重新表达 Fisher 散度的第二项
- 3.1 第二项的原始形式
- 3.2 替换到 Fisher 散度
- 3.3 最终可优化的目标
- 4. 为什么重新表达后可以绕过真实得分函数?
- 5. 示例:一维高斯分布的评分匹配
- 5.1 真实得分函数
- 5.2 模型得分函数
- 5.3 Fisher 散度展开
- 6. 总结
文章概括
引用:
@article{luo2022understanding,
title={Understanding diffusion models: A unified perspective},
author={Luo, Calvin},
journal={arXiv preprint arXiv:2208.11970},
year={2022}
}
Luo, C., 2022. Understanding diffusion models: A unified perspective. arXiv preprint arXiv:2208.11970.
原文: https://arxiv.org/abs/2208.11970
代码、数据和视频:https://arxiv.org/abs/2208.11970
文章解析原文:
论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(五)
1. Fisher 散度的定义
Fisher 散度衡量模型得分函数
s
θ
(
x
)
s_\theta(x)
sθ(x) 和真实得分函数
∇
log
p
(
x
)
\nabla \log p(x)
∇logp(x) 的差异:
D
F
(
s
θ
,
∇
log
p
)
=
E
p
(
x
)
[
∥
s
θ
(
x
)
−
∇
log
p
(
x
)
∥
2
2
]
.
D_F(s_\theta, \nabla \log p) = \mathbb{E}_{p(x)} \left[ \| s_\theta(x) - \nabla \log p(x) \|_2^2 \right].
DF(sθ,∇logp)=Ep(x)[∥sθ(x)−∇logp(x)∥22].
展开平方项:
D
F
(
s
θ
,
∇
log
p
)
=
E
p
(
x
)
[
∥
s
θ
(
x
)
∥
2
2
]
−
2
E
p
(
x
)
[
s
θ
(
x
)
T
∇
log
p
(
x
)
]
+
E
p
(
x
)
[
∥
∇
log
p
(
x
)
∥
2
2
]
.
D_F(s_\theta, \nabla \log p) = \mathbb{E}_{p(x)} \left[ \| s_\theta(x) \|_2^2 \right] - 2 \mathbb{E}_{p(x)} \left[ s_\theta(x)^T \nabla \log p(x) \right] + \mathbb{E}_{p(x)} \left[ \| \nabla \log p(x) \|_2^2 \right].
DF(sθ,∇logp)=Ep(x)[∥sθ(x)∥22]−2Ep(x)[sθ(x)T∇logp(x)]+Ep(x)[∥∇logp(x)∥22].
问题
- 第三项 E p ( x ) [ ∥ ∇ log p ( x ) ∥ 2 2 ] \mathbb{E}_{p(x)} \left[ \| \nabla \log p(x) \|_2^2 \right] Ep(x)[∥∇logp(x)∥22] 与模型 s θ ( x ) s_\theta(x) sθ(x) 无关,因此可以忽略。
- 第二项 E p ( x ) [ s θ ( x ) T ∇ log p ( x ) ] \mathbb{E}_{p(x)} \left[ s_\theta(x)^T \nabla \log p(x) \right] Ep(x)[sθ(x)T∇logp(x)] 涉及真实得分函数 ∇ log p ( x ) \nabla \log p(x) ∇logp(x),我们无法直接计算。
目标:通过数学技巧,重新表达第二项,从而绕过对 ∇ log p ( x ) \nabla \log p(x) ∇logp(x) 的依赖。
2. 数学技巧:积分分部法(Integration by Parts)
2.1 回顾积分分部法
对于任意两个函数
u
(
x
)
u(x)
u(x) 和
v
(
x
)
v(x)
v(x),积分分部公式为:
∫
u
(
x
)
v
′
(
x
)
d
x
=
[
u
(
x
)
v
(
x
)
]
−
∫
u
′
(
x
)
v
(
x
)
d
x
.
\int u(x) \, v'(x) dx = \left[ u(x) v(x) \right] - \int u'(x) v(x) dx.
∫u(x)v′(x)dx=[u(x)v(x)]−∫u′(x)v(x)dx.
我们将其推广到多维情形,涉及梯度和散度(divergence)。
2.2 多维积分分部公式
假设
u
(
x
)
u(x)
u(x) 是一个标量函数,
v
(
x
)
v(x)
v(x) 是一个向量场,则:
∫
u
(
x
)
∇
⋅
v
(
x
)
d
x
=
∫
∇
u
(
x
)
⋅
v
(
x
)
d
x
.
\int u(x) \nabla \cdot v(x) \, dx = \int \nabla u(x) \cdot v(x) \, dx.
∫u(x)∇⋅v(x)dx=∫∇u(x)⋅v(x)dx.
如果
p
(
x
)
p(x)
p(x) 是概率密度函数,其积分在边界快速衰减为零,则有:
E
p
(
x
)
[
∇
⋅
v
(
x
)
]
=
−
E
p
(
x
)
[
∇
log
p
(
x
)
⋅
v
(
x
)
]
.
\mathbb{E}_{p(x)} \left[ \nabla \cdot v(x) \right] = -\mathbb{E}_{p(x)} \left[ \nabla \log p(x) \cdot v(x) \right].
Ep(x)[∇⋅v(x)]=−Ep(x)[∇logp(x)⋅v(x)].
3. 重新表达 Fisher 散度的第二项
3.1 第二项的原始形式
目标是重新表达:
E
p
(
x
)
[
s
θ
(
x
)
T
∇
log
p
(
x
)
]
.
\mathbb{E}_{p(x)} \left[ s_\theta(x)^T \nabla \log p(x) \right].
Ep(x)[sθ(x)T∇logp(x)].
利用积分分部公式:
E
p
(
x
)
[
s
θ
(
x
)
T
∇
log
p
(
x
)
]
=
−
E
p
(
x
)
[
∇
⋅
s
θ
(
x
)
]
.
\mathbb{E}_{p(x)} \left[ s_\theta(x)^T \nabla \log p(x) \right] = -\mathbb{E}_{p(x)} \left[ \nabla \cdot s_\theta(x) \right].
Ep(x)[sθ(x)T∇logp(x)]=−Ep(x)[∇⋅sθ(x)].
3.2 替换到 Fisher 散度
将第二项替换后,Fisher 散度变为:
D
F
(
s
θ
,
∇
log
p
)
=
E
p
(
x
)
[
∥
s
θ
(
x
)
∥
2
2
]
+
2
E
p
(
x
)
[
∇
⋅
s
θ
(
x
)
]
.
D_F(s_\theta, \nabla \log p) = \mathbb{E}_{p(x)} \left[ \| s_\theta(x) \|_2^2 \right] + 2 \mathbb{E}_{p(x)} \left[ \nabla \cdot s_\theta(x) \right].
DF(sθ,∇logp)=Ep(x)[∥sθ(x)∥22]+2Ep(x)[∇⋅sθ(x)].
这是一种可计算的目标函数,因为:
- 第一个期望项 E p ( x ) [ ∥ s θ ( x ) ∥ 2 2 ] \mathbb{E}_{p(x)} \left[ \| s_\theta(x) \|_2^2 \right] Ep(x)[∥sθ(x)∥22] 只依赖于模型 s θ ( x ) s_\theta(x) sθ(x)。
- 第二个期望项 E p ( x ) [ ∇ ⋅ s θ ( x ) ] \mathbb{E}_{p(x)} \left[ \nabla \cdot s_\theta(x) \right] Ep(x)[∇⋅sθ(x)] 是散度,模型 s θ ( x ) s_\theta(x) sθ(x) 的梯度也可计算。
3.3 最终可优化的目标
最终,我们无需知道真实得分函数
∇
log
p
(
x
)
\nabla \log p(x)
∇logp(x),即可优化模型
s
θ
(
x
)
s_\theta(x)
sθ(x):
E
p
(
x
)
[
∥
s
θ
(
x
)
∥
2
2
+
2
∇
⋅
s
θ
(
x
)
]
.
\mathbb{E}_{p(x)} \left[ \| s_\theta(x) \|_2^2 + 2 \nabla \cdot s_\theta(x) \right].
Ep(x)[∥sθ(x)∥22+2∇⋅sθ(x)].
4. 为什么重新表达后可以绕过真实得分函数?
重新表达后:
- ∥ s θ ( x ) ∥ 2 2 \| s_\theta(x) \|_2^2 ∥sθ(x)∥22:完全依赖模型 s θ ( x ) s_\theta(x) sθ(x),直接计算。
- ∇ ⋅ s θ ( x ) \nabla \cdot s_\theta(x) ∇⋅sθ(x):是模型的散度,也完全可计算。
- 原始目标中的 ∇ log p ( x ) \nabla \log p(x) ∇logp(x) 被替换掉,因此不再依赖真实数据分布的得分函数。
5. 示例:一维高斯分布的评分匹配
假设数据分布为一维标准正态分布:
p
(
x
)
=
1
2
π
e
−
x
2
2
.
p(x) = \frac{1}{\sqrt{2\pi}} e^{-\frac{x^2}{2}}.
p(x)=2π1e−2x2.
5.1 真实得分函数
真实得分函数为:
∇
log
p
(
x
)
=
−
x
.
\nabla \log p(x) = -x.
∇logp(x)=−x.
5.2 模型得分函数
假设模型得分函数为 s θ ( x ) = − θ x s_\theta(x) = -\theta x sθ(x)=−θx,其中 θ \theta θ 是待学习的参数。
5.3 Fisher 散度展开
展开 Fisher 散度:
D
F
(
s
θ
,
∇
log
p
)
=
E
p
(
x
)
[
∥
s
θ
(
x
)
−
∇
log
p
(
x
)
∥
2
2
]
.
D_F(s_\theta, \nabla \log p) = \mathbb{E}_{p(x)} \left[ \| s_\theta(x) - \nabla \log p(x) \|_2^2 \right].
DF(sθ,∇logp)=Ep(x)[∥sθ(x)−∇logp(x)∥22].
重新表达目标:
E
p
(
x
)
[
s
θ
(
x
)
2
]
+
2
E
p
(
x
)
[
∇
⋅
s
θ
(
x
)
]
.
\mathbb{E}_{p(x)} \left[ s_\theta(x)^2 \right] + 2 \mathbb{E}_{p(x)} \left[ \nabla \cdot s_\theta(x) \right].
Ep(x)[sθ(x)2]+2Ep(x)[∇⋅sθ(x)].
具体计算:
- E p ( x ) [ s θ ( x ) 2 ] = θ 2 E p ( x ) [ x 2 ] = θ 2 . \mathbb{E}_{p(x)} \left[ s_\theta(x)^2 \right] = \theta^2 \mathbb{E}_{p(x)} \left[ x^2 \right] = \theta^2. Ep(x)[sθ(x)2]=θ2Ep(x)[x2]=θ2.
- ∇ ⋅ s θ ( x ) = − θ . \nabla \cdot s_\theta(x) = -\theta. ∇⋅sθ(x)=−θ.
最终目标:
D
F
(
s
θ
,
∇
log
p
)
=
θ
2
−
2
θ
.
D_F(s_\theta, \nabla \log p) = \theta^2 - 2\theta.
DF(sθ,∇logp)=θ2−2θ.
通过优化 D F D_F DF,我们可以得到最优参数 θ = 1 \theta = 1 θ=1,使得 s θ ( x ) = ∇ log p ( x ) = − x s_\theta(x) = \nabla \log p(x) = -x sθ(x)=∇logp(x)=−x。
6. 总结
通过积分分部法,Fisher 散度中的真实得分函数 ∇ log p ( x ) \nabla \log p(x) ∇logp(x) 被散度项 ∇ ⋅ s θ ( x ) \nabla \cdot s_\theta(x) ∇⋅sθ(x) 替代。评分匹配无需直接访问 ∇ log p ( x ) \nabla \log p(x) ∇logp(x),使得在未知真实分布的情况下也能训练得分函数。