扩散原野DIFFUSION FIELD
0/8
02Forward process

把信息有计划地抹去。

前向过程 q 是固定的马尔可夫链:每一步缩小一点旧信号,再加入一份已知方差的高斯噪声。它通常不需要训练。

本节目标

能从逐步转移读到闭式采样;能解释 βt\beta_tαt\alpha_tαˉt\bar\alpha_t 和 SNR;能用调度器控制信息消失的节奏。

x0x_0原始数据x0x_0 · 原始数据shape: [B,C,H,W]

未经加噪的训练样本。

xtx_t带噪状态xtx_t · 带噪状态shape: [B,C,H,W]

时间步 tt 的随机变量,与 x0x_0 同维度。

βt\beta_t本步噪声方差βt\beta_t · 本步噪声方差shape: 标量或 [B,1,1,1]

控制第 tt 步加入多少新噪声。

αt\alpha_t本步信号保留αt\alpha_t · 本步信号保留shape: 标量

定义为 1βt1-\beta_t

αˉt\bar\alpha_t累计信号保留αˉt\bar\alpha_t · 累计信号保留shape: 标量

11ttαs\alpha_s 连乘。

ε\varepsilon标准高斯噪声ε\varepsilon · 标准高斯噪声shape: 同 x₀

εN(0,I)\varepsilon\sim\mathcal N(0,I),承载随机性。

真实公式计算

信号 / 噪声观测台

SEED 42
x0x_0原始信号
×αˉt\times\sqrt{\bar\alpha_t}
xtx_t当前观测
+1αˉt+\sqrt{1-\bar\alpha_t}
ε\varepsilon固定高斯噪声
9.37e-4βt\beta_t / 本步方差
0.91674αˉt\bar\alpha_t / 累计信号保留
0.2885噪声系数
11.011SNR / 信噪比

每个像素都按 xt=αˉtx0+1αˉtεx_t=\sqrt{\bar\alpha_t}x_0+\sqrt{1-\bar\alpha_t}\varepsilon 重新计算。拖动滑块不会调用 CSS 模糊或透明度技巧。

做完实验再继续:先分别试 T=200T=200T=1000T=1000。注意同一个“相对进度”下,βt\beta_tαˉt\bar\alpha_t 的变化取决于整个 schedule,而不只取决于当前 tt

逐步定义

q(xtxt1)=N ⁣(xt;1βtxt1,βtI)q(x_t\mid x_{t-1})=\mathcal N\!\left(x_t;\sqrt{1-\beta_t}x_{t-1},\beta_t I\right)

βt\beta_t 是第 tt 步加入噪声的方差;1βt\sqrt{1-\beta_t} 同时收缩旧信号,防止总体方差无界增长。

联合分布

q(x1:Tx0)=t=1Tq(xtxt1)q(x_{1:T}\mid x_0)=\prod_{t=1}^{T}q(x_t\mid x_{t-1})

马尔可夫性质让整条链分解成局部转移。这个乘积描述概率密度,不是把图像数值直接相乘。

闭式采样:直接跳到任意 tt

连续代入前几步后,所有独立高斯噪声的线性组合仍然是高斯。把累计信号保留率记为 αˉt=s=1tαs\bar\alpha_t=\prod_{s=1}^t\alpha_s,就能一次得到任意时间步。

αt=1βt,αˉt=s=1tαs,xt=αˉtx0+1αˉtε\alpha_t=1-\beta_t,\quad \bar\alpha_t=\prod_{s=1}^{t}\alpha_s,\quad x_t=\sqrt{\bar\alpha_t}x_0+\sqrt{1-\bar\alpha_t}\varepsilon
逐步推导

为什么多步噪声能合成一份 ε?

一次只看一步。先说出这一步用了什么性质,再展开下一步。

x1=α1x0+1α1ε1x_1=\sqrt{\alpha_1}x_0+\sqrt{1-\alpha_1}\varepsilon_1

把高斯转移分布重参数化。ε₁ 与 x₀ 同 shape,来自标准高斯。

使用:高斯重参数化
换一种方式理解

为什么训练时不需要真的循环 t 次?

我们关心的是抵达哪里,不是沿途每一帧

训练只需要某个随机噪声强度下的样本与它使用的噪声。闭式公式直接给出这个终点。

随机选择 t → 一次合成 xₜ
端点检查: t=0t=0αˉ0=1\bar\alpha_0=1,因此 xt=x0x_t=x_0tt 很大且 αˉt\bar\alpha_t 接近 00 时,xtx_t 接近 ε\varepsilon。有限 TT 下“接近标准高斯”不等于永远严格相等。
Schedule explorer

噪声调度曲线

t = 0t = 500t = 1000

调度器规定每一步加入多少噪声;它改变信息被抹去的节奏,而不是改变“最终学习什么”。

停下来想 30 秒

如果某一步 βt\beta_t 增大,那么 αt\alpha_t 与该步新增噪声标准差怎样变化?

常见误解:前向过程通常不训练;xT“接近”标准高斯不意味着有限 T 时严格等于;Diffusion 也不是对图像做 CSS 模糊,而是定义随机变量的概率转移。
下一节:反向过程