Diffusion学习

HuggingFace Diffusion Models Course

HuggingFace Diffusion公开课

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 的核心贡献在于证明了:只要前向过程的边缘分布 与 DDPM 保持一致(即 仍然可以写成 ),就可以构造出非马尔可夫的前向过程。这种构造使得模型可以使用与 DDPM 完全一致的目标函数进行训练,但在采样时解除了严格的步步相连限制。

采样公式重构

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{随机噪声}}$$

该公式逻辑上分为三项:

  1. 用当前 和网络预测的噪声去估算出的原图
  2. 指向 方向的梯度修正项。
  3. 注入的方差大小为 的随机噪声。

超参数 的意义 : 决定了生成过程的随机性:

  • 当 $\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 的生成公式只依赖于时间步 对应的先验参数 (而不是像 DDPM 那样依赖 的马尔可夫单步递推),我们完全可以定义一个更短的时间步子序列 (例如 ,序列为 )。

在跳步采样时,只需将公式中的 替换为子序列中的相邻步

$$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$$