DDPM 扩散模型完全指南 — Part 2:前向扩散的数学推导(从直觉到公式全讲透)
🧨 本章节专为数学小白打造:用最通俗的语言讲清 DDPM 前向扩散的全部数学公式
🎯 目标:彻底理解为什么加噪公式长这样、为什么能一步跳到任意 t、每个符号是什么意思
📅 最后更新:2025年11月
📋 目录
- 1. 前向扩散到底在干什么?
- 2. 第一步:一步加噪声的数学模型
- 3. 第二步:为什么高斯分布?(直觉解释)
- 4. 第三步:一步一步扩散会得到什么?
- 5. 第四步:天才发现——可以直接从 x₀ 跳到 xₜ
- 6. 第五步:一行公式总结整个前向过程(超重要)
- 7. 第六步:图解理解 √ᾱₜ 与 βₜ 的作用
- 8. 第七步:为什么一步跳到 t 这种写法对训练那么重要?
1. 前向扩散到底在干什么?
一句话:
前向扩散就是不断往图像里加高斯噪声,让它从清晰 → 模糊 → 更模糊 → 完全噪声。
数学上,我们把这个过程表示为:
x₀ → x₁ → x₂ → …… → xₜ
(加一点噪声)(再加一点) (纯随机噪声)
但这句话只是直觉,真正数学是什么?
我们现在要从 第一性原理 讲清楚整个公式。
2. 第一步:一步加噪声的数学模型
论文把 “第 t 步图像 xₜ 是怎么来的” 写成了一个概率分布:
q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) q(x_t \mid x_{t-1}) = \mathcal{N}\left(x_t; \sqrt{1-\beta_t}\, x_{t-1}, \beta_t I\right) q(xt∣xt−1)=N(xt;1−βtxt−1,βtI)
我们现在把这行拆成“完全小白能理解”的解释。
🔍 q(xₜ | xₜ₋₁) 是什么?
表示:xₜ 是在什么概率规则下,由 xₜ₋₁ 生成的?
就像说:
我告诉你上一帧图片,你能用什么规则生成下一帧?
🔍 它是一个高斯分布(正态分布)
公式里的
N
(
μ
,
σ
2
I
)
\mathcal{N}(\mu, \sigma^2 I)
N(μ,σ2I)
表示:
新图像 = 均值 μ + 一些随机噪声
🔍 为什么均值是 √(1−βₜ) xₜ₋₁?
因为 βₜ 是“加噪声的比例”,所以:
- √(1−βₜ) 越接近 1 = 噪声少
- √(1−βₜ) 越接近 0 = 噪声多
βₜ 是个很小的数,比如 0.0001。
所以 √(1−βₜ) ≈ 0.99995
→ 几乎保持原图,只是轻轻“糊一下”。
可以理解为:
新图像 = 上一帧 × 保真率
+ 噪声 × 增加率
这里保真率就是 √(1−βₜ)。
🔍 variance(方差)为 βₜ I
表示加的噪声量。
βₜ 越大 → 噪声越多
βₜ 越小 → 噪声越少
🔥 一句话总结这行公式
x t = (大部分的上一张图) + (一点点噪声) x_t = \text{(大部分的上一张图)} + \text{(一点点噪声)} xt=(大部分的上一张图)+(一点点噪声)
3. 第二步:为什么高斯分布?(直觉解释)
高斯噪声的原因其实非常现实:
⭐ 1. 它是最常见的噪声形式
现实世界中的噪声(相机噪声、传感器噪声)天然符合高斯。
⭐ 2. 加法容易处理
高斯 + 高斯 = 新的高斯(这是数学奇迹!)
所以:
x₀ 加噪 → x₁
x₁ 加噪 → x₂
…
xₜ 加噪 → xₜ₊₁
最终整个链条都还是高斯!
这让后面推反向过程超级容易。
⭐ 3. 公式漂亮、可微、神经网络友好
扩散模型训练依赖模型预测噪声,
高斯噪声简化了所有推导。
4. 第三步:一步一步扩散会得到什么?
你可能会好奇:
“如果我不停往里加噪声,最终是什么?”
答案是:
最终 xₜ 会变成纯高斯噪声。
这和现实完全一致:
- 拍照时噪声越来越多
- 最后像素全乱了
- 你看不到任何原始内容
扩散模型正是利用这个:
从完全随机的噪声恢复图像 = 生成图像。
5. 第四步:天才发现——可以直接从 x₀ 跳到 xₜ
DDPM 最聪明的一步来了。
他们发现:
不用每次都从 x₀ 加到 x₁,加到 x₂,加到 x₃ …… 加到 xₜ。
可以一次公式直接跳到 xₜ。
最终得到:
x t = α ˉ t x 0 + 1 − α ˉ t ε x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1-\bar{\alpha}_t} \varepsilon xt=αˉtx0+1−αˉtε
其中:
- ε ~ N(0, I)(纯噪声)
- α ˉ t = ∏ i = 1 t ( 1 − β i ) \bar{\alpha}_t = \prod_{i=1}^t (1-\beta_i) αˉt=i=1∏t(1−βi)
🚀 这行公式非常非常重要!
它说明:
xₜ 是“干净图像 + 噪声”的加权组合。
也就是:
- 系数 √ᾱₜ:控制保留多少原图信息
- 系数 √(1−ᾱₜ):控制噪声有多少
- ε:高斯噪声的方向
6. 第五步:一行公式总结整个前向过程(超重要)
你只需要记住这一行:
xₜ = 图像 * (保留率) + 噪声 * (噪声率)
数学写法:
x t = α ˉ t x 0 + 1 − α ˉ t ε x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\varepsilon xt=αˉtx0+1−αˉtε
这行公式给我们两个超级能力:
✨ 能力 1:可以直接生成任意 t 的加噪图
不需要重复 1000 次加噪!
✨ 能力 2:训练速度大幅提升
你可以:
- 随机抽一个 t
- 一步生成 xₜ
- 用它训练网络预测噪声
整个训练变得超级高效。
7. 第六步:图解理解 √ᾱₜ 与 βₜ 的作用
我们用一个超级直观的例子:
假设:
βₜ 很小 → 每一步加的噪声很少
αₜ = 1 - βₜ
ᾱₜ = 所有 αₜ 的累乘
越到后面,ᾱₜ 越小。
🎨 图示(直觉)
t = 0 ᾱₜ=1.0 → 完全是图像
√ᾱₜ=1.0
√(1-ᾱₜ)=0
t = 200 ᾱₜ≈0.6 → 图像 60% + 噪声 40%
√ᾱₜ≈0.77
t = 500 ᾱₜ≈0.2 → 图像 20% + 噪声 80%
√ᾱₜ≈0.45
t = 900 ᾱₜ≈0.01 → 图像 1% + 噪声 99%
√ᾱₜ≈0.1
t = 1000 ᾱₜ≈0 → 几乎纯噪声
√ᾱₜ≈0
随着 t 增大,图像内容被噪声“淹没”。
到 t = T 时,就真的变成纯噪了。
8. 第七步:为什么一步跳到 t 这种写法对训练那么重要?
如果你没有这条公式:
x t = α ˉ t x 0 + 1 − α ˉ t ε x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1-\bar{\alpha}_t} \varepsilon xt=αˉtx0+1−αˉtε
训练会变成:
x₀ → 加噪生成 x₁
x₁ → 加噪生成 x₂
……
x₉₉₉ → 加噪生成 x₁₀₀₀
这要重复一千次。
一张图平均 1024×1024 分辨率,重复加噪会让训练慢得离谱。
但现在:
➤ 我们只需要一行公式就能生成任何 t 的加噪图
训练效率直接提升 ×1000。
这也是 DDPM 能落地的关键。
🎉祝你天天开心,我将更新更多有意思的内容,欢迎关注!
最后更新:2025年11月
作者:Echo
3533

被折叠的 条评论
为什么被折叠?



