【DDPM 扩散模型】Part 2:前向扩散的数学推导(从直觉到公式全讲透)

新星杯·14天创作挑战营·第17期 10w+人浏览 706人参与

DDPM 扩散模型完全指南 — Part 2:前向扩散的数学推导(从直觉到公式全讲透)

🧨 本章节专为数学小白打造:用最通俗的语言讲清 DDPM 前向扩散的全部数学公式

🎯 目标:彻底理解为什么加噪公式长这样、为什么能一步跳到任意 t、每个符号是什么意思

📅 最后更新:2025年11月


📋 目录


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(xtxt1)=N(xt;1βt xt1,β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=αˉt x0+1αˉt ε

其中:

  • ε ~ N(0, I)(纯噪声)
  • α ˉ t = ∏ i = 1 t ( 1 − β i ) \bar{\alpha}_t = \prod_{i=1}^t (1-\beta_i) αˉt=i=1t(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=αˉt x0+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=αˉt x0+1αˉt ε

训练会变成:

x₀ → 加噪生成 x₁
x₁ → 加噪生成 x₂
……
x₉₉₉ → 加噪生成 x₁₀₀₀

这要重复一千次。
一张图平均 1024×1024 分辨率,重复加噪会让训练慢得离谱。

但现在:

➤ 我们只需要一行公式就能生成任何 t 的加噪图

训练效率直接提升 ×1000。

这也是 DDPM 能落地的关键。


🎉祝你天天开心,我将更新更多有意思的内容,欢迎关注!

最后更新:2025年11月
作者:Echo

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值