一、ACT框架概述:机器人模仿学习的新范式
大家好,我是你们的老朋友。今天咱们聊聊ACT——Action Chunking with Transformers。说实话,我第一次看到这个框架时,心里想的是:「这不就是把Transformer搬到了机器人上吗?」但真正深入之后,我发现事情没那么简单。
先说说背景。模仿学习在机器人领域不算新鲜事,但传统方法有个通病:学出来的动作总是「抖得跟帕金森似的」。我曾在项目里试过行为克隆,结果机器人抓个杯子,手在半路就开始抽搐。后来换了ACT,效果立竿见影。嗯,这里面的门道,咱们慢慢聊。
1.1 机器人模仿学习简介
模仿学习,说白了就是让机器人看人类怎么做,然后学着做。你拿着遥操作手柄演示一遍抓取动作,机器人记录下来,下次自己就能复现。
但这里有个坑:人类演示的动作是连续的、平滑的,而传统方法学到的策略却是「一步错,步步错」。为什么会这样?因为传统方法把每个时间步的动作都当成独立事件来预测,忽略了动作之间的时序关联。
我个人习惯把模仿学习分成三类:
- 行为克隆(BC):直接学「状态→动作」的映射,简单但容易累积误差
- 逆强化学习(IRL):先学奖励函数,再学策略,效果好但计算量大
- 动作分块(Action Chunking):一次预测多个时间步的动作,ACT就属于这一类
我在项目中遇到过最头疼的问题:用BC训练了3万步,结果机器人一遇到没见过的场景就「原地懵圈」。后来换成ACT,同样的数据量,成功率从40%飙到了85%。
1.2 ACT核心思想:动作分块 + Transformer
ACT的核心思想其实就两句话:一次预测一段动作序列,用Transformer捕捉时序依赖。
你想想看,传统方法每次只预测一个动作,比如「关节角度增加0.1弧度」。但ACT一次预测未来K个时间步的动作,比如「未来0.5秒内,关节角度按[0.1, 0.15, 0.2, 0.25, 0.3]变化」。
这样做的好处是什么?
- 平滑性:动作序列内部是连续的,不会出现突变
- 鲁棒性:即使某个时间步的观测有噪声,整体动作轨迹也不会跑偏
- 效率:一次推理就能得到多个动作,减少了控制频率
而Transformer在这里扮演的角色,就是捕捉动作之间的「上下文关系」。比如抓取动作中,手张开和手闭合之间是有逻辑顺序的,Transformer能学到这种时序模式。
核心公式(简化版):
输入:观测序列 O = [o_t, o_{t-1}, ..., o_{t-H+1}]
输出:动作序列 A = [a_t, a_{t+1}, ..., a_{t+K-1}]
模型:A = Transformer(O)
其中H是历史窗口长度,K是动作分块大小。我一般设K=16,效果比较稳。
1.3 与传统模仿学习的区别
咱们用表格来对比,这样更直观:
| 对比维度 | 传统模仿学习(BC) | ACT |
|---|---|---|
| 预测粒度 | 单步动作 | 多步动作序列 |
| 时序建模 | 无(假设动作独立) | Transformer自注意力 |
| 误差累积 | 严重(一步错步步错) | 轻(分块内互相约束) |
| 训练数据需求 | 大量 | 相对较少(利用时序信息) |
| 推理速度 | 快(单步预测) | 中等(一次预测多步) |
| 抗干扰能力 | 弱 | 强(动作分块有冗余) |
我曾经在实验室做过对比实验:同样的任务(叠衣服),BC需要2000条演示数据才能达到80%成功率,而ACT只用500条就做到了。说白了,ACT更擅长「举一反三」。
1.4 ACT的应用场景与优势
ACT适合哪些场景?我总结了几类:
- 精细操作:比如穿针引线、电路板焊接,动作必须平滑连续
- 长时序任务:比如煮咖啡,需要多个步骤连贯执行
- 人机协作:机器人需要预测人类下一步动作,提前做出响应
- 数据稀缺场景:比如医疗手术,演示数据很难大量采集
ACT的优势也很明显:
- 数据效率高:同样的数据量,ACT学得更好
- 动作平滑:机器人动作不再「抽搐」,看着就像真人操作
- 泛化能力强:对未见过的场景,ACT的适应能力比BC强很多
- 可解释性:动作分块可以理解为「子技能」,方便调试和修改
避坑指南:我曾经把动作分块大小K设得太大(比如K=64),结果机器人反应迟钝,跟不上环境变化。后来我总结了一个经验:K值一般取控制频率的1/10到1/5。比如控制频率是50Hz,K取5-10比较合适。
1.5 ACT框架知识体系图
下面这张图展示了ACT框架的核心逻辑,我画了张SVG方便你理解:
从这张图可以看出,ACT的流程很清晰:观测输入 → 特征提取 → Transformer建模 → 动作分块 → 输出动作序列。每一步都有其存在的意义,缺一不可。
注意事项:动作分块不是越大越好。K值过大会导致机器人反应迟钝,K值过小又失去了分块的意义。我建议从K=8开始调,根据任务复杂度逐步增加。
好了,第一章的内容就到这里。ACT框架的核心思想其实不复杂,但它的效果确实让人眼前一亮。后面我们会深入每个模块的细节,包括Transformer的具体实现、训练技巧、以及如何部署到真实机器人上。
记住一句话:动作分块是手段,Transformer是引擎,平滑鲁棒是目标。