Schedulers
Diffusion Schedulers (Noise Schedules)
核心定义
在 Diffusion Model 中,Scheduler (调度器) 的核心职责是定义时间步 $t$ 与噪声强度 $\sigma_t$ (或 $\beta_t, \alpha_t$) 之间的映射关系。
- Scheduler (Map): 决定任何时刻 $t$ 应该有多少噪声。它控制扩散过程的“轨迹形状”。
- Sampler (Solver): 决定如何利用梯度在这个轨迹上迈步(详见 Samplers)。
1. 为什么 Schedule 很重要?
Schedule 直接决定了模型在训练和推理时,把计算资源分配给哪些阶段:
- 高噪声阶段 ($t \to T$): 学习图像的整体构图、布局 (Low Frequency)。
- 低噪声阶段 ($t \to 0$): 学习图像的纹理、细节 (High Frequency)。
如果 Schedule 设置不合理(例如一直在低噪声区打转),模型就画不出这就的大结构;反之则画不出细节。
2. 经典调度策略
2.1 Linear Schedule (线性调度)
来源: [Ho et al. 2020] DDPM
最原始的方案,让 $\beta_t$ 随 $t$ 线性增加。
$$ \beta_t = \text{Linear}(\beta_{\text{start}}=10^{-4}, \beta_{\text{end}}=0.02, t) $$- 问题: 虽然 $\beta$ 是线性的,但累积信噪比 (SNR) 的变化在两头非常急促,中间非常平缓。
- 后果: 对于常规分辨率(如 64x64),这种调度浪费了大量时间在“无效”的加噪步骤上。
2.2 Cosine Schedule (余弦调度)
来源: [Nichol et al. 2021] Improved DDPM
为了解决 Linear Schedule 的问题,让累积信号强度 $\bar{\alpha}_t$ 按余弦曲线下降。
$$ \bar{\alpha}_t = \frac{f(t)}{f(0)}, \quad f(t) = \cos^2 \left( \frac{t/T + s}{1 + s} \cdot \frac{\pi}{2} \right) $$- 优点: 噪声变化更均匀,更符合人类视觉感知。
- 地位: 是 Stable Diffusion 1.x / 2.x 的默认选择。
3. 面向高分辨率的现代调度 (Noise Shift)
当生成分辨率提升到 1024x1024 (SDXL, SD3) 时,传统的 Cosine Schedule 失效了。 核心原因 (Resolution Bias):
同样的噪声强度 $\sigma$,加在小图上可能已经全糊了,但加在大图上还能看清轮廓。因为大图像素多,信息冗余度高。
如果用老调度训练 1024模型,会导致 $x_T$ (所谓的纯噪声) 其实还包含原图信息,导致生成的图片对比度低、不够黑/白(Zero-Terminal SNR 没满足)。
3.1 Noise Shift / Offset Schedule
来源: SDXL, Stable Diffusion 3, Simple Diffusion
解决方案: 既然大图更耐噪,我们就整体增加噪声强度,把 Log-SNR 曲线往“高噪”方向平移。
- SDXL: 简单地增加了一个 Offset。
- Stable Diffusion 3 / FLUX.1: 根据分辨率动态计算 Shift 参数。 $$ t \leftarrow \frac{\text{shift} \cdot t}{1 + (\text{shift} - 1) \cdot t} $$ 分辨率越高,Shift 越大,强制让模型花更多时间在去噪的高难度阶段。
4. Flow Matching 中的 Time Sampling
在 Flow Matching (FM) 框架中,路径通常被固定为直线 ($x_t = (1-t)x_0 + t x_1$)。 此时,“Schedule”体现为训练时采样时间步 $t$ 的概率分布。
- Uniform: $t \sim U[0, 1]$。最简单,但效率一般。
- Logit-Normal (SD3):
- 倾向于采样中间部分(既非纯噪也非纯图),因为这是“学习性价比”最高的区域。
- 对于高分辨率训练,分布的均值会向 $t=1$ (纯噪) 偏移。
5. 总结
| Schedule | 适用模型/场景 | 核心特征 |
|---|---|---|
| Linear | DDPM (32x32) | 原始方案,效率低 |
| Cosine | SD 1.5 / 2.1 | 改进了 SNR 分布,适合 512px |
| Shifted / Offset | SDXL, SD3, FLUX.1 (1024px) | SOTA 必备。解决大图耐噪问题,提升对比度。 |
| Zero-SNR | v-prediction 模型 | 强制 $x_T$ 为纯噪声,能够生成纯白/纯黑图像 |
避坑指南
如果你自己训练 Diffusion/Flow 模型,只要分辨率超过 256x256,强烈建议使用 Shifted Schedule (或 Logit-Normal Sampling),否则很难收敛出高质量结果。