扩散模型中的概率流常微分方程(Probability Flow ODE)
题目描述
在扩散模型中,标准的生成(采样)过程需要遵循一个迭代的反向随机过程(如DDPM中的多步去噪),这通常较慢。概率流常微分方程(Probability Flow ODE)是一种将扩散模型中的随机扩散过程转化为一个确定性过程的方法,它允许通过求解一个常微分方程(ODE)来从噪声中生成样本,从而实现更高效、更灵活的采样。本题将深入解析概率流ODE的数学原理、推导过程及其在扩散模型加速采样中的应用。
解题过程循序渐进讲解
1. 问题背景与动机
扩散模型(如DDPM)包含两个过程:
- 前向过程:在时间 \(t \in [0, T]\) 内,逐步向数据 \(x_0\) 添加高斯噪声,得到 \(x_t\)。
- 反向过程:从噪声 \(x_T\) 开始,逐步去噪,最终生成数据 \(x_0\)。
标准DDPM的反向过程是一个随机过程(每一步都采样随机噪声),需要数百到数千步迭代,采样速度慢。概率流ODE的核心思想是:将扩散过程转化为一个连续时间的确定性过程,从而可以用ODE求解器(如Runge-Kutta法)进行加速采样,甚至实现一步或少量步生成。
2. 前向扩散过程的随机微分方程(SDE)形式
首先,将离散前向过程表达为连续时间形式。前向过程是向数据添加噪声,可写成以下随机微分方程(SDE):
\[dx = f(x, t) dt + g(t) dw \]
其中:
- \(x\) 是数据,\(t\) 是连续时间(通常 \(t=0\) 对应数据,\(t=T\) 对应纯噪声)。
- \(f(x, t)\) 是漂移系数(drift coefficient),描述确定性演变。
- \(g(t)\) 是扩散系数(diffusion coefficient),控制噪声强度。
- \(w\) 是标准维纳过程(布朗运动)。
对于常见的前向过程(如DDPM的方差调度),具体形式为:
\[dx = -\frac{1}{2} \beta(t) x \, dt + \sqrt{\beta(t)} \, dw \]
其中 \(\beta(t)\) 是噪声调度函数(例如线性从 \(\beta_{\text{min}}\) 到 \(\beta_{\text{max}}\))。
3. 概率流ODE的推导
关键洞见:同一个前向SDE对应一个确定性ODE,两者的边缘概率分布 \(p_t(x)\) 随时间演变相同。这个ODE称为概率流ODE。
推导基于以下步骤:
- 考虑前向SDE: \(dx = f(x, t) dt + g(t) dw\)。
- 根据Fokker-Planck方程,该SDE对应的概率密度 \(p_t(x)\) 演变方程为:
\[ \frac{\partial p_t(x)}{\partial t} = -\nabla_x \cdot [f(x, t) p_t(x)] + \frac{1}{2} g(t)^2 \Delta_x p_t(x) \]
其中 \(\nabla_x \cdot\) 是散度,\(\Delta_x\) 是拉普拉斯算子。
- 目标:找到一个确定性ODE \(\frac{dx}{dt} = h(x, t)\),使得其概率密度演变与SDE相同。对于确定性ODE,其概率密度演变由连续性方程描述:
\[ \frac{\partial p_t(x)}{\partial t} = -\nabla_x \cdot [h(x, t) p_t(x)] \]
- 令两个方程相等,可得:
\[ h(x, t) p_t(x) = f(x, t) p_t(x) - \frac{1}{2} g(t)^2 \nabla_x p_t(x) \]
- 整理得到概率流ODE:
\[ \frac{dx}{dt} = f(x, t) - \frac{1}{2} g(t)^2 \nabla_x \log p_t(x) \]
其中 \(\nabla_x \log p_t(x)\) 是 \(p_t(x)\) 的分数函数(score function)。
4. 与扩散模型的联系
在扩散模型中,我们通过训练一个神经网络 \(s_\theta(x_t, t)\) 来估计分数函数 \(\nabla_x \log p_t(x)\)。因此,概率流ODE可写为:
\[\frac{dx}{dt} = f(x, t) - \frac{1}{2} g(t)^2 s_\theta(x, t) \]
这是一个确定性的常微分方程。给定初始噪声样本 \(x_T \sim p_T(x)\)(通常是标准高斯分布),从 \(t=T\) 到 \(t=0\) 反向求解此ODE,即可得到生成的数据 \(x_0\)。
5. 具体实例:与DDPM和DDIM的关系
- DDPM:其前向SDE为 \(dx = -\frac{1}{2} \beta(t) x \, dt + \sqrt{\beta(t)} \, dw\),即 \(f(x, t) = -\frac{1}{2} \beta(t) x\),\(g(t) = \sqrt{\beta(t)}\)。代入概率流ODE公式得:
\[ \frac{dx}{dt} = -\frac{1}{2} \beta(t) x - \frac{1}{2} \beta(t) s_\theta(x, t) \]
这恰好是DDPM的确定性版本(去掉了随机噪声项)。
- DDIM:可以视为概率流ODE的一种离散化形式。DDIM的更新规则:
\[ x_{t-1} = \sqrt{\bar{\alpha}_{t-1}} \left( \frac{x_t - \sqrt{1-\bar{\alpha}_t} s_\theta(x_t, t)}{\sqrt{\bar{\alpha}_t}} \right) + \sqrt{1-\bar{\alpha}_{t-1}} s_\theta(x_t, t) \]
当忽略随机项时,它对应于概率流ODE的一阶离散化。
6. 采样(求解ODE)过程
要从噪声生成数据:
- 初始化:从标准高斯分布采样 \(x_T\)。
- 反向求解ODE:从 \(t=T\) 到 \(t=0\),数值求解:
\[ \frac{dx}{dt} = f(x, t) - \frac{1}{2} g(t)^2 s_\theta(x, t) \]
可使用ODE求解器(如Euler法、Runge-Kutta法、自适应步长方法)。
3. 输出:\(x_0\) 即为生成样本。
优点:
- 确定性:相同 \(x_T\) 总生成相同 \(x_0\),适合插值等任务。
- 快速采样:可用大步长或高阶求解器,减少步数(如20~50步)。
- 灵活性:可结合隐空间编辑、条件生成等。
7. 实际应用与扩展
- 加速采样:如DDIM、PNDM、DPM-Solver等基于概率流ODE的加速器。
- 可控生成:在ODE轨迹上施加条件(如分类器引导)。
- 概率流ODE训练:一致性模型(Consistency Models)直接学习ODE轨迹的映射,实现一步生成。
总结
概率流ODE为扩散模型提供了一个确定性、连续时间的视角,将随机扩散过程转化为可高效求解的ODE。其核心是利用分数函数(由神经网络估计)构造漂移项,从而允许使用ODE求解器进行快速、灵活的采样。这一框架是许多扩散模型加速技术的基础,并促进了扩散模型在生成质量与效率上的平衡。