扩散模型基础:从噪声到图像
扩散模型把生成拆成两步:先给真实数据逐步加噪直到变成纯噪声,再训练一个网络学会反向一步步去噪。它训练稳定、样本质量高,是 Stable Diffusion 等工具的核心技术。
前向加噪
前向过程在 T 步内按预设方差计划,把数据 x0 逐渐变成高斯噪声 xT。由于每一步是简单的高斯混合,可直接用闭式公式从 x0 一步采样任意时刻的 xt,无需逐步计算。
import torch
t = torch.tensor([5])
noise = torch.randn_like(x0)
xt = sqrt_alphas_cumprod[t] * x0 + sqrt_one_minus[t] * noise
反向去噪
训练时,网络 εθ 预测在时刻 t 加入的噪声,损失为预测噪声与真实噪声的均方误差。采样时从纯噪声出发,反复用网络估计并减去噪声,逐步还原出清晰图像。
noise_pred = model(xt, t)
loss = ((noise_pred - noise) ** 2).mean()
注意点
扩散模型采样需多步迭代,速度慢于 GAN 一步生成;Latent Diffusion 把过程搬到压缩潜空间以提速。步数与噪声计划显著影响质量与耗时。
小结
扩散模型以前向加噪与反向去噪的简化目标实现高质量生成,训练比 GAN 更稳定。理解闭式加噪与噪声预测损失,是上手 Stable Diffusion 的基础。
参考与延伸阅读
- Ho 等 2020 DDPM 原始论文。已核验。https://arxiv.org/abs/2006.11239
- Hugging Face 扩散模型课程。已核验。https://huggingface.co/courses/diffusion-models-class
本文累计阅读 — 次