3. 扩散模型入门

扩散模型(Diffusion Model)是当前机器人操作策略学习中最具代表性的生成式建模工具之一。它的核心思想并不复杂:先把真实数据逐步“破坏”成噪声,再训练一个网络学会“从噪声中一步步恢复数据”。在 Diffusion Policy 中,被恢复的对象不是图片,而是机器人未来一段时间的动作序列。理解前向加噪、反向去噪、训练目标和采样过程,是读懂后续策略网络结构的基础。

一句话直觉:前向过程是“把动作序列逐渐加噪到纯高斯噪声”,反向过程是“从纯噪声出发,逐步去噪,最终生成一条可执行的动作轨迹”。训练目标就是让网络在每一步都能准确预测“这一步被加进去的噪声”。

一、去噪扩散概率模型的基本框架

去噪扩散概率模型(DDPM)把生成过程拆成两个方向相反的马氏链。前向链从真实数据 x₀ 出发,经过 T 步逐渐加入高斯噪声,最终得到近似标准正态分布的 x_T;反向链则从 x_T 出发,学习一个参数化分布 p_θ(x_{t-1}|x_t),逐步还原出 x₀。在机器人操作中,x₀ 通常表示一段长度为 H 的未来动作序列,例如 [a_t, a_{t+1}, ..., a_{t+H-1}],每个动作包含关节位置、末端位姿或夹爪开合等维度。

前向过程定义为:

q(x_t | x_{t-1}) = N(x_t; √(1-β_t) x_{t-1}, β_t I)

其中 β_t ∈ (0,1) 是第 t 步的噪声方差调度。
令 α_t = 1 - β_t,ᾱ_t = ∏_{s=1}^{t} α_s,
则可直接采样任意时刻:
q(x_t | x₀) = N(x_t; √ᾱ_t x₀, (1-ᾱ_t) I)

这个重参数化公式非常关键:它允许我们在训练时一次性跳到任意 t,而不必真的模拟 t 步加噪。等价地,x_t = √ᾱ_t x₀ + √(1-ᾱ_t) ε,其中 ε ~ N(0, I)。这正是训练目标能够写成“预测噪声”的原因。

二、前向加噪与反向去噪的对称结构

前向加噪是固定的、无需学习的;反向去噪则是需要学习的。反向过程每一步都试图估计 q(x_{t-1}|x_t),但真实后验依赖 x₀,因此 DDPM 用神经网络 ε_θ(x_t, t) 来预测被加入的噪声,再据此构造均值。反向采样公式为:

x_{t-1} = (1/√α_t) · (x_t - (β_t/√(1-ᾱ_t)) · ε_θ(x_t, t)) + σ_t z

其中 z ~ N(0, I)(t > 1 时),σ_t² = β_t。

可以看到,反向过程并不是“一次性还原”,而是“逐步修正”。每一步都只去掉一点点噪声,同时保留一定的随机性。这种迭代式生成让模型能够表达多模态的动作分布:同一个观测下,机器人可能有多种合理动作,扩散模型可以通过不同随机种子采样出不同轨迹。

前向加噪 q(x_t | x_{t-1}) 与反向去噪 p_θ(x_{t-1} | x_t) 前向过程:固定加噪,无需学习 x₀ 真实动作 x₁ 微噪 x₂ 中噪 x_{t-1} x_T 纯噪声 +β₁ +β₂ +β_{t-1} +β_T 反向过程:学习去噪,逐步生成 x_T 纯噪声 x_{t-1} x₂ 去噪 x₁ 去噪 x₀ 生成动作 ε_θ(x_T,T) ε_θ(x_t,t) ε_θ(x₂,2) ε_θ(x₁,1) 训练目标:让 ε_θ(x_t, t) 逼近真实噪声 ε;采样时从 x_T 迭代去噪得到 x₀

三、训练目标:从变分下界到噪声预测

DDPM 的原始推导来自变分推断,最大化对数似然的证据下界(ELBO)。经过化简,训练目标可以写成每一步的 KL 散度之和。进一步地,当把反向均值参数化为噪声预测形式时,损失函数简化为一个非常直观的均方误差:

L_simple(θ) = E_{t, x₀, ε} [ || ε - ε_θ(√ᾱ_t x₀ + √(1-ᾱ_t) ε, t) ||² ]

其中:
t ~ Uniform(1, T)
x₀ ~ 真实动作序列数据集
ε ~ N(0, I)

这个损失函数在工程上极其友好:每次训练只需随机采一个时间步 t,构造带噪样本 x_t,让网络预测噪声,然后做一次回归。它不需要对抗训练,也不需要复杂的采样过程,训练稳定性远高于 GAN。对于机器人操作,x₀ 是专家演示中的动作序列,网络同时接收观测条件 o_t,因此实际使用的是条件扩散模型 ε_θ(x_t, t, o_t)。

要素 前向过程 反向过程
方向 真实数据 → 噪声 噪声 → 生成数据
是否学习 否,固定调度 是,训练 ε_θ
关键参数 β_t, α_t, ᾱ_t 网络权重 θ
机器人对应 给专家动作序列加噪 从噪声生成动作序列
训练信号 — 预测噪声的 MSE

四、采样过程与关键数学直觉

训练完成后,采样从 x_T ~ N(0, I) 开始,按 t = T, T-1, ..., 1 逐步执行反向公式。每一步都包含“确定性去噪”和“随机扰动”两部分:前者把样本拉向高概率区域,后者维持生成多样性。当 t=1 时不再加噪声,输出最终的 x₀。在 Diffusion Policy 中,这个 x₀ 就是一段未来动作序列,机器人可以直接执行或经过动作平滑后执行。

数学直觉:可以把 ᾱ_t 理解为“信号保留比例”。t 越大,ᾱ_t 越小,信号几乎被噪声淹没;t 越小,ᾱ_t 越接近 1,样本越接近真实数据。反向过程本质上是在不同噪声水平上反复执行“去噪回归”。

五、案例与常见误区

假设我们要让机械臂在桌面上抓取一个杯子。专家演示中,每个时刻的动作是 7 维向量(6 维关节角 + 1 维夹爪)。取预测步长 H=16,则 x₀ 是 16×7 的矩阵。前向加噪时,我们对整个矩阵加噪;反向去噪时,网络输出同样形状的噪声预测。训练时随机采样 t,例如 t=300,构造 x_300,让网络根据当前观测和 x_300 预测噪声。采样时从 x_1000 开始,迭代 1000 次得到动作序列。

常见误区:
  • 误以为反向过程是一次性映射。实际上它是多步迭代,步数 T 直接影响生成质量和推理速度。
  • 误以为前向过程也需要训练。前向的 β_t 是人为设定的调度,常见有线性调度和余弦调度。
  • 误以为损失函数在比较 x₀ 和预测的 x₀。DDPM 的简化目标是比较噪声 ε 和预测噪声 ε_θ。
  • 忽略条件信息。机器人操作中必须把观测 o_t 作为条件注入网络,否则生成的动作与场景无关。