📄 论文信息

Diffusion Policy框架:CNN和Transformer两种backbone的扩散策略架构

  • 标题Diffusion Policy: Visuomotor Policy Learning via Action Diffusion(基于动作扩散的视觉运动策略学习)
  • 团队:MIT(Cheng Chi, Shuran Song, Russ Tedrake 等)& Toyota Research Institute
  • 发表:RSS 2023(Oral),扩展版 arXiv:2303.04137 v5
  • 关键词:扩散模型、动作生成、视觉运动策略、多模态动作分布、CNN / Transformer 双架构
  • 一句话总结:把机器人动作生成重新定义为条件去噪过程,让策略网络学会从噪声中逐步雕琢出动作序列,天然支持多模态分布高维动作空间,是后续 VLA 模型动作头设计的奠基之作。

🤔 要解决什么问题?机器人策略学习的三个死穴

传统机器人策略学习(Behavior Cloning)的核心问题是:给定当前观测(图像 + 本体状态),输出一个动作。这个范式在大多数 benchmark 上跑了好多年,但有三个被长期容忍的致命缺陷。

问题表现根源
多模态动作分布同一场景有多个合理动作(如:向左绕 / 向右绕),L2 回归会取平均,输出"撞中间"的动作确定性回归只能拟合一个点
高维动作空间双机械臂 + 灵巧手,动作维度动辄几十维,协方差结构复杂高斯/混合高斯假设太弱
训练不稳定动作序列前后关联,单步回归导致累计漂移、抖动缺乏时序建模,误差累积

Diffusion Policy 的核心判断:与其用回归硬挤"平均答案",不如把策略视为一个条件生成模型,直接建模动作分布的 score function(得分函数),再通过 Langevin 采样生成动作。


💡 核心思想:条件去噪生动作

扩散模型做策略的直觉

标准 DDPM 有两个过程:

  • 前向加噪:从真实动作 $A_0$ 逐步加高斯噪声,T 步后完全变成 $\mathcal{N}(0, I)$
  • 反向去噪:训练网络 $\epsilon_\theta$ 预测每一步添加的噪声,逆过程恢复动作

前向过程的数学描述如下。给定真实动作序列 $A_0 \in \mathbb{R}^{T \times D_a}$($T$为动作序列长度,$D_a$为动作维度),前向加噪过程是一个马尔可夫链:

$$q(A_t | A_{t-1}) = \mathcal{N}(A_t; \sqrt{1-\beta_t} A_{t-1}, \beta_t I)$$$$q(A_t | A_0) = \mathcal{N}(A_t; \sqrt{\bar{\alpha}_t} A_0, (1-\bar{\alpha}_t) I)$$

其中 $\alpha_t = 1-\beta_t$,$\bar{\alpha}t = \prod{s=1}^t \alpha_s$。关键性质是:给定 $A_0$,可以直接得到任意时间步 $t$ 的 $A_t$,无需逐步迭代:

$$A_t = \sqrt{\bar{\alpha}_t} A_0 + \sqrt{1-\bar{\alpha}_t} \epsilon, \quad \epsilon \sim \mathcal{N}(0, I)$$

反向去噪过程则训练神经网络 $\epsilon_\theta$ 预测噪声。给定条件 $\mathbf{c}$(视觉观测 $O_t$ 与机器人状态 $s_t$ 的联合编码),训练目标是最小化:

$$\mathcal{L} = \mathbb{E}_{A_0, t, \epsilon}\left[ \| \epsilon - \epsilon_\theta(A_t, t, \mathbf{c}) \|^2 \right]$$

其中 $t \sim \text{Uniform}(1, T)$,$\epsilon \sim \mathcal{N}(0, I)$。推理(采样)时从纯噪声 $A_T \sim \mathcal{N}(0, I)$ 开始,按反向过程逐步去噪:

$$A_{t-1} = \frac{1}{\sqrt{\alpha_t}} \left( A_t - \frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}} \epsilon_\theta(A_t, t, \mathbf{c}) \right) + \sigma_t z, \quad z \sim \mathcal{N}(0, I)$$

其中 $z$ 在 $t=1$ 时为 $0$。条件 $\mathbf{c}$ 通过 条件扩散 的方式注入网络,使去噪过程在每一步都能"看到"当前场景,从而生成当下最合理的动作。

训练与推理算法伪代码

训练过程:在每个训练迭代中,采样一个batch的(观测, 动作)对$(O, A_0)$,随机选择时间步$t$,从标准正态分布采样噪声$\epsilon$,计算加噪后的动作$A_t$,然后优化网络预测的噪声与真实噪声之间的MSE。伪代码如下:

feonrde(tεAcLθfaO_oc,t==rhAUN=Eθi_n(n|t0i0cε-e)f,αorōd-ηarI_etm)trε·i((_o1·Oθn,)(_AAθdT__o)0tL,b+att,c(h1c-)α|̄|_²t)·ε

推理(采样)过程:在推理时,从纯高斯噪声出发,使用训练好的噪声预测网络$\epsilon_\theta$逐步去噪。每一步去除预测的噪声分量,并添加随机项以保证多样性。

Acfe_onT=rdAEtzεAf_n__o0Nc=p{r(ort0dTNe-,e(d1rt0}KI(o,=)O=_1Iεc)_1udθ/roi(rfAαe__ntttt,)>·t1,(Aec_l)tse-z(1=-α0_t)/(1-ᾱ_t)·ε_pred)+σ_t·z

值得注意的是,Diffusion Policy在推理时可以使用更快的采样器(如DDIM)将步数从100降至10甚至5步,而性能几乎不受影响。这是因为DDIM将反向过程建模为确定性ODE的离散化,允许用大步长直接跳跃到$t=0$。

为什么扩散适合机器人策略?

扩散模型的特性对策略学习的意义
隐式建模多模态Langevin 采样天然生成多条动作,无 mode averaging
高维协方差动作各维度联合建模,不假设独立或高斯
训练稳定去噪目标 vs 回归目标,loss landscape 更平滑,收敛更快
时序一致性全序列联合生成,不逐帧回归,避免累计误差

原论文第 5 节有一个非常生动的实验:在2D 点到达任务中,目标在 L 形障碍物后方。确定性回归学会了一个"平均路径"——穿墙。而扩散策略学会了左侧绕和右侧绕两条路径,完美避开障碍物


🏗️ 模型架构:CNN 与 Transformer 两条路线

Diffusion Policy 提供了两种架构实现,覆盖不同场景需求。

数据流总览

多视角图像视觉编码器(ResNet)➜ 特征 $\mathbf{c}$扩散去噪网络(CNN / Transformer)➜ 动作序列分布

视觉条件编码

所有图像输入共享一个 CNN Backbone(ResNet-18/34)提取特征,再通过 FiLM(Feature-wise Linear Modulation) 注入去噪网络。FiLM 的做法是对扩散网络中间层的特征做仿射变换

$$ \text{FiLM}(h) = \gamma(\mathbf{c}) \cdot h + \beta(\mathbf{c}) $$

其中 $\gamma, \beta$ 由视觉特征 $\mathbf{c}$ 通过 MLP 预测。这种方式比简单拼接更灵活,能让视觉条件在每个去噪步调整网络的计算路径

CNN 版本:高效直观

适用于固定时间窗口的动作预测,计算量小,适合 50Hz 实时控制。

1D沿FiLM1D

每个去噪步输入的 $A_t$ 是一个 $T \times D_a$ 的"图像"($\text{宽}=\text{时间步},\ \text{高}=\text{动作维}$),用 1D 卷积沿时间轴建模动作时序。

Transformer 版本:灵活强大

适用于变长、多维交互复杂场景,使用 Time-Series Diffusion Transformer

组件说明
噪声动作编码将 $A_t$ 分时间步做 MLP 编码 + 位置编码
时间步编码用 sinusoidal embedding 编码 $t$,与动作 token 相加
交叉注意力每个动作 token 通过 cross-attention 读取视觉特征 $\mathbf{c}$
自注意力动作 token 之间做 causal / 全自注意力,建模时序因果
输出预测每个时间步的噪声,构成与输入同尺寸的 $\epsilon_\theta$

Transformer 版本的优势:可以灵活处理不同长度动作序列,注意力机制能捕捉远程依赖(如"先抓取再提起"的跨步约束)。


🔑 三大关键设计

1. 滚动时域控制(Receding Horizon Control)

这是 Diffusion Policy 从理论走向工程最关键的一笔。

问题:扩散生成固定长度 $T$ 的动作序列,但执行过程中观测不断更新,不能等整段动作算完才行动。

解法:采用 Receding Horizon(衰减地平线) 策略:

  1. 在时刻 $t$,基于观测 $O_t$ 生成未来 $T$ 步的动作序列 $[a_t, a_{t+1}, …, a_{t+T-1}]$
  2. 只执行前 $K$ 步(通常 $K < T$)
  3. 丢弃后 $T-K$ 步
  4. 在时刻 $t+K$,用新观测重新生成
设计效果
$K < T$ 的滚动策略可在动作执行过程中根据反馈修正轨迹
多步联合生成比起逐帧回归,避免抖动和累积漂移
丢弃后半段防止过期动作被执行,增加鲁棒性

一个重要发现:开环执行完整序列 vs 滚动执行前 $K$ 步,滚动版本的闭环成功率显著更高(尤其在有干扰的物理实验中)。

2. 视觉条件注入

视觉观测通过 FiLM 注入扩散网络,使去噪过程"看场景办事"。实验显示,移除视觉条件后成功率断崖式下降,证明条件注入是策略学习的必要环节。

值得注意的设计细节:FiLM 的 $\gamma, \beta$ 参数随去噪时间步 $t$ 变化——在早期去噪步(噪声大),视觉条件的影响较大(“告诉我该往哪个方向”);在后期去噪步(噪声小),视觉条件的影响衰减(“只需要精细调整即可”)。这种 t-dependent conditioning 是保证生成质量的重要工程技巧。

3. Time-Series Diffusion Transformer

Transformer 版本不只能处理变长序列,还具备一个隐藏优势:学习到的注意力权重揭示了动作之间的时序依赖。论文展示了注意力图:在"捏取"任务中,最后几个时间步的动作对早期动作的注意力极强(“我的位置取决于你如何抓住物体”),这解释了为什么逐帧回归处理不了这种长程关联。


🧪 实验表现:12 个任务,4 个 benchmark

实验设定

Benchmark任务数量任务类型
Franka Kitchen7厨房操作(开微波炉、开灯、拉抽屉等)
Robomimic3桌面粉笔任务、运输、堆叠
Block Push1推方块到目标(2D 模拟)
Adroit1灵巧手旋转笔

核心结果

  • 平均提升 46.9%:在 12 个任务上相比 IBC、LSTM-GMM、**BeT(Behavior Transformer)**等 SOTA 方法,Diffusion Policy 在任务成功率上实现了大幅领先
  • 唯一在所有 benchmark 上都有效的方法:其他方法在某个/某些任务上会崩溃(如 IBC 在高维 Adroit 上几乎无效),而 Diffusion Policy 在所有任务上都表现稳定

主要 ablation 发现

Ablation结论
去掉滚动时域(开环)成功率平均下降 15-20%,有碰撞/干扰时更明显
去掉 FiLM(拼接/加和替代)略有下降,但 FiLM 在高维任务上优势更明显
减少去噪步数从 100 步降到 10 步,性能损失很小(学成了"去噪捷径")
CNN vs TransformerCNN 在简单任务持平,复杂任务(灵巧手)Transformer 更优

🔬 深入理解:扩散策略为什么训练更稳定?

论文对比了 IBC(Implicit Behavior Cloning) 和 Diffusion Policy 的训练曲线。IBC 采用 EBM 训练,其对比损失需要采样负样本,训练过程波动大、容易发散。而扩散策略的 MSE 去噪损失梯度平滑且可预测,收敛更快且更稳定。

维度IBC(隐式)Diffusion Policy(显式生成)
训练目标对比损失(能量差)MSE 去噪损失
负样本必需(采样质量影响大)不需要(加噪自动生成)
梯度稳定性差,易发散好,收敛快
高维扩展极差(能量估计困难)(噪声预测天然可扩展)
多模态建模支持(能量分布天然多峰)支持(采样多样性)

这解释了为什么 IBC 在 Adroit(灵巧手,高维动作)上几乎无效,而 Diffusion Policy 轻松应对。


⚡ 推理与加速:从 100 步到几步

扩散模型"慢"的名声是它落地最大的障碍。论文做了系统的加速分析:

  1. DDIM 采样:确定性采样允许用更少步数,从 100 步降到 10 步,性能几乎不变
  2. 步数 vs 质量 trade-off:在模拟器上,10 步采样已经足够好;在真实机器人上,甚至可以用 5 步 达到接近最优性能
  3. 编辑距离视角:早期去噪步决定动作的"大方向",后期只做精细微调——可以提前截断

加速后的延迟对比(基于一块 RTX 3090,单次生成):

配置延迟
100 步 DDPM~300ms
10 步 DDIM~30ms
5 步 DDIM~15ms

15ms 已经完全可以满足 10Hz+ 的实时控制需求。


🆚 与后续 VLA 模型动作头及扩散规划工作的关联

Diffusion Policy 是视觉-语言-动作(VLA)模型动作头设计最重要的灵感来源之一:

后续模型动作头设计受 Diffusion Policy 启发
RT-2tokenized action(离散)通用化,但丢失了连续动作精度
π0 (pi-zero)Flow Matching 动作头沿用"生成式"范式的直接继承者
Octo扩散动作头直接复用
OpenVLA离散 token补充路线
Diffusion-Planning扩散轨迹优化将扩散从"策略"扩展到"规划器"

π0 的工作可以看作是 “Diffusion Policy + Flow Matching + 语言条件” 的组合:把去噪换成了速度场预测(Flow Matching),保留多模态生成和时序联合建模,但采样速度更快、训练更稳定。而 Octo 则几乎直接沿用了 Diffusion Policy 的 CNN 扩散头,证明其设计在当时的鲁棒与成熟。

Diffusion Policy与Diffusion-Planning的关系

Diffusion-Planning(Janner et al., 2022)是Diffusion Policy之前的一篇重要工作,两者虽然都使用扩散模型做决策,但在范式和目标上存在本质差异:

维度Diffusion-PlanningDiffusion Policy
时间线NeurIPS 2022RSS 2023
核心范式将轨迹规划视为扩散生成将策略学习视为条件扩散
训练数据专家轨迹(离线RL)专家演示(BC)
条件信号目标状态/奖励函数视觉观测 + 机器人状态
是否交互规划+执行(开环规划)闭环策略(滚动执行)
动作分布建模隐式(扩散轨迹)显式(条件动作分布)
与BC的关系规划器(非策略)策略(直接行为克隆)

两者分别代表了扩散模型在机器人中的两条技术路线:扩散规划器(用扩散生成完整轨迹,再通过控制器跟踪)和扩散策略(用扩散直接生成策略的动作输出)。Diffusion-Planning更接近Model-based RL的范式(需要环境模型或奖励函数),而Diffusion Policy则是Behavior Cloning的扩展(直接从专家演示中学习条件动作分布)。后续工作中,两条路线出现了融合趋势——例如Uni-World VLA和CoWorld-VLA将扩散规划器的"世界模型预测"与扩散策略的"条件生成"结合,在自动驾驶场景中同时预测未来场景和规划自车轨迹。

后续扩散策略工作的技术演进

Diffusion Policy发表后,其设计范式在多个方向上被继承和发展:

扩散策略的即时改进方向

  • EquiDiff(2023):将等变扩散引入策略学习,保证策略输出关于观测的对称性,在对称操作任务中提升数据效率
  • GenAug(2023):利用扩散模型的数据增强能力为策略生成更多训练数据,将策略成功率提升20%+
  • Chained-Diffuser(2024):将长时域任务分解为子任务链,每个子任务使用一个Diffusion Policy,实现了长时域任务规划

生成式模型替代方向

  • π0 (pi-zero)(2024):使用Flow Matching替代DDPM,在保持多模态生成能力的同时实现更快的采样
  • GR-1(2024):将Causal Transformer与扩散头结合,统一了视频预测和动作生成
  • 3D Diffusion Policy(2024):将扩散策略扩展到3D空间,使用点云作为观测输入

Diffusion Policy的核心贡献可以总结为:它证明了生成式模型不仅仅是内容生成工具,更是策略学习的有效框架,开启了"生成式策略"这一研究范式。


⚠️ 局限性

  • 推理步数仍非单次:加速后 5-10 步仍比一步回归多几个数量级的计算,对极高频(100Hz+)控制不够友好
  • 动作边界难保证:去噪只能"接近"训练数据分布,无法像二次规划那样精确限制关节角度/力矩安全范围
  • 长序列效率:序列长度 $T$ 增长时,Transformer 注意力 $O(T^2)$ 成为瓶颈
  • $K$ 的超参敏感:滚动时域的 $K$ 值需要调参,太短失去时序联合意义,太长延迟增加且鲁棒性下降
  • 开源代码依赖特定版本:论文代码基于官方 Diffusion 库(IDDPM 等),与最新的扩散加速库集成不够紧密

📝 个人思考

Diffusion Policy 对我来说最大的意义不在于它性能好多少(46.9% 的涨幅确实惊人),而在于它重新定义了"机器人策略可以是什么"

在此之前的策略主流是这样三条路:确定性回归(简单暴力但只给一个答案)、GMM(分布建模但表达能力受限)、EBM/IBC(灵活但训练要命)。Diffusion Policy 做的选择是:那我不如就用一个经过图像生成社区充分验证的生成模型来做动作生成——既然扩散能在图像这种高维空间里建模复杂分布,凭什么不能做动作?

这个选择的巧妙在于,它尊重了一个事实:动作分布和图像分布虽然有区别,但"从噪声到数据"的降维逻辑是相通的,而扩散模型的 score matching 训练范式天然规避了 EBMs 的负采样噩梦。所以它既拿到了 EBMs 的多模态灵活性,又保持了回归式训练的稳定性——“既要又要还要"在深度学习里很少见,但它做到了。

第二点是滚动时域控制这个"小设计"的价值。从算法角度来看它很简单:生成一段、只执行开头、再生成一段。但从系统角度来看,它把扩散这种"离线生成"的范式变成了一个闭环在线系统。往后看 VLA 模型其实也面临同样的问题——你生成了 8 秒的动作序列,执行到一半观测变了怎么办?Diffusion Policy 用这么一个简单机制就解决了,让我再次感叹:工程落地里的瓶颈往往不是更复杂的算法,而是正确的系统设计

最后,Diffusion Policy 的历史坐标值得认真对待。在它之前,扩散模型攻陷了图像(DDPM,Stable Diffusion)、音频(AudioLDM),甚至在科学计算(蛋白结构生成)上有所建树。Diffusion Policy 把这些胜利延伸到了机器人领域,打通了”生成式模型 → 策略学习“这条路。后续 VLA 模型(π0、Octo、OpenVLA)的爆发,追根溯源都能在这篇工作里找到影子。动作头不再是 MLP 或离散 tokenizer,而是 扩散 / Flow Matching 去噪过程——这个由 Diffusion Policy 开创的范式,正在成为机器人基础模型的标配。


📖 这是论文精读系列的第 38 篇。扩散模型正在从"生成图像"走向"生成动作”,你怎么看生成式策略的未来?欢迎留言。