
079、Diffusion Policy扩散策略:从去噪到机器人动作生成上个月调一个机械臂插拔USB的活儿,动作轨迹用Behavior Cloning训出来的模型,成功率卡在63%死活上不去。换了几种数据增强,调了学习率,甚至把Transformer的层数加了一倍,结果还是那个鬼样子——插进去的那一下总是歪那么几毫米。后来翻到Diffusion Policy的论文,抱着死马当活马医的心态把动作头换成了扩散模型,三天后成功率直接跳到91%。今天就把这套东西从原理到代码给你掰扯清楚,尤其是那些论文里不会写、但你在实际部署时一定会踩的坑。先说清楚Diffusion Policy到底在解决什么问题。传统的行为克隆,本质上是学一个从观测到动作的映射,输入是当前的相机图像或者关节状态,输出是一个确定性的动作向量。但真实世界的机器人操作有个很烦人的特性——多模态性。同一个场景下,合法的动作可能有好几种,比如抓一个杯子,你可以从左边绕过去抓,也可以从右边绕过去抓,两种轨迹都合理。BC模型面对这种一对多的映射,只能学一个平均,结果就是动作被“糊”掉了,轨迹变得软绵绵,碰到障碍物或者精度要求高的任务就完蛋。扩散模型天生就是干这个的,它不学一个确定性的映射,而是学一个概率分布,每次采样都能从分布里抽出一个完整的、合理的动作轨迹。再往深一层说,Diffusion Policy的核心思想是把动作生成看成是一个去噪过程。训练的时候,你有一堆从人类演示或者遥操作采集到的动作序列,把这些序列逐步加上高斯噪声,直到变成纯随机噪声,然后让神经网络学会预测“在某个噪声水平下,怎么把带噪的动作还原成干净的动作”。推理的时候,你从一个纯随机噪声开始,让神经网络一步步去噪,迭代几十步之后