扩散模型和numercially SDE
扩散模型的具体过程
扩散模型(Diffusion Models)是一种生成模型,其核心思想是通过逐步添加噪声(正向过程)将数据分布转化为高斯噪声,然后学习如何从噪声中逐步恢复数据(反向过程)。具体步骤如下:
-
正向过程(Forward Process):
- 数据 $ x_0 $ 通过逐步添加高斯噪声,经过 $ T $ 步后变为纯噪声 $ x_T $。
- 正向过程可以用随机微分方程(SDE)描述:\[dx = f(x,t) dt + g(t) dW_t \]其中:
- $ f(x,t) $ 是漂移项(通常设为 $ -\frac{1}{2}\beta(t)x $)。
- $ g(t) $ 是扩散系数(通常为 $ \sqrt{\beta(t)} $)。
- $ dW_t $ 是布朗运动的增量。
- 例如,VP-SDE(Variance Preserving SDE)的形式为:\[dx = -\frac{1}{2} \beta(t)x dt + \sqrt{\beta(t)} dW_t \]
- 其中 $ \beta(t) $ 控制噪声强度,$ W_t $ 是布朗运动。
该SDE描述数据 $ x $ 如何随时间 $ t $ 逐渐被噪声扰动,最终趋向高斯分布 $ \mathcal{N}(0,I) $。
- 其中 $ \beta(t) $ 控制噪声强度,$ W_t $ 是布朗运动。
-
反向过程(Reverse Process):
-
从噪声 $ x_T $ 出发,逐步去噪恢复数据 $ x_0 $。
-
反向过程也是一个 SDE,形式为:
\[dx = [f(x,t) - g(t)^2 \nabla_x \log p_t(x)] dt + g(t) dW_t \]其中 $ \nabla_x \log p_t(x) $ 是 score function,通常用神经网络(如 UNet)预测噪声 $ \epsilon $ 来近似:
\[\nabla_x \log p_t(x) \approx -\frac{1}{\sigma(t)} \epsilon_\theta(x_t, t) \]扩散模型的训练目标:通过Denoising Score Matching学习Score Function。
对应的 ODE:
\[\frac{dx}{dt} = f(x,t) - \frac{1}{2} g(t)^2 \nabla_x \log p_t(x) \]两者唯一的区别是 ODE 去掉了随机项 $ g(t) dW_t $
-
-
概率流 ODE(Probability Flow ODE):
-
反向过程可以转换为确定性 ODE:
\[\frac{dx}{dt} = f(x,t) - \frac{1}{2} g(t)^2 \nabla_x \log p_t(x) \]这种形式不含随机噪声,适合确定性采样(如 DDIM 或 DPM-Solver++)。
示例:DPM-Solver++DPM-Solver++ 是一种基于 ODE 的高效采样方法,其核心步骤如下:
- 将时间步映射为噪声标准差 $ \sigma(t) = e^{-t} $。
- 使用二阶更新规则:
\[ \hat{\epsilon}_{2M} = \left(1 + \frac{1}{2r}\right)\epsilon_i - \frac{1}{2r}\epsilon_{i-1} \]\[x_{i+1} = \frac{\sigma_{i+1}}{\sigma_i} x_i - \left(e^{-(t_{i+1}-t_i)} - 1\right) \hat{\epsilon}_{2M} \]其中 $ \epsilon_i $ 是模型预测的噪声。
-
-
扩散模型可以用于任何连续数据分布,如图像、音频、文本嵌入等,常见的图像数据集包括 CIFAR-10、ImageNet、CelebA 等。
-
训练集是原始数据 $ x_0 $,例如图像数据集的图片。
-
扩散模型是无监督学习,不需要显式标签。训练目标是让模型预测添加到数据中的噪声 $ \epsilon $(即“标签”是噪声)。
损失函数为:\[\mathbb{E}_{x_0, \epsilon,t} \left[ \|\epsilon_\theta(x_t, t) - \epsilon\|^2 \right] \]其中 $ x_t = x_0 + \sigma(t) \epsilon , \epsilon \sim \mathcal{N}(0,I) $
为什么 SDE 可以用 ODE 替代?
-
理论基础:
- 根据 Anderson (1982),任何 SDE 的反向过程也是一个 SDE,但可以通过去除随机噪声项转换为确定性 ODE(概率流 ODE)。
- 概率流 ODE 的轨迹分布与原 SDE 一致,但采样过程是确定性的。
-
优势:
- 计算效率:ODE 避免了随机噪声的采样,减少了计算复杂度。
- 稳定性:确定性过程更容易控制和调试。
- 高阶求解器:ODE 可以使用高阶数值方法(如 DPM-Solver++)加速采样。
-
核心公式:
- 反向 SDE:\[dx = [f(x,t) - g(t)^2 \nabla_x \log p_t(x)] dt + g(t) dW_t \]
- 对应的 ODE:\[\frac{dx}{dt} = f(x,t) - \frac{1}{2} g(t)^2 \nabla_x \log p_t(x) \]两者唯一的区别是 ODE 去掉了随机项 $ g(t) dW_t $。
- 反向 SDE:
数值求解SDE与扩散模型采样
(1)SDE的离散化方法
扩散模型的采样过程本质上是数值求解反向SDE,常用方法包括:
-
Euler-Maruyama方法(一阶离散):
\[x_{t-\Delta t} = x_t + \left[ f(x_t,t) - g(t)^2 \nabla_x \log p_t(x_t) \right] \Delta t + g(t) \sqrt{\Delta t}\,z \]- $ z \sim \mathcal{N}(0,I) , \Delta t $ 是步长。
- 对应DDPM的随机采样($ \sigma_t > 0 $)。
-
概率流ODE(确定性采样):
若去除随机项 $ g(t)dW_t $,反向SDE退化为ODE:\[\frac{dx}{dt} = f(x,t) - \frac{1}{2}g(t)^2 \nabla_x \log p_t(x) \]- 对应DDIM的确定性采样($ \sigma_t = 0 $)。
(2)DDPM与SDE求解器的关系
-
DDPM:可视为对反向SDE的一阶离散化(Euler-Maruyama),每步更新:
\[x_{t-1} = x_t + \left( -\frac{\beta_t}{2} x_t - \beta_t \nabla_x \log p_t(x_t) \right) \Delta t + \sqrt{\beta_t} z \]- 其中 $ \Delta t = 1, \beta_t \approx g(t)^2 $。
-
DDIM:对应SDE的确定性积分方法,通过跳步加速采样。
(3)高阶求解器(如DPM-Solver)
基于SDE/ODE的高阶数值方法(如Runge-Kutta)可进一步加速扩散模型:
- DPM-Solver++:利用二阶泰勒展开近似Score Function,减少采样步数(如10~20步)。
为什么SDE框架重要?
(1)统一理论视角
- SDE将DDPM、DDIM、Score-Based Models等统一为同一框架的不同离散化方式。
- 正向SDE:数据扰动过程。
- 反向SDE:生成过程。
(2)灵活性与扩展性
- 通过设计不同的 $ f(x,t) $ 和 $ g(t) $,可控制扩散过程(如VE-SDE、VP-SDE)。
- 基于SDE的改进(如冷扩散、带约束扩散)可直接修改漂移/扩散项。
(3)理论保证
- SDE的解在连续时间下收敛到目标分布,离散化误差可通过数值分析控制。
示例:从SDE到DDPM和DDIM**
(1)DDPM(随机采样)
- 对应SDE:VP-SDE($ f(x,t) = -\frac{1}{2}\beta(t)x $, $ g(t) = \sqrt{\beta(t)} $)。
- 离散化:Euler-Maruyama方法,每步添加噪声。
(2)DDIM(确定性采样)
- 对应ODE:概率流ODE(去除 $ dW_t $ 项)。
- 离散化:隐式多步法,跳步更新。
总结
- 扩散模型是SDE的数值实现:正向/反向过程分别对应SDE的离散化求解。
- 采样方法的选择:
- 随机采样(DDPM:Denoising Diffusion Probabilistic Models):SDE + Euler-Maruyama。
- 确定性采样(DDIM:Denoising Diffusion Implicit Models):ODE + 高阶积分。
- SDE框架的优势:理论严谨、灵活性高,支持后续改进(如加速采样、条件生成)。
通过SDE的视角,扩散模型的训练和采样可视为对连续时间动态系统的离散逼近,这为理解和优化模型提供了强大工具。
浙公网安备 33010602011771号