一、为什么 2026 年你该理解 Diffusion?
翻开任何一篇生成式 AI 的技术文章,几乎都绕不开一个名字——扩散模型(Diffusion Model)。从 2020 年的 DDPM 奠定理论基础,到 2022 年 Stable Diffusion 开源引爆全民 AI 绘画,再到 2024 年 Sora 生成 60 秒视频、FLUX 刷屏社交网络——这些里程碑背后,全部是同一个「去噪」思想在起作用。
与 GAN 相比,它训练稳定、不崩溃、不「模式坍缩」;与 VAE 相比,它生成质量上限高得多。今天 Stable Diffusion、DALL-E、Midjourney、Sora 的核心引擎全部是扩散模型。理解了它,你就理解了文生图、文生视频这两大热点背后的统一原理。
二、核心直觉:故意弄脏,再学会「洗白」
扩散模型的思想用一个类比就能说清:污渍去除法。
想象你有一张干净的照片:
- 故意弄脏:往照片上一点点叠加噪声(高斯噪声),一次比一次重,直到彻底变成雪花屏(纯随机噪声)。这一步叫前向过程,完全是人为设计的,不需要学习。
- 学会清洗:训练一个 AI 网络:「如果图片现在模糊成这样,那么它上一步长什么样?」也就是让网络学会每一步只去掉一点噪声。
- 逐步复原:推理时从一张纯随机噪声出发,让 AI 一步步「反向去噪」,每次只干净一点点,迭代几百步后,一张清晰的图片就「长」出来了。
为什么这样设计?直接一步从「虚无」生成一张高清图,对模型来说难如登天;但「每步只去掉一点点噪声」就简单多了——就像雕塑家每次只凿掉一小块石头,积少成多雕出作品。把困难的大任务拆成一千个容易的小任务,正是扩散模型的精髓。
三、前向过程:数学上如何「加噪」
前向过程是固定的、不需要学习的。给定一张干净图像 x₀,每一步按固定比例加噪:
q(x_t | x_{t-1}) = N(x_t; √(1-β_t)·x_{t-1}, β_t·I)
白话解释:从第 t-1 步到第 t 步,先把原图缩小 √(1-β_t) 倍(信号衰减),再加上方差为 β_t 的高斯噪声。β_t 是人为设计好的噪声调度表(noise schedule),最简单的是线性增长:从 10⁻⁴ 逐渐升到 0.02——前期加噪轻、后期加噪猛。
这个设计有一个极其好用的性质:一步到位。因为多个高斯分布叠加仍是高斯分布,可以直接从 x₀ 跳到任意第 t 步,无需真的逐步走 t 次:
x_t = √(ᾱ_t)·x₀ + √(1-ᾱ_t)·ε, ε ~ N(0, I)
其中 ᾱ_t 是前 t 步信号保留比例的累积乘积。t 越大,信号保留越少、噪声越多;t = T(通常 1000)时 x_T 几乎就是纯噪声。这个性质让训练极其高效——每一步只需算一次公式,不用真的跑 1000 轮。
四、训练目标:极简的「预测噪声」
反向过程才是我们要学习的:已知加了 t 步噪声的 x_t,推断出少一步噪声的 x_{t-1}。��学家证明了一个关键洞见:当每步噪声很小时,反向过程也近似是高斯分布。于是训练目标被化简成了一个漂亮得惊人的形式:
L = E[ || ε - ε_θ(x_t, t) ||² ]
说人话,训练循环只有四步:
- 从数据集随机取一张真实图像 x₀,随机取一个时间步 t(1~1000);
- 采样随机噪声 ε,按公式算出加噪后的 x_t;
- 把 x_t 和时间步 t 喂给网络,让它预测「刚才加进去的噪声 ε」;
- 用 MSE 比较预测噪声与真实噪声,反向传播更新权重。
整个训练目标就是一个噪声回归问题——没有 GAN 里两个网络互相博弈的不稳定,没有 mode collapse,一个网络、一个 MSE 损失、稳定收敛。值得注意的是,预测噪声其实等价于变分下界(ELBO)的一种简化加权,其背后还连着 score matching 与去噪自编码器,数学根基非常深。
五、U-Net 与时间步编码:去噪网络的主力
DDPM 和 Stable Diffusion 1.x 的去噪网络都用 U-Net——一种经典的编码器-解码器结构:
- 编码器逐步下采样压缩空间信息、提取高层特征(这张图是人脸?是风景?);
- 瓶颈层捕获全局语义;
- 解码器逐步上采样恢复分辨率;
- 跳跃连接(skip connection)让解码器直接拿到编码器的浅层细节特征,兼顾「全局语义」与「像素级细节」——这正是去噪需要的双重要求。
还有一个关键设计:时间步编码。网络必须知道「现在图有多脏」,因为 t=999 时几乎全是噪声需要大幅修正,t=1 时接近干净只需微调。做法是把标量 t 用 sinusoidal 位置编码(和 Transformer 里的一模一样)编成向量,注入到 U-Net 的每一层 ResBlock 中——每个 ResBlock 用线性层把时间向量投影到特征通道数,然后加到特征图上。
六、条件生成:怎么让 AI 听你的话
光会去噪还不够,我们想要「按提示词生成」。这就引入了三个组件:
6.1 CLIP / 文本编码器
提示词先经过 CLIP(Stable Diffusion 1.x)或 T5(SD3、FLUX)等文本编码器,转成文本嵌入向量,它携带着「一只戴帽子的猫」的全部语义。
6.2 Cross-Attention(交叉注意力)
在 U-Net 的每个注意力层,图像特征作为 Query,文本嵌入作为 Key 和 Value。图像每块区域会「看」文本中的哪些词,从而把语义「画」到对应位置。提示词写「穿红色衣服」,Cross-Attention 就引导模型在人物区域染上红色。
6.3 Classifier-Free Guidance(无分类器引导)
这是让生成结果贴合提示词的关键技巧:训练时同时让网络学会「带条件去噪」和「无条件去噪」两种模式;推理时跑两次网络,把两次的噪声预测按权重插值:
ε̂ = ε_uncond + w · (ε_cond - ε_uncond)
w 是引导强度(通常 7~15)。w 越大越贴合提示词、但多样性下降;w 越小越自由发挥。你调「CFG Scale」就是在调这个参数。
七、Latent Diffusion:Stable Diffusion 的算力魔法
直接在像素空间跑扩散代价太高:一张 512×512 的图像有近 80 万个维度。Stable Diffusion 的解决方案是 Latent Diffusion(LDM):
- 先用一个自编码器(VAE)把 512×512×3 的图像压缩到 64×64×4 的隐空间(压缩约 48 倍),几乎不损失画质;
- 在隐空间里跑去噪扩散(U-Net 处理的是 64×64 的小特征图);
- 最后用 VAE 解码器把去噪后的隐向量还原成高清图像。
这一「先压缩、再扩散、后还原」的设计,把计算量砍掉一个数量级,才让个人显卡也能跑得动 Stable Diffusion——这也是它 2022 年能开源引爆全球的关键工程突破。
八、采样加速:从 1000 步到 20 步
DDPM 原始采样要跑满 1000 步去噪,太慢。好消息是:数学上可以证明,扩散采样不一定非要沿噪声轨迹走,可以跳步。
- DDIM:把采样变成确定性过程,1000 步压缩到 50 步,质量几乎不降,速度快 20 倍;
- DPM++ 等高级调度器:进一步把 20~30 步做到高质量,成为 WebUI/ComfyUI 默认选择;
- LCM / Turbo 蒸馏:用一致性蒸馏把步数压到 4~8 步甚至 1~4 步,接近实时生成。
这些「调度器(Scheduler)」只改变采样步长与噪声去除方式,不重训模型——理解这一点,调参思路会清晰很多。
九、架构演进:U-Net → DiT(Diffusion Transformer)
2024 年起,扩散模型的骨干网络正从 U-Net 迁移到 DiT(Diffusion Transformer):把图像切成 patch(类似 ViT 处理文字的方式),用 Transformer 块替换 U-Net 的卷积块。原因很简单——Transformer 扩展性更好,模型越大、数据越多,收益越稳定,与 LLM 的 Scaling Law 一脉相承。
- SD3 / FLUX:都采用 DiT 架构 + Flow Matching(更简洁的扩散变体),FLUX 的文本渲染和构图能力明显超越旧架构;
- Sora:视频扩散同样基于 DiT,把视频当作时空 patch 序列处理,同时学到空间与时间维度的动态。
另外还有文本扩散的探索(把 token 在连续嵌入空间加噪/去噪),以及 扩散 + LLM 的融合方向,都是前沿热点。
十、给学习者的路线图
- 先建立直觉:动手跑一次 Hugging Face 的 diffusers 官方示例(DDPM 训练 MNIST/低分辨率小图),亲眼看「噪声逐渐变成图片」,比看十篇博客都管用;
- 吃透数学:把 DDPM 论文(Ho et al. 2020)前向/反向/损失三部分公式自己推一遍,重点理解 ᾱ_t 的「一步到位」性质和「预测噪声」等价于变分下界;
- 玩熟工具:用 Stable Diffusion WebUI / ComfyUI 实操,理解采样器、CFG、LoRA 等每个旋钮的物理含义;
- 读实现:精读 diffusers 源码中 UNet2DConditionModel、DDIMScheduler 的实现,把公式和代码一一对应;
- 跟进前沿:了解 DiT、Flow Matching、视频扩散(Sora)、蒸馏加速等方向,保持知识新鲜度。
总结:扩散模型的本质是「故意加噪、学习去噪、从噪声中生成」。它用一千个简单小任务替代一个困难大任务,用稳定的 MSE 训练替代 GAN 的对抗博弈,用隐空间压缩与跳步采样解决算力瓶颈。理解这一条主线,无论是读论文、调参还是二次开发,你都有了清晰的坐标系。