← 返回文章目录

论文笔记 · 2026/07/16

Diffusion Policy

Diffusion Policy: Visuomotor Policy Learning via Action Diffusion

https://arxiv.org/abs/2303.04137

Diffusion Policy 是一种以当前观测为条件、从噪声中生成未来动作块,并通过滚动时域闭环执行的策略

传统行为直接回归动作:Ot→atO_t\rightarrow a_t

Diffusion Policy 则学习条件动作分布:p(At∣Ot)p(A_t\mid O_t),其中 AtA_t 是一整段未来动作。

推理时从随机动作噪声出发,在当前观测 OtO_t 的约束下反复去噪,生成连贯动作序列

解决了同一观测可能对应多个合理动作,直接回归容易输出无效的“平均动作”

图片说明

图片说明

训练

数据提供:(Ot,At0)(O_t,A_t^0)

其中 At0A_t^0 是专家的干净动作序列。随机选择扩散步 k,加入高斯噪声:Atk=αˉkAt0+1−αˉkϵA_t^k = \sqrt{\bar\alpha_k}A_t^0+\sqrt{1-\bar\alpha_k}\epsilon

训练网络预测噪声:ϵ^=ϵθ(Ot,Atk,k)\hat\epsilon = \epsilon_\theta(O_t,A_t^k,k)

损失为:L=∣ϵ−ϵθ(Ot,Atk,k)∣2\mathcal L = |\epsilon-\epsilon_\theta(O_t,A_t^k,k)|^2

模型由此学会在观测 OtO_t 下,当前带噪动作序列应该如何被修正。

推理

先初始化纯噪声动作序列:AtK∼N(0,I)A_t^K\sim\mathcal N(0,I)

再多次调用同一个去噪网络:AtK→AtK−1→⋯→At0A_t^K \rightarrow A_t^{K-1} \rightarrow\cdots \rightarrow A_t^0

最终得到未来 TpT_p 步动作,机器人只执行前 TaT_a 步,然后重新观察并生成新的动作序列

去噪网络

CNN-based

将动作序列视为多通道时间信号,用一维时间卷积处理;观测 OtO_t 和扩散步 k 通过 FiLM 注入各卷积层:

x′=γ(Ot,k)⊙x+β(Ot,k)x'=\gamma(O_t,k)\odot x+\beta(O_t,k)

特点:稳定、适合平滑连续动作,但可能过度平滑快速变化的控制信号。

Transformer-based

将每个未来动作视为一个 token:

  • causal self-attention:建模动作之间的时间依赖;
  • cross-attention:让动作 token 查询观测特征;
  • k embedding:表示当前噪声等级。

特点:更适合复杂时序和快速动作变化,但训练更敏感。两者只是噪声预测网络 ϵθ\epsilon_\theta 的不同实现,扩散过程本身相同。

为什么合理

不同初始噪声可生成不同合理行为,而非平均行为