在深度生成模型中,采样(Sampling)指的是根据模型生成新样本的过程。在扩散模型(Diffusion Models)中,采样的关键是从高斯噪声逐步还原出原始数据。让我们分别探讨 DDPM 和 DDIM 的采样过程,以及两者之间的差异。
DDPM(Denoising Diffusion Probabilistic Models)中的采样
基本概念
-
前向扩散过程(Forward Diffusion Process)
- 从真实数据 开始,逐步添加高斯噪声生成一系列中间状态 ,直到最终变为近似纯噪声 。
- 这一过程可以用公式描述为: , 其中 是控制每步添加噪声量的参数。
其中,只有参数 是可调的。 是根据 计算出的变量,其计算方法为:, .
为了能直接使用预训练的DDPM,我们希望在改进DDPM时不更改DDPM的训练过程。而经过简化后,DDPM的训练目标只有拟合x₀,训练时只会用到前向过程公式, 所以,我们的改进应该建立在公式完全不变的前提下。
参考:DDIM 简明讲解与 PyTorch 实现:加速扩散模型采样的通用方法 - 知乎
-
逆向去噪过程(Reverse Denoising Process)
- 从纯噪声 开始,逐步去除噪声还原出原始数据 。
- 理论上需要学习真实逆过程的条件分布 ,但实际中近似为高斯分布: , 其中 和 是由神经网络预测的参数。
-
采样过程
- 逐步去噪:从纯噪声 开始,通过神经网络预测每一步的均值和方差,逐步采样 。
- 全步骤采样:完整还原 通常需要数百到上千步,因此计算开销很大。
DDIM(Denoising Diffusion Implicit Models)中的采样
DDIM 是对 DDPM 采样过程的改进,目标是在不重新训练模型的前提下,加速采样并控制生成的灵活性。
主要创新
-
确定性采样(Deterministic Sampling)
- 在 DDIM 中,假设逆向过程是一个确定性映射,而不是像 DDPM 那样的随机采样。
- 给定,直接计算 , 其中 是从当前状态推断的原始数据,是噪声估计。
-
跳步采样(Non-Markovian Sampling)
- 在 DDPM 中,采样是逐步进行的(每步对应一个时间步)。而在 DDIM 中,允许直接跳过中间时间步,从而减少采样步骤。
- 通过选择一个子集 (通常 ),只对这些时间步进行采样,显著提升采样速度。
采样的效果
- DDIM 的采样是确定性的,因此每次采样都可以生成相同的结果(与随机采样不同)。这使得 DDIM 可以生成更加一致的样本,同时避免重复训练模型。
- 通过减少采样步数(比如从 1000 步减少到 20 步),采样速度可以提升约 50 倍,同时尽可能保留生成质量。
DDPM 和 DDIM 的采样对比
特性 | DDPM | DDIM |
---|---|---|
采样类型 | 随机(Stochastic) | 确定性(Deterministic) |
采样步数 | 多步(通常 1000+ 步) | 少步(比如 20-50 步) |
采样速度 | 慢 | 快 |
生成质量 | 高(取决于步数) | 质量保持较好 |
灵活性 | 不支持跳步 | 支持跳步和方差调整 |
总结
- 采样的意义:
在扩散模型中,采样是指从纯噪声逐步生成新的样本数据。这个过程模拟了数据从无序到有序的生成过程。 - DDPM 的采样:随机逐步还原,计算开销大但生成质量高。
- DDIM 的采样:通过确定性映射和跳步策略,大幅提升采样速度,同时在不重新训练模型的前提下保持生成质量。