点击下方卡片,关注【Xbotics具身智能实验室】公众号
你想要的这里都有~~
前两课我们聊了两件事:第一课,搞懂了VLA是什么——机器人不光要看见、听懂,还得看着画面直接生成动作。第二课,拆开了数据这回事——机器人训练用的不是普通视频,而是一帧帧对齐好的“看到什么,就该做什么”的配对数据。
到了第3课,数据已经备好,该让机器人真正开始学习了。
从这一课开始,机器人不再是被人遥控的提线木偶,它要学着:看到当前画面,自己预测下一步该怎么动。
这节课的主角叫ACT。
全称Action Chunking with Transformers,翻译过来就是“用Transformer一次预测一小段动作”。它不是最大最强的模型,但它特别适合帮你理解一件核心事情:机器人的操作策略,到底是怎么从数据里学出来的。

一、最直接的想法,为什么行不通?
还记得第2课说的吗?模仿学习的数据,本质上就是一堆“看到什么→该做什么”的配对。
那最直接的想法来了:训练一个模型,输入当前看到的画面,输出当前该做的动作。这叫行为克隆,听起来特别合理。专家在这一帧怎么动的,模型就学着怎么动;专家下一帧又怎么动,模型继续学。数据够多,是不是就能像专家一样完成任务?
很遗憾,机器人没这么简单。

因为机器人不是在考卷上答题,而是在真实环境里一步步行动。图像分类模型认错一张猫狗图片,不会影响下一张图片长什么样。但机器人动作只要错一步,下一帧世界就真的变了。
举个例子:机械臂本来该向左偏一点去靠近工件,模型却向右多动了一点。这个偏差看着很小,但下一帧相机里,夹爪的位置已经和专家示范的不一样了。模型接下来看到的是一个它从没见过的陌生状态,在这个陌生状态下继续预测动作,更容易出错。新的错误又导致下一帧偏得更厉害。一层层滚下去,小偏差就变成大翻车。
这就是行为克隆的第一个致命问题:误差累积。
很多同学第一次训练机器人模型都会遇到同样的怪事:训练曲线很漂亮,回放看着也像学会了,但一到真机推理,机器人就开始抖、漂、抓偏,最后完全跑偏。这不是模型完全没学会,而是它只学会了在专家轨迹附近行动,一旦自己走偏了,就不知道怎么把自己拉回来。
还有第二个更隐蔽的问题:多模态动作。
什么叫多模态?就是同一个场景下,可能有多种做法都合理。桌上有个工件,专家示范里,有人从左边绕过去抓,有人从右边绕过去抓。两条路都对。
但如果模型用普通的回归方法去学,它会怎么做?它会把所有示范平均一下,取个中间值。左边路线是对的,右边路线也是对的,但左右平均出来的中间路线,可能撞到物体上,夹爪姿态不对,方向完全不合理。
机器人不是选择题考试,把两个正确答案平均一下不等于另一个正确答案。这就是行为克隆的第二个死穴:多种合理做法会被平均成一个错误做法。
ACT就是冲着解决这两个问题来的。
二、ACT第一招:别一步一猜,一次预测一小段
ACT的第一个绝招,叫Action Chunking,动作分块,专门对付误差累积。

朴素行为克隆是一帧预测一步,下一帧再预测下一步。每一步都要重新判断,每一步都有机会犯错,而且错误越滚越大。
ACT换了个思路:别只预测下一步,一次预测未来一小段动作。
在我们要用的GHRC训练里,会让ACT一次预测50步动作。数据是每秒30帧,50步大概对应1.6秒的动作片段。这意味着模型不是在回答“下一步怎么动”,而是在回答“接下来这一小段该怎么完成”。
就像人开车。你不会每前进一厘米都重新想一遍方向盘该打多少度,而是看前面一小段路,形成个短时计划,然后稳定执行,过一会儿再重新观察、重新修正。机器人也一样。一次预测一段动作,可以减少每一步临时决策带来的抖动,也能降低误差滚雪球的速度。模型从“单步反应”升级成了“短时规划”。
执行完这一段,再重新观察、重新预测。对于抓取、装配、分拣这类操作任务,这种短时动作块往往比单步动作更平滑,也更接近人的操作节奏。
三、ACT第二招:记住“这次用的是哪种做法”
第二个绝招叫条件变分自编码器,名字听着吓人,其实思路很巧妙,专门解决多模态动作问题。

刚才说了,同一个场景可能有多种合理做法,模型不能把它们简单平均。它需要知道:这一次示范,到底属于哪种操作风格?是从左边接近,还是右边?是先抬高再下探,还是贴着桌面靠近?
ACT用一个叫“隐变量”的东西来表达这种风格,记作z。你可以把z理解成一段动作背后的“风格标签”或“模式编码”。
训练的时候,模型能看到专家到底是怎么做的。所以ACT左边有一个编码器,会根据真实的动作序列推断出一个z,代表这段示范属于哪种操作模式。然后右边的Transformer主干把当前图像、机器人状态和这个z放在一起,生成未来一段动作。
这样模型学到的就不是单一的平均动作,而是:在当前场景下,如果选择某一种操作模式,应该生成怎样的动作序列。它保留了示范数据里的多样性,而不是把所有示范压扁成一个模糊的中间答案。
四、训练和推理,左右分工不同
ACT的结构可以粗略理解成左右两块。

训练时,两块一起转。左边编码器看着真实发生的动作,提取出一个风格标签z;右边Transformer读取相机画面、机器人状态和z,预测未来动作。训练目标也很直接:预测动作要尽量接近真实动作,同时z的分布要规整,不能乱。
推理时,只留右边。因为真实任务没有标准答案可以参考,左边编码器没法运行。ACT的做法很干脆:丢掉左边,直接让z等于0。
为什么是0?因为训练时我们一直在把z的分布往标准正态分布(中心是0)上拉。z=0就相当于选择一个最稳定、最主流、最可复现的操作风格。机器人不会每次随机选一种风格,而是固定走一个可靠策略。这对真机部署非常重要——真正上场时,稳定和可复现往往比多样性更重要。
五、ACT怎么吃Walker S2的数据?
讲完原理,咱们落到这次实训营的数据上:GHRC Walker S2仿真数据。

第2课介绍过,这个数据集包含四个任务,咱们以“工件桌面分拣”为例。每一帧数据包含4路RGB相机:头部左、头部右、左腕、右腕。头部相机看全局,理解桌面、工件和机器人的整体关系;手腕相机看近处细节,接近物体时特别关键。
除了图像,还有48维的本体状态,描述机器人自身关节等信息。动作是20维,包括双臂关节、夹爪控制等。ACT的输入输出刚好对上:4路相机图像进视觉编码器,48维状态作为状态输入,Transformer主干融合一切,解码器一次输出未来50步,每一步都是20维动作。
因为数据格式统一,同一个ACT训练代码就能读不同机器人的数据,不需要每次重写一套。这对教学和工程复现都非常重要。
六、训练命令不是玄学,是可解释的参数
ACT的训练入口是一条命令。初学者一看,哇,参数好多。其实拆开就三类:
第一类,数据从哪来。指定数据集路径、视频解码方式等,回答“读哪份数据”。
第二类,训练什么策略。policy.type=act指定训练ACT,chunk_size=50表示一次预测50步,还有Transformer的隐藏维度、注意力头数等,回答“模型长什么样、动作块多长”。
第三类,训练怎么跑。batch_size多大、训练多少步、多久存一次模型、日志怎么打、结果存哪、开不开混合精度加速,回答“训练过程怎么管理”。

训练不是一串神秘咒语,而是一份实验配置。chunk_size决定动作块长度,batch_size受显存限制也影响稳定性,模型保存频率决定后续能不能回退分析。这些细节,做项目时往往就是能不能复现实验、定位问题的关键。
七、训练跑起来,看什么?
命令发出后,很多同学第一反应是盯着loss看。这没错,但远远不够。

首先确认两件事:loss在下降,说明模型确实在学数据里的动作模式,预测动作和真实动作越来越接近;模型定期保存,每个checkpoint都是后续推理、恢复训练、效果分析的依据。没有checkpoint,训练就像看了一场烟花,热闹完什么都没留下。
但这里必须敲黑板:loss在降,不代表任务成功。
这是机器人训练最重要的认知之一。模型预测动作更接近数据集里的动作,不等于机器人真机执行就能完成任务。夹爪早闭了一点点,抓取可能就失败;末端位姿偏了一点点,装配可能就卡住;轨迹看着像,但关键时刻慢了半拍,分拣就错过了目标。
所以第3课的目标不是宣布“模型成功了”,而是把训练链路跑通:数据能读、模型能训、loss能降、checkpoint能保存、参数能解释、训练记录能留下。真正判断策略好不好,要到第4课。
八、训练前最容易被忽略的一步
很多同学觉得训练就是把命令跑起来。但机器人训练里,最影响结果又最容易忽略的,是训练前的数据检查。

即使数据集质量不错,开训前也该做几件事:确认格式完整,数据、视频、元信息三件套齐全;随机抽查几个任务片段,看相机画面是否正常,有没有黑屏、卡顿,状态和动作数据是否连续;剔除明显失败的、动作异常的片段——机器人模型非常诚实,脏数据喂进去,它就把错误也学进去。
最后,记录一切。用了哪个数据集、哪些超参、batch_size多大、chunk_size多长、训练了多少步、模型存在哪里。因为第4课做效果分析时你会发现:没有实验记录,就没有复盘能力。很多时候模型变好或变坏,不是玄学,而是某个数据版本、某个参数、某个checkpoint不一样。
工程能力,就是把这些变化记录清楚、对比清楚、解释清楚。
九、下一课预告:loss很低,为什么机器人还是失败?
第3课,我们把训练这台机器转起来了。ACT用动作分块压住误差累积,用隐变量表达多种合理做法,在Walker S2数据上跑起了训练。我们能看loss下降,能看到模型保存,也知道每个参数在控制什么。
但真正的难题往往在下一步:loss已经很低,为什么任务还是做不成?推理时机器人为什么会抖?夹爪为什么闭早了?目标位姿为什么偏了?动作看起来像专家,为什么就是抓不到?
是模型问题还是数据问题?是训练不够还是数据覆盖不够?是相机视角不够还是动作标签本身有问题?

第4课将进入训练效果分析与迁移。我们会从成功和失败的视频里读问题,理解如何从loss走向成功率,从checkpoint走向真实任务表现。这也是机器人算法工程师最核心的能力之一:不是把模型训完,而是看懂它为什么失败,并一步步把成功率做上去。
真正的机器人训练,从来不是跑通命令那么简单。它是一场围绕数据、模型、动作、环境和失败案例的持续迭代。
第3课,我们让模型开始学习。第4课,我们开始学会判断它到底学得怎么样。
-END-
Ask Me Anything|提问箱
❝对文章有疑惑,或想聊更深?欢迎把你的问题丢给我们:技术方案、实操踩坑、课程与资料、项目合作、职业发展,都可以问。
怎么问:在评论区留言,或私信公众号
我们会做什么:每周集中整理高质量问题并公开回复,重点问题邀请作者或嘉宾深度解答;典型问题会加入知识库并持续更新。
提问小提示:尽量说明「你的目标—当前做法—期望产出」,附上必要信息(硬件/软件版本、数据规模等),能更快获得有用答案。
一起把问题变成知识,推动社区进步 🚀