第二章:ACT算法基础

各位同学好,我是老张。今天咱们来聊聊ACT算法——这个在机器人操作领域越来越火的技术。说实话,我第一次接触ACT的时候,也被它那套「动作分块」的思路惊艳到了。

2.1 ACT算法原理

ACT,全称是Action Chunking with Transformers。名字挺长,但核心思想其实很简单:把连续的动作序列切成小块,然后用Transformer来预测这些块

为什么要这么做?你想想看,传统的机器人控制是一步一步来的——观测当前状态,输出一个动作,执行,再观测。这样做的缺点是,每一步都只看到眼前,容易陷入局部最优。而ACT的做法是:一次看一段时间的窗口,预测未来一段时间的动作序列。

核心公式(简化版):

输入:观测序列 O = [o_t, o_{t-1}, ..., o_{t-k}]
输出:动作块 A = [a_t, a_{t+1}, ..., a_{t+H-1}]
其中 H 是动作块的长度(chunk size)

我在项目中遇到过一个问题:chunk size设得太小(比如2步),模型几乎退化成逐帧预测,抖动很厉害;设得太大(比如100步),模型又学不会长程依赖,动作变得很「飘」。后来我总结出一个经验:chunk size通常取16-32之间比较稳妥,具体要看你的任务周期。

2.2 模仿学习与行为克隆

ACT的训练方式,说白了就是行为克隆(Behavior Cloning)。什么意思呢?就是让机器人看人类演示,然后学着做。

嗯,这里要注意一个关键点:行为克隆不是简单的「输入-输出」映射。它其实是在学习一个条件概率分布:

π(a_t | o_t) —— 给定当前观测,输出动作的概率

但ACT更进一步,它学的是:

π(A_t | O_t) —— 给定一段观测,输出一段动作块的概率

这个区别很微妙,但效果差别巨大。我记得有一次做桌面抓取任务,用逐帧的行为克隆,机器人总是抓不准——因为它每次只看到当前帧,不知道物体运动的趋势。换成ACT之后,机器人能「预判」物体的运动轨迹,成功率从65%直接飙到了92%。

避坑指南:我曾经犯过一个错误——把演示数据直接喂给模型,不做任何预处理。结果模型学了一堆噪声。后来我加了两个预处理步骤:

  • 动作平滑:用滑动窗口平均去除高频抖动
  • 时间对齐:确保所有演示序列的时间步长一致

这两个小改动,让训练收敛速度快了将近一倍。

2.3 ACT与Diffusion Policy的关系

说到ACT,就不得不提Diffusion Policy。这两个算法是什么关系?我个人的理解是:ACT是骨架,Diffusion Policy是血肉

具体来说:

对比维度 ACT Diffusion Policy
输出方式 直接预测动作块 通过去噪过程生成动作块
多样性 单一输出 可以生成多种可行方案
训练稳定性 较稳定 需要调参
适用场景 确定性任务 需要多模态输出的任务

说白了,ACT更适合那些「只有一种正确做法」的任务,比如拧螺丝、插拔接头。而Diffusion Policy适合「有多种可行方案」的任务,比如抓取——你可以从左边抓,也可以从右边抓,只要抓到就行。

我最近在做一个项目,把两者结合起来:先用ACT做粗粒度规划,再用Diffusion Policy做细粒度优化。效果还不错,后面有机会再跟大家细聊。

2.4 算法输入输出

ACT的输入输出,其实比你想的要灵活。我画了一张图,帮你理清思路:

输入 观测序列 O 图像/关节角/力传感器 时间窗口: k 步 Transformer 编码器-解码器 自注意力机制 位置编码 因果掩码 输出 动作块 A 关节位置/末端位姿 块长度: H 步 ACT算法输入输出流程 输入细节: • 图像输入:通常为 224x224 RGB 图像,经过 ResNet 提取特征 • 状态输入:6/7维关节角度 + 6维末端位姿 + 夹爪开合度 • 时间窗口 k:我一般取 2-4 步,太长反而引入噪声 输出细节: • 动作块 H:推荐 16-32 步,对应约 0.5-1 秒的控制周期

输入方面,我习惯把视觉信息和状态信息分开处理。视觉信息用CNN提取特征,状态信息直接拼接。这样做的原因是:视觉特征和状态特征的维度差异太大,混在一起训练容易出问题。

重要提醒:输入的时间窗口k和输出的动作块长度H,这两个参数是强相关的。我见过有人把k设成1,H设成64,结果模型完全学不会——因为输入信息太少,根本不足以预测那么远的未来。我的经验是:k和H的比例保持在1:8到1:16之间比较合理。

输出方面,ACT输出的是绝对动作还是相对动作?这个问题我纠结了很久。后来发现,对于抓取这类任务,用相对动作(即每一步相对于上一步的增量)效果更好,因为模型不需要记住绝对位置,只需要学会「往哪个方向动」就行。

好了,ACT的基础就讲到这里。记住一句话:ACT的核心是「看一段,做一段」,而不是「看一步,做一步」。这个思路的转变,让机器人操作上了一个大台阶。


专注资料整理