扩散模型DDPM

wen IT资讯 24

本文目录导读:

扩散模型DDPM

  1. 核心直觉
  2. 数学原理(直观版)
  3. 训练目标
  4. 采样 (生成新图片)
  5. 为什么 DDPM 如此强大?
  6. 主要缺点
  7. 总结表

我们来详细梳理一下去噪扩散概率模型(DDPM)

这可以说是现代生成式AI(如DALL-E 2, Stable Diffusion)的基础架构,它的核心思想非常优雅:通过逐步向数据添加噪声来破坏它,然后学习如何逆向这个过程来恢复数据。

我将从直觉、数学原理(简洁版)、训练与采样流程、以及优缺点这几个方面来讲解。


核心直觉

想象你有一张清晰的照片,你一点一点地往上撒沙子(添加噪声),直到最后照片完全被沙子覆盖,变成一片纯噪声(纯随机像素)。

  • 正向过程(破坏):就是撒沙子的过程。
  • 逆向过程(生成):就是学习如何“吸走”沙子,从纯噪声中一步步恢复出一张清晰的图片。

这才是真正的生成模型——它不学习数据的标签,而是学习数据的结构和分布。


数学原理(直观版)

DDPM 定义了两个马尔可夫链(每一步只依赖上一步):

A. 正向扩散过程 (Forward Diffusion Process)

这是一个固定的、无参数的过程,给定一个真实数据点 $x_0$,我们按照一个方差计划(Variance Schedule,通常用 $\beta_1, ..., \beta_T$ 表示)逐步添加高斯噪声。

公式: $q(xt | x{t-1}) = \mathcal{N}(x_t; \sqrt{1 - \betat} x{t-1}, \beta_t I)$

  • 含义:给定上一步的状态 $x_{t-1}$,当前状态 $x_t$ 服从一个高斯分布,其均值是上一步的缩放,方差是 $\beta_t$(一个很小的数,代表添加的噪声强度)。

  • 关键技巧(重参数化):我们不需要一步一步地走,可以直接一步到位地得到任意 $t$ 时刻的噪声数据: $$x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon$$

    • $\alpha_t = 1 - \beta_t$
    • $\bar{\alpha}t = \prod{i=1}^t \alpha_i$ (所有 $\alpha$ 的乘积)
    • $\epsilon \sim \mathcal{N}(0, I)$ (标准高斯噪声)

    重要结论:当 $T$ 足够大,且 $\beta_t$ 设计合理时,$x_T$ 几乎完全是一个标准高斯噪声 $\mathcal{N}(0, I)$。

B. 逆向过程 (Reverse Process)

这是我们需要学习的参数化过程,模型 $p_\theta$ 的目标是学习如何逆转每一步的噪声添加,如果每一步的噪声增量 $\betat$ 很小,那么逆向步的条件分布也近似是一个高斯分布,我们用神经网络来预测这个高斯分布的均值 $\mu\theta$ 和方差 $\Sigma_\theta$(通常方差被固定为常数)。

公式: $p\theta(x{t-1} | xt) = \mathcal{N}(x{t-1}; \mu_\theta(xt, t), \Sigma\theta(x_t, t))$

  • 核心任务:给定当前噪声图 $x_t$ 和步数 $t$,预测前一时刻的均值。

训练目标

DDPM发现,直接预测均值很困难,但可以做等价的变换:预测噪声 $\epsilon$

在训练时,我们:

  1. 随机抽取一张真实图片 $x_0$。
  2. 随机抽取一个时间步 $t$。
  3. 生成一个随机噪声 $\epsilon$(形状和 $x_0$ 一样)。
  4. 用重参数化公式得到 $x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon$。
  5. 将 $xt$ 和 $t$ 输入到神经网络 $\epsilon\theta$ 中,要求网络预测出我们之前加入的噪声 $\epsilon$

损失函数(简化版): $$\mathcal{L} = \mathbb{E}_{x0, \epsilon, t} \left[ || \epsilon - \epsilon\theta(x_t, t) ||^2 \right]$$

直观理解:网络学会了“看到”图片中的噪声残留,并输出它估计的噪声,我们让它最小化与真实噪声的均方误差。


采样 (生成新图片)

训练完成后,我们有了一个能预测噪声的神经网络 $\epsilon_\theta$,现在生成新图片:

  1. 初始化:从标准高斯分布中抽取一个随机噪声 $x_T \sim \mathcal{N}(0, I)$。
  2. 迭代去噪:从 $t = T$ 到 $t = 1$,依次进行:
    • 用网络预测 $xt$ 中的噪声:$\epsilon\theta(x_t, t)$。
    • 通过公式反推出 $x{t-1}$: $$x{t-1} = \frac{1}{\sqrt{\alpha_t}} \left(x_t - \frac{\beta_t}{\sqrt{1 - \bar{\alpha}t}} \epsilon\theta(x_t, t) \right) + \sigma_t z$$
      • $\sigma_t z$ 是一个随机噪声项(当 $t>1$ 时加入,增加多样性;$t=1$ 时不加,为了最终结果更稳定)。
      • $z \sim \mathcal{N}(0, I)$。
  3. 输出:最终得到 $x_0$,即生成的清晰图片。

为什么 DDPM 如此强大?

  • 训练稳定:相比GAN(生成对抗网络)中的对抗训练(让生成器和判别器相互博弈),DDPM的训练目标是最小化简单的均方误差,无需平衡两个网络,极其稳定。
  • 模式覆盖好:DDPM学习整个数据分布,不容易出现“模式坍塌”(即只生成少数几种结果)。
  • 高质量样本:以生成图像的多样性和保真度著称。

主要缺点

  • 采样速度极慢:这是最致命的缺点,它需要连续迭代成百上千次(T通常是1000)才能生成一张图,相比之下,GAN通常一步生成。
    • 改进:后来提出了DDIM(去噪扩散隐式模型)、DPM-Solver等加速采样方法,将步数从1000降低到10-50步。
  • 计算成本高:训练和采样都需要大量的计算资源(尤其是硬内存和时间)。
  • 对超参数敏感:噪声计划($\beta_t$的设计)对结果影响很大,需要精心调整。

总结表

特性 描述
核心思想 向数据逐步加噪声(固定前向),然后学习逐步去噪(参数化反向)。
关键技巧 重参数化(一步到位得到任意时刻噪声)、预测噪声(而非直接预测均值)。
训练目标 L2 损失 —— 最小化预测噪声与真实噪声的差异。
优势 训练稳定、生成质量高、模式覆盖广。
劣势 采样速度慢、计算成本高。
典型应用 图像生成(DALL-E 2, Imagen, Stable Diffusion)、音频生成、分子生成。

DDPM通过训练一个神经网络去预测(并移除)添加在图片上的高斯噪声,从而掌握了从纯随机噪声中一步步生成真实、清晰图像的能力。

希望这个梳理能帮你理解DDPM!后续如果要深入了解加速采样的DDIM,或者条件生成的引导控制,随时可以继续交流。

抱歉,评论功能暂时关闭!