论文笔记(一百一十九)Two-Steps Diffusion Policy for Robotic Manipulation via Genetic Denoising
扩散模型(如 diffusion policy)通过模仿专家示范,在机器人操作任务中取得了当前最先进的性能表现。 尽管扩散模型最初是为图像与视频生成等视觉任务而开发的,但其许多推理策略在未作任何适配的情况下,被直接迁移到了控制领域。 在本文中,我们表明,通过针对具身智能任务的特定特性对去噪过程进行定制——尤其是动作分布具有结构化、低维度的特点——扩散策略在仅需 5 次神经函数评估(NFE)的情况下
Two-Steps Diffusion Policy for Robotic Manipulation via Genetic Denoising
- 文章概括
- ABSTRACT
- 1 Introduction
- 2 Making better use of Diffusion Policies 更高效地利用扩散策略
- 3 Genetic Diffusion Policy 遗传扩散策略
- 4 Experiments
- 5 Related Works
- 6 Limitations
- 7 Conclusion
- A Extra Experimental Details
- B Intrinsic Distribution Manifold Dimension Estimation 内在分布流形维度估计
- C Extra Experimental Results
- Supplementary Materials
文章概括
引用:
@article{clemente2025two,
title={Two-Steps Diffusion Policy for Robotic Manipulation via Genetic Denoising},
author={Clemente, Mateo and Brunswic, Leo and Yang, Rui Heng and Zhao, Xuan and Khalil, Yasser and Lei, Haoyu and Rasouli, Amir and Li, Yinchuan},
journal={arXiv preprint arXiv:2510.21991},
year={2025}
}
Clemente, M., Brunswic, L., Yang, R.H., Zhao, X., Khalil, Y., Lei, H., Rasouli, A. and Li, Y., 2025. Two-Steps Diffusion Policy for Robotic Manipulation via Genetic Denoising. arXiv preprint arXiv:2510.21991.
主页:
原文:
代码、数据和视频:
系列文章:
请在 《 《 《文章 》 》 》 专栏中查找
宇宙声明!
引用解析部分属于自我理解补充,如有错误可以评论讨论然后改正!
ABSTRACT
扩散模型(如 diffusion policy)通过模仿专家示范,在机器人操作任务中取得了当前最先进的性能表现。 尽管扩散模型最初是为图像与视频生成等视觉任务而开发的,但其许多推理策略在未作任何适配的情况下,被直接迁移到了控制领域。 在本文中,我们表明,通过针对具身智能任务的特定特性对去噪过程进行定制——尤其是动作分布具有结构化、低维度的特点——扩散策略在仅需 5 次神经函数评估(NFE)的情况下,仍然可以高效运行。 基于这一观察,我们提出了一种基于群体的采样策略——遗传去噪(genetic denoising),该方法通过选择具有较低分布外风险的去噪轨迹,同时提升性能与稳定性。 我们的方法在仅使用 2 次神经函数评估(NFE)的情况下,就能够解决具有挑战性的任务,同时实现性能提升或至少达到原有水平。 我们在来自 D4RL 和 Robomimic 的 14 个机器人操作任务上对该方法进行了评估,这些任务涵盖了不同的动作时间跨度和推理预算。 在超过 200 万次评测中,我们的方法始终优于标准的基于扩散的策略,在显著减少推理步数的同时,实现了最高可达 20% 的性能提升。
1 Introduction
随机策略在机器人操作以及更广泛的具身人工智能(Embodied Artificial Intelligence, EAI)领域中变得越来越重要,在这些场景中,智能体必须在真实世界环境中运行,这类环境通常具有较大的动作空间、可能存在随机响应,并且针对同一目标往往存在多种有效的实现策略 [1]。这些挑战还因数据稀缺以及需要从有限示范中实现强泛化能力而进一步加剧。基于扩散的策略 [2, 3] 通过学习对专家动作完整分布的建模,提供了一种有前景的解决方案,从而缓解模式坍塌问题,并实现多样且鲁棒的行为。
尽管扩散模型取得了成功,但其仍存在一个关键缺陷:推理过程是顺序进行且计算代价高昂,需要大量去噪步骤才能生成高质量样本。这种延迟对于机器人实时应用而言是一个重大限制,因为这些场景中快速且可靠的动作生成至关重要。为了解决这一问题,近期研究提出了蒸馏方法 [4]、一致性模型 [5, 6] 以及捷径式流匹配(shortcut flow-matching)[7],通过训练新的模型,以牺牲一定的简洁性或性能为代价来实现更快的采样。
在本文中,我们在不进行任何重新训练或架构修改的情况下,加速了现有的扩散策略模型。我们表明,通过减少推理步数并调整去噪调度策略,往往可以提升模型性能。 我们的分析揭示,默认的推理过程会由于剪裁(clipping)这一用于约束预测的启发式方法,而产生分布外(out-of-distribution, OoD)的中间状态。 与图像生成领域中的结论相反,我们观察到,在机器人任务中减少去噪步骤中注入的噪声反而可以提升性能,这源于其动作分布具有结构化且低维的特性。 这些发现强调了一个关键区别:能够提升图像生成模型的技术,并不一定能够直接迁移到具身人工智能领域。 因此,与其盲目采用来自视觉领域的启发式方法,机器人策略模型更需要针对其训练动态、动作空间以及推理行为进行专门分析。
为此,我们提出了遗传扩散策略(Genetic Diffusion Policy, GDP)(见图 2),该方法通过基于群体的选择机制,根据分布外评分筛选去噪轨迹,从而减少剪裁伪影并提升样本质量,尤其在低推理步数条件下效果显著。
图 2:遗传去噪过程。算法从纯高斯噪声样本开始,计算适应度分数,并将其作为多项式选择的权重。被选中的样本会被复制以替换被淘汰的样本。随后执行一步去噪操作,该步骤可能采用经过调整的 DDPM 去噪形式。若尚未达到最终去噪步骤,则返回适应度计算并重复上述过程。通过选取衡量样本是否处于分布内的适应度指标,该方法更倾向于保留具有更精确去噪估计的轨迹,从而生成更精确的动作样本。
我们在来自 D4RL [8] 和 Robomimic [9] 的 14 个操作任务上评估了该方法,覆盖了 6 种动作时间跨度和 18 种推理预算设置,每种配置最多使用 500 个随机种子。 对比基线方法包括 DDPM/DDIM [10, 11]、EDM [12] 以及捷径扩散模型 [7]。 图 1 总结了我们在 Adroit Hand 任务上的实验结果。
图 1:在 Adroit Hand 任务上,遗传扩散策略与捷径方法及传统扩散策略基线的归一化得分对比。
综上所述,我们的主要贡献包括:
-
高效去噪:我们提出了一种简单但有效的去噪调度修改方法,使现有扩散策略能够实现更快且更准确的采样。
-
理论与实证分析:我们识别并解释了分布外噪声的作用,以及在低维机器人场景中减少噪声注入所带来的反直觉性能提升。
-
遗传扩散策略(GDP):我们提出了一种新的采样策略,通过维护一组候选去噪轨迹,并选择分布内路径,在低推理预算下提升鲁棒性与性能。据我们所知,这是首次尝试使用遗传算法来加速扩散模型采样。
2 Making better use of Diffusion Policies 更高效地利用扩散策略
2.1 Diffusion Policies
机器人操作任务天然可以建模为马尔可夫决策过程(Markov Decision Process, MDP),即六元组 ⟨ S , O , A , T , R , π ⟩ \langle \mathcal{S}, \mathcal{O}, \mathcal{A}, \mathcal{T}, \mathcal{R}, \pi \rangle ⟨S,O,A,T,R,π⟩。 其中, S \mathcal{S} S 表示环境状态空间, O \mathcal{O} O 表示观测空间, A \mathcal{A} A 表示动作空间, T : S × A → S \mathcal{T}:\mathcal{S}\times\mathcal{A}\rightarrow\mathcal{S} T:S×A→S 是(可能具有随机性的)状态转移核, R : S → R ≥ 0 \mathcal{R}:\mathcal{S}\rightarrow\mathbb{R}_{\ge0} R:S→R≥0 为终止奖励函数。 在时间 t t t,物理世界(包括机器人)处于某一状态 s t ∈ S s_t\in\mathcal{S} st∈S,而智能体只能感知到一个部分观测 o t ∈ O o_t\in\mathcal{O} ot∈O,并根据策略 π : O → A \pi:\mathcal{O}\rightarrow\mathcal{A} π:O→A 选择动作 a t ∈ A a_t\in\mathcal{A} at∈A,随后环境按照 s t + 1 ∼ T ( s t , a t ) s_{t+1}\sim\mathcal{T}(s_t,a_t) st+1∼T(st,at) 转移到下一状态。
1. 先把 MDP 这段讲清楚:为什么要提 ⟨ S , O , A , T , R , π ⟩ \langle\mathcal{S},\mathcal{O},\mathcal{A},\mathcal{T},\mathcal{R},\pi\rangle ⟨S,O,A,T,R,π⟩?
这部分是“机器人决策问题的统一语言”:
- S \mathcal{S} S:真实世界的完整状态(你看不全,比如物体内部摩擦、真实接触点……)
- O \mathcal{O} O:你能看到/测到的观测(相机、力传感器、关节角……),通常是部分可观测
- A \mathcal{A} A:机器人能发出的动作
- T ( s t , a t ) \mathcal{T}(s_t,a_t) T(st,at):世界怎么从 s t s_t st 变到 s t + 1 s_{t+1} st+1(可能随机)
- R \mathcal{R} R:任务完成给奖励(这里只写终止奖励,强调“成功轨迹”)
- π ( o t ) \pi(o_t) π(ot):策略,用观测选动作
这段的核心作用:说明我们只用观测 o t o_t ot 来做决策(部分可观测),所以后面所有模型都写成“条件在观测上”。
Training(训练阶段) 扩散策略 [2, 3] 将扩散模型范式 [10, 11] 引入并适配于决策问题。 给定一个由成功轨迹组成的示范数据集
D = { ( o t ( i ) , a t ( i ) ) t = 0 t ∗ } i = 1 ∣ D ∣ , \mathcal{D}=\{(o^{(i)}_t,a^{(i)}_t)^{t^*}_{t=0}\}^{|\mathcal{D}|}_{i=1}, D={(ot(i),at(i))t=0t∗}i=1∣D∣,
2. 数据集 D \mathcal{D} D:它到底长什么样?
数据集给的是成功示范轨迹:
D = { ( o t ( i ) , a t ( i ) ) t = 0 t ∗ } i = 1 ∣ D ∣ , \mathcal{D}=\{(o^{(i)}_t,a^{(i)}_t)^{t^*}_{t=0}\}^{|\mathcal{D}|}_{i=1}, D={(ot(i),at(i))t=0t∗}i=1∣D∣,
翻译成人话:
- 第 i i i 条示范是一段时间序列: ( o 0 , a 0 ) , ( o 1 , a 1 ) , … , ( o t ∗ , a t ∗ ) (o_0,a_0),(o_1,a_1),\dots,(o_{t^*},a_{t^*}) (o0,a0),(o1,a1),…,(ot∗,at∗)
- 全部示范加起来形成数据集 D \mathcal{D} D
重点:扩散策略不是拿单个 ( o t , a t ) (o_t,a_t) (ot,at) 训练,而是会把轨迹切成“窗口”。
我们构建一个分布
μ ( o t − h O : t + h A , a t : t + h A ) \mu(o_{{t-h_\mathcal{O}}:{t+h_\mathcal{A}}},a_{t:t+h_\mathcal{A}}) μ(ot−hO:t+hA,at:t+hA)
定义在 O h O × A h A \mathcal{O}^{h_\mathcal{O}}\times\mathcal{A}^{h_\mathcal{A}} OhO×AhA 上。
即以某一时间点 τ \tau τ 为中心,包含长度为 h O h_\mathcal{O} hO 的历史观测窗口和长度为 h A h_\mathcal{A} hA 的未来动作窗口。 为保证数值稳定性,我们假设动作空间 A \mathcal{A} A 被嵌入到 R d \mathbb{R}^d Rd 中,并缩放到区间 [ − 1 , 1 ] d [-1,1]^d [−1,1]d。
3. 最关键的一个概念:窗口分布 μ ( ⋅ ) \mu(\cdot) μ(⋅) 是怎么构造的?
你文中说构建分布:
μ ( o t − h O : t + h A , a t : t + h A ) \mu(o_{{t-h_\mathcal{O}}:{t+h_\mathcal{A}}},a_{t:t+h_\mathcal{A}}) μ(ot−hO:t+hA,at:t+hA)
它定义在 O h O × A h A \mathcal{O}^{h_\mathcal{O}}\times\mathcal{A}^{h_\mathcal{A}} OhO×AhA 上。
3.1 这句话到底什么意思?
选一个时间中心点(你文里写 τ \tau τ,公式里用 t t t):
- 取过去 h O h_\mathcal{O} hO 长度的观测历史: o t − h O , … , o t o_{t-h_\mathcal{O}},\dots,o_t ot−hO,…,ot(有的写到 t t t,有的写到 t + h A t+h_\mathcal{A} t+hA,本质是“给足条件信息”)
- 取未来 h A h_\mathcal{A} hA 长度的动作序列: a t , … , a t + h A a_t,\dots,a_{t+h_\mathcal{A}} at,…,at+hA
于是一个训练样本不是“一个动作”,而是:
(观测窗口, 未来动作窗口)
μ \mu μ 就是“你从数据集里随机切一个窗口时,得到的联合分布”。
3.2 为什么要这样做?
因为机器人控制里:
- 只看一帧观测往往不够(部分可观测、遮挡、速度信息)
- 输出多步动作比输出一步更像“计划”,也更平滑、更稳定
3.3 “动作缩放到 [ − 1 , 1 ] d [-1,1]^d [−1,1]d”是干嘛?
扩散模型训练非常吃数值稳定性。动作各维度可能量纲不同(米/弧度/速度),不缩放会导致:
- 某些维度主导损失
- 去噪时 clip/噪声尺度不匹配
所以假设 A \mathcal{A} A 已嵌入到 R d \mathbb{R}^d Rd,并缩放到 [ − 1 , 1 ] d [-1,1]^d [−1,1]d。
在给定噪声调度 ( α t ) t = 0 T (\alpha_t)^T_{t=0} (αt)t=0T 的情况下,网络
ϵ θ : A h A × { 0 , … , T } × O h O → A h A \epsilon_\theta:\mathcal{A}^{h_\mathcal{A}}\times\{0,\dots,T\}\times\mathcal{O}^{h_\mathcal{O}}\rightarrow\mathcal{A}^{h_\mathcal{A}} ϵθ:AhA×{0,…,T}×OhO→AhA
通过最小化 DDPM 损失函数进行训练:
L ( θ ) = E ( o , x 0 ) ∼ μ , ϵ ∼ N ( 0 , I ) , t ∼ U n i f [ T ] [ ∥ ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t , o ) − ϵ ∥ 2 2 ] , α ˉ t : = ∏ k = 1 t α k . (1) \mathcal{L}(\theta) = \mathbb{E}_{(o,x_0)\sim\mu, \epsilon\sim\mathcal{N}(0,I),\;t\sim\mathrm{Unif}[T]} \Big[ \big\| \epsilon_\theta(\sqrt{\bar{\alpha}_t}x_0+\sqrt{1-\bar{\alpha}_t}\epsilon,t,o)-\epsilon \big\|_2^2 \Big], \quad \bar{\alpha}_t := \prod_{k=1}^t \alpha_k. \tag{1} L(θ)=E(o,x0)∼μ,ϵ∼N(0,I),t∼Unif[T][ ϵθ(αˉtx0+1−αˉtϵ,t,o)−ϵ 22],αˉt:=k=1∏tαk.(1)
4. 训练阶段:式 (1) 在学什么?你要把它看成“学会预测噪声”
网络是:
ϵ θ : A h A × { 0 , … , T } × O h O → A h A \epsilon_\theta:\mathcal{A}^{h_\mathcal{A}}\times\{0,\dots,T\}\times\mathcal{O}^{h_\mathcal{O}}\rightarrow\mathcal{A}^{h_\mathcal{A}} ϵθ:AhA×{0,…,T}×OhO→AhA
输入:
- 一个“被加噪的动作序列”
- 当前扩散时间步 t t t(噪声强度的索引)
- 观测窗口 o o o
输出:
- 预测噪声(和动作序列同形状)
4.1 先说扩散训练的基本套路(你只要记住这一句)
训练时我拿真实动作序列 x 0 x_0 x0,人为加噪得到 x t x_t xt,然后让网络在给定 x t , t , o x_t,t,o xt,t,o 的条件下,把当初加进去的噪声 ϵ \epsilon ϵ 预测回来。
这就是 DDPM 的经典“noise prediction”训练法。
4.2 式 (1) 逐项解释
L ( θ ) = E ( o , x 0 ) ∼ μ , ϵ ∼ N ( 0 , I ) , t ∼ U n i f [ T ] [ ∥ ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t , o ) − ϵ ∥ 2 2 ] , α ˉ t : = ∏ k = 1 t α k . ( 1 ) \mathcal{L}(\theta) = \mathbb{E}_{(o,x_0)\sim\mu, \epsilon\sim\mathcal{N}(0,I),\;t\sim\mathrm{Unif}[T]} \Big[ \big\| \epsilon_\theta(\sqrt{\bar{\alpha}_t}x_0+\sqrt{1-\bar{\alpha}_t}\epsilon,t,o)-\epsilon \big\|_2^2 \Big], \quad \bar{\alpha}_t := \prod_{k=1}^t \alpha_k. \quad (1) L(θ)=E(o,x0)∼μ,ϵ∼N(0,I),t∼Unif[T][ ϵθ(αˉtx0+1−αˉtϵ,t,o)−ϵ 22],αˉt:=k=1∏tαk.(1)
( o , x 0 ) ∼ μ (o,x_0)\sim\mu (o,x0)∼μ:从窗口分布里抽一个样本
- o o o 是观测窗口
- x 0 x_0 x0 是真实未来动作窗口(注意这里把动作序列当作扩散模型里的“数据点”)
ϵ ∼ N ( 0 , I ) \epsilon\sim\mathcal{N}(0,I) ϵ∼N(0,I):抽标准高斯噪声
t ∼ U n i f [ T ] t\sim \mathrm{Unif}[T] t∼Unif[T]:随机选一个扩散步
造一个加噪版本: x t = α ˉ t x 0 + 1 − α ˉ t ϵ x_t=\sqrt{\bar{\alpha}_t}x_0+\sqrt{1-\bar{\alpha}_t}\epsilon xt=αˉtx0+1−αˉtϵ
直觉:
- α ˉ t \bar{\alpha}_t αˉt 越小,噪声越大
- t t t 越大, x t x_t xt 越接近纯噪声
网络预测噪声 ϵ θ ( x t , t , o ) \epsilon_\theta(x_t,t,o) ϵθ(xt,t,o),用 L 2 L2 L2 去逼近真实噪声 ϵ \epsilon ϵ
一句话总结式 (1):
在各种噪声强度下,让网络学会“看到被污染的动作序列 + 观测条件”,就能把污染(噪声)识别出来。
Inference(推理阶段) 在测试阶段,我们从初始噪声样本 x T ∼ N ( 0 , I ) x_T\sim\mathcal{N}(0,I) xT∼N(0,I) 开始进行去噪,其更新规则为:
x t − 1 = α ˉ t − 1 clip [ x t − 1 − α ˉ t ϵ θ ( t ) ( x t ) α ˉ t ] + 1 − α ˉ t − σ t 2 ϵ θ ( t ) ( x t ) + γ σ t ϵ t . ( 2 ) x_{t-1} = \sqrt{\bar{\alpha}_{t-1}} \operatorname{clip} \left[ \frac{x_t-\sqrt{1-\bar{\alpha}_t}\,\epsilon_{\theta}^{(t)}(x_t)}{\sqrt{\bar{\alpha}_t}} \right] + \sqrt{1-\bar{\alpha}_t-\sigma_t^2}\,\epsilon_{\theta}^{{(t)}}(x_t) + \gamma\sigma_t\epsilon_t. \quad (2) xt−1=αˉt−1clip[αˉtxt−1−αˉtϵθ(t)(xt)]+1−αˉt−σt2ϵθ(t)(xt)+γσtϵt.(2)
5. 推理阶段:式 (2) 是“怎么一步步去噪生成动作序列”
推理从:
x T ∼ N ( 0 , I ) x_T\sim\mathcal{N}(0,I) xT∼N(0,I)
开始,这就是一段“纯噪声动作序列”,然后从 t = T t=T t=T 一直往 0 0 0 去噪,得到 x 0 x_0 x0,最后执行其中前几个动作。
5.1 先告诉你式 (2) 的大结构(别一上来就被吓到)
式 (2) 可以看成三块:
- 先估计“干净动作”(从 x t x_t xt 和预测噪声反推 x 0 x_0 x0 的估计),并且 clip
- 再组合一个“确定性去噪方向”(类似 DDIM 的那部分)
- 再加一点随机噪声(类似朗之万/随机扩散,强度由 σ t \sigma_t σt 控制)
公式:
x t − 1 = α ˉ t − 1 clip [ x t − 1 − α ˉ t ϵ θ ( t ) ( x t ) α ˉ t ] ⏟ (A) 用预测噪声反推“干净动作”并裁剪 + 1 − α ˉ t − σ t 2 ϵ θ ( t ) ( x t ) ⏟ (B) 确定性去噪项 + γ σ t ϵ t ⏟ (C) 随机项 ( 2 ) x_{t-1}= \underbrace{ \sqrt{\bar{\alpha}_{t-1}} \operatorname{clip} \left[ \frac{x_t-\sqrt{1-\bar{\alpha}_t}\,\epsilon_{\theta}^{(t)}(x_t)}{\sqrt{\bar{\alpha}_t}} \right]}_{\text{(A) 用预测噪声反推“干净动作”并裁剪}} + \underbrace{ \sqrt{1-\bar{\alpha}_t-\sigma_t^2}\,\epsilon_{\theta}^{{(t)}}(x_t) }_{\text{(B) 确定性去噪项}} + \underbrace{ \gamma\sigma_t\epsilon_t }_{\text{(C) 随机项}} \quad (2) xt−1=(A) 用预测噪声反推“干净动作”并裁剪 αˉt−1clip[αˉtxt−1−αˉtϵθ(t)(xt)]+(B) 确定性去噪项 1−αˉt−σt2ϵθ(t)(xt)+(C) 随机项 γσtϵt(2)
其中 ϵ t ∼ N ( 0 , I ) \epsilon_t\sim\mathcal{N}(0,I) ϵt∼N(0,I)(隐含的)。
5.2 (A) 这坨 clip 是干嘛?为什么必须有?
括号里面:
x ^ 0 = [ x t − 1 − α ˉ t ϵ θ ( t ) ( x t ) α ˉ t ] \hat{x}_0=\left[ \frac{x_t-\sqrt{1-\bar{\alpha}_t}\,\epsilon_{\theta}^{(t)}(x_t)}{\sqrt{\bar{\alpha}_t}} \right] x^0=[αˉtxt−1−αˉtϵθ(t)(xt)]
这就是“从加噪公式反解回 x 0 x_0 x0”。 因为训练时: x t = α ˉ t x 0 + 1 − α ˉ t ϵ x_t=\sqrt{\bar{\alpha}_t}x_0+\sqrt{1-\bar{\alpha}_t}\epsilon xt=αˉtx0+1−αˉtϵ 所以如果你知道 ϵ \epsilon ϵ(现在用网络预测),你就能估计 x 0 x_0 x0。 然后 clip 的原因是:前面说过动作被缩放到 [ − 1 , 1 ] d [-1,1]^d [−1,1]d,但网络预测可能让 x ^ 0 \hat{x}_0 x^0 超界。超界会导致:
- 后续去噪越来越飘(数值爆炸/分布外)
- 最终动作不合法
所以 clip 是在推理时做“安全护栏”。
5.3 (B) 这项为什么长这样?它是在控制“随机性 vs 确定性”
1 − α ˉ t − σ t 2 \sqrt{1-\bar{\alpha}_t-\sigma_t^2} 1−αˉt−σt2 这一坨,是为了保证整体方差匹配(你不需要背推导,但要知道它在“配平能量/噪声预算”)。
5.4 (C) 随机项 γ σ t ϵ t \gamma\sigma_t\epsilon_t γσtϵt 是什么直觉?
这就是“在去噪过程中保留一点随机探索”。
- σ t \sigma_t σt 大 → 注入噪声多 → 生成更随机(更像 DDPM)
- σ t \sigma_t σt 小 → 更确定 → 更像 DDIM
γ = 1 \gamma=1 γ=1 是标准设置;调 γ \gamma γ 等价于把随机性再缩放。
其中
σ t 2 : = η 2 ( 1 − α ˉ t − 1 ) ( α ˉ t − 1 − α t ) α ˉ t − 1 ( 1 − α ˉ t ) , \sigma_t^2 := \eta^2\frac{(1-\bar{\alpha}_{t-1})(\bar{\alpha}_{t-1}-\alpha_t)}{\bar{\alpha}_{t-1}(1-\bar{\alpha}_t)}, σt2:=η2αˉt−1(1−αˉt)(1−αˉt−1)(αˉt−1−αt),
η ∈ [ 0 , 1 ] \eta\in[0,1] η∈[0,1] 用于在确定性的 DDIM 采样器( η = 0 \eta=0 η=0)与随机的 DDPM 采样器( η = 1 \eta=1 η=1)之间进行插值,标准设置中 γ = 1 \gamma=1 γ=1。
6. σ t \sigma_t σt 和 η \eta η:一句话讲清“DDIM vs DDPM 插值”
你给了:
σ t 2 : = η 2 ( 1 − α ˉ t − 1 ) ( α ˉ t − 1 − α t ) α ˉ t − 1 ( 1 − α ˉ t ) , \sigma_t^2 := \eta^2\frac{(1-\bar{\alpha}_{t-1})(\bar{\alpha}_{t-1}-\alpha_t)} {\bar{\alpha}_{t-1}(1-\bar{\alpha}_t)}, σt2:=η2αˉt−1(1−αˉt)(1−αˉt−1)(αˉt−1−αt),
关键只要记住:
- η = 0 ⇒ σ t = 0 \eta=0 \Rightarrow \sigma_t=0 η=0⇒σt=0:完全没有随机项,就是确定性的 DDIM
- η = 1 \eta=1 η=1:随机项达到标准强度,变成 DDPM 风格的随机采样
所以 η \eta η 是一个“随机性旋钮”。
公式 (2) 是文献 [12] 中推导的随机微分方程(SDE)的有限差分离散形式:
d x t = − σ ˙ ( t ) σ ( t ) ∇ x log p ( x t ∣ t , 0 ) d t − β ( t ) σ 2 ( t ) ∇ x log p ( x t ∣ t , o ) d t + γ 2 β ( t ) σ ( t ) d W t ( 3 ) d x_t = -\dot{\sigma}(t)\sigma(t)\nabla_x\log p(x_t|t,0)\,dt - \beta(t)\sigma^2(t)\nabla_x\log p(x_t|t,o)\,dt + \gamma\sqrt{2\beta(t)}\sigma(t)\,dW_t \quad (3) dxt=−σ˙(t)σ(t)∇xlogp(xt∣t,0)dt−β(t)σ2(t)∇xlogp(xt∣t,o)dt+γ2β(t)σ(t)dWt(3)
该方程将概率流 ODE 与朗之万扩散过程耦合在一起。
7. 式 (3) SDE:它在说什么?为什么突然扯到 ODE + 朗之万?
式 (3):
d x t = − σ ˙ ( t ) σ ( t ) ∇ x log p ( x t ∣ t , 0 ) d t − β ( t ) σ 2 ( t ) ∇ x log p ( x t ∣ t , o ) d t + γ 2 β ( t ) σ ( t ) d W t ( 3 ) d x_t = -\dot{\sigma}(t)\sigma(t)\nabla_x\log p(x_t|t,0)\,dt - \beta(t)\sigma^2(t)\nabla_x\log p(x_t|t,o)\,dt + \gamma\sqrt{2\beta(t)}\sigma(t)\,dW_t \quad (3) dxt=−σ˙(t)σ(t)∇xlogp(xt∣t,0)dt−β(t)σ2(t)∇xlogp(xt∣t,o)dt+γ2β(t)σ(t)dWt(3)
你文中说:它把概率流 ODE和朗之万扩散过程耦合。 你可以把它理解成三股力:
- 第一项(跟 p ( x t ∣ t , 0 ) p(x_t|t,0) p(xt∣t,0) 有关):把样本从“噪声状态”往“更干净的分布”推(这是扩散反过程/概率流那类东西)
- 第二项(跟 p ( x t ∣ t , o ) p(x_t|t,o) p(xt∣t,o) 有关):这是“条件在观测 o o o 上”的修正力,确保生成的动作序列与当前观测匹配(这就是策略的条件性)
- 第三项( d W t dW_t dWt):布朗运动噪声,对应“随机探索/随机采样”
式 (2) 说它是式 (3) 的有限差分离散形式:
连续时间的随机微分方程,离散化后就变成你每一步更新 x t − 1 x_{t-1} xt−1 的公式。
你不需要现场推导 SDE,只要知道它解释了:为什么更新里既有“漂移项”(确定性)也有“扩散项”(随机噪声)。
将训练阶段的时间跨度 T T T 与可能更少的推理步数 δ \delta δ 分离是直接且自然的。 具体做法是:在公式 (2) 及 σ t \sigma_t σt 中,将 ( t , t − 1 ) (t,t-1) (t,t−1) 替换为单调时间调度
0 ≤ t 0 < ⋯ < t δ ≤ T 0\le t_0<\cdots<t_\delta\le T 0≤t0<⋯<tδ≤T
对应的 ( t j , t j − 1 ) (t_j,t_{j-1}) (tj,tj−1)。
8. 为什么可以把训练步数 T T T 和推理步数 δ \delta δ 分开?(非常重要)
训练时用 T T T(可能很大)是为了让模型在各种噪声强度下都学得稳。 推理时不一定要走满 T T T 步,因为:
- 你可以挑一组单调的时间索引 0 ≤ t 0 < ⋯ < t δ ≤ T 0\le t_0<\cdots<t_\delta\le T 0≤t0<⋯<tδ≤T
- 每次更新用 ( t j , t j − 1 ) (t_j,t_{j-1}) (tj,tj−1) 替换原来的 ( t , t − 1 ) (t,t-1) (t,t−1)
直觉:
训练让你学会“任何噪声级别都能去噪”;推理时你可以“跳着去噪”,用更少步数 δ \delta δ 换速度。
这就是“更高效地利用扩散策略”的核心之一:用更少的去噪步数加速控制频率。
2.2 Clipping-Induced Denoising Defects 由 Clipping 引发的去噪缺陷
1. 先把背景钉死:扩散策略推理时到底在算什么?
推理时你从噪声 x T x_T xT 开始,反复做“去噪更新”(你前面式(2)那种)。在每一步里,模型会先做一件很关键的事:
根据当前的 x t x_t xt 和网络预测的噪声 ϵ θ \epsilon_\theta ϵθ,反推出一个“干净动作序列”的估计 x ^ 0 \hat{x}_0 x^0。
典型反推长这样(你前面也见过): x ^ 0 = x t − 1 − α ˉ t , ϵ θ ( x t , t , o ) α ˉ t \hat{x}_0=\frac{x_t-\sqrt{1-\bar{\alpha}_t},\epsilon_\theta(x_t,t,o)}{\sqrt{\bar{\alpha}_t}} x^0=αˉtxt−1−αˉt,ϵθ(xt,t,o)
这一步非常重要:你可以把 x ^ 0 \hat{x}_0 x^0 理解为“模型此刻认为最终答案应该长什么样”。
公式 (2) 中的 clipping(裁剪)操作承担着两个相互独立的作用。 首先,机器人动作被归一化到 [ − 1 , 1 ] d [-1,1]^d [−1,1]d,因此任何落在该超立方体之外的估计值 x ^ 0 \hat{x}_0 x^0 都必须被投影回该范围内。 其次,在余弦噪声调度 [13] 的最初若干时间步中, α ˉ t ≈ 0 \bar{\alpha}_t \approx 0 αˉt≈0,使得分母 α ˉ t \sqrt{\bar{\alpha}_t} αˉt 病态不稳定;clipping 在此用于防止数值爆炸。
2. clipping 在式(2)里其实做了“两件互不相关的事”
这段话你给得很关键:clipping承担两个独立角色——一个是“物理合法性”,一个是“数值救命”。
2.1 作用A:动作必须合法(投影回 [ − 1 , 1 ] d [-1,1]^d [−1,1]d)
你们把动作(或者动作序列张量里的每个数)归一化到了 [ − 1 , 1 ] d [-1,1]^d [−1,1]d。这意味着:
任何维度只要超出 [-1,1],真实机器人系统就不接受(或者你定义上就不允许)。
所以当你算出 x ^ 0 \hat{x}_0 x^0 以后,只要某些维度是 1.4、-2.3 这种,就必须拉回到边界:
- > 1 的变成 1
- <-1 的变成 -1
这就是“投影到超立方体”。
2.2 作用B:在某些时间步 α ˉ t \sqrt{\bar{\alpha}_t} αˉt 很小,分母会让数值爆炸
你文中点名:余弦噪声调度的最初若干时间步里 α ˉ t ≈ 0 \bar{\alpha}_t\approx 0 αˉt≈0。注意这里“最初”指的是推理刚开始去噪的那几步(从 x T x_T xT 出发的早期阶段)。此时:
- 分母 α ˉ t \sqrt{\bar{\alpha}_t} αˉt 非常小
- 你在做 x ^ 0 = 某个量 很小的数 \hat{x}_0 = \frac{\text{某个量}}{\text{很小的数}} x^0=很小的数某个量 这会导致 x ^ 0 \hat{x}_0 x^0 轻轻一抖就变成超大值(数值爆炸)
所以 clipping 在这里的第二层作用是:
哪怕分母让结果炸了,也把它硬按回 [-1,1],别让计算直接崩掉。
3. “缺陷”到底从哪来?——clipping把你的 x ^ 0 \hat{x}_0 x^0 变成“角点怪物”
3.1 一个极简数值例子(你看完就懂“饱和到 ±1”)
假设某一步 α ˉ t = 0.01 \sqrt{\bar{\alpha}_t}=0.01 αˉt=0.01(很小),分子哪怕只有 0.2:
x ^ 0 = 0.2 0.01 = 20 \hat{x}_0 = \frac{0.2}{0.01}=20 x^0=0.010.2=20
动作合法范围是 [-1,1],所以一 clip:
clip ( x ^ 0 ) = 1 \operatorname{clip}(\hat{x}_0)=1 clip(x^0)=1
如果分子是 -0.3:
x ^ 0 = − 30 ⇒ clip ( x ^ 0 ) = − 1 \hat{x}_0=-30 \Rightarrow \operatorname{clip}(\hat{x}_0)=-1 x^0=−30⇒clip(x^0)=−1
结果就是:大量维度被直接压扁成 -1 或 1。
3.2 “超立方体角点”是什么意思?
- 在 1D:角点就是 {-1, 1} 两个端点
- 在 2D:角点是 (±1,±1) 四个角
- 在 d 维:角点有 2 d 2^d 2d 个,全是“每个维度都恰好等于 ±1”的组合
所以你文中那句非常关键:
当 t t t 接近 T T T(也就是推理早期、噪声很大时), x ^ 0 \hat{x}_0 x^0 的大多数坐标会饱和到 { − 1 , 1 } \{-1,1\} {−1,1},导致推理分布几乎只落在超立方体的角点上。
用人话说就是:
你本来想让模型从“高斯噪声”慢慢变成“自然的动作序列”,结果一开始就被 clipping 强行把动作序列压成“全是 ±1 的硬边角形状”。
这玩意儿在训练时几乎没见过。
然而,这种粗糙的保护机制会引入一种微妙的分布不匹配问题。 当 t t t 接近 T T T 时, x ^ 0 \hat{x}_0 x^0 的大多数坐标都会饱和到 { − 1 , 1 } \{-1,1\} {−1,1},因此推理阶段的分布 x t ∼ 1 σ ( N ( 0 , σ 2 I ) ⊗ ( μ ^ ∣ o ) ) x_t \sim \frac{1}{\sigma}\big(\mathcal{N}(0,\sigma^2 \mathrm{I})\otimes(\hat{\mu}\mid o)\big) xt∼σ1(N(0,σ2I)⊗(μ^∣o))
几乎完全支撑在超立方体的角点上;而在训练阶段,模型看到的是 N ( 0 , σ 2 I ) ⊗ ( μ ∣ o ) \mathcal{N}(0,\sigma^2 \mathrm{I})\otimes(\mu\mid o) N(0,σ2I)⊗(μ∣o),其条件分布 μ \mu μ 则分布在立方体内部的整个区域。
4. 训练–推理的“分布不匹配”到底是什么?为什么它会伤去噪?
你文中把它写成两种条件分布(同样都条件在观测 o o o 上):
训练阶段模型见到的是 N ( 0 , σ 2 I ) ⊗ ( μ ∣ o ) \mathcal{N}(0,\sigma^2 I)\otimes (\mu\mid o) N(0,σ2I)⊗(μ∣o) 直觉:动作序列(真实的、在立方体内部各处都有)再加上高斯噪声。
推理阶段因为 clipping,实际变成 1 σ ( N ( 0 , σ 2 I ) ⊗ ( μ ^ ∣ o ) ) \frac{1}{\sigma}\big(\mathcal{N}(0,\sigma^2 \mathrm{I})\otimes(\hat{\mu}\mid o)\big) σ1(N(0,σ2I)⊗(μ^∣o)) 直觉:你以为自己在做“高斯噪声+合理动作”,但由于大量维度被裁到 ±1,动作部分变成了一个“很怪的、集中在边界角点的分布” μ ^ \hat{\mu} μ^。
核心矛盾:
- 训练时:动作样本主要分布在立方体内部,是“自然动作”
- 推理早期:动作样本被裁剪后大量堆在边界和角点,是“极端动作”
所以网络 ϵ θ \epsilon_\theta ϵθ 在推理时会遇到一种情况:
“你给我的输入长得像外星人,我训练时根本没学过怎么对这种输入预测噪声。”
这就是“微妙但致命”的分布不匹配。
最后:
- 早期去噪步骤几乎不携带与任务相关的有效信号;
- 预测器 ϵ θ \epsilon_\theta ϵθ 会产生更大的误差(因为它在训练中从未学习过如何处理这类极端输入);
- 整个反向去噪过程会浪费大量迭代步骤,直到轨迹重新进入加噪目标动作流形的高密度区域。
5) 这会导致你文中列的 3 个后果(我把因果链讲直)
后果1:早期去噪几乎没任务信号
因为输入大部分维度都是 ±1 的饱和状态,信息量非常低(很像一张过曝/过黑的照片——细节都没了)。 所以早期几步去噪不像是在“根据任务纠正动作”,更像在“先把被裁坏的东西救回来”。
后果2: ϵ θ \epsilon_\theta ϵθ 误差变大
网络在训练时没见过这种“角点堆积”的极端输入,于是噪声预测偏差增大。 噪声预测一偏,去噪更新方向就偏,后面步步都受影响。后果3:浪费大量迭代步骤
因为前面几步都在“把样本从角点/边界拉回到自然动作高密度区域”,真正开始做任务相关的精细去噪会更晚发生。 所以你会感觉:步数明明很多,但有效步数很少。
图 3 在不同任务和采样器超参数设置下量化了这一现象:clipping 发生得越频繁,最终的回合回报就越低。 类似的训练–采样不一致现象在其他领域中也被发现会降低生成质量,并由此催生了如 InferGrad [14] 等方法,用于显式地协调训练与采样两个阶段。
图 3:每个标记点代表一种唯一的组合,包括任务类型、去噪步数以及噪声注入尺度,均在去噪步骤 t = 5 t=5 t=5 处统计。Clipping 频率被定义为:在展开后的加噪动作序列张量中,被投影到立方体边界上的元素所占比例。灰色曲线表示对每个任务分别拟合的四阶多项式回归结果。
6. 图3怎么读?它在量化“clipping越多,分数越差”
我直接按图的元素解释(对应你图注):
6.1 横轴:Clipping frequency at t=5
- 在去噪第 t = 5 t=5 t=5 步时,你把“动作序列张量”展开(flatten)
- 看其中有多少元素被投影到了边界(变成 -1 或 1)
- 比例越大 → clipping 越频繁
直觉:横轴越大 = 你这套采样设置让动作越容易被裁坏。
6.2 纵轴:Normalized score
- 最终任务表现(回合回报/成功率之类)做了归一化
- 越高表示越好
6.3 每个点代表什么?
一个点 = 一个唯一组合:
- 任务类型(Pen / Relocate / Door / Hammer,用不同 marker)
- 去噪步数(denoising-step count)
- 噪声注入尺度(noise injection scale,用颜色条表示)
也就是说:同一任务里,你换不同的“步数/噪声强度”超参数,会得到不同的 clipping 频率和最终分数。
6.4 灰色曲线是什么?
- 对每个任务单独拟合的四阶多项式回归(只是为了看趋势)
6.5 图3给出的结论(就是你文中那句)
clipping 发生得越频繁,最终回报越低。
你看曲线整体是“横轴上升 → 纵轴下降”的趋势: 裁剪越多 → 去噪越不靠谱 → 任务分数越差。
7. 为什么提 InferGrad?它想解决的就是“训练–采样不一致”
你文里说类似现象在别的生成领域也会降低质量,所以出现 InferGrad [14] 这类方法,目标是:
显式协调训练阶段见到的分布,和推理阶段真正走到的分布。
注意:这不是说 InferGrad 一定是你们这里的最终答案,而是强调“这个问题不是你一个人遇到的,是生成模型领域的共性坑”。
2.3 Exploration–Exploitation trade-off in Diffusion Policy for Robotics 机器人扩散策略中的探索–利用权衡
clipping 频率与性能得分之间的关联表明,一种有效的改进路径是:首先充分训练扩散模型,使其在(可能需要较多去噪步数的情况下)生成一个良好的策略;随后再对去噪过程进行调整,以在更少去噪步数下获得足够的样本质量。 我们认为,参数 η \eta η 和 γ \gamma γ 提供了一种探索–利用之间的权衡机制,可被用于缓解 clipping 所带来的问题。 如引言中所述,为了实现良好的泛化能力,需要在训练阶段使用随机策略,以缓解模式坍塌问题。 然而,在推理阶段,模式坍塌并不是问题:只要策略是成功的,一个机器人在相同环境下始终选择同一种解决方案是可以接受的。 换言之,只要扩散模型得到了充分训练并拟合了完整的训练分布,那么在推理时以“输出多样性较低但可接受的动作”为特征的利用行为,并不会构成问题。
一方面,从公式 (3) 可以看出,通过减小噪声注入尺度 γ \gamma γ,去噪过程会退化为确定性的概率流(即对噪声目标分布进行梯度上升),并伴随噪声衰减。 γ \gamma γ 越小,生成的样本就越有可能接近目标动作分布中某一主导模态的密度最大值。 此时,系统更偏向于“利用”而非“探索”。
另一方面,探索不足可能会导致错过最优的模态。 减少噪声注入和去噪步数,会使采样结果偏向于更接近 0 的模态。 在图像生成任务中,这种现象会导致卡通化的输出:如图 4 所示,人像生成会产生对比度极低、眼球突出的怪异面孔。 在去噪步数很少且噪声注入极低的情况下,去噪过程本身难以找到良好的模态。
图 4:在不注入噪声的情况下,由扩散模型生成的人脸图像。
此外,在给定观测条件下,机器人操作任务的动作分布在本质上是低维的,其复杂度也显著低于图像分布。 例如,图像数据集 CelebA 的外在维度为 2 16 2^{16} 216,而其内在维度约为 25 [15],相比之下,Adroit Hand 环境的动作空间维度在 24 到 30 之间变化,在大多数任务中,当动作时间跨度为 24 时,其内在维度估计约为 11(见附录 B)。 此外,由于机器人任务可建模为 MDP,并且在动作时间跨度足够小的假设下,只要错误不是致命的,后续动作仍可对其进行修正。 这意味着机器人系统对不完美策略具有一定的鲁棒性。
2.4 Simple Empirical Solutions 简单的经验性解决方案
0) 先把问题复盘一下:2.4 是在修什么“病”?
前面 2.2 说了:clipping 会把推理早期的样本搞成“角点/边界怪物” → 分布不一致 → 早期去噪没用、误差大、浪费步数 → 分数下降。 2.3 说了:推理时可以更偏“利用”(更确定、更少随机噪声),因为推理不需要多样性。 所以 2.4 就是在做一件很工程的事:
不改模型结构,先用一些“采样/推理端”的小改动,让少步数也尽量不崩。
上一节的讨论表明,存在一些简单的方法可以改进我们对探索–利用权衡的使用方式。 首先,合理选择去噪时间调度 ( t j ) j ∈ { 1 , ⋯ , δ } (t_j)_{j\in\{1,\cdots,\delta\}} (tj)j∈{1,⋯,δ} 很可能可以减少所需的去噪步数。 将去噪过程的起点设置为 t δ < T t_\delta < T tδ<T 可以消除一个信息量不足的步骤,因为用于采样 x t δ x_{t_\delta} xtδ 的正态分布已经覆盖了加噪后的目标分布。 此外,去噪步数越少,意味着注入的噪声越少、clipping 次数越少、分布外(OoD)值也越少,从而提升噪声预测 ϵ θ ( x t ; t , o ) \epsilon_\theta(x_t;t,o) ϵθ(xt;t,o) 的质量。
1) 方案一:选更聪明的去噪时间调度 ( t j ) (t_j) (tj),并且从 t δ < T t_\delta<T tδ<T 开始
1.1 你要先理解:训练有 T T T 步,不代表推理必须从 T T T 开始走满
训练时用 T T T 是为了让模型见过从“很大噪声”到“很小噪声”的全过程。 但推理时我们可以用更少步 δ \delta δ,用一串时间点: 0 ≤ t 0 < ⋯ < t δ ≤ T 0\le t_0<\cdots<t_\delta\le T 0≤t0<⋯<tδ≤T 每次从 t j t_j tj 跳到 t j − 1 t_{j-1} tj−1。
1.2 “从 t δ < T t_\delta<T tδ<T 开始”这句话的直觉是什么?
推理通常是:先采样 x T ∼ N ( 0 , I ) x_T\sim\mathcal{N}(0,I) xT∼N(0,I),然后慢慢去噪。 作者说:你可以不要从最顶端 T T T 开始,而是从更低一点的噪声水平开始: t δ < T t_\delta<T tδ<T。 原因(按原文逻辑翻译成人话):
如果你选的起点 t δ t_\delta tδ 已经足够大,使得“用来采样 x t δ x_{t_\delta} xtδ 的高斯分布”已经把“加噪后的目标分布”覆盖住了,那么从更大的 T T T 再多走一步其实没带来新信息——那一步是“信息量不足”的。
你可以把它想成:
- 你要找的是“动作分布附近的样本”
- 但最开始噪声太大时,你采到的几乎都是纯噪声,离动作流形很远
- 那几步只是在噪声海里瞎游,对任务没贡献
所以把起点往下挪,相当于跳过最“废”的早期阶段。
1.3 为什么步数少会带来三个直接好处?(原文这句很关键)
作者说:步数越少意味着:
- 注入噪声越少(因为你少走了几次“加随机噪声/随机项”的更新)
- clipping 次数越少(因为很多 clipping 恰恰发生在早期大噪声+数值不稳+步子多)
- OoD(分布外)值越少(因为你更快回到训练数据高密度区域)
结果就是:网络预测噪声 ϵ θ ( x t ; t , o ) \epsilon_\theta(x_t;t,o) ϵθ(xt;t,o)会更准,因为它更少遇到自己没见过的“极端输入”。
这招的本质:减少“垃圾输入阶段”的停留时间,让每一步去噪都更“像训练时的情况”。
其次,通过降低噪声注入尺度来偏向“利用”,可以降低去噪结果落入大幅值张量的概率,从而减少 clipping 的发生频率。
2) 方案二:降低噪声注入尺度,让推理更偏“利用”,从而减少 clipping
这招对应 2.3 的探索–利用旋钮。原文说得很直接:
降低噪声注入尺度 → 采样结果更不容易出现“大幅值张量” → clipping 发生更少。
2.1 这里的“噪声注入尺度”是谁?
你前面式(2)/(3)里有随机项,典型长这样:
- 离散: + γ σ t ϵ t +\gamma\sigma_t\epsilon_t +γσtϵt
- 连续: + γ ⋅ ( ⋯ ) , d W t +\gamma\cdot(\cdots),dW_t +γ⋅(⋯),dWt
所以“降低噪声注入尺度”基本就是把 γ \gamma γ 调小(或者整体减少注入噪声的强度)。
2.2 为什么这会减少 clipping?(直觉链条)
- 噪声注入越大 → 生成轨迹越容易被抖到很大幅值
- 幅值越大 → 更容易超出 [-1,1] → 被 clip
- clip 多 → 2.2 说的“角点分布”问题更严重
所以调小噪声,是一种“少探索、多利用”的策略: 别乱抖,稳一点,就不容易撞到边界。
这招的本质:用确定性换稳定性,让样本不那么容易飞出合法区间。
第三,使用不依赖 clipping 的去噪过程。 一种做法是将 DDPM 调度器替换为 DDIM 调度器。 在 Chi 等人 [3] 的工作中,DDIM 被用作减少去噪步数的方法,这在一定程度上偏离了 Song 等人 [11] 最初提出 DDIM 的目的;但该工作并未在仿真环境中对 DDIM 进行基准评测。 我们的实验发现,DDIM 的表现并不理想。 这并非偶然现象:DDIM 通过更大的确定性步长来弥补噪声的减少,而在去噪初期,由于样本仍然部分处于分布外状态,这种大步长是不可靠的。 Karras 等人 [12] 提出了一个在训练与采样层面更为系统的方法,即 EDM。 从原理上讲,可以直接使用现成的 DDPM 扩散策略模型,并配合 EDM 采样器。 然而,为了获得具有竞争力的结果,我们不仅需要从头重新训练一个 EDM 策略模型,还必须对训练超参数进行细致调节(见实验部分第 4 节)。 与 DDPM 不同,EDM 策略在不同动作时间跨度下表现出明显的不稳定性:在时间跨度为 24 的情况下可以解决环境,但在其他设置中甚至无法达到 50% 的成功率,如图中所示。
3) 方案三:用“不依赖 clipping”的去噪过程(DDIM / EDM),但现实里并不香
这一段是最容易读糊的,我把它拆成两层:作者尝试了什么 → 为什么没达到理想 → EDM为什么更麻烦。
3.1 思路:既然 clipping 害人,那我能不能用一个不那么需要 clipping 的采样器?
候选之一:把 DDPM 调度器换成 DDIM 调度器。
- DDPM:更随机、步子小、逐步去噪
- DDIM:更确定、可以用更少步数跳着走(经常被当作加速器)
Chi 等人 [3] 用 DDIM 来减少步数,但作者指出:他们没在仿真里系统 benchmark。作者自己试了:DDIM 表现不理想。
3.2 作者解释 DDIM 为啥不理想(非常核心的一句)
原文意思是:
DDIM 为了减少噪声,会用“更确定、更大的步长”来弥补。但在去噪初期,样本仍部分处于分布外(OoD),这时用大步长更新是不可靠的。
翻成人话就是:
- 推理刚开始,你的 x t x_t xt 很可能还在“训练没见过的怪区域”
- 这时候最需要的是“小心翼翼慢慢拉回去”
- DDIM 反而迈大步(因为它更确定、更激进)
- 于是容易走错方向,直接偏出去了
这其实和 2.2 的 OoD 问题呼应:早期阶段最脆弱,你还迈大步,就是摔跤。
3.3 EDM(Karras 等人 [12])更系统,但代价更大
作者说:Karras 等人提出 EDM,是从训练和采样层面更系统的一套做法。理论上你可以:
用现成的 DDPM 扩散策略模型 + EDM 采样器
但作者接着说:为了做到“有竞争力”,现实中需要:
- 从头训练 EDM 策略模型(不是简单换采样器就完事)
- 还要细致调训练超参数(实验第4节)
而且还有一个更糟的工程问题:
EDM 策略在不同动作时间跨度下明显不稳定:某个时间跨度(比如 24)能解任务,但换别的设置成功率甚至不到 50%。
3.4 “动作时间跨度”为什么会让 EDM 不稳定?(不超出原文的解释方式)
原文给的是现象结论:不同 horizon 下表现差异巨大。你只需要把它理解成:
- horizon 变了,动作序列维度/分布就变了
- EDM 这套训练+采样对分布/尺度很敏感
- 所以会出现“某个 horizon 好用,换一个就崩”的不稳定
上述前两种方案实现起来较为简单,并且如第 4 节实验所示,能够相较于基线方法带来显著提升。 然而,进一步的性能提升似乎较为有限,因为这些方法并未为上述探索–利用权衡提供足够的调节空间。
4) 作者最后的评价:前两招简单有效,但提升空间有限
原文总结:
方案一(调时间调度/跳过起点)+ 方案二(降噪声注入偏利用)
- 实现简单
- 实验上相对 baseline 显著提升
但进一步提升有限,因为:
这些方法没有给探索–利用权衡提供足够的“调节空间”。
翻成人话就是: 你就算把步数调少一点、噪声调小一点,本质还是在“同一套机制里拧几个旋钮”,可控性有限;想要更大提升可能需要更强的机制(更细粒度、更可控的权衡方式),而不是只靠经验改采样。
5) 把 2.4 的三招用“工程操作清单”记住(你以后复现用得上)
时间调度:选合理的 ( t j ) (t_j) (tj),甚至从 t δ < T t_\delta<T tδ<T 开始,跳过最废的早期噪声阶段 → 少步数 = 少噪声 = 少 clipping = 少 OoD = 预测更准
降噪声注入:把 γ \gamma γ 调小,让推理更“利用” → 样本不容易飞到大幅值 → clipping 更少
换采样器尝试 clipping-free:DDIM / EDM
- DDIM:早期 OoD 时大步长不可靠 → 实测不理想
- EDM:更系统但往往要重训+细调;且对不同动作时间跨度不稳定
3 Genetic Diffusion Policy 遗传扩散策略
1) 为什么要引入“遗传算法”?
作者先讲一个现实约束对比:
- 图像生成:维度巨大,算一次很贵,所以通常用“更长的去噪轨迹(很多步)”来慢慢把样本推到好模态,时间可以慢一点。
- 机器人(EAI):必须快(动作要实时生成),但动作维度比图像低很多,所以内存压力没那么大。
结论是:
机器人这边更适合用“并行生成一批候选动作”来换速度/质量,而不是靠“单条轨迹走很久”。
于是作者的核心想法是:
既然动作维度低、能并行,那就一次保留一群候选(种群),每一步去噪之前先挑“更像分布内”的样本,让去噪别在 OoD(分布外)垃圾区浪费步数。
这就把“遗传算法”引进来了:它不是用来训练模型的,是用来在推理时做筛选/复制的。
上一节讨论的探索–利用权衡问题,在图像生成中的扩散模型里通常通过较长的去噪轨迹来解决。 然而,在复杂度约束方面,具身人工智能(EAI)与图像生成几乎处于两个极端。 图像生成由于分布维度极高,主要受限于算法的内存复杂度,但对时间的要求相对不高,因为这类任务很少需要极高的实时响应能力。 相反,具身人工智能需要快速生成动作,但由于动作空间维度较低,在内存约束方面反而更为宽松。 我们提出的同时提升探索与利用能力的解决方案,正是利用 EAI 的这一特性,通过引入遗传算法来增强去噪过程。 我们为遗传算法设计的启发式规则,用于衡量给定样本的分布外(OoD)程度。
2) 这套方法的结构是什么?(你脑中要有三块积木)
积木A:原来的扩散策略噪声预测器 你已经有训练好的 ϵ θ ( x t , t ) \epsilon_\theta(x_t,t) ϵθ(xt,t)(或条件在观测 o o o上的版本)。这是“会去噪”的脑子。
积木B:一个去噪更新规则 算法里写成: x t j − 1 = D ( x t j , j , ϵ θ ( x t j , t j ) ) x_{t_{j-1}} = D(x_{t_j}, j, \epsilon_\theta(x_{t_j}, t_j)) xtj−1=D(xtj,j,ϵθ(xtj,tj)) 意思是:给你当前样本 x t j x_{t_j} xtj,用模型预测噪声,再按某种采样器(DDPM/DDIM/你们的随机规则)更新到下一步。
积木C:一个 OoD 打分函数 φ φ φ(适应度) 它告诉你:这个样本有多“离谱/分布外”。分布外越严重,越应该被淘汰;分布内越像训练数据,越应该留下。
具体而言,我们首先生成一组加噪样本,构成一个样本种群; 在执行去噪步骤之前,我们为每一个部分去噪的样本计算一个适应度分数; 随后,依据适应度分数作为权重,使用多项分布采样器选择其中一半样本; 最后,将被选中的样本复制,以重新填满整个种群批次。 随后,对整个样本种群执行一次常规的去噪步骤。 我们设计的适应度分数旨在通过偏向分布内样本,来增强扩散模型的性能。 我们考虑了两类适应度函数 φ φ φ:
φ stein , f , T ( x t , t ) = T × f ( ∥ ϵ θ ( x t , t ) ∥ ) , φ clip , f , T ( x t , t ) = T × f ( x ^ 0 − CLIP ( x ^ 0 ) ) , ( 4 ) φ_{\text{stein},f,T}(x_t,t) = T \times f\big(\|\epsilon_\theta(x_t,t)\|\big), \quad φ_{\text{clip},f,T}(x_t,t) = T \times f\big(\hat{x}_0 - \operatorname{CLIP}(\hat{x}_0)\big), \quad (4) φstein,f,T(xt,t)=T×f(∥ϵθ(xt,t)∥),φclip,f,T(xt,t)=T×f(x^0−CLIP(x^0)),(4)
其中
x ^ 0 : = x t − 1 − α ˉ t ϵ θ ( x t , t ) α ˉ t . \hat{x}_0 := \frac{x_t - \sqrt{1-\bar{\alpha}_t}\,\epsilon_\theta(x_t,t)}{\sqrt{\bar{\alpha}_t}}. x^0:=αˉtxt−1−αˉtϵθ(xt,t).
其中, T T T 是温度系数, f f f 是缩放函数, x ^ 0 \hat{x}_0 x^0 定义如上。 详见算法 1。

3) 算法1逐行讲:它到底做了什么?
我先把符号翻译成“人话变量”:
- P P P:种群大小(一次并行维护多少条候选动作序列)
- S S S:幸存者数量(每一轮筛选后保留多少个“父代”)
- N N N:去噪步数(总共要做多少次去噪更新)
- x t j i x^i_{t_j} xtji:第 i i i个样本在时间步 t j t_j tj的状态(它是一整段动作序列张量,不是一个标量)
- p i p_i pi:第 i i i个样本的“适应度/权重”,由 φ φ φ算出来
- “Multinomial”那一步:按权重抽样(权重高更容易被选中)
Step 1:初始化一堆纯噪声样本(种群)
x t N i ∼ N ( 0 , 1 ) , i = 1 , … , P x^i_{t_N}\sim \mathcal{N}(0,1),\quad i=1,\dots,P xtNi∼N(0,1),i=1,…,P
人话:先生成 P P P条“全是噪声的动作序列”,当作一群候选。Step 2:设置当前去噪轮次 j = N j=N j=N
从最噪声的阶段开始往回去噪。
Step 3–8:循环:每一轮都先“打分+选择+复制”,再统一做一次去噪
循环直到 j = 0 j=0 j=0结束。
第4行: j ← j − 1 j\leftarrow j-1 j←j−1
准备从 t j t_j tj走到 t j − 1 t_{j-1} tj−1。
第5行:给每个候选打分
p i : = φ ( x t j i , t j , ϵ θ ( x t j i , t j ) ) p_i := \varphi(x^i_{t_j}, t_j, \epsilon_\theta(x^i_{t_j}, t_j)) pi:=φ(xtji,tj,ϵθ(xtji,tj))
人话:对每个候选动作序列,看它现在到底像不像“分布内的合理动作”。越合理,分数越好(或权重越大)。注意:这里“分数”本质上是用来做选择概率的,不是训练loss。
第6行:按权重抽 S S S个幸存者(带概率的“自然选择”)
( i 1 , … , i S ) ∼ Multinomial ( S , p 1 , … , p P ) (i_1,\dots,i_S)\sim \text{Multinomial}(S, p_1,\dots,p_P) (i1,…,iS)∼Multinomial(S,p1,…,pP)
人话:不是硬选“前S名”,而是“分数越高越容易被抽中”。这很关键,因为:
- 纯选前S名 → 太贪心,容易丢掉多样性(探索没了)
- 按概率抽 → 既偏向好的样本(利用),又保留一定随机性(探索)
这就是“遗传算法味道”的来源。
第7行:复制幸存者,重新填满 P P P个样本,然后对整个种群做一次去噪更新
算法里写得有点紧凑,本质动作是两步:
- 复制/重采样:用被选中的 S S S个样本当“父代”,复制(可能重复)填满 P P P个位置 你可以理解成:差的个体被淘汰,好个体“生孩子”变多。
- 统一去噪一步:对填满后的每个样本做一次 x t j − 1 = D ( x t j , j , ϵ θ ( x t j , t j ) ) x_{t_{j-1}} = D(x_{t_j}, j, \epsilon_\theta(x_{t_j}, t_j)) xtj−1=D(xtj,j,ϵθ(xtj,tj))
Step 9:最终输出 x 0 x_0 x0
所有步走完后,得到去噪后的动作序列(或动作窗口),执行前几步即可。
4) 这套遗传机制到底解决了什么?(一句话抓住要害)
你之前的核心问题是:去噪早期样本很OoD,clipping多,模型没见过,误差大,浪费步数。
遗传扩散策略在每一步去噪前都做:
“先把更分布内的样本留下来,再去噪”
于是它会让整个种群更快聚集到“训练分布高密度区域附近”,减少在OoD区域乱走。
基于 clipping 的适应度函数族 φ clip , f , T φ_{\text{clip},f,T} φclip,f,T 在理论和实验层面上都直接来源于第 2.2 节的讨论。 从理论上看,当 x ^ 0 \hat{x}_0 x^0 处于分布外时才会发生 clipping,因此,被裁剪坐标的重要性可以作为 OoD 程度的度量。 从经验角度看,如果 clipping 是主要问题,那么偏向于裁剪程度较低的样本应当能显著提升生成样本的质量。
5) 两类适应度函数 φ φ φ到底在量什么?
作者给了两族 φ φ φ:
φ stein , f , T ( x t , t ) = T × f ( ∥ ϵ θ ( x t , t ) ∥ ) φ_{\text{stein},f,T}(x_t,t) = T \times f\big(\|\epsilon_\theta(x_t,t)\|\big) φstein,f,T(xt,t)=T×f(∥ϵθ(xt,t)∥) φ clip , f , T ( x t , t ) = T × f ( x ^ 0 − CLIP ( x ^ 0 ) ) (4) φ_{\text{clip},f,T}(x_t,t) = T \times f\big(\hat{x}_0 - \operatorname{CLIP}(\hat{x}_0)\big)\tag{4} φclip,f,T(xt,t)=T×f(x^0−CLIP(x^0))(4) 其中 x ^ 0 : = x t − 1 − α ˉ t ϵ θ ( x t , t ) α ˉ t . \hat{x}_0 := \frac{x_t - \sqrt{1-\bar{\alpha}_t}\,\epsilon_\theta(x_t,t)}{\sqrt{\bar{\alpha}_t}}. x^0:=αˉtxt−1−αˉtϵθ(xt,t).
我把它们用“你在筛什么”讲清楚。
5.1 基于 clipping 的 φ clip φ_{\text{clip}} φclip:用“被裁剪得多不多”来判断OoD
先回忆:clipping只在 x ^ 0 \hat{x}_0 x^0超出 [ − 1 , 1 ] d [-1,1]^d [−1,1]d时才会动手。 所以:
- 如果 x ^ 0 \hat{x}_0 x^0大部分都在[-1,1]里 → clip几乎不改它 → 说明样本较像分布内
- 如果 x ^ 0 \hat{x}_0 x^0大量超界 → clip把很多维度硬按到±1 → 说明样本很OoD(你2.2讲过会导致缺陷)
那么 x ^ 0 − CLIP ( x ^ 0 ) \hat{x}_0 - \operatorname{CLIP}(\hat{x}_0) x^0−CLIP(x^0) 是什么?
- 如果没被裁剪: CLIP ( x ^ 0 ) = x ^ 0 \operatorname{CLIP}(\hat{x}_0)=\hat{x}_0 CLIP(x^0)=x^0 → 差为0
- 如果被裁剪很多:差会变大(表示“超界量”)
所以这个差的“大小”就是一个很直接的OoD指示器:
被裁得越狠 → 越OoD → 越不该保留。
作者说它“理论和实验都直接来自2.2”,意思就是:你们已经证实clip频率和性能负相关,所以用“裁剪程度”当OoD指标,是顺理成章的。
5.2 基于 Stein 的 φ stein φ_{\text{stein}} φstein:用“噪声预测幅值大不大”来判断OoD
这里的核心量是: ∣ ϵ θ ( x t , t ) ∣ |\epsilon_\theta(x_t,t)| ∣ϵθ(xt,t)∣
直觉非常简单:
- 如果样本在“模型熟悉的区域/接近某个模态”,模型对噪声的估计会更稳定、幅值不会异常大
- 如果样本很OoD,模型会“看不懂”,预测的噪声可能变得很大、很乱
作者给了两条理论动机(我用更直白的方式讲):
- 当你减少噪声注入(更偏利用)时,会破坏朗之万过程的“随机探索”成分。Stein型适应度在某种意义上是在用一个“与噪声/分数相关的量”来补偿这种探索缺失(你不必推Stein细节,只要理解:它想用“模型自身的噪声感知”来当一种替代信号)。
- 噪声预测器本身就是OoD探测器:预测值越大,说明离所有模态越远(越不像训练数据)。
因此, φ stein φ_{\text{stein}} φstein本质上是在问:
“你这个样本让我预测噪声的时候,是不是很费劲、很‘爆’?”
- 越爆 → 越OoD → 越不该繁殖。
基于 Stein 的适应度函数 φ stein , f , T φ_{\text{stein},f,T} φstein,f,T 具有双重理论动机。 首先,减少噪声注入会破坏朗之万(Langevin)过程,而 Stein 型适应度在一定程度上模拟了朗之万过程中的噪声注入。 其次,噪声预测器本身可以直接衡量分布外程度:较大的噪声预测值意味着样本远离目标分布中的所有模态。
6) 参数 T T T和函数 f f f到底是干嘛的?(很多人卡在这)
6.1 温度 T T T:控制“选择有多偏向高分样本”
- T T T大:差异被放大 → 更贪心 → 更利用(强烈偏向分布内样本)
- T T T小:差异被压小 → 更随机 → 更探索(保留更多多样性)
所以 T T T是“选择压力”的旋钮。
6.2 缩放函数 f f f:把原始指标变成合适的权重形状
你可以把 f f f理解成“把一个原始分数映射成更好用的权重”的非线性:
- 例如让差距不要太夸张、避免极端值垄断
- 或者把“越小越好”的量变成“越大越好”的权重
原文没限定 f f f具体形式,只强调它是一个缩放/变换,用于让权重分布更可控。
7) 这套方法怎么同时增强“探索”和“利用”?
你可以这样理解它的工作方式:
- 利用(Exploitation):通过 φ φ φ偏向分布内样本,让种群更快集中到好的模态附近(少踩OoD坑,少clip)
- 探索(Exploration):因为选择是“按概率抽样(Multinomial)”,不是永远只留最好的那几条,所以仍然保留多条路径、多模态的机会
换句话说:
它不是把随机性全关掉,而是把随机性“用在挑人上”,让随机探索更有效率。
这非常符合机器人需求:你要快,但不能瞎;你要稳,但不能完全僵。
8) 你现在应该能用一句话总结这节的核心贡献
遗传扩散策略在推理阶段维护一个候选动作“种群”,每一步去噪前用OoD适应度 φ φ φ给每个样本打分,按分数概率选择幸存者并复制填满种群,再统一去噪一步;通过偏向分布内样本减少clipping/OoD输入,从而在少步数、更快推理下提升扩散策略的稳定性与性能。
4 Experiments
4.1 Experimental Setup
我们验证以下两个假设:(i)减少推理迭代次数,以及(ii)降低噪声注入尺度,均可以缓解 clipping 问题并提升性能。 实验在 Adroit Hand [16](见图 1)以及 Robomimic [9] 基准上进行。 每个 Adroit 任务都需要控制一只具有 24–30 个自由度(DoF)的机器人手,以完成不同的目标:
- Pen:将一支笔调整到指定的目标角度。
- Relocate:抓取一个球体并将其放置到目标位置。
- Hammer:拾起一把锤子并敲击钉子。
- Door:拉下门闩并打开门。
为保证公平性,所有方法均使用来自官方 Diffusion Policy(DP)实现 [17] 的同一 UNet 架构,参数量为 6500 万。 每种 Adroit 配置在 100 个随机种子上进行评估,而每种 Robomimic 配置在 500 个随机种子上进行评估。
我们对以下推理阶段超参数进行网格搜索:
- 推理步数 δ ∈ { 1 , 2 , … , 10 } ∪ { 20 , 30 , … , 100 } \delta \in \{1,2,\dots,10\}\cup\{20,30,\dots,100\} δ∈{1,2,…,10}∪{20,30,…,100};
- 噪声缩放系数 γ ∈ { 0.0 , 0.1 , … , 1.0 } \gamma \in \{0.0,0.1,\dots,1.0\} γ∈{0.0,0.1,…,1.0};
- 动作时间跨度 h A ∈ { 24 , 48 , 76 , 100 , 152 , 200 } h_A \in \{24,48,76,100,152,200\} hA∈{24,48,76,100,152,200};
- 采样方法:DDPM、GDP、DDIM 或 Shortcut。
由于公开发布的 Adroit 模型检查点并未覆盖所有动作时间跨度,我们使用 DP 训练流水线对每个扩散策略进行了重新训练,采用 AdamW 优化器 [18, 19],学习率为 10 − 4 10^{-4} 10−4,权重衰减为 10 − 6 10^{-6} 10−6,批大小为 64,训练 200 个 epoch。 Shortcut 模型 [7] 使用 PyTorch 重新实现,并针对每个“任务–时间跨度”组合采用 10 组随机超参数种子进行训练,保留其中表现最优的模型。 所有基础模型均使用 100 个扩散训练步数进行训练(Shortcut 为 128 步),并在评估阶段采用子采样的余弦推理调度。 我们也测试了线性调度方案,但在所有方法中其性能始终较差。 DDPM、GDP 和 DDIM 共用同一个 DDPM 训练得到的检查点,而 Shortcut 模型则单独训练。
随后,我们在一个非常粗略的参数网格上测试所提出的遗传算法,其目的是验证算法 1 的有效性,而非将其调优至最优状态。 我们测试的参数包括:种群规模 p ∈ [ 4 , 8 , 16 , 32 ] p \in [4,8,16,32] p∈[4,8,16,32],温度参数 t ∈ [ 1 , 10 , 100 , 1000 ] t \in [1,10,100,1000] t∈[1,10,100,1000],以及噪声尺度 γ ∈ [ 1 , 0.6 , 0.3 , 0.2 , 0.1 ] \gamma \in [1,0.6,0.3,0.2,0.1] γ∈[1,0.6,0.3,0.2,0.1]。
4.2 Results
扩散步数——在所有任务中,去噪步数 n n n 与 clipping 之间的相关性都十分明显:减少扩散步数会降低 clipping 的发生程度。 在显著降低推理开销的同时,这种做法能够获得相当甚至更优的性能得分。 我们观察到在 n = 4 n=4 n=4 之前存在一个峰值点,此时 clipping 最小,即性能最优(见图 5(a))。 该峰值位置在不同任务之间略有差异,但对不同随机种子具有良好的鲁棒性。 这使得可以将模型调节至最优步数,而无需担心其在未知场景中失效。
图 5:(a) clipping 频率(相对于观测到的最大值进行归一化)随去噪步数变化的关系;去噪步数越多,clipping 越严重。 (b) 不同动作时间跨度下噪声注入尺度的影响(在任务上取平均);较低噪声注入可系统性地提升性能。 © 经调优的 EDM 在少步数设置下,不同动作时间跨度的归一化得分(当 n > 5 n>5 n>5 时,曲线与 n = 5 n=5 n=5 重合)。
噪声注入尺度——降低噪声的推理过程同样符合预期:减小噪声注入会显著减少 clipping。 然而,如图 3 所示,通过降低噪声来缓解 clipping 的效果是有限的。 这表明,clipping 的一部分来源于去噪过程中的确定性部分,而不仅仅是朗之万过程中的噪声注入。 尽管如此,采用较低噪声尺度所带来的性能提升仍然是显著的(见图 5(b))。 通过这种噪声重标定,同一个 UNet 模型可以从约 75% 的成功率提升到完全解决该任务。 同时,这种做法还能在较多去噪步数下稳定性能,弥合峰值点与其余分布之间的差距。
动作时间跨度——在所有实验中,前述讨论的所有现象在不同动作时间跨度下均存在。 我们观察到,中等长度的动作时间跨度似乎比短跨度或完整跨度更难。 我们对这一现象的解释是假设:随着时间跨度增加,模型在条件复杂度与分布复杂度之间进行权衡。 在较长时间跨度下,模型需要学习少量但复杂的分布;而在较短时间跨度下,分布更简单,但条件信息必须涵盖更多环境动力学。 这会导致在权衡最不理想的区域出现性能下降,此时模型需要学习大量并非平凡的分布。 这种趋势在 EDM 中表现得更加明显,如图 5(c) 所示。
Shortcut 模型——在该实验中,我们将所提出的方法与 Shortcut 模型进行对比。 Shortcut 模型 [7] 作为提升采样速度的代表性方法,通过在训练时对总去噪步数进行条件化,使模型能够在一步内生成质量较高的样本。 然而,这种速度提升是以性能下降为代价的。 如 Frans 等人 [7] 所示,在 Robomimic transport 等任务中,Diffusion Policy 的成功率可能下降多达 20% [9]。 我们针对四个 Adroit 任务训练并调优 Shortcut 模型,每个任务进行 10 次训练实验。 Shortcut 方法在每个环境中报告的性能为这 10 个训练模型中取得的最高得分。
表 1:Adroit Hand 任务结果。 在 100 个随机种子上取平均的归一化成功率。 结果中包含 DDIM 以及消融实验变体。 “Schedule” 指的是经过调整的去噪时间调度。 “Best γ” 指的是最优的降噪注入尺度(γ = 0.2)。
表 1 的结果表明,尽管 Shortcut 方法是唯一能够实现单步采样的方法,但其性能明显不足。 我们提出的两步生成方法结合了 GDP 技术与第 2.4 节所述的时间步调整策略,其中最大时间步设为 90,最小时间步设为 20。 该方法在仅需两步推理的情况下,无论扩散步数设置如何,均能优于或至少达到基线方法的性能。 从一个成功率约为 70% 的现成模型出发,我们的方法不仅实现了 100% 的成功率,还带来了显著的速度提升。 实验还表明,当使用 γ = 1 \gamma=1 γ=1 时,GDP 的表现会明显下降。 我们认为,这是由于噪声使得种群中的个体即便在后期步骤中仍可能在不同模态之间“跳跃”,并在幸存者选择机制下引发模式坍塌。
表 2:Robomimic 结果。在 500 个随机种子上统计的归一化成功率。 PH 和 MH 分别表示训练时所使用的数据集:高水平人类示范(Proficient Human)与中等水平人类示范(Medium Human)。 “DDPM+Schedule” 表示采用了调整后时间调度的 DDPM 变体。 需要注意的是,大多数成功率都落在 GDP 结果的两个标准差范围内,这表明 GDP 并未在该基准上显著优于采用调度调整的基础策略。
图 6:所有任务在不同时间步下的性能表现。
表 3:推理阶段的实际运行时间对比。开销比率定义为:在种群规模为 1–64(GDP)与种群规模为 1(DDPM)之间,神经函数评估次数(NFE)与步进开销之和的比值。
4.3 Inference Overhead and Wall-Clock Runtime 推理开销与实际运行时间
我们在一张 RTX 3080 显卡上测量逐步推理开销,并在每一步中将整个种群合并为一次前向传播进行计算。 NFE(Neural Function Evaluation)开销指的是模型对整个种群进行一次前向调用所消耗的实际时间。 Step 开销指的是在完成一次 NFE 之后,执行去噪步骤所消耗的实际时间,包括公式 (2) 的计算、适应度分数的计算以及种群管理操作。
5 Related Works
首先,Shortcut 基线方法可以被视为一种自蒸馏的一致性模型 [5, 4]。 更传统的知识蒸馏方法也可用于加速扩散模型 [20]。
其次,扩散模型的快速生成是一个非常活跃的研究方向,主要集中在改进去噪过程中所使用的随机微分方程(SDE)求解器 [21, 12, 22],而其他方法则尝试利用并行采样机制 [23]。 后一类方法可与我们的方法进行比较,因为其平均操作可被解释为一种交叉繁殖(cross-breeding)步骤。 更一般地说,用于求解偏微分方程(PDE)的群体方法也是一个活跃的研究方向 [24]。 通过 Fokker–Planck 方程,PDE 与 SDE 两种视角在理论上是互为对偶的。
第三,通过在样本种群上引入一种简单的元启发式方法,我们的遗传去噪过程为更广泛的一类元启发式算法提供了可能性 [25]。 我们提出的 Stein 型适应度分数可能与受 PDE 约束的群体优化方法相关 [26]。
6 Limitations
首先,本文对扩散过程所做的大多数改动仅在具身人工智能(EAI)任务背景下成立。 事实上,遗传算法并不适用于图像生成任务,因为其会显著增加内存开销,而这在高分辨率图像数据集中本就已是一个严重问题。 第 2.4 节中分析的调整方法同样不适用于图像生成任务:Song 等人 [11] 表明,减少推理步数会显著降低模型性能;并且与我们在机器人任务中的观察相反,DDIM 实际上是图像快速采样中的更优选择。 如第 2.3 节所讨论的那样,降低噪声注入尺度在图像生成任务中会导致令人不满意的结果。
其次,我们的遗传算法采用了最简单的形式,既不包含交叉繁殖,也不包含复杂的变异机制。 该元启发式方法非常简单,并且完全是局部的。 例如,可以引入群体优化中的多样性控制机制 [27, 28]。 还可以考虑引入来自图像(非扩散)去噪领域的变异与交叉繁殖策略 [29]。
第三,Robomimic 与 Adroit Hand 任务之间存在明显差异。 由于前者的动作空间外在维度约为后者的三分之一,我们推测 Robomimic 任务的目标分布显著比 Adroit Hand 更为简单。 然而,每个 Robomimic 任务包含更多样的操作方式,这意味着其条件信息更加多样。 因此,仅通过改进去噪过程可能难以获得显著提升,真正的瓶颈更可能在于噪声模型 ϵ θ \epsilon_\theta ϵθ 的条件建模能力。 我们并未对这一假设进行验证,且本文方法也无法解决该问题。
最后,我们的理论分析仍处于初步阶段。 我们推测,期望去噪误差可以由沿去噪轨迹计算得到的期望 Stein 分数范数的某个单调递增函数所界定。 此外,一个非严格的推导表明,在无限种群规模与无穷小步长的极限下,多项式种群去噪过程近似于在适应度分数上同时引入随机噪声项与梯度上升项。 据我们所知,噪声尺度调节的理论影响尚未被系统研究。
合理的推测是,改变噪声尺度能够保持学习分布的支撑集不变,但在降低噪声时会引入向其均值偏移的偏置。 这些关系的严格表述与证明留待未来工作完成。
7 Conclusion
总体而言,我们的实验表明,所提出的方法能够在不重新训练模型的情况下,同时提升现成模型的性能与采样速度。 此外,即便使用非常简单的样本质量评估器,遗传去噪过程仍能够进一步提升模型的准确性与稳定性。 我们表明,现成扩散模型在两步推理设置下即可获得优于 Shortcut 模型的性能。 我们最终得出结论:只要模型训练充分、目标分布具有足够复杂性,便可以通过此类推理框架从既有模型中进一步挖掘性能潜力。
A Extra Experimental Details
A.1 Image generation
在“简单的经验性解决方案”一节中,我们展示了一张用于说明模式坍塌现象的图像样本。 该图像是通过使用 google/ddpm-celebahq-256 预训练流水线 [30] 生成的。 我们对其调度器进行了修改,将噪声注入参数设为 γ = 0 \gamma = 0 γ=0,并在推理时将推理步数设为 50。 需要注意的是,在原始推理步数设置下,生成样本会收敛为一块均匀的灰色方块。
B Intrinsic Distribution Manifold Dimension Estimation 内在分布流形维度估计
我们采用流形假设(Manifold Hypothesis)[31, 32],该假设认为数据分布由 R n \mathbb{R}^n Rn 中的一个低维子流形所支撑。 数据集的内在维度指的是能够支撑整个数据集的该类流形的最小维度。 关于数据集内在维度存在多种定义,常见的方法包括基于 Minkowski 维度或 Hausdorff 维度的度量 [33, 34, 35, 15]。 鉴于本文聚焦于扩散模型,我们采用了 Stanczuk 等人 [36] 提出的方法。 该方法通过对噪声模型 ϵ θ \epsilon_\theta ϵθ 在不同取值下进行主成分分析(PCA),来估计扩散模型所学习分布的内在维度。
C Extra Experimental Results
C.1 Link between clipping and Score

C.2 DDIM

Supplementary Materials



这些图表表明,在简单的遗传算法启发式方法中,最小化 Stein 分数(或预测噪声的范数)是效果最好的策略。 将 clipping 统计量作为启发式规则会通过移除取值较大的模态而扭曲采样分布;相比之下,基于 Stein 的启发式方法仅衡量当前中间样本偏离训练分布的程度。
视频说明:所有 GDP 视频均使用遗传算法生成,噪声尺度设为 γ = 0.2 \gamma=0.2 γ=0.2,并以 Stein 分数作为启发式指标。 所有非 GDP 视频均使用标准策略生成,噪声尺度设为 γ = 1 \gamma=1 γ=1。 对于两步扩散推理,我们将最大时间步设为 80,最小时间步设为 20。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)