Diffusion Model 扩散模型原理
Diffusion Model 扩散模型原理
扩散模型(Diffusion Model)是近年来生成模型领域最具突破性的技术之一,它在图像生成、音频合成、分子设计等方向都取得了惊艳的效果。本文将用通俗易懂的方式,带你从零理解扩散模型的核心思想、数学原理以及它为什么能够“从噪声中创造出世界”。
1. 什么是扩散模型?—— 一个物理学的启发
扩散模型的名字来源于非平衡态热力学中的扩散过程。你可以想象在一杯清水中滴入一滴墨水,墨水会从高浓度区域逐渐扩散到整杯水中,最终系统变成均匀的混乱状态。这个过程是不可逆的,但我们能不能学会“倒放”这个过程——从均匀的墨水状态恢复出最初那一滴墨水的明确形状?
扩散模型正是学习了这个逆过程:首先,我们设计一个固定的前向过程,向数据中逐步添加噪声,直到数据完全变为纯噪声;然后,我们训练一个神经网络来学习逆向过程,从噪声中一步一步地“去噪”,最终还原出清晰的数据样本。
2. 扩散模型的两大阶段
扩散模型的整个生命周期可以用下图逻辑来理解:
- 前向扩散过程(Forward Process):缓慢破坏数据结构,最终变为高斯噪声。
- 逆向生成过程(Reverse Process):从噪声出发,逐步去噪,生成目标数据。
这两个过程在时间上被离散化为 T 个时间步,通常 T 取值很大(如 1000),以保证过程的平缓性。
2.1 前向过程:逐步加噪的马尔可夫链
前向过程是一个固定的马尔可夫链,它根据一个预定义的方差调度(variance schedule)$\beta_t \in (0,1)$,逐步向数据 $x_0$ 添加高斯噪声:
$$ q(x_t | x_{t-1}) = \mathcal{N}(x_t; \sqrt{1 - \beta_t} x_{t-1}, \beta_t \mathbf{I}) $$
这里 $x_0$ 是原始真实数据(如图像),$x_T$ 则是几乎完全的随机噪声。这个过程不包含任何可训练参数,并且有一个非常好的性质:我们可以在任意时间步 $t$ 直接由 $x_0$ 采样 $x_t$,而不需要一步步迭代。重参数化后可得:
$$ x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon, \quad \epsilon \sim \mathcal{N}(0, \mathbf{I}) $$
其中 $\alpha_t = 1 - \beta_t$,$\bar{\alpha}t = \prod{s=1}^t \alpha_s$。随着 $t$ 增大,$\sqrt{\bar{\alpha}_t}$ 逐渐趋于 0,数据中的原始信号逐渐被噪声掩盖。
2.2 逆向过程:学习去噪的马尔可夫链
逆向过程的目标是逆转前向扩散:从纯噪声 $x_T \sim \mathcal{N}(0, \mathbf{I})$ 开始,通过一系列可学习的条件高斯转移:
$$ p_\theta(x_{t-1} | x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \Sigma_\theta(x_t, t)) $$
当 $\beta_t$ 足够小时,逆向转移也可以近似为高斯分布。我们使用一个神经网络(通常是 U-Net 结构)来预测这个高斯分布的均值 $\mu_\theta$,方差通常设为已知的固定值或同时学习。
3. 训练目标:预测噪声而不是预测图像
扩散模型的训练目标看似复杂,但经过一系列推导,实际上可以简化为一个非常直观的噪声预测任务。
3.1 从变分下界到简化损失
我们通过最小化负对数似然 $\mathbb{E}[-\log p_\theta(x_0)]$ 的变分下界(ELBO)来训练模型。经过重写,最终的简化训练损失函数为:
$$ \mathcal{L}{\text{simple}}(\theta) = \mathbb{E}{t, x_0, \epsilon}\left[ |\epsilon - \epsilon_\theta(x_t, t)|^2 \right] $$
这里:
- $\epsilon$ 是在前向过程中实际加入到 $x_0$ 的标准高斯噪声。
- $\epsilon_\theta(x_t, t)$ 是神经网络根据当前噪声图像 $x_t$ 和时间步 $t$ 预测的噪声。
- 网络需要学习从 $x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon$ 中恢复出所添加的噪声 $\epsilon$。
这个损失函数非常简洁:网络不是在直接学习生成图像,而是学习预测每一时间步添加的噪声。一旦网络能够准确预测噪声,我们就可以通过一个去噪步骤从 $x_t$ 近似恢复 $x_{t-1}$。
3.2 为什么预测噪声有效?
这与去噪得分匹配(Denoising Score Matching)密切相关。实际上,训练好的噪声预测器 $\epsilon_\theta(x_t, t)$ 与数据分布的得分函数(score function)成比例:
$$ \nabla_{x_t} \log q(x_t) \approx -\frac{1}{\sqrt{1 - \bar{\alpha}t}} \epsilon\theta(x_t, t) $$
因此扩散模型也等价于一种基于得分的生成模型。
4. 采样生成:一步一步“洗去”噪声
训练完成后,采样生成的过程就是执行逆向马尔可夫链。从随机噪声 $x_T \sim \mathcal{N}(0, \mathbf{I})$ 开始,对 $t = T, T-1, \dots, 1$ 重复以下步骤:
- 预测噪声:$\hat{\epsilon} = \epsilon_\theta(x_t, t)$
- 估计 $x_{t-1}$ 的均值: $$ \tilde{\mu}_t = \frac{1}{\sqrt{\alpha_t}} \left( x_t - \frac{\beta_t}{\sqrt{1 - \bar{\alpha}_t}} \hat{\epsilon} \right) $$
- 加入随机噪声(除最后一步 $t=1$ 外): $$ x_{t-1} = \tilde{\mu}_t + \sigma_t z, \quad z \sim \mathcal{N}(0, \mathbf{I}) $$
其中 $\sigma_t$ 取决于所使用的方差方案。这样经过 T 步迭代之后,我们得到最终生成的图像 $x_0$。
4.1 加速采样:DDIM 等改进
由于原始 DDPM(Denoising Diffusion Probabilistic Models)需要完整的 T 步(通常 1000 步)采样,速度较慢。DDIM(Denoising Diffusion Implicit Models) 提出了一类非马尔可夫的加速采样方法,通过改变推理过程,可以在几十步甚至更少步数内生成高质量样本,大幅提高了实用性。
5. 扩散模型的独特优势
相较于 GAN(生成对抗网络)和 VAE(变分自编码器),扩散模型具有几个显著优点:
- 训练稳定:没有 GAN 的对抗训练带来的模式坍塌和训练不稳定问题。损失函数是一个简单的回归任务。
- 生成质量高:许多 SOTA 图像生成模型(如 DALL·E 2、Stable Diffusion、Midjourney 的基础架构)都是基于扩散模型,细节真实度极高。
- 可控性强:易于加入条件引导(classifier guidance 或 classifier-free guidance),实现对生成内容的精细控制。
- 理论基础清晰:建立在明确的概率模型和物理直觉之上。
6. 条件扩散与引导技术
为了使模型生成指定内容,我们需要加入条件控制。条件扩散模型将条件 $y$(如文本描述、类别标签)引入去噪网络中,即 $\epsilon_\theta(x_t, t, y)$。
无分类器引导(Classifier-Free Guidance) 是目前最主流的方法,它在训练时以一定概率丢弃条件,让网络同时学会条件预测和无条件预测。采样时,通过混合两种预测来实现对条件符合度与多样性的平衡:
$$ \hat{\epsilon}\theta(x_t, t, y) = (1 + w) \epsilon\theta(x_t, t, y) - w \epsilon_\theta(x_t, t, \emptyset) $$
其中 $w$ 为引导强度,$w$ 越大,样本与条件 $y$ 越匹配,但可能降低多样性。
7. 热门应用与前沿
扩散模型已经渗透到众多领域:
- 文生图与图像编辑:Stable Diffusion, DALL·E 2, Imagen 背后都是扩散模型。
- 视频生成:通过加入时间维度的扩散过程实现连贯视频。
- 音频合成:如 WaveGrad, DiffWave 生成高保真语音。
- 3D内容生成:DreamFusion 等通过蒸馏引导二维扩散模型生成三维资产。
- 分子构象生成、补全等科学领域。
8. 总结
扩散模型通过模拟物理世界中的扩散过程,将复杂的生成任务转化为一系列简单的去噪步骤。它凭借训练的稳定性、高质量的生成能力和强大的条件控制特性,迅速成为生成模型家族中的核心成员。理解其“加噪-去噪”的核心范式,你就迈出了探索现代生成式 AI 的关键一步。
如果你想开始动手实践,推荐从 Hugging Face 的 diffusers 库开始,用几行代码就能体验扩散模型的魅力。