Euler
Euler & Heun: The Foundation of Solvers
回归本源
在 DPM-Solver 等复杂的高阶求解器统治 Diffusion 圈子两年后,随着 Flow Matching (SD3, FLUX.1) 的兴起,最古老、最简单的 Euler 方法 重新夺回了王座。 这是一个“大道至简”的故事。
1. Euler Method (欧拉法)
1.1 数学原理 (1st Order ODE)
这是求解微分方程 $dx/dt = v(x, t)$ 最基础的方法。 它的思想非常直观:假设在一小段步长 $\Delta t$ 内,速度 $v$ 是恒定不变的。
$$ x_{t-1} = x_t - \Delta t \cdot v_\theta(x_t, t) $$- 几何意义: 沿着当前点的切线方向走一步。
- 误差: 局部截断误差是 $O(\Delta t^2)$。如果曲线弯曲得很厉害,Euler 法会很快偏离轨道(这就是老一代 SD 模型不用它的原因)。
1.2 为什么在 FLUX/SD3 中它是 SOTA?
因为 Rectified Flow 技术改变了游戏规则。
- 传统的 Diffusion 路径是弯曲的 (Curved),用直线拟合曲线误差大。
- Rectified Flow 强制训练模型走出一条直线 (Straight Path)。
- 结论: 如果路径本身就是直线,那么切线就是路径本身!此时 Euler 法没有任何近似误差(除了离散化本身),它变成了完美求解器。这就是为什么 FLUX.1 只需要 Euler。
2. Euler Ancestral (Euler a)
2.1 SDE 的欧拉法
Euler a 是 SDE (随机微分方程) 的离散化求解。 它的每一步分为两个动作:
- Denoise (去噪): 先用 Euler 方法指向 $x_0$ 的方向移动,算出一个“确定性预测值”。
- Noise Injection (注噪): 根据调度表 $\sigma_t$,在预测值上加一点高斯噪声。
2.2 特性
- 由于每一步都加噪声,轨迹具有随机性。
- 不收敛 (Non-convergent): 即使步数无限增加,画面也不会定格,而是在一个合理的图像分布范围内游走。
- 听觉/视觉比喻: 就像录磁带时的“底噪”,这种随机性给图像增加了一种有机的、非人工的质感(Result feels less “plastic”)。
3. Heun Method (改进的欧拉)
3.1 预估-校正 (Predictor-Corrector)
Heun 是 2阶 ODE 求解器。它试图修正 Euler “只看脚下”的短视。 它走两步:
- Predict (预估): 先用 Euler 假装走一步,到达试探点 $x'_{t-1}$。
- Observe (观测): 看看试探点 $x'_{t-1}$ 那里的速度是多少?
- Correct (修正): 取“起点速度”和“终点速度”的平均值,作为这一步真正的速度。
3.2 优缺点
- 更准: 能够更好地拟合弯曲路径。
- 更慢: 也就是常说的
NFE = 2(Number of Function Evaluations)。每走一步时间 $t$(Sampler Step),通常需要跑两次 U-Net。也就是设置 20 步,实际要等 40 步的时间。
4. 总结
| 方法 | 核心逻辑 | 适合场景 | 备注 |
|---|---|---|---|
| Euler | 走切线 (直线) | Flow Matching (FLUX, SD3) | 路径越直,它越强 |
| Euler a | 走切线 + 撒点土 | Creative Art, Anime | 增加随机纹理和细节 |
| Heun | 走两步取平均 | 传统 Diffusion (SD1.5) | 比 Euler 准,但慢一倍 |