Diffusion Models 详解:从噪声到图像的生成过程
Diffusion Models 通过模拟"加噪"和"去噪"的物理过程来学习数据分布,已成为当前图像生成领域的主流方法。
Diffusion Models 的核心直觉
想象一下:你把一滴墨水滴入清水中,墨水会逐渐扩散,最终均匀分布——这就是扩散(Diffusion)。Diffusion Models 借用了这个物理过程的数学框架。
核心思想:
前向过程(加噪):清晰图像 → 逐步加入噪声 → 纯噪声
反向过程(去噪):纯噪声 → 逐步去除噪声 → 清晰图像
类比:
前向 = 把一幅画慢慢揉成纸团(信息逐步丢失)
反向 = 把纸团慢慢展开还原成画(信息逐步恢复)
关键洞察:如果我们能学会"去噪"这个逆过程,就能从纯噪声中生成任意图像。
前向扩散过程
前向过程是一个固定的马尔可夫链,每一步向数据中添加少量高斯噪声:
# 前向扩散过程
# x_0: 原始清晰图像
# x_t: 第 t 步加噪后的图像
# β_t: 第 t 步的噪声调度(noise schedule)
# 逐步加噪
x_t = √(1 - β_t) * x_{t-1} + √β_t * ε, ε ~ N(0, I)
# 经过 T 步后,x_T 近似于标准正态分布 N(0, I)
噪声调度(Noise Schedule)
β_t 控制每一步加噪的强度,常见的调度方式:
线性调度(DDPM 原始论文):
β_1 = 0.0001, β_T = 0.02(T=1000)
β_t 线性增长
余弦调度(改进版):
β_t = 1 - cos²(πt/2T) / cos²(π(t-1)/2T)
噪声增加更平滑,避免线性调度的突变问题
闭式解:一步到位
由于前向过程是马尔可夫链,我们可以直接计算任意时刻 t 的加噪结果,无需逐步迭代:
# 定义 α_t = 1 - β_t, α̅_t = α_1 × α_2 × ... × α_t
# 则有闭式解:
x_t = √α̅_t * x_0 + √(1 - α̅_t) * ε
# 直接从 x_0 跳到 x_t,加速训练
反向去噪过程
反向过程是学习的目标:训练一个神经网络来预测每一步的噪声,然后去除它。
# 训练目标:预测每一步添加的噪声
# 损失函数(简化版):
noise = randn_like(x_0) # 采样随机噪声
t = randint(1, T) # 随机选择时间步
x_t = √α̅_t * x_0 + √(1-α̅_t) * noise # 加噪
predicted_noise = model(x_t, t) # 模型预测噪声
loss = MSE(noise, predicted_noise) # 最小化预测误差
模型通常使用 U-Net 架构,它能够同时利用高层语义信息和低层细节信息。
DDPM:里程碑式的工作
DDPM(Denoising Diffusion Probabilistic Models)是 2020 年 Ho 等人提出的经典工作,将 Diffusion Models 提升到了实用水平。
DDPM 的训练算法
Repeat:
1. 从数据集采样 x_0
2. 随机采样时间步 t ~ Uniform(1, T)
3. 随机采样噪声 ε ~ N(0, I)
4. 计算加噪样本 x_t = √α̅_t * x_0 + √(1-α̅_t) * ε
5. 前向传播:ε_θ = model(x_t, t)
6. 计算损失:loss = ||ε - ε_θ||²
7. 反向传播,更新模型参数
DDPM 的采样算法
从纯噪声生成图像:
x_T ~ N(0, I) # 从纯噪声开始
For t = T down to 1:
z ~ N(0, I) # 采样新噪声(最后一步除外)
x_{t-1} = (1/√α_t)(x_t - (1-α_t)/√(1-α̅_t) * model(x_t, t)) + σ_t * z
返回 x_0 # 最终生成的图像
从 DDPM 到 Stable Diffusion
DDPM 的问题是计算量巨大——每次生成需要数百步去噪,每步都要处理整张图像。Stable Diffusion 通过潜空间扩散解决了这个问题。
潜空间扩散(Latent Diffusion)
传统 DDPM(像素空间):
在高分辨率图像上直接加噪/去噪
计算量:巨大(512×512×3 = 786,432 维)
Stable Diffusion(潜空间):
1. 用 VAE 编码器将图像压缩到低维潜空间
2. 在潜空间中进行扩散和去噪
3. 用 VAE 解码器将结果还原为图像
计算量:大幅降低(64×64×4 = 16,384 维)
压缩比:约 48 倍
Cross Attention 引导
Stable Diffusion 使用 Cross Attention 将文本条件注入生成过程:
文本 → CLIP 文本编码器 → 文本嵌入
↓
图像特征(UNet)← Cross Attention ← 文本嵌入
效果:文本中的"红色"会影响对应区域生成红色
Diffusion Models 的优势
| 优势 | 说明 |
|---|---|
| 训练稳定 | 简单的 MSE 损失,无对抗训练的不稳定性 |
| 生成质量高 | 在 FID 等指标上超越 GAN |
| 多样性好 | 不易出现模式崩塌 |
| 理论优雅 | 有坚实的概率论基础(变分推断) |
| 可控性强 | 通过 Classifier-Free Guidance 等方法灵活控制生成 |
主要应用
1. 文本生成图像
DALL-E 2/3、Stable Diffusion、Midjourney 等工具已经能够根据文字描述生成令人惊叹的图像。
2. 图像编辑与修复
Inpainting(修复图像缺失部分)、Outpainting(扩展图像边界)、图像上色等。
3. 视频生成
从文本描述生成视频片段,如 Sora、Runway Gen-2 等。
4. 3D 生成
生成 3D 模型、NeRF 场景等。
总结
Diffusion Models 通过优雅的"加噪-去噪"框架,为生成模型提供了一条稳定且高质量的路径。从 DDPM 到 Stable Diffusion 的演进,展示了潜空间压缩和条件引导如何让这一理论变得实用。理解 Diffusion Models 的原理,是理解当前 AI 绘画、视频生成等技术的关键。
延伸阅读:变分自编码器(VAE)详解 了解 Stable Diffusion 中 VAE 编码器的工作原理。