Diffusion Policy:把「动作」当成「图片」去生成
🧠 一句话心智模型:别再让神经网络「直接回归」一个动作——而是让它像 diffusion 模型画图那样,从一团随机噪声开始,一步步把噪声「擦」成一条合理的动作序列。这一改,三个老大难问题(动作的多模态、序列一致性、训练稳定性)一起解决了。
🎯 为什么重要:动作预测其实是个「假回归」问题
模仿学习最朴素的写法,是把「看图→出动作」当成一个回归:网络看一帧图像,回归出一个动作向量。听起来天经地义,但在机器人上会崩。为什么?
核心矛盾:面对同一个观察,「正确动作」不是唯一的——可能向左抓,也可能向右抓,甚至原地等一下。这是一个多模态分布,但 L2 回归会把它们平均成一个「四不像」(比如「往中间抓」,结果两边都抓空)。
下图就是论文里那张经典分类(Fig.1)。问题不在「网络不够大」,而在「用什么形式表示动作」:
图 1:动作表示的三条路。Diffusion Policy 选了第三条——用生成模型的范式来表示动作分布。
💡 核心思想:把动作空间当成图像空间来「去噪」
Diffusion 模型画图的原理是:一张干净图 = 一步步去掉噪声。Diffusion Policy 把「未来一段动作序列」当成那张「图」:
图 2:Diffusion Policy 推理——给定观察 $O_t$,从高斯噪声出发,做 K 步条件去噪,得到一条未来动作序列(不是单步动作)。
关键在于网络学的不是动作本身,而是「动作分布的梯度(score)」——即「往哪个方向调整,能让动作更像人类演示」。这让模型能表达任意形状的分布(包括多峰),而无需预先指定有几个峰。
🛠️ 三个让它在机器人上真跑通的关键设计
把 diffusion 搬到机器人,直接套图像生成的代码会崩。论文给了三个工程关键:
| 设计 | 心智 | 为什么必要 |
|---|---|---|
| ① 预测序列 + Receding Horizon | 一次预测未来 T_p 步动作,但只执行前 T_a 步,然后重新预测(像 MPC 滚动) | 预测长序列保证时序一致(不抖动),只执行短序列 + 重预测保证闭环纠错(不至于一条错路走到底) |
| ② 视觉条件 | 把当前图像作为「条件」注入去噪网络,而不是简单拼接到输入 | 避免每步去噪都重算视觉特征(省算力),且让视觉信息稳定引导整条轨迹 |
| ③ 时序 Transformer / CNN | 两种骨干:Transformer(全局注意,精度高)或 1D-CNN(轻、快) | 动作是时间序列,需要专门的时序建模;Transformer 版更准,CNN 版更易部署 |
🔮 直觉:为什么「预测序列 + 只执行前几步」是点睛之笔?
预测单步动作 → 容易贪心地越走越偏(myopic)。预测整段未来 → 模型对「这一步会怎么影响后面」有全局观。但若整段都执行 → 一旦开头错,全错。所以「预测长、执行短、循环重预测」= 兼顾全局规划与闭环纠错。这其实就是控制论里的 Receding Horizon Control / MPC(论文 §2.3 把它作为关键设计之一引入,§4.5 进一步讨论了与 LQR 等控制论经典结果的联系)。
预测单步动作 → 容易贪心地越走越偏(myopic)。预测整段未来 → 模型对「这一步会怎么影响后面」有全局观。但若整段都执行 → 一旦开头错,全错。所以「预测长、执行短、循环重预测」= 兼顾全局规划与闭环纠错。这其实就是控制论里的 Receding Horizon Control / MPC(论文 §2.3 把它作为关键设计之一引入,§4.5 进一步讨论了与 LQR 等控制论经典结果的联系)。
📊 结果:平均 +46.9%,且真能上真机
| 维度 | 数字 |
|---|---|
| 任务覆盖 | 4 个 benchmark 的 15 个任务(仿真:Robomimic / Push-T / Multimodal Block Push / Franka Kitchen;真机:Push-T、Mug Flip、6DoF Pour/Spread、双臂) |
| 平均提升 | +46.9%(相对此前 SOTA) |
| 多模态任务 | 在「多解」任务上提升最显著(正是回归方法的死穴) |
| 真机 | 双臂任务(打蛋器 Egg Beater、铺垫子 Mat Unrolling、叠衣服 Shirt Folding)跑通 |
关键洞察:Diffusion Policy 不是「在某一个任务上赢了」,而是在 15 个差异很大的任务上一致地赢。这说明赢的不是某个 trick,而是「用扩散表示动作分布」这个范式选择本身。
🌐 在领域中的位置
行为克隆 BC(回归)→
ACT / transformer-BC(序列建模但仍回归)→
Diffusion Policy(动作扩散)⭐→
π0 / VLA 的 diffusion action head(扩散头进 VLA)
Diffusion Policy 是动作生成「扩散化」的分水岭。它之后,「用生成模型(diffusion / flow matching)做动作头」成了 VLA 的主流选择(π0、RDT-1B 等都继承了这一点)。关联线索:T05 扩散策略谱系。
❓ 常见误区
Diffusion Policy 是强化学习吗?
不是。它是模仿学习(行为克隆)——从人类演示学,不需要 reward、不需要试错。它只是把「回归动作」换成了「扩散生成动作」。
去噪步数 K 不会让推理很慢吗?
是它的主要代价。典型 K≈10 步(DDIM 加速),加上只执行 T_a 步就要重预测,实时性比回归方法差。后续工作(如 π0 的 flow matching、一致性模型)正是为提速而生。
它和「扩散模型生成图像」本质一样吗?
数学一样(都是去噪 score learning),但「画布」不同:图像是 2D 像素,这里是 1D 动作序列 + 视觉条件。所以论文的两个工程贡献(时序网络、视觉条件注入)是机器人特有的。