Diffusion Model原理与应用:从基础到实践
1. Diffusion Model的核心原理
Diffusion Model(扩散模型)是一种基于马尔可夫链的生成模型,其核心思想是通过逐步添加噪声来破坏数据分布,再学习如何逆转这个过程。这种"破坏-重建"的机制使其在图像生成领域展现出强大的潜力。
1.1 前向扩散过程
前向扩散过程可以看作是一个固定的马尔可夫链,它通过T个步骤逐步向数据添加高斯噪声。具体来说,给定初始数据分布x₀∼q(x₀),前向过程定义如下:
q(x₁:T|x₀) = ∏[t=1→T] q(xₜ|xₜ₋₁)其中每个步骤的转移核是高斯分布:
q(xₜ|xₜ₋₁) = N(xₜ; √(1-βₜ)xₜ₋₁, βₜI)这里βₜ是噪声调度参数,控制着每一步添加的噪声量。一个关键特性是,我们可以直接计算任意步骤t的噪声数据:
xₜ = √(ᾱₜ)x₀ + √(1-ᾱₜ)ε其中αₜ=1-βₜ,ᾱₜ=∏[s=1→t]αₜ,ε∼N(0,I)。这个闭式解大大简化了训练过程。
1.2 反向扩散过程
反向过程的目标是从噪声数据x_T∼N(0,I)开始,逐步去噪恢复原始数据。这需要学习一个参数化的转移核:
pθ(xₜ₋₁|xₜ) = N(xₜ₋₁; μθ(xₜ,t), Σθ(xₜ,t))理论上,当βₜ足够小时,反向转移核q(xₜ₋₁|xₜ)也是高斯分布。但由于它依赖于整个数据集,我们需要训练神经网络来近似这个分布。
2. 训练目标与优化
2.1 变分下界损失
扩散模型的训练目标是最小化负对数似然的变分下界(VLB):
L_VLB = E_q[log q(x₁:T|x₀)/pθ(x₀:T)]这个目标可以分解为多个KL散度项:
L_VLB = L_T + ∑[t>1]L_{t-1} + L₀其中:
- L_T是常数项(因为q(x_T|x₀)是固定分布)
- L_{t-1}比较了反向过程与真实后验的KL散度
- L₀是最后的重构项
2.2 简化训练目标
Ho等人发现可以简化训练目标,直接预测噪声:
L_simple = E[||ε - εθ(xₜ,t)||²]这种简化不仅计算高效,而且在实际中表现更好。其背后的直觉是:与其预测整个均值,不如专注于预测噪声成分。
3. 采样方法与加速
3.1 DDPM采样
原始DDPM采用完整的马尔可夫链进行采样:
- 从x_T∼N(0,I)开始
- 对于t=T,...,1:
- 采样z∼N(0,I)
- 计算x_{t-1} = μθ(xₜ,t) + σₜz
- 返回x₀
这种方法需要完整的T步计算,通常T=1000,导致采样速度慢。
3.2 DDIM加速
DDIM(Denoising Diffusion Implicit Model)通过重新参数化实现了更高效的采样。关键观察是:扩散过程可以看作是一个ODE,允许使用更大的步长。DDIM采样只需约50步就能达到与DDPM相当的质量。
DDIM的更新规则:
x_{t-1} = √(ᾱ_{t-1})fθ(xₜ,t) + √(1-ᾱ_{t-1}-σₜ²)εθ(xₜ,t) + σₜz其中fθ(xₜ,t)是预测的x₀。当σₜ=0时,过程变为确定性,称为DDIM。
4. 条件生成技术
4.1 分类器引导
Dhariwal等人提出使用预训练分类器来引导生成过程。通过修改噪声预测:
ε̂θ(xₜ,t,y) = εθ(xₜ,t) - √(1-ᾱₜ)∇xₜlog p(y|xₜ)其中分类器梯度∇xₜlog p(y|xₜ)将采样推向目标类别y。权重w控制引导强度:
ε̂θ = εθ - w√(1-ᾱₜ)∇xₜlog p(y|xₜ)4.2 无分类器引导
Ho等人提出更优雅的方案:联合训练条件和非条件模型,通过插值实现引导:
ε̂θ = (1+w)εθ(xₜ,t,y) - wεθ(xₜ,t)这种方法不需要额外分类器,且在实践中表现更好。
5. 潜在扩散模型
Rombach等人提出在潜在空间进行扩散(LDM),显著提升效率:
- 使用VAE或VQ-VAE将图像压缩到潜在空间z=ε(x)
- 在潜在空间进行扩散过程
- 解码器D将生成的z转换回像素空间
LDM的优势:
- 计算成本大幅降低(16×16 latent vs 256×256像素)
- 保持生成质量
- 更容易与其他模态(如文本)结合
6. 实际应用技巧
6.1 噪声调度选择
- 线性调度:βₜ从β₁=1e-4线性增加到β_T=0.02
- 余弦调度:更平滑的噪声变化,通常表现更好
βₜ = clip(1-ᾱₜ/ᾱ_{t-1}, 0.999) ᾱₜ = f(t)/f(0), f(t)=cos((t/T+s)/(1+s)·π/2)²6.2 架构设计要点
- U-Net是主流选择,但需要适当调整:
- 增加低分辨率层的深度
- 使用注意力机制处理全局依赖
- 残差连接缩放1/√2稳定训练
- 对于文本条件生成,交叉注意力是关键:
Attention(Q,K,V) = softmax(QKᵀ/√d)V Q = W_Qφ(z), K = W_Kτ(y), V = W_Vτ(y)6.3 采样优化
- 使用DDIM加速采样(50-100步)
- 动态阈值处理避免过饱和:
- 计算s为像素绝对值的某个百分位数
- 若s>1,将预测裁剪到[-s,s]并除以s
- 渐进式蒸馏可进一步减少采样步数
7. 常见问题与解决方案
7.1 生成图像模糊
可能原因及解决方案:
- 噪声调度过于激进:尝试更平缓的余弦调度
- 模型容量不足:增加U-Net通道数或深度
- 训练不充分:延长训练时间,使用更大的batch size
7.2 条件生成不准确
改进方法:
- 增强条件机制:使用交叉注意力而非简单拼接
- 增加无分类器引导权重w
- 检查条件信息的编码质量(如CLIP文本嵌入)
7.3 采样速度慢
加速策略:
- 采用DDIM采样(可减少至20-50步)
- 使用渐进式蒸馏训练专用快速模型
- 考虑一致性模型(Consistency Model)的单步生成
8. 前沿发展与展望
扩散模型仍在快速发展,几个值得关注的方向:
更快采样方法:
- 一致性模型(1步生成)
- 知识蒸馏技术
- 改进的ODE求解器
多模态应用:
- 文本到图像(如Stable Diffusion)
- 音频生成
- 视频生成
可控生成:
- 更精细的条件控制
- 组合式生成
- 语义编辑
理论理解:
- 扩散过程的数学特性
- 与其他生成模型的联系
- 采样动力学的深入分析
在实际应用中,建议从标准DDPM/DDIM开始,逐步尝试更先进的技术。对于资源有限的情况,预训练的潜在扩散模型(如Stable Diffusion)是理想起点。
