在近几年 AI 的发展中,Transformer 和 扩散模型 (Diffusion Model) 是两条重要的技术路线。它们都能生成语音、图像甚至音乐,但在效果上常常有一个直观的差别:Transformer 输出偏"粗",扩散模型更擅长生成细节。这篇文章就用直观例子和数学原理来解释其中的原因。
1. Transformer 的生成机制
一次性预测
-
Transformer(尤其是非自回归版本)会 一次性预测整段序列。
-
损失函数通常是均方误差 (MSE) 或交叉熵:
LTransformer=∥Y−Y^∥2
- 优化目标是让预测序列和真实序列的差距最小。
问题:折中效应
如果训练数据里同一个输入对应多个合理输出(比如一句话可能有不同的表达方式),Transformer 会倾向于输出一个 折中值。 数学上,它逼近的是条件期望:
Y^≈EY∣X
结果就是整体正确,但细节模糊。
2. 扩散模型的生成机制
逐步去噪
扩散模型的核心思想是:从噪声开始,逐步去噪,恢复真实数据。
- 正向加噪:
xt=αt⋅x0+1−αt⋅ϵ
其中 αt=∏s=1t(1−βs),控制保留多少原始信号。
- 反向去噪: 神经网络预测噪声 ϵθ(xt,t),损失函数是:
LDiffusion=Ex0,t,ϵ∥ϵ−ϵθ(xt,t)∥2
优势:分布而非均值
扩散模型不是直接预测最终结果,而是预测它自己加的随机噪声分布。
-
如果训练数据里同一个输入可能对应多种合理的输出(比如某个问题的答案可能是 50 或 60),扩散模型可以在采样时得到两种结果。
-
数学上,它逼近的是条件分布:
Y^∼p(Y∣X)
而不是条件期望。
3. 场景举例
假设我们要预测一段序列,真实训练数据里存在两种可能结果:
- 结果 A:
10,20,30,40,50
- 结果 B:
10,20,30,40,60
注意最后一个值可能是 50,也可能是 60,两种都合理。
Transformer
预测输出折中:
10,20,30,40,55
损失函数最小:
(50−55)^2+(60−55)^2=50
结果:细节丢失,只能给出平均值。
扩散模型
这时就可以用扩散模型来完善细节。
假设扩散模型看到 10,20,30,40,55,从噪声的角度,它会预测出 0,0,0,0,−5 或 0,0,0,0,+5 两种噪声,分别对应真实的结果 A 和结果 B。
扩散网络预测噪声时:
-
不会折中:因为在损失函数里,0,0,0,0,−5 和 0,0,0,0,+5 都是合理的噪声解,模型只要预测其中一个方向就能得到很小的损失。如果它折中预测成 0,0,0,0,0 ,反而损失更大。
-
迭代过程:在采样时,扩散模型会从噪声开始,逐步去噪。每一步都沿着某个合理的方向修正,最终收敛到一个合理解(比如 50 或 60)。
-
轨迹稳定:一旦初始噪声确定,采样轨迹就被锁定(扩散模型的马尔科夫链决定了这点)。模型会沿着某个合理方向(比如往 50 修正,或往 60 修正)逐步收敛,不会在同一次采样过程中来回跳。
最后采样时可能得到:
- 10,20,30,40,50
- 10,20,30,40,60
结果:保留了不同可能性的细节。
直观比喻
可以把Transformer和扩散采样想象成:
-
Transformer:一次性拍一张照片 → 如果有两种可能,它只能拍个折中的模糊照。
-
扩散模型:从一张模糊底片开始,每一步都沿着某个方向修复 → 如果底片一开始偏向 50,就会一路修到 50;如果一开始偏向 60,就会一路修到 60。不会在同一张底片里先修到 50 再跳到 60或者修到折中的55。
4. 总结
-
Transformer :优化的是 均值 → 输出折中,细节模糊。
-
扩散模型 :优化的是 噪声分布 → 输出多样化,细节丰富。
-
本质区别:
-
Transformer 学的是 条件期望。
-
扩散模型学的是 条件分布。
-
因此在语音合成、图像生成等任务中,扩散模型往往能生成更自然、更细致的结果。