Diffusion Policy 从噪声去噪到动作序列
chi et al. 2023 RSS · 多模态行为克隆的扩散方案 · 连续 action chunk + 迭代修正
Diffusion Policy 是 Chi et al. 在 2023 RSS 发表的经典工作,把图像生成领域的扩散模型(Diffusion Model)移植到机器人动作序列生成。核心思想很直观:不像行为克隆一下子回归出最"平均"的动作,而是让模型反复修正一个初始随机动作序列,逐步去掉噪声,最终收敛到学到的动作分布上。
为什么这很关键?因为在很多场景下,同一个观测对应多种正确的做法。比如端起一杯咖啡,可以从左边绕过、从右边绕过,甚至直接拿都行 —— 这叫多模态动作分布。传统回归/VAE 会把所有可能都平均,结果可能是撞杯子的中间路线。Diffusion Policy 能让每次采样各自"投入"其中一种做法,稳定且多样。
这条路线自 2023 年以来衍生了 iDP3(3D egocentric 泛化)、Consistency Policy(推理加速)、以及被后续 VLA(π₀ 等)的 flow-matching 动作头借鉴,成为当代动作生成的标志性思路之一。
核心机制
为什么去噪能拟合多模态动作
想象你有 100 个专家示教:50 个从左绕,50 个从右绕。行为克隆会拟合成"两边同时伸出胳膊"的平均怪物;Diffusion Policy 则学一个「能量场」,能在左绕和右绕两个区域各挖一个沟。
推理时,模型从完全随机的"乱动作"开始,沿着能量场的梯度逐步调整 —— 有时会滑向左沟、有时会滑向右沟,取决于初始噪声和随机过程。这样多次采样就能产生多种有效轨迹。
训练时,模型只学一个任务:猜出「在这一步被加进去的噪声是多少」。把真实专家动作故意加噪(轻打乱、中打乱、完全乱),让模型习惯从各个"损坏程度"恢复。学好了消噪,就等于学好了整个多模态分布。相对比:
- 行为克隆:一次回归 obs → action,多模态会平均
- VAE/CVAE:依赖隐码向量 z,高维连续动作易变钝
- BET 或离散分类:动作维度上升后,bin 数量指数爆炸
- IBC:打分 + 搜索,推理时每个 action 要多轮优化
- Diffusion Policy:每层噪声都给梯度,多模态自然涌现
训练目标的直观解释
Diffusion Policy 把 DDPM(Denoising Diffusion Probabilistic Model)从图像生成改造到动作序列。训练目标很简洁:
真实动作 A₀ → 加高斯噪声 ε^k → 得到 A_t^k
模型学习:ε_θ(观测, A_t^k, 时间步k) ≈ ε^k
损失 = MSE(实际噪声, 预测噪声)
模型不直接预测「应该是什么动作」,而是预测「被加进去的污染是什么」。这个间接方式有两个好处:(1) 不需要像 EBM 那样计算归一化常数;(2) 在高噪声阶段,梯度很清晰,容易学;在低噪声阶段,模型学的是「动作的精细调整」。
Receding Horizon Control 为什么关键
Diffusion Policy 不是"一次生成整个 100 步完整轨迹",而是用 Receding Horizon 控制(RHC)的策略。典型配置:
- 观测窗(Observation Horizon) = 最近 2 帧
- 预测窗(Action Prediction Horizon) = 16 步动作
- 执行窗(Action Execution Horizon) = 只执行前 8 步,然后重新看图
为什么这样设计?一次生成 100 步容易「过度承诺」 —— 前 10 步正确,但后面因为没有新观测而漂移。RHC 让机器人频繁"回头看"、持续重规划。加上推理步数可控(10-16 步 DDIM),整个循环大约 0.1 秒左右。桌上物体滑动、夹爪磨损、微小干扰,都能在下一轮 RHC 里被修正。
关键设计选择
U-Net vs Transformer 架构
Diffusion Policy 论文提供了两个变体,各有取舍。
| 架构 | 特点 | 强项任务 | 弱项任务 | 选用建议 |
|---|---|---|---|---|
| U-Net CNN | 1D 卷积,FiLM 条件注入,oversmoothing 风险 | Push-T (95%), Transport-MH (89%), ToolHang-PH (95%) | ToolHang (50%), BlockPush p2 (94%) | 默认选择,快上手;需要平滑轨迹的任务 |
| Time-Series Transformer | 注意力层,灵活但敏感 | ToolHang-PH (100%), BlockPush p2 (94%) | Push-T (79%), Transport-MH (50%) | 高频动作、多模态切换;数据多、调参耐心足 |
真实机器人实验里,CNN 端到端推理的成功率高达 95%(Push-T),Transformer 则 65%。论文建议新任务先从 CNN 开始,再根据需要升级 Transformer。
推理步数与延迟的权衡
Diffusion Policy 的推理过程就是迭代去噪。理论上步数越多越稳定,但也越慢。
| 配置 | 用途 | 步数 | 延迟 (RTX 3080) | 何时选用 |
|---|---|---|---|---|
| DDPM(标准) | 仿真 | 100 | ~1s | benchmark 评测、离线训练验证 |
| DDIM | 实机加速 | 10-16 | ~0.1s | 真实机器人、闭环控制、10 Hz 左右 |
| Consistency Policy (衍生) | 极速推理 | 1-3 | 1-2 ms | 弱 GPU、高频控制、VLA 集成 |
DDIM 是原论文最常用的推理加速方案 —— 基于 Song et al. 的 DDIM 采样器,可以跳过中间的去噪步骤,同时保留多样性。实机配置常见是 100 train steps + 10 inference steps,达到约 0.1 秒实时性。
局限与后续改进
1. 延迟和算力消耗
即使 DDIM 10 步,也需要 0.1 秒以上。对于 200 Hz 高频控制(如手术、灵巧手操作),这还不够。解决方案:
- Consistency Policy(Prasad et al. 2024):把 DP 的老师模型蒸馏成能一步生成的学生,在 3070 Ti 上带来 9 倍加速(192ms → 21ms)
- Flow Matching:学一条更直的生成路径,天然支持少步采样,而且与 VLM token 架构结合更顺
- 模型量化和剪枝:边界探索中
2. 分布偏移和 OOD 泛化
标准 2D Diffusion Policy 通常在同分布场景强,但一旦出现训练未见的物体、场景或视角,性能快速衰退。例如 DP3(原论文作者扩展)的例子里:
- Pick & Place 训练场景:9/10 成功率
- 新物体、新视角、新场景:3/10、1/10、2/10 —— 成功率暴跌
根因是 2D RGB 图像的语义太浅。改进方案:
- DP3 / iDP3:增加点云观测和 3D egocentric 表示,OOD 时维持性能
- VLA 融合:加入 VLM 的语言/视觉先验,让语义层面理解任务(π₀、GR00T N1)
3. 语言推理能力缺失
原始 Diffusion Policy 是纯 visuomotor 策略,不理解「先放再推」这类多步任务规划。它用 action chunk + RHC 的短视野做局部闭环,无法处理需要全局规划的指令。
这也是后续 VLA 的主要贡献方向。π₀ 和 GR00T N1 把 VLM 的语言理解与连续动作生成分离,让模型既能理解「做什么」又能「怎么做」。
后续发展脉络
| 年份 / 工作 | 核心改进 | 针对问题 | 关键数字 |
|---|---|---|---|
| 2023-03 Diffusion Policy | DDPM/DDIM action chunk + CNN/Transformer | 多模态、连续高维动作 | 15 任务平均提升 46.9 pp;Real Push-T 95% success |
| 2023-10 DP3 | 稀疏点云观测 + 3D representation | 视角/物体泛化 | OOD 新物体 Pick 从 3/10 改到 9/10;40 demos 达 85% |
| 2024-05 Consistency Policy | DP teacher 蒸馏成一步/三步 student | 推理延迟 | T4 单步 1ms vs DDPM 110ms;3070 Ti 实机 21ms vs DDIM 192ms |
| 2024-10 iDP3 | camera-frame egocentric 3D,去掉标定/分割 | 移动/人形机器人 | Pick 54.0%(vs vanilla DP 22.6%);OOD Pick 9/10;15 Hz 板端 |
| 2024-10 π₀ | VLM + flow-matching action expert | 语言理解、任务规划 | 最高 50 Hz;10 integration steps;Robomimic + Real |
| 2025-03 GR00T N1 | VLA 双系统(VLM + flow-matching DiT) | 人形机器人、跨 embodiment、高频 | 仿真 45.0% vs DP 33.4%;真实 76.8% vs DP 46.4%;120Hz motor control |
与其他动作生成路线的对标
| 思路名 | 推理速度 | 多模态支持 | 学习曲线 | 推荐场景 |
|---|---|---|---|---|
| Flow Matching Policy | 高(常 1-10 steps) | 强 | 中(生态较新) | 低延迟、VLA 动作头、替代多步扩散 |
| Consistency Policy | 极高(1-3 steps) | 中高(可能窄化) | 中(需先有 DP) | 已有 DP 模型、要上弱 GPU、高频实机 |
| ACT (Action Chunking Transformer) | 高(单步) | 中 | 高(简洁易学) | 双臂遥操作、少量示教、精细装配 |
| Diffusion Policy (本身) | 中(10-100 steps) | 强 | 中(概念需理解) | 多模态行为、高维连续动作、imitation learning 基线 |
| BC + MLP | 极高(1 step) | 弱(平均化) | 极高 | 快速原型、少量演示、单模态任务 |
典型应用示例
场景 A:多模态示教(绕行、双臂协作)
适应性:高 · 这是 Diffusion Policy 的强项。左右绕行这类多路径任务,标准 BC 会失效,DP 因为模型学的是分布而非均值,能稳定支持。
场景 B:高频实时控制(200+ Hz)
适应性:低-中 · 标准 DP 的 10 步 DDIM 还不够快。建议用 Consistency Policy 或流式低层 MPC + high-level DP 混合。单步生成需要 flow 或 consistency 蒸馏。
场景 C:跨场景泛化(新物体、新视角)
适应性:中 · 2D DP 容易过拟合。升级方案:DP3/iDP3(加 3D 观测)或直接用 VLA(加语言先验)。
场景 D:少样本微调
适应性:中 · DP3 报告 10 演示(仿真)、40 演示(实机)可达不错性能。标准 DP 通常需要 100+ 演示。
场景 E:语言条件推理
适应性:低 · 原始 DP 是 visuomotor 不理解语言。需要升级到 VLA(π₀、GR00T 等)把语言理解和连续动作分开建模。
关键数字速查
| 项目 | 数值 | 来源 |
|---|---|---|
| 模拟任务(12 个 benchmark) | +46.9 pp 平均改进 | Diffusion Policy 论文 Sec. V |
| Real Push-T (CNN 端到端) | 95% success, IoU 0.80 | Diffusion Policy 论文 Table V |
| Real Mug Flip | 90% over 20 trials | Diffusion Policy 论文 Sec. VI-B |
| 推理延迟(DDIM 10 步,RTX 3080) | ~0.1 s | Diffusion Policy 论文 Sec. III-D |
| DP3 OOD Pick(新物体) | 9/10 vs DP 3/10 | DP3 论文 |
| iDP3 OOD Pick 成功率 | 54.0% vs DP 22.6% | iDP3 论文 Table 1 |
| Consistency Policy(单步,T4) | 1 ms vs DP 110 ms | Consistency Policy 论文 Table 1 |
| GR00T N1 vs DP(真实机器人) | 76.8% vs 46.4%(+30.4 pp) | GR00T 论文 Table 1 |