Explicit Score Matching:显式分数匹配的原理与应用
在生成模型的研究中,分数匹配(Score Matching)是一种重要的方法,用于从数据样本中学习概率分布的特性。Explicit Score Matching(显式分数匹配)是其中的一种经典形式,它通过核密度估计(Kernel Density Estimation, KDE)来近似真实分布的分数函数,并基于此定义损失函数来训练网络。本篇博客将面向具有大模型理论基础的研究者,详细介绍 Explicit Score Matching 的原理、推导及其在生成过程中的应用,同时探讨其优缺点。
什么是分数匹配?
在概率建模中,分数函数(Score Function)定义为概率密度函数的对数梯度,即 (
∇
x
log
p
(
x
)
\nabla_x \log p(x)
∇xlogp(x) )。它描述了密度在每个点上的变化方向和幅度,是生成模型(如扩散模型)中常用的工具。分数匹配的目标是训练一个参数化模型 (
s
θ
(
x
)
s_\theta(x)
sθ(x) )(通常是一个神经网络),使其尽可能接近真实分布 (
p
(
x
)
p(x)
p(x) ) 的分数函数:
s
θ
(
x
)
≈
∇
x
log
p
(
x
)
s_\theta(x) \approx \nabla_x \log p(x)
sθ(x)≈∇xlogp(x)
然而,问题在于真实分布 (
p
(
x
)
p(x)
p(x) ) 通常是未知的,我们只有有限的样本 (
X
=
{
x
(
1
)
,
x
(
2
)
,
…
,
x
(
M
)
}
X = \{x^{(1)}, x^{(2)}, \dots, x^{(M)}\}
X={x(1),x(2),…,x(M)} )。Explicit Score Matching 通过核密度估计解决了这一难题。
Explicit Score Matching 的核心思想
核密度估计 ( q h ( x ) q_h(x) qh(x) )
由于 (
p
(
x
)
p(x)
p(x) ) 不可知,Explicit Score Matching 使用核密度估计 (
q
h
(
x
)
q_h(x)
qh(x) ) 来近似它:
q
h
(
x
)
=
1
M
∑
m
=
1
M
1
h
K
(
x
−
x
(
m
)
h
)
q_h(x) = \frac{1}{M} \sum_{m=1}^M \frac{1}{h} K\left( \frac{x - x^{(m)}}{h} \right)
qh(x)=M1m=1∑Mh1K(hx−x(m))
其中 (
K
(
⋅
)
K(\cdot)
K(⋅) ) 是核函数(如高斯核),(
h
h
h ) 是带宽超参数。这种方法通过在每个样本点周围放置一个平滑核,并取平均值,构造了一个连续的密度估计(详情可参考笔者的博客:经典核密度估计(Kernel Density Estimation):从直觉到数学)。
损失函数的定义
Explicit Score Matching 的损失函数基于分数匹配的直觉,即让 (
s
θ
(
x
)
s_\theta(x)
sθ(x) ) 接近 (
∇
x
log
p
(
x
)
\nabla_x \log p(x)
∇xlogp(x) )。由于 (
p
(
x
)
p(x)
p(x) ) 未知,我们用 (
q
h
(
x
)
q_h(x)
qh(x) ) 替代,定义损失为:
J
ESM
(
θ
)
=
1
2
E
p
(
x
)
∥
s
θ
(
x
)
−
∇
x
log
p
(
x
)
∥
2
2
≈
1
2
E
q
h
(
x
)
∥
s
θ
(
x
)
−
∇
x
log
q
h
(
x
)
∥
2
2
J_{\text{ESM}}(\theta) = \frac{1}{2} \mathbb{E}_{p(x)} \| s_\theta(x) - \nabla_x \log p(x) \|_2^2 \approx \frac{1}{2} \mathbb{E}_{q_h(x)} \| s_\theta(x) - \nabla_x \log q_h(x) \|_2^2
JESM(θ)=21Ep(x)∥sθ(x)−∇xlogp(x)∥22≈21Eqh(x)∥sθ(x)−∇xlogqh(x)∥22
将其展开为积分形式:
J
ESM
(
θ
)
=
∫
∥
s
θ
(
x
)
−
∇
x
log
q
h
(
x
)
∥
2
2
q
h
(
x
)
d
x
J_{\text{ESM}}(\theta) = \int \| s_\theta(x) - \nabla_x \log q_h(x) \|_2^2 q_h(x) \, dx
JESM(θ)=∫∥sθ(x)−∇xlogqh(x)∥22qh(x)dx
代入 (
q
h
(
x
)
q_h(x)
qh(x) ) 的表达式,损失变为:
J
ESM
(
θ
)
≈
1
M
∑
m
=
1
M
∫
∥
s
θ
(
x
)
−
∇
x
log
q
h
(
x
)
∥
2
2
1
h
K
(
x
−
x
(
m
)
h
)
d
x
J_{\text{ESM}}(\theta) \approx \frac{1}{M} \sum_{m=1}^M \int \| s_\theta(x) - \nabla_x \log q_h(x) \|_2^2 \frac{1}{h} K\left( \frac{x - x^{(m)}}{h} \right) \, dx
JESM(θ)≈M1m=1∑M∫∥sθ(x)−∇xlogqh(x)∥22h1K(hx−x(m))dx
这个损失函数可以通过蒙特卡洛近似计算,用于训练网络 (
s
θ
(
x
)
s_\theta(x)
sθ(x) )。
计算 ( ∇ x log q h ( x ) \nabla_x \log q_h(x) ∇xlogqh(x) )
为了实现损失函数,我们需要计算 (
q
h
(
x
)
q_h(x)
qh(x) ) 的分数函数。令:
q
h
(
x
)
=
1
M
∑
m
=
1
M
k
m
(
x
)
,
k
m
(
x
)
=
1
h
K
(
x
−
x
(
m
)
h
)
q_h(x) = \frac{1}{M} \sum_{m=1}^M k_m(x), \quad k_m(x) = \frac{1}{h} K\left( \frac{x - x^{(m)}}{h} \right)
qh(x)=M1m=1∑Mkm(x),km(x)=h1K(hx−x(m))
则:
log
q
h
(
x
)
=
log
(
1
M
∑
m
=
1
M
k
m
(
x
)
)
\log q_h(x) = \log \left( \frac{1}{M} \sum_{m=1}^M k_m(x) \right)
logqh(x)=log(M1m=1∑Mkm(x))
对 (
x
x
x ) 求梯度:
∇
x
log
q
h
(
x
)
=
∇
x
q
h
(
x
)
q
h
(
x
)
=
∑
m
=
1
M
∇
x
k
m
(
x
)
∑
m
=
1
M
k
m
(
x
)
\nabla_x \log q_h(x) = \frac{\nabla_x q_h(x)}{q_h(x)} = \frac{\sum_{m=1}^M \nabla_x k_m(x)}{\sum_{m=1}^M k_m(x)}
∇xlogqh(x)=qh(x)∇xqh(x)=∑m=1Mkm(x)∑m=1M∇xkm(x)
对于核函数 (
K
(
u
)
K(u)
K(u) ),令 (
u
=
x
−
x
(
m
)
h
u = \frac{x - x^{(m)}}{h}
u=hx−x(m) ),则:
∇
x
k
m
(
x
)
=
∇
x
[
1
h
K
(
x
−
x
(
m
)
h
)
]
=
1
h
2
K
′
(
x
−
x
(
m
)
h
)
\nabla_x k_m(x) = \nabla_x \left[ \frac{1}{h} K\left( \frac{x - x^{(m)}}{h} \right) \right] = \frac{1}{h^2} K'\left( \frac{x - x^{(m)}}{h} \right)
∇xkm(x)=∇x[h1K(hx−x(m))]=h21K′(hx−x(m))
因此,分数函数是一个加权和,具体形式依赖于 (
K
(
⋅
)
K(\cdot)
K(⋅) ) 的导数。
应用:Langevin 动力学
训练好 (
s
θ
(
x
)
s_\theta(x)
sθ(x) ) 后,可以将其用于生成样本。Explicit Score Matching 常与 Langevin 动力学结合,迭代公式为:
x
t
+
1
=
x
t
+
τ
s
θ
(
x
t
)
+
2
τ
z
,
z
∼
N
(
0
,
I
)
\mathbf{x}_{t+1} = \mathbf{x}_t + \tau s_\theta(\mathbf{x}_t) + \sqrt{2\tau} \mathbf{z}, \quad \mathbf{z} \sim \mathcal{N}(0, \mathbf{I})
xt+1=xt+τsθ(xt)+2τz,z∼N(0,I)
其中 (
τ
\tau
τ) 是步长。这类似于扩散模型中的采样过程,但依赖于显式估计的分数函数。
Explicit Score Matching 的优缺点
- 优点:
- 直观性:直接基于核密度估计,避免了对 ( p ( x ) p(x) p(x) ) 的参数化假设。
- 理论基础:与经典统计方法(如 KDE)紧密相关,易于理解。
- 缺点:
- 核密度估计的局限:当样本量 ( M M M ) 有限或数据维度较高时,( q h ( x ) q_h(x) qh(x) ) 对 ( p ( x ) p(x) p(x) ) 的近似效果较差,导致 ( ∇ x log q h ( x ) \nabla_x \log q_h(x) ∇xlogqh(x) ) 不准确。
- 计算复杂度:计算 ( ∇ x log q h ( x ) \nabla_x \log q_h(x) ∇xlogqh(x) ) 需要对所有样本求和,效率低下。
与大模型的联系
作为大模型研究者,你可能注意到 Explicit Score Matching 与扩散模型(DDPM、DDIM)有相似之处。扩散模型也依赖分数函数,但通过神经网络直接学习 ( ϵ ^ θ ( x t ) \widehat{\boldsymbol{\epsilon}}_\theta(x_t) ϵ θ(xt) )(与分数相关),而不是显式估计 ( q h ( x ) q_h(x) qh(x) )。Explicit Score Matching 的核密度估计方法在现代深度学习中较少直接使用,但其思想启发了 Implicit Score Matching 等改进方法,后者通过避免显式计算 ( ∇ x log q h ( x ) \nabla_x \log q_h(x) ∇xlogqh(x) ) 提高了效率。
总结
Explicit Score Matching 是一种基于核密度估计的经典分数匹配方法,通过定义一个可计算的损失函数来训练分数模型。尽管它在高维数据和有限样本下的表现受限,但其理论清晰且直观,是理解生成模型(如 Score-Based Generative Modeling)的重要起点。对于熟悉大模型的你来说,它可以看作是从传统统计到深度学习的桥梁,值得一看!
后记
2025年3月7日20点19分于上海,在Grok 3大模型辅助下完成。