《生成扩散模型漫谈(十二):“硬刚”扩散ODE》 —— 苏剑林
ODE 怎样搬运一整个分布
考虑确定性动力系统
dtdxt=ft(xt),t∈[0,T].(1)
在解存在且唯一、流映射足够光滑的条件下,给定 x0 可以确定 xT,也可以从 xT 反向积分回 x0。生成问题因此变成:怎样选择速度场 ft,使数据分布 p0 被推到容易采样的 pT?
先把公式 (1) 离散一小步:
xt+Δt=xt+ft(xt)Δt+o(Δt).
确定性变量变换必须守恒概率质量:
pt(xt)dxt=pt+Δt(xt+Δt)∂xt∂xt+Δtdxt.
对应的雅可比矩阵为 I+JfΔt+o(Δt)。利用
det(I+AΔt)=1+Tr(A)Δt+o(Δt),可得
logpt+Δt(xt+Δt)−logpt(xt)=−∇⋅ft(xt)Δt+o(Δt).(2)
这个式子从“体积怎样伸缩”描述密度变化。另一边,对 logpt(x) 同时沿空间和时间做一阶泰勒展开:
logpt+Δt(xt+Δt)−logpt(xt)=ft(xt)⋅∇logpt(xt)Δt+∂tlogpt(xt)Δt+o(Δt).
把它与公式 (2) 对齐并乘以 pt,得到连续性方程:
∂tpt(x)=−∇⋅(pt(x)ft(x))(3)
它表达的是局部概率质量守恒:某区域密度的增加,只能来自概率流 ptft 的净流入。它也是 Fokker–Planck 方程在随机扩散项为零时的特例,但这里不需要先引入 SDE。
用 Score 指定速度方向
连续性方程只约束 pt 与 ft 的配合,并没有唯一指定速度场。为了得到可解的一族模型,令
ft(x)=−Dt(x)∇xlogpt(x).(4)
若 Dt(x) 是非负标量,从数据到噪声的正向时间里,速度指向密度下降方向;反向积分时方向翻转,样本会走向高密度区域。把公式 (4) 代入连续性方程 (3):
∂tpt(x)=∇⋅(Dt(x)∇pt(x)).(5)
当 Dt(x)=Dt 只依赖时间且为标量时,进一步化成热传导方程
∂tpt(x)=Dt∇2pt(x).(6)
这里要区分两种“扩散”:概率密度 pt 满足热方程,沿 ODE 运动的单个粒子仍是确定性的。分布会越来越平滑,不代表同一个初值会随机分叉。
热方程为什么对应高斯加噪
对空间变量做傅里叶变换,记 pt(ω) 为 pt 的特征函数。因为 ∇2 在频域对应乘以 −∥ω∥2,公式 (6) 变成关于 t 的 ODE:
∂tpt(ω)=−Dt∥ω∥2pt(ω).
令
σt2=2∫0tDsds,σ0=0,
则
pt(ω)=p0(ω)exp(−21σt2∥ω∥2).
频域乘积对应空间卷积,而第二个因子正是协方差为 σt2I 的高斯分布的特征函数,所以
pt(xt)=∫N(xt;x0,σt2I)p0(x0)dx0(7)
等价的采样表达是 xt=x0+σtε,其中 ε∼N(0,I)。这是边缘分布的等价表达;正向训练时直接这样采样,不等于 ODE 粒子轨迹真的在每个时刻加入独立噪声。
由 σt2=2∫0tDsds 可得 Dt=σ˙tσt,因此公式 (4) 变成
dtdxt=−σ˙tσt∇xtlogpt(xt).(8)
端点与 Score 的两个缺口
要从 xT 逆向生成,首先要求终点容易采样。由公式 (7),
xT=x0+σTε.
当 σT 远大于数据的典型尺度时,x0 的贡献相对很小,故 pT 近似 N(0,σT2I)。因此 Noise Schedule 至少要满足 σ0=0、单调光滑并且 σT 足够大。若数据没有预先中心化,终点均值也会残留相应偏移;“近似纯高斯”依赖尺度假设,并非任意有限 σT 下严格成立。
第二个缺口是公式 (8) 需要未知的边缘 Score ∇xtlogpt(xt)。高斯条件核的 Score 却有解析式:
∇xtlogpt(xt∣x0)=−σt2xt−x0=−σtε.
因此用网络 sθ(xt,t) 做条件得分匹配:
Ex0,ε,t[sθ(x0+σtε,t)+σtε2].(9)
平方损失的最优解是条件目标在给定 xt 后的均值,而这个条件均值恰好等于边缘 Score。训练完成后,用 sθ 替换公式 (8) 中的真实 Score,从近似高斯的 xT 出发反向求解 ODE,便得到数据样本。
这条推导链的关键不是“热方程又一次给出了高斯噪声”,而是说明了设计顺序:先由概率守恒约束 ODE,再选择一类速度场把连续性方程化成可解 PDE,最后才从 PDE 的解读出前向采样核、终点分布和训练目标。