Diffusion相关知识
Diffusion学习
- [x] 知乎DDIM&DDPM
- [x] HuggingFace Diffusion公开课
- [x] b站讲的很好的DDPM
HuggingFace Diffusion Models Course
DDPM - Denoising Diffusion Probabilistic Models
DDPM 用
为什么推理速度慢:
-
DDPM 有一个超参数
,马尔可夫链(Markov chain)的总长度(通常 ),需要采样1000步才能得到一个好的图像。 -
设置小一些(如100或50)不能加速的原因如下:
由DDPM中单步加噪公式:
根据马尔可夫性质,可以由一步得到 ,每次增加一个很小的噪声:
$$x_t=\sqrt{\bar{\alpha}t}x{0}+\sqrt{1-\bar{\alpha}_t}\epsilon\ , \quad \bar{\alpha}t=\alpha_1\alpha_2\alpha_3…\alpha{t-1}\alpha_t$$
其中希望(可能取 0.9),在单步加噪时候尽量保留原图的样子,然后加一个很小的噪声。
同时,希望这样 ,这样这个马尔可夫链的末端就是一个标准正态分布。要想满足上面两点, 必须足够大,所以不能减小 的设定值。 -
能不能跳步 reverse?(例如
)
不能,原因如下:
DDPM的目标是为了拟合一个概率分布,这个目标分布(后验分布)通过贝叶斯公式推导为严格的高斯分布:
其中均值 $\tilde{\mu}t = \frac{\sqrt{\alpha_t}(1-\bar{\alpha}{t-1})}{1-\bar{\alpha}t} x_t + \frac{\sqrt{\bar{\alpha}{t-1}}\beta_t}{1-\bar{\alpha}t} x_0$。
该数学推导强依赖于马尔可夫假设。在马尔可夫链中,当前状态的转移只与严格相邻的前一个状态有关。如果强制跨步(跳过中间的),则破坏了马尔可夫链的转移概率结构,导致网络预测的单步噪声 $\epsilon\theta$ 无法匹配跨步后的真实后验分布,从而引发严重的误差累积。
DDIM - Denoising Diffusion Implicit Models
核心思想:打破马尔可夫假设
DDIM 的核心贡献在于证明了:只要前向过程的边缘分布
采样公式重构
DDIM 推导出了一个新的广义反向采样公式:
$$x_{t-1} = \sqrt{\bar{\alpha}{t-1}} \underbrace{\left( \frac{x_t - \sqrt{1 - \bar{\alpha}t} \epsilon\theta(x_t, t)}{\sqrt{\bar{\alpha}t}} \right)}{\text{预测的 } x_0} + \underbrace{\sqrt{1 - \bar{\alpha}{t-1} - \sigma_t^2} \cdot \epsilon_\theta(x_t, t)}{\text{指向 } x_t \text{ 的方向}} + \underbrace{\sigma_t \epsilon_t}{\text{随机噪声}}$$
该公式逻辑上分为三项:
- 用当前
和网络预测的噪声去估算出的原图 。 - 指向
方向的梯度修正项。 - 注入的方差大小为
的随机噪声。
超参数
- 当 $\sigma_t = \sqrt{\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t}} \sqrt{1-\frac{\bar{\alpha}t}{\bar{\alpha}{t-1}}}$ 时:公式退化回标准的 DDPM,具备完整的随机性。
- 当
时:随机噪声项消失,整个逆向生成过程变成确定性的(Deterministic)。这就是 DDIM。由于它是确定性常微分方程(ODE)的近似求解,给定相同的初始噪声 ,最终生成的 是固定的。
为什么 DDIM 可以跳步加速?
因为 DDIM 的生成公式只依赖于时间步
在跳步采样时,只需将公式中的
$$x_{\tau_{i-1}} = \sqrt{\bar{\alpha}{\tau{i-1}}} \left( \frac{x_{\tau_i} - \sqrt{1 - \bar{\alpha}{\tau_i}} \epsilon\theta(x_{\tau_i}, \tau_i)}{\sqrt{\bar{\alpha}{\tau_i}}} \right) + \sqrt{1 - \bar{\alpha}{\tau_{i-1}} - \sigma_{\tau_i}^2} \cdot \epsilon_\theta(x_{\tau_i}, \tau_i) + \sigma_{\tau_i} \epsilon$$


