分数函数
Why Score Function?
之前,我们使用流匹配来训练流模型。为了训练扩散模型,我们则使用了一个不同的工具 分数函数 Score Function 。
在流匹配中,我们通过学习一个向量场来推动数据分布的演化。而在扩散模型中,我们需要一个能够描述数据分布局部结构的工具,这就是分数函数。
在训练一个简单的分类器时,我们训练一个输出各个类别维度分数的模型,然后使用Softmax函数将其归一化成概率分布,可以写成 p ( x ) = p ~ ( x ) Z p(x) = \frac{\tilde{p}(x)}{Z} p ( x ) = Z p ~ ( x ) ,其中 p ~ ( x ) \tilde{p}(x) p ~ ( x ) 是非归一化的概率模型,而 Z = ∫ p ~ ( x ) d x Z = \int \tilde{p}(x) dx Z = ∫ p ~ ( x ) d x 是被称为配分函数的归一化常数 。
而在扩散模型中,我们要做的是预测一整张图片状态的概率分布——不同于用ImageNet训练的只有1000种分类的分类器,我们需要预测H e i g h t × W i d t h × 3 Height \times Width \times 3 He i g h t × Wi d t h × 3 甚至更大维度的分布。在极高维度的空间中,计算配分函数 Z Z Z 涉及对整个状态空间的积分,这在计算上是不可解的。
分数函数的引入,正是为了优雅地绕过这一理论瓶颈。
分数函数的定义
对于任何概率分布 q ( x ) q(x) q ( x ) ,其分数函数被定义为该分布对数似然函数对空间坐标的梯度,即:
s ( x ) = ∇ x log q ( x ) s(x) = \nabla_x \log q(x)
s ( x ) = ∇ x log q ( x )
也就是x x x 对数似然的梯度。从代数角度看,由于配分函数 Z Z Z 并不依赖于空间变量 x x x ,对其求梯度后,常数项自然消去:∇ x log p ( x ) = ∇ x log p ~ ( x ) − ∇ x log Z = ∇ x log p ~ ( x ) \nabla_x \log p(x) = \nabla_x \log \tilde{p}(x) - \nabla_x \log Z = \nabla_x \log \tilde{p}(x) ∇ x log p ( x ) = ∇ x log p ~ ( x ) − ∇ x log Z = ∇ x log p ~ ( x ) 。这意味着,只要我们能够对非归一化的模型求导,就能完全避开对 Z Z Z 的计算 。
分数函数定义了一个遍布于整个数据空间的连续向量场。在状态空间中的任意一点 x x x ,分数向量始终精确地指向概率密度上升最快(即数据最为密集、最符合真实数据流形)的方向 。扩散模型的本质,就是学习这一遍布全局的导航地图,进而指导初始的纯粹噪声粒子通过迭代演化,稳步驶向真实的数据流形 。
条件分数函数与边缘分数函数
在扩散模型与流匹配的数学描述中,演化过程并非静态的,而是由一个时间参数 t t t 控制的概率路径。这一路径在 t = 0 t=0 t = 0 时刻连接初始的简单噪声分布 p i n i t p_{init} p ini t ,在 t = 1 t=1 t = 1 时刻连接复杂的目标数据分布 p d a t a p_{data} p d a t a 。为了精确控制这一演化,我们需要在微观和宏观两个层面对系统进行刻画,这就引入了条件分数函数与边缘分数函数的概念。
定义与演化
令 δ z \delta_z δ z 表示集中在真实数据点 z ∈ R d z \in \mathbb{R}^d z ∈ R d 的狄拉克分布。条件概率路径 p t ( x ∣ z ) p_t(x|z) p t ( x ∣ z ) 刻画了单个数据点 z z z 在向纯噪声回溯(或从噪声向数据生成)过程中,时刻 t t t 的概率分布形态。它必须满足在 t = 0 t=0 t = 0 时 p 0 ( ⋅ ∣ z ) = p i n i t p_0(\cdot|z) = p_{init} p 0 ( ⋅ ∣ z ) = p ini t ,在 t = 1 t=1 t = 1 时 p 1 ( ⋅ ∣ z ) = δ z p_1(\cdot|z) = \delta_z p 1 ( ⋅ ∣ z ) = δ z 的边界条件 。对应的条件分数函数即为 ∇ log p t ( x ∣ z ) \nabla \log p_t(x|z) ∇ log p t ( x ∣ z ) 。
相较于微观的条件演化,边缘概率路径 p t ( x ) p_t(x) p t ( x ) 则描绘了整个数据集构成的概率分布随时间的宏观演进。它是条件路径对整个数据分布 p d a t a ( z ) p_{data}(z) p d a t a ( z ) 取期望的结果,即 p t ( x ) = ∫ p t ( x ∣ z ) p d a t a ( z ) d z p_t(x) = \int p_t(x|z)p_{data}(z) dz p t ( x ) = ∫ p t ( x ∣ z ) p d a t a ( z ) d z 。自然地,刻画整个群体演化方向的宏观向导,即为边缘分数函数 ∇ log p t ( x ) \nabla \log p_t(x) ∇ log p t ( x ) 。
边缘分布函数的导出
连接已知但局部的条件分数函数与未知但全局所需的边缘分数函数,是生成模型数学框架中的一大挑战。通过精妙的微积分与概率论变换,两者之间可以建立严密的积分恒等式。具体推导步骤如下 :
根据对数求导法则 ∂ y log y = 1 y \partial_y \log y = \frac{1}{y} ∂ y log y = y 1 以及微积分的链式法则,边缘分数函数可展开为:
∇ log p t ( x ) = ∇ p t ( x ) p t ( x ) \nabla \log p_t(x) = \frac{\nabla p_t(x)}{p_t(x)}
∇ log p t ( x ) = p t ( x ) ∇ p t ( x )
将边缘分布的积分形式 p t ( x ) = ∫ p t ( x ∣ z ) p d a t a ( z ) d z p_t(x) = \int p_t(x|z)p_{data}(z) dz p t ( x ) = ∫ p t ( x ∣ z ) p d a t a ( z ) d z 代入分子,由于积分是对 z z z 进行的,而梯度算子 ∇ \nabla ∇ 是对 x x x 求导,在满足一定正则性条件的前提下,可以将梯度算子直接移入积分符号内部:
∇ log p t ( x ) = ∇ ∫ p t ( x ∣ z ) p d a t a ( z ) d z p t ( x ) = ∫ ∇ p t ( x ∣ z ) p d a t a ( z ) d z p t ( x ) \nabla \log p_t(x) = \frac{\nabla \int p_t(x|z)p_{data}(z) dz}{p_t(x)} = \frac{\int \nabla p_t(x|z) p_{data}(z) dz}{p_t(x)}
∇ log p t ( x ) = p t ( x ) ∇ ∫ p t ( x ∣ z ) p d a t a ( z ) d z = p t ( x ) ∫ ∇ p t ( x ∣ z ) p d a t a ( z ) d z
接下来,进行一步关键的代数恒等变换,利用 ∇ p t ( x ∣ z ) = p t ( x ∣ z ) ∇ log p t ( x ∣ z ) \nabla p_t(x|z) = p_t(x|z) \nabla \log p_t(x|z) ∇ p t ( x ∣ z ) = p t ( x ∣ z ) ∇ log p t ( x ∣ z ) 将分子重写为包含条件分数的乘积形式:
∇ log p t ( x ) = ∫ [ p t ( x ∣ z ) ∇ log p t ( x ∣ z ) ] p d a t a ( z ) d z p t ( x ) \nabla \log p_t(x) = \frac{\int \left[ p_t(x|z) \nabla \log p_t(x|z) \right] p_{data}(z) dz}{p_t(x)}
∇ log p t ( x ) = p t ( x ) ∫ [ p t ( x ∣ z ) ∇ log p t ( x ∣ z ) ] p d a t a ( z ) d z
重排项,将包含概率密度的部分组合在一起:
∇ log p t ( x ) = ∫ ∇ log p t ( x ∣ z ) p t ( x ∣ z ) p d a t a ( z ) p t ( x ) d z \nabla \log p_t(x) = \int \nabla \log p_t(x|z) \frac{p_t(x|z)p_{data}(z)}{p_t(x)} dz
∇ log p t ( x ) = ∫ ∇ log p t ( x ∣ z ) p t ( x ) p t ( x ∣ z ) p d a t a ( z ) d z
观察公式中作为积分权重的分数项 p t ( x ∣ z ) p d a t a ( z ) p t ( x ) \frac{p_t(x|z)p_{data}(z)}{p_t(x)} p t ( x ) p t ( x ∣ z ) p d a t a ( z ) ,根据贝叶斯定理,这精确地等价于后验分布 p t ( z ∣ x ) p_t(z|x) p t ( z ∣ x ) ,即在当前时刻观察到被破坏的噪声样本 x x x 的前提下,推断其原始未被破坏的干净数据究竟是哪一个点 z z z 的概率分布。
因此,宏观的边缘分数函数,本质上是微观条件分数函数在贝叶斯后验分布下的期望。即:位于状态空间坐标 x x x 处的粒子,它并不知道自己究竟是从哪个真实的原始图像 z z z 退化而来的。为了决定下一步该向哪里移动(以增加概率密度),它会“环顾四周”并计算自己源自每一个可能的 z z z 的可能性(后验概率)。随后,它将所有这些指向具体目标 z z z 的牵引力(条件分数)按照可能性大小进行加权平均。
高斯路径下的解析解与向量场
条件分数函数的解析形式
设定连续可微且单调的噪声调度函数 α t \alpha_t α t 与 β t \beta_t β t 。为了满足 p 0 = p i n i t p_0=p_{init} p 0 = p ini t (纯噪声)与 p 1 = δ z p_1=\delta_z p 1 = δ z (纯数据)的边界条件,我们通常要求 α 0 = 0 , β 0 = 1 \alpha_0=0, \beta_0=1 α 0 = 0 , β 0 = 1 以及 α 1 = 1 , β 1 = 0 \alpha_1=1, \beta_1=0 α 1 = 1 , β 1 = 0 。此时,条件概率路径被定义为均值为 α t z \alpha_t z α t z ,协方差为 β t 2 I d \beta_t^2 I_d β t 2 I d 的高斯分布 :
p t ( x ∣ z ) = N ( x ; α t z , β t 2 I d ) p_t(x|z) = \mathcal{N}(x; \alpha_t z, \beta_t^2 I_d)
p t ( x ∣ z ) = N ( x ; α t z , β t 2 I d )
对于多维高斯分布,其密度函数的形式为 ( 2 π β t 2 ) − d 2 exp ( − ∥ x − α t z ∥ 2 2 β t 2 ) (2\pi\beta_t^2)^{-\frac{d}{2}} \exp\left( -\frac{\|x - \alpha_t z\|^2}{2\beta_t^2} \right) ( 2 π β t 2 ) − 2 d exp ( − 2 β t 2 ∥ x − α t z ∥ 2 ) 。两边同时取自然对数并计算对空间坐标 x x x 的梯度,可以极为简单地求得其条件分数函数 :
∇ log p t ( x ∣ z ) = ∇ x [ − d 2 log ( 2 π β t 2 ) − 1 2 β t 2 ∥ x − α t z ∥ 2 ] = − x − α t z β t 2 \nabla \log p_t(x|z) = \nabla_x \left[ -\frac{d}{2} \log(2\pi\beta_t^2) - \frac{1}{2\beta_t^2} \|x - \alpha_t z\|^2 \right] = -\frac{x - \alpha_t z}{\beta_t^2}
∇ log p t ( x ∣ z ) = ∇ x [ − 2 d log ( 2 π β t 2 ) − 2 β t 2 1 ∥ x − α t z ∥ 2 ] = − β t 2 x − α t z
这一解析公式展示了高斯扩散过程的核心特性:条件分数函数是一个关于当前状态 x x x 和目标数据点 z z z 的线性函数。负号表明该力是一个“回复力”,永远指向被缩放的原始数据中心 α t z \alpha_t z α t z 。同时,偏差被方差 β t 2 \beta_t^2 β t 2 缩放,这意味着当方差(噪声)很大时,指引力的强度较弱;当方差趋近于零时,指引力急剧增强,迫使轨迹收敛于真实目标。
向量场与分数函数的数学等价性 在流匹配的语境下,驱动概率密度演化的核心引擎是常微分方程及其对应的目标向量场 u t t a r g e t ( x ∣ z ) u_t^{target}(x|z) u t t a r g e t ( x ∣ z ) 。而扩散模型的引擎则是随机微分方程及其分数函数。这两种视角曾经在学术界平行发展,但事实上它们之间存在严格且简单的转换关系 。 根据流匹配的基础理论,高斯路径对应的条件向量场具有如下形式:
u t t a r g e t ( x ∣ z ) = ( α ˙ t − β ˙ t β t α t ) z + β ˙ t β t x u_t^{target}(x|z) = \left( \dot{\alpha}_t - \frac{\dot{\beta}_t}{\beta_t} \alpha_t \right) z + \frac{\dot{\beta}_t}{\beta_t} x
u t t a r g e t ( x ∣ z ) = ( α ˙ t − β t β ˙ t α t ) z + β t β ˙ t x
通过巧妙的代数配凑,可以将条件分数函数 ∇ log p t ( x ∣ z ) \nabla \log p_t(x|z) ∇ log p t ( x ∣ z ) 的线性表达式代入上式。在此过程中,定义时间依赖的系数 a t a_t a t 和 b t b_t b t 如下 :
a t = β t 2 α ˙ t α t − β ˙ t β t a_t = \beta_t^2 \frac{\dot{\alpha}_t}{\alpha_t} - \dot{\beta}_t \beta_t
a t = β t 2 α t α ˙ t − β ˙ t β t
b t = α ˙ t α t b_t = \frac{\dot{\alpha}_t}{\alpha_t}
b t = α t α ˙ t
由此可得:
u t t a r g e t ( x ∣ z ) = ( β t 2 α ˙ t α t − β ˙ t β t ) ( α t z − x β t 2 ) + α ˙ t α t x u_t^{target}(x|z) = \left( \beta_t^2 \frac{\dot{\alpha}_t}{\alpha_t} - \dot{\beta}_t \beta_t \right) \left( \frac{\alpha_t z - x}{\beta_t^2} \right) + \frac{\dot{\alpha}_t}{\alpha_t} x
u t t a r g e t ( x ∣ z ) = ( β t 2 α t α ˙ t − β ˙ t β t ) ( β t 2 α t z − x ) + α t α ˙ t x
u t t a r g e t ( x ∣ z ) = a t ∇ log p t ( x ∣ z ) + b t x u_t^{target}(x|z) = a_t \nabla \log p_t(x|z) + b_t x
u t t a r g e t ( x ∣ z ) = a t ∇ log p t ( x ∣ z ) + b t x
由于这一关系对所有的 z z z 都是线性的,当我们对两边同时根据贝叶斯后验分布进行积分边缘化时,系数 a t a_t a t 和 b t b_t b t 仅依赖于时间而非空间变量,可直接提至积分号外,从而得到:
u t t a r g e t ( x ) = a t ∇ log p t ( x ) + b t x u_t^{target}(x) = a_t \nabla \log p_t(x) + b_t x
u t t a r g e t ( x ) = a t ∇ log p t ( x ) + b t x
它明确表明:在确定的高斯概率路径下,学习边缘目标向量场与学习边缘分数函数是完全等价的命题 。对于任何一个给定的模型输出,我们总是能够通过上述简单的线性变换,在常微分向量场和随机分数场之间无缝切换。
Denoiser 重参数化
对这一线性关系的进一步提炼,催生了所谓的 去噪器 Denoiser 视角。条件向量场与条件分数函数本质上都是关于目标 z z z 及其自身观测值 x x x 的线性重组。如果我们在边缘化时,定义边缘去噪器 D t ( x ) D_t(x) D t ( x ) 为后验分布下的期望均值:
D t ( x ) = ∫ z p t ( x ∣ z ) p d a t a ( z ) p t ( x ) d z = E z ∣ x [ z ] D_t(x) = \int z \frac{p_t(x|z)p_{data}(z)}{p_t(x)} dz = \mathbb{E}_{z|x}[z]
D t ( x ) = ∫ z p t ( x ) p t ( x ∣ z ) p d a t a ( z ) d z = E z ∣ x [ z ]
根据等价推导,我们只需获得去噪器对最优原始图像的预测,就能立即恢复出无条件向量场和分数函数。在深度学习的工程实践中,由于分数函数在纯噪声阶段其模长可能极大(引发梯度爆炸),直接让神经网络预测分数有时会在数值上显得脆弱。而预测有界的原始图像(归一化至 [ − 1 , 1 ] [-1, 1] [ − 1 , 1 ] )或归一化的高斯残差,则能够提供更好的数值稳定性。这也是为何当代诸多生成模型虽然底层的理论基础是分数匹配或流匹配,在实现层面上却常常自称为“去噪扩散概率模型”(DDPM)的重要原因所在 。
基于 SDE 的概率采样
在深刻理解了 ODE 体系中向量场的性质后,我们必然要将目光投向更具泛化性和鲁棒性的随机微分方程体系。扩散模型的精髓之一,就在于其不仅能构建平滑的确定性曲线,更能在高维空间中运用扩散原理,通过引入并对消随机噪声,探索并生成更高质量、更多样化的样本 。
SDE Extension Trick
可以将确定性的常微分方程轨迹扩展为携带随机扰动项的概率轨迹,而该随机轨迹在任意宏观时刻其截面分布依然精准匹配既定的边缘概率路径 p t ( x ) p_t(x) p t ( x ) 。这一绝妙的机制被提炼为 SDE Extension Trick:
对于任意用户定义的时间依赖的扩散系数 σ t ≥ 0 \sigma_t \ge 0 σ t ≥ 0 ,我们可以构造如下结构的随机微分方程:
d X t = [ u t t a r g e t ( X t ) + σ t 2 2 ∇ log p t ( X t ) ] d t + σ t d W t dX_t = \left[ u_t^{target}(X_t) + \frac{\sigma_t^2}{2} \nabla \log p_t(X_t) \right] dt + \sigma_t dW_t
d X t = [ u t t a r g e t ( X t ) + 2 σ t 2 ∇ log p t ( X t ) ] d t + σ t d W t
这里的初始条件为 X 0 ∼ p i n i t X_0 \sim p_{init} X 0 ∼ p ini t 。在这个方程中,项 σ t d W t \sigma_t dW_t σ t d W t 引入了标准布朗运动,它的作用是在系统的演化中加入持续不断的随机热涨落。然而,单纯的布朗运动会使得原本聚焦的分布变得日益平坦涣散(即增加分布的熵)。为了抵消这种无序性并在宏观分布上维持原定的流形演化,方程在漂移系数中巧妙地增加了一个极具补偿性质的项:σ t 2 2 ∇ log p t ( X t ) \frac{\sigma_t^2}{2} \nabla \log p_t(X_t) 2 σ t 2 ∇ log p t ( X t ) 。
分数函数 ∇ log p t ( X t ) \nabla \log p_t(X_t) ∇ log p t ( X t ) 的方向永远指向密度更高、更聚集的方向。因此,修正项 σ t 2 2 ∇ log p t ( X t ) \frac{\sigma_t^2}{2} \nabla \log p_t(X_t) 2 σ t 2 ∇ log p t ( X t ) 在物理意义上充当了一种对抗无序布朗运动的收敛性“负黏滞力”。扩散强度 σ t 2 \sigma_t^2 σ t 2 越大,这种向心恢复力的补偿就必须越强,使得这股在局部相互纠缠的对抗力量(一方面随机打乱,另一方面又依密度梯度拉回),在进行空间宏观统计时实现了动态的完全抵消,从而严丝合缝地保留了系统纯粹受原目标向量场 u t t a r g e t u_t^{target} u t t a r g e t 支配的演化表征 。
Fokker-Planck 方程
要从数学上绝对严密地证明“SDE 扩展方程的宏观分布就是 p t ( x ) p_t(x) p t ( x ) ”,我们必须借助统计物理学和伊藤随机分析领域的福克-普朗克方程。
FPE 是一阶偏微分方程,它精确描述了处于受随机力(布朗运动)与确定性势场作用下的粒子,其空间位置的概率密度函数随时间的全局演化法则。该方程在由微观单一过程到宏观统计力学的桥接中发挥着不可替代的作用 。
对于一般的 ITO SDE 形式:d X t = μ t ( X t ) d t + σ t d W t dX_t = \mu_t(X_t) dt + \sigma_t dW_t d X t = μ t ( X t ) d t + σ t d W t ,其对应的 FPE 可表达为 :
∂ t p t ( x ) = − ∇ ⋅ ( p t ( x ) μ t ( x ) ) + σ t 2 2 Δ p t ( x ) \partial_t p_t(x) = -\nabla \cdot (p_t(x) \mu_t(x)) + \frac{\sigma_t^2}{2} \Delta p_t(x)
∂ t p t ( x ) = − ∇ ⋅ ( p t ( x ) μ t ( x )) + 2 σ t 2 Δ p t ( x )
我们将其分为两个具备深刻直觉意涵的物理模块进行拆解分析 :
对流/漂移分量 Drift Term [− ∇ ⋅ ( p t μ t ) -\nabla \cdot (p_t \mu_t) − ∇ ⋅ ( p t μ t ) ]:这部分实际上是经典流体力学中的连续性方程。向量场 μ t \mu_t μ t 指引了概率“流体”的前进方向与速度。散度算子(Divergence operator, ∇ ⋅ ( ⋅ ) \nabla \cdot (\cdot) ∇ ⋅ ( ⋅ ) 或 d i v ( ⋅ ) div(\cdot) d i v ( ⋅ ) )从几何上度量了一个向量场在空间某一点的净发散度(即净流出量)。加上负号之后,− ∇ ⋅ ( p t μ t ) -\nabla \cdot (p_t \mu_t) − ∇ ⋅ ( p t μ t ) 就度量了流场向该点的净汇聚度(流入率)。因此,这部分刻画了由确定性力量驱动的概率集中倾向 。
扩散分量 Diffusion Term [σ t 2 2 Δ p t ( x ) \frac{\sigma_t^2}{2} \Delta p_t(x) 2 σ t 2 Δ p t ( x ) ]:其中拉普拉斯算子(Laplacian, Δ = ∇ ⋅ ∇ = ∑ ∂ 2 ∂ x i 2 \Delta = \nabla \cdot \nabla = \sum \frac{\partial^2}{\partial x_i^2} Δ = ∇ ⋅ ∇ = ∑ ∂ x i 2 ∂ 2 )度量了概率密度在某处的凹凸性。当一点的拉普拉斯值为正(即呈“山谷”状,中心浓度低于四周),扩散现象会促使周围物质流入填充;反之亦然。这本质上是物理学中的热传导方程(Heat Equation)。它刻画了因为不可预测的布朗碰撞,概率分布如何不可避免地从陡峭变为平缓的自发耗散过程 。
现在利用 FPE 证明 SDE Extension Trick。将 SDE 扩展技巧中定制的漂移场代入 FPE:
μ t ( x ) = u t t a r g e t ( x ) + σ t 2 2 ∇ log p t ( x ) \mu_t(x) = u_t^{target}(x) + \frac{\sigma_t^2}{2} \nabla \log p_t(x)
μ t ( x ) = u t t a r g e t ( x ) + 2 σ t 2 ∇ log p t ( x )
计算 FPE 的对流项:
− ∇ ⋅ ( p t ( u t t a r g e t + σ t 2 2 ∇ log p t ) ) -\nabla \cdot \left( p_t \left( u_t^{target} + \frac{\sigma_t^2}{2} \nabla \log p_t \right) \right)
− ∇ ⋅ ( p t ( u t t a r g e t + 2 σ t 2 ∇ log p t ) )
展开散度:
= − ∇ ⋅ ( p t u t t a r g e t ) − σ t 2 2 ∇ ⋅ ( p t ∇ log p t ) = -\nabla \cdot (p_t u_t^{target}) - \frac{\sigma_t^2}{2} \nabla \cdot (p_t \nabla \log p_t)
= − ∇ ⋅ ( p t u t t a r g e t ) − 2 σ t 2 ∇ ⋅ ( p t ∇ log p t )
关键在此刻发生:根据梯度的对数法则 ∇ log p t = ∇ p t p t \nabla \log p_t = \frac{\nabla p_t}{p_t} ∇ log p t = p t ∇ p t ,可以将其重写为 p t ∇ log p t = ∇ p t p_t \nabla \log p_t = \nabla p_t p t ∇ log p t = ∇ p t 。代入上式后,第二项变为:
− σ t 2 2 ∇ ⋅ ( ∇ p t ) = − σ t 2 2 Δ p t -\frac{\sigma_t^2}{2} \nabla \cdot (\nabla p_t) = -\frac{\sigma_t^2}{2} \Delta p_t
− 2 σ t 2 ∇ ⋅ ( ∇ p t ) = − 2 σ t 2 Δ p t
综上,我们将修正后的漂移项的净流入量完全拆解为:
− ∇ ⋅ ( p t u t t a r g e t ) − σ t 2 2 Δ p t -\nabla \cdot (p_t u_t^{target}) - \frac{\sigma_t^2}{2} \Delta p_t
− ∇ ⋅ ( p t u t t a r g e t ) − 2 σ t 2 Δ p t
将其代回完整的 FPE 右侧:
∂ t p t = ( − ∇ ⋅ ( p t u t t a r g e t ) − σ t 2 2 Δ p t ) + σ t 2 2 Δ p t \partial_t p_t = \left( -\nabla \cdot (p_t u_t^{target}) - \frac{\sigma_t^2}{2} \Delta p_t \right) + \frac{\sigma_t^2}{2} \Delta p_t
∂ t p t = ( − ∇ ⋅ ( p t u t t a r g e t ) − 2 σ t 2 Δ p t ) + 2 σ t 2 Δ p t
热扩散拉普拉斯项 σ t 2 2 Δ p t \frac{\sigma_t^2}{2} \Delta p_t 2 σ t 2 Δ p t 与我们在漂移项中精心加入的分数回复力散度项精确抵消,最终剩下的演化方程仅仅为:
∂ t p t = − ∇ ⋅ ( p t u t t a r g e t ) \partial_t p_t = -\nabla \cdot (p_t u_t^{target})
∂ t p t = − ∇ ⋅ ( p t u t t a r g e t )
而这正是对应于纯 ODE 无噪声流模型的连续性方程 !因为偏微分方程系统的解具备存在性与唯一性,既然引入极强随机行为的动态 SDE 体系与无噪声稳定流动的纯 ODE 体系,在空间任意一点的宏观分布随时间偏导数的演变规律完全一致,这就构成了严密的数学铁证:SDE 扩展轨道所对应的概率轨迹与目标一致,随机性不会改变系统的既定演变宏观路径。
Langevin Dynamics
当我们期望概率路径是不随时间变化的恒定目标分布(即 p t = p p_t = p p t = p 为某个定态常数分布)时,其流场导数 ∂ t p t = 0 \partial_t p_t = 0 ∂ t p t = 0 ,对应的目标常微分向量场自然应为 u t t a r g e t = 0 u_t^{target} = 0 u t t a r g e t = 0 。
将 u t t a r g e t = 0 u_t^{target} = 0 u t t a r g e t = 0 代入之前的 SDE 扩展技巧公式中,我们可以得到极其经典的结果:
d X t = σ t 2 2 ∇ log p ( X t ) d t + σ t d W t dX_t = \frac{\sigma_t^2}{2} \nabla \log p(X_t) dt + \sigma_t dW_t
d X t = 2 σ t 2 ∇ log p ( X t ) d t + σ t d W t
这一公式即为 过阻尼朗之万方程 Overdamped Langevin Equation 。若保留动量与惯性项,则为 欠阻尼朗之万方程 Underdamped Langevin Equation ,其在改善高频图像生成质量方面展现出特定潜力。在马尔可夫链蒙特卡罗(MCMC)与分子动力学模拟领域,这是一个用来模拟并采样复杂平稳分布的黄金标准算法。根据福克-普朗克分析,由于 ∂ t p = 0 \partial_t p = 0 ∂ t p = 0 ,只要初始化任意分布启动该过程,在经历充足演变后(满足遍历性条件),该动力系统都必然稳定地收敛至靶向稳态分布 p p p 。在生成模型的早期探索中,基于分数的模型便是大量依赖于此类在离散噪声等级之间反复应用朗之万降噪步骤来实现样本的提炼更新,这为后续连续时间扩散模型的大发展奠定了强有力的算法直觉 。
分数匹配
不论是使用 ODE 的确定性采样,还是使用包含朗之万效应的 SDE 采样策略,一切的基点都建立在我们拥有完美已知的边缘分数函数 ∇ log p t ( x ) \nabla \log p_t(x) ∇ log p t ( x ) 这一前提下。然而在实际计算域内,此项条件如同空中楼阁。由于 p d a t a p_{data} p d a t a 分布是复杂未知的(往往只能从训练集中提取有限的样本切片),对整个状态空间进行积分计算是不可能的 。为了训练深度神经网络(即分数网络 s t θ : R d × → R d s_t^\theta: \mathbb{R}^d \times \rightarrow \mathbb{R}^d s t θ : R d × → R d )去拟合这个未知的边缘分数函数,学术界展开了关于分数匹配算法的长久探索与迭代。
显式分数匹配
最直观的求解方案是最小化神经网络预测与真实边缘分数函数之间的欧几里得距离,这被称为 显式分数匹配 Explicit Score Matching :
L S M ( θ ) = E t ∼ U n i f , x ∼ p t [ ∥ s t θ ( x ) − ∇ log p t ( x ) ∥ 2 ] \mathcal{L}_{SM}(\theta) = \mathbb{E}_{t \sim Unif, x \sim p_t} \left[ \| s_t^\theta(x) - \nabla \log p_t(x) \|^2 \right]
L SM ( θ ) = E t ∼ U ni f , x ∼ p t [ ∥ s t θ ( x ) − ∇ log p t ( x ) ∥ 2 ]
这个损失函数遭遇了两个致命的障碍:第一,在计算中它仍然强制要求知晓不可知的全局目标 ∇ log p t ( x ) \nabla \log p_t(x) ∇ log p t ( x ) 。第二,即使借助积分分部技巧消除了显式依赖(如 Hyvärinen 在 2005 年提出的基础分部积分推导),显式匹配模型在数据的低密度区域往往表现出极为差劲的估计能力 。这是因为在高维流形中,低密度区域采样点极度稀疏,权重期望在这些盲区无法提供强有力的纠偏梯度,导致生成的网络很容易输出混乱的、非保守的分数场方向 。
去噪分数匹配
2011年,Vincent 在探讨去噪自编码器理论时提出了一项极具震撼力的数学联系——去噪分数匹配 Denoising Score Matching 。他揭示出,我们无需去硬碰硬地匹配那个充满不确定性的复杂宏观边缘分布的分数,而是可以将问题转化到微观的已知物理空间中:去拟合加噪过程的“条件分数函数” 。
定义更为温和且容易计算的条件去噪分数匹配损失:
L C S M ( θ ) = E t ∼ U n i f , z ∼ p d a t a , x ∼ p t ( ⋅ ∣ z ) [ ∥ s t θ ( x ) − ∇ log p t ( x ∣ z ) ∥ 2 ] \mathcal{L}_{CSM}(\theta) = \mathbb{E}_{t \sim Unif, z \sim p_{data}, x \sim p_t(\cdot|z)} \left[ \| s_t^\theta(x) - \nabla \log p_t(x|z) \|^2 \right]
L CSM ( θ ) = E t ∼ U ni f , z ∼ p d a t a , x ∼ p t ( ⋅ ∣ z ) [ ∥ s t θ ( x ) − ∇ log p t ( x ∣ z ) ∥ 2 ]
与 L S M \mathcal{L}_{SM} L SM 不同,在这里计算期望的随机变量是成对产生的三元组:首先挑选一个真实图像 z z z ,然后取样当前时间步长 t t t ,再根据已知的马尔可夫转移规律散播生成噪声态的图像 x x x 。此时网络要模仿和匹配的目标变为了极其简单的条件分数 ∇ log p t ( x ∣ z ) \nabla \log p_t(x|z) ∇ log p t ( x ∣ z ) ,而在高斯分布下它不过是一个简单的具有闭式解的一次多项式。
因此我们得到下面这个定理:
边缘分数匹配损失等同于去噪分数匹配损失加上一个常数项 ,即 L S M ( θ ) = L C S M ( θ ) + C \mathcal{L}_{SM}(\theta) = \mathcal{L}_{CSM}(\theta) + C L SM ( θ ) = L CSM ( θ ) + C 。
这宣告了两者对神经网络参数 θ \theta θ 的一阶偏导数完全重合,使用 SGD(随机梯度下降)最小化极其简单的 L C S M \mathcal{L}_{CSM} L CSM 就相当于在全球流形上无损最小化了不可计算的 L S M \mathcal{L}_{SM} L SM 。 为了彻底揭开这层等价性的神秘面纱,这里详细再现该直接证明的推演机理。我们重点观察 L S M \mathcal{L}_{SM} L SM 中那项含有交叉相乘特征的核心内积期望:E t ∼ U n i f , x ∼ p t \mathbb{E}_{t \sim Unif, x \sim p_t} E t ∼ U ni f , x ∼ p t
将期望积分算子显式展开,并且利用前面讨论过的贝叶斯重排公式 ∇ log p t ( x ) = ∫ ∇ log p t ( x ∣ z ) p t ( x ∣ z ) p d a t a ( z ) p t ( x ) d z \nabla \log p_t(x) = \int \nabla \log p_t(x|z) \frac{p_t(x|z)p_{data}(z)}{p_t(x)} dz ∇ log p t ( x ) = ∫ ∇ log p t ( x ∣ z ) p t ( x ) p t ( x ∣ z ) p d a t a ( z ) d z :
∫ 0 1 ∫ x p t ( x ) ⋅ s t θ ( x ) T ⋅ [ ∫ z ∇ log p t ( x ∣ z ) p t ( x ∣ z ) p d a t a ( z ) p t ( x ) d z ] d x d t \int_0^1 \int_x p_t(x) \cdot s_t^\theta(x)^T \cdot \left[ \int_z \nabla \log p_t(x|z) \frac{p_t(x|z)p_{data}(z)}{p_t(x)} dz \right] dx dt
∫ 0 1 ∫ x p t ( x ) ⋅ s t θ ( x ) T ⋅ [ ∫ z ∇ log p t ( x ∣ z ) p t ( x ) p t ( x ∣ z ) p d a t a ( z ) d z ] d x d t
极为神奇的是,积分域外的配分因子 p t ( x ) p_t(x) p t ( x ) 完美的与括号内贝叶斯后验表达式的分母抵消了!剩下的式子变为了干净的三重积分:
∫ 0 1 ∫ x ∫ z s t θ ( x ) T ∇ log p t ( x ∣ z ) p t ( x ∣ z ) p d a t a ( z ) d z d x d t \int_0^1 \int_x \int_z s_t^\theta(x)^T \nabla \log p_t(x|z) p_t(x|z) p_{data}(z) dz dx dt
∫ 0 1 ∫ x ∫ z s t θ ( x ) T ∇ log p t ( x ∣ z ) p t ( x ∣ z ) p d a t a ( z ) d z d x d t
重新按照概率组合期望的语境整理积分,这正是联合分布下的期望:E t ∼ U n i f , z ∼ p d a t a , x ∼ p t ( ⋅ ∣ z ) \mathbb{E}_{t \sim Unif, z \sim p_{data}, x \sim p_t(\cdot|z)} E t ∼ U ni f , z ∼ p d a t a , x ∼ p t ( ⋅ ∣ z )
通过这种替换,整个平方面积误差展开后的核心难点被优雅替换。将 L S M \mathcal{L}_{SM} L SM 平方完全拆解后加上此恒等式,最后剩余的多余常数项 C C C 仅仅依赖于真实分数项自身的内积积分结果(而不受神经网络预测控制)。这证明了,当我们在微观层面上随机提取大量受到干扰的点 x x x ,并训练网络尝试预测它们由确切中心 z z z 引发的拉力时,成千上万次独立的损失优化通过大数据集的集成法则,不知不觉中便在宏观网络神经元的突触权重内“凝聚”出了整体系统的最优平均分布动力学流场。
DDPM
将精妙的去噪分数匹配理论彻底带入工程实用的阶段,离不开对目标公式进一步的去量纲与平滑重构。我们再次考察应用最为广泛的高斯条件概率路径 p t ( x ∣ z ) = N ( x ; α t z , β t 2 I d ) p_t(x|z) = \mathcal{N}(x; \alpha_t z, \beta_t^2 I_d) p t ( x ∣ z ) = N ( x ; α t z , β t 2 I d ) 。
回忆先前的结论,条件分数的解析形式为 − x − α t z β t 2 -\frac{x - \alpha_t z}{\beta_t^2} − β t 2 x − α t z 。而在网络采样步骤中,含噪数据点是通过重参数化方法合成的:x = α t z + β t ϵ x = \alpha_t z + \beta_t \epsilon x = α t z + β t ϵ ,其中加入的高斯噪音项 ϵ ∼ N ( 0 , I d ) \epsilon \sim \mathcal{N}(0, I_d) ϵ ∼ N ( 0 , I d ) 。
将由噪音重组成的 x x x 的表达式代入条件分数内,原有的绝对空间坐标系立刻转变为了残差表征:
∇ log p t ( x ∣ z ) = − ( α t z + β t ϵ ) − α t z β t 2 = − β t ϵ β t 2 = − ϵ β t \nabla \log p_t(x|z) = -\frac{(\alpha_t z + \beta_t \epsilon) - \alpha_t z}{\beta_t^2} = -\frac{\beta_t \epsilon}{\beta_t^2} = -\frac{\epsilon}{\beta_t}
∇ log p t ( x ∣ z ) = − β t 2 ( α t z + β t ϵ ) − α t z = − β t 2 β t ϵ = − β t ϵ
代入先前提及的去噪分数匹配损失 DSM:
L C S M ( θ ) = E t , z , ϵ [ ∥ s t θ ( x ) + ϵ β t ∥ 2 ] = E t , z , ϵ [ 1 β t 2 ∥ β t s t θ ( x ) + ϵ ∥ 2 ] \mathcal{L}_{CSM}(\theta) = \mathbb{E}_{t, z, \epsilon} \left[ \left\| s_t^\theta(x) + \frac{\epsilon}{\beta_t} \right\|^2 \right] = \mathbb{E}_{t, z, \epsilon} \left[ \frac{1}{\beta_t^2} \left\| \beta_t s_t^\theta(x) + \epsilon \right\|^2 \right]
L CSM ( θ ) = E t , z , ϵ [ s t θ ( x ) + β t ϵ 2 ] = E t , z , ϵ [ β t 2 1 β t s t θ ( x ) + ϵ 2 ]
此时出现了一个关键的工程分叉点:在深度学习实践中,如果强行让网络去预测实际的分数值 s t θ ( x ) s_t^\theta(x) s t θ ( x ) ,在时间极小(t ≈ 0 t \approx 0 t ≈ 0 即噪音水平极其微弱)的情景下,分母 β t \beta_t β t 趋向于零,将使得常数倍增率达到天文级数字,使得均方误差梯度的范数处于失控爆发边缘。因此,Ho et al. (2020) 年提出放弃强行输出绝对数值的分数向量,而是使网络重新改头换面,被直接参数化为一个专门用来预测噪音成分的网络 ϵ t θ ( x ) \epsilon_t^\theta(x) ϵ t θ ( x ) 。
令 ϵ t θ ( x ) = − β t s t θ ( x ) \epsilon_t^\theta(x) = -\beta_t s_t^\theta(x) ϵ t θ ( x ) = − β t s t θ ( x ) ,并完全舍弃那个容易引起不稳定的全局系数项 1 β t 2 \frac{1}{\beta_t^2} β t 2 1 ,我们便推导出了被千万规模多模态大模型采用的极简算法形式:Denoising Diffusion Probabilistic Models (DDPM) 的降噪损失函数:
L D D P M ( θ ) = E t ∼ U n i f , z ∼ p d a t a , ϵ ∼ N ( 0 , I d ) [ ∥ ϵ t θ ( α t z + β t ϵ ) − ϵ ∥ 2 ] \mathcal{L}_{DDPM}(\theta) = \mathbb{E}_{t \sim Unif, z \sim p_{data}, \epsilon \sim \mathcal{N}(0, I_d)} \left[ \left\| \epsilon_t^\theta(\alpha_t z + \beta_t \epsilon) - \epsilon \right\|^2 \right]
L DD PM ( θ ) = E t ∼ U ni f , z ∼ p d a t a , ϵ ∼ N ( 0 , I d ) [ ϵ t θ ( α t z + β t ϵ ) − ϵ 2 ]
它的算法很简洁:
这种通过“预测增加的噪音”从而间接地指导反向剔除噪音,并隐式拟合全局流场分数轨迹的设计,完成了对传统贝叶斯积分极大地工程学降维。这不仅在物理内涵上解释了逆向传播路径“顺流而下”的合理性,更是模型可以横跨视频预测、医学解耦、文本大语言架构的本源数学逻辑 。