问题
语言 CoT 和视觉 CoT 都是「间接」的引导
现有 VLA 给动作生成加中间推理,主要有两种做法:
- 语言 CoT:先预测子任务文本(π0.5、ThinkAct 一类),再让动作策略执行;
- 视觉 CoT:先用世界模型合成目标图像或未来帧(CoT-VLA、DreamVLA、WorldVLA 一类),再条件化动作。
论文认为两者都停在输入空间:VLM 预训练学的是语义对齐和问答,世界模型给的是像素,离精确的低层动作都还隔着一层,作者称之为 semantic–kinematic gap。他们的主张是:最有效的中间推理应该直接发生在动作空间里,也就是先想出一段「大概怎么动」,再据此生成真正执行的动作。
解读「动作 CoT」本质上是一次粗到细的两段式动作生成
「Chain-of-Thought」这个名字容易让人以为模型在做多步推理。按论文的实现,「思考」就是先采样一段更长、更稀的动作轨迹,再以它为条件生成近处的精细动作。论文自己在 §3.2 也把 EAR 类比为生成模型里的 self-conditioning(把前一次的估计喂回去当条件)。它更接近级联生成,和语言模型里「写出推理步骤」不是一回事。这样理解,后面关于参数量、去噪步数、teacher forcing 的实验就都好读了。
方法 · 全局 · §3.1 · Figure 2
一个 VLM,三条下游支路
形式化地,策略原本是 at:t+H−1 = πθ(ot, l)。加中间引导 g 后分解为:
ACoT 只用 gaction,并把它拆成两部分:显式的 gexaction(参考动作序列)和隐式的 gimaction(VLM 表征里蕴含的动作分布)。
按步骤走一遍数据流,切换训练与推理
维度与层数来自 §4.1;训练/推理差别来自 §3.4 Teacher Forcing
方法 · 显式动作推理器 EAR · §3.2
一个和动作头差不多大的「草稿生成器」
VLM 先把观测和指令编码成逐层的 KV cache:(KVLM1:N, VVLM1:N) = VLM(ot, l),N = 18。EAR 记为 πrefθ,输入是长度 Href 的加噪动作序列,第 i 层这样更新:
用 flow matching 训练,输出参考轨迹 areft:t+Href−1,再经 MLP 投影成动作嵌入 Zex。
结构
- 层数
- 18,与 VLM 层一一对应
- 参数
- 默认 300M,与 π0.5 动作头相同(附录表 9)
- 注意力
- 自注意力(时间依赖)+ 交叉注意力(读同层 VLM KV),残差并行
输出的轨迹
- 长度
- Href = 15
- 步长
- action shift = 2,隔一帧取一个
- 覆盖
- 相当于未来 30 帧(表 5 的 Equi. horizon)
- 真机
- 动作头 H = 30,Href 未披露
它不是什么
不是语言,也不是关键点或末端轨迹的几何表示。它和最终动作用的是同一套动作参数化(LIBERO 是 Delta EEF,真机是绝对关节角),只是更长、更稀。
参考轨迹看多远:步长 × 长度的 6 种配置
LIBERO,表 5(EAR only,无 IAR)
方法 · 隐式动作推理器 IAR · §3.3
每层只问一个问题:这一层里有多少「动作信息」
IAR 直接作用在 VLM 的 KV cache 上。对每一层 i,初始化一个可学习矩阵 Qi ∈ ℝM×d(M = 1,d = 2048),先把 Q、K、V 都线性投到 d′ = 128 维,再做交叉注意力、平均池化、MLP:
18 层的 zimi 聚合成 Zim。IAR 只多出约 0.01B 参数(3.35B → 3.36B)、2 ms 延迟(表 10)。
三种从 KV cache 抽信息的方式(表 6)
LIBERO 平均成功率。Query:可学习 query 直接读原始 KV;Attention Pooling:把 KV 平均成一个 query 再交叉注意力;Downsample:先降维再用可学习矩阵聚合(默认)。
原表数字(表 6)
解读增益几乎全在 LIBERO-Long 上
三种方式在 Spatial、Object、Goal 上的差别都在 1 个点以内;Downsample 的优势主要来自 Long(95.6 vs 92.8)。LIBERO 每个套件 500 次试验,1 个点就是 5 次。论文由此推断「VLM 特征里有对动作预测有害的噪声,降维能滤掉」,这个解释没有其他证据支撑。
方法 · 动作引导预测 AGP 与训练 · §3.4
加噪动作变成 query,去两路先验里各取所需
常规做法是把加噪动作嵌入直接送进动作头。AGP 把它当作查询 Qaction,先做两次交叉注意力,再拼接后过一个自注意力融合块:
h̄ 送入动作头 πheadθ,去噪出 at:t+H−1。总损失是两个 flow matching MSE 的加权和:
Teacher forcing:训练时不用 EAR 的输出
论文说 EAR 的输出在训练中不稳定,所以训练时 Zex 直接由真值参考轨迹(示范里的未来动作)计算,避免干扰动作头。推理时切换为完全自条件:先由 EAR 生成参考轨迹,再引导动作头。
解读这一设计带来两个后果
① 暴露偏差:动作头训练时只见过完美的参考轨迹,推理时读的是 EAR 的采样结果,误差会被直接放大。论文没有做「训练时用 EAR 预测」的对照。② 目标泄漏:默认配置下参考轨迹覆盖未来 30 帧、步长 2,动作头要预测的前 10 帧里有一半帧的真值就在条件里。训练时动作头可以只学「插值 + 微调」,所以它的表现更依赖 EAR 推理时的质量。
训练配置(§4.1、附录表 8):8 × H100,bf16,AdamW,梯度裁剪 1.0,EMA 0.999,batch 128。LIBERO 40K 步、LIBERO-Plus 100K、VLABench 60K、真机 50K–240K。论文写的学习率是「warm-up 10K 步,峰值 5e-5,在 10K 步内衰减到 5e-5」,峰值和终值相同,应是笔误,实际终值未披露。推理在单张 RTX 4090 上。
实验设置 · §4.1 · 附录 A、B
三个仿真基准、四个真机设置
| 数据集 | 本体 | 自由度 | 条数 | 帧数 | FPS | 动作空间 | H | 状态 | 训练步 |
|---|---|---|---|---|---|---|---|---|---|
| LIBERO | Franka | 7 | 1,693 | 273,465 | 10 | Delta EEF | 10 | × | 40K |
| LIBERO-Plus | Franka | 7 | 14,347 | 2,238,036 | 20 | Delta EEF | 10 | × | 100K |
| VLABench | Franka | 7 | 4,713 | 528,398 | 10 | Abs EEF | 10 | ✓ | 60K |
| Wipe Stain | AgiBot G1 | 22 | 177 | 356,316 | 30 | Abs Joint | 30 | ✓ | 50K |
| Pour Water | AgiBot G1 | 22 | 1,821 | 5,062,506 | 30 | Abs Joint | 30 | ✓ | 240K |
| Open-set Pick | AgiBot G1 | 22 | 1,936 | 219,824 | 30 | Abs Joint | 30 | ✓ | 50K |
| Open-set Pick | AgileX | 14 | 962 | 251,283 | 30 | Abs Joint | 30 | ✓ | 50K |
- LIBERO:Spatial / Object / Goal / Long 四个套件,各 10 个任务,每任务 50 次评测,共 2,000 次。
- LIBERO-Plus:在 LIBERO 上加 7 种扰动(相机视角、机器人初始状态、语言改写、光照、背景纹理、传感器噪声、物体布局),10,030 个评测回合,每回合只跑一次。两种协议:零样本迁移(在 LIBERO 上训练,直接测)和监督微调(在 LIBERO-Plus 训练集上训练)。
- VLABench:基于 ManiSkill3,5 个公开赛道,指标是意图分 IS 和进度分 PS。π0、π0.5 与 ACoT 在同一设定下训练。
- 真机:Wipe Stain 3 个海绵初始位姿 × 4 个污渍位置 × 2 次 = 24 次;Pour Water 6 种壶杯相对位置 × 2 次 = 12 次;Open-set Pick 10 种摆放 × 左右臂 × 2 次 = 40 次,并在 AgileX 上重复。
解读◇ 号很关键:LLM 主干冻结
表里带 ◇ 的行表示训练时 LLM 主干冻结。ACoT 在 LIBERO 和 LIBERO-Plus 上同时报告了冻结(Ours◇)与不冻结(Ours)两版;VLABench 只有冻结版;消融大多在冻结设定下做(附录表 7、9 的图注写明)。比较时要看清两边是不是同一种设定。
结果 · §4.2 · 表 1–3
LIBERO 接近满分,LIBERO-Plus 上的差距才拉开
LIBERO(表 1)
四个套件的平均成功率
颜色按论文的「引导类型」列。横轴从 70 开始,便于看清顶部差距。悬停看四个套件的分项。
原表数字(表 1,成功率 %)
ACoT 两版平均都是 98.5,比 π0.5 的 96.9 高 1.6 个点,比 VLA-Adapter 的 97.3 高 1.2 个点。论文强调 Long 套件提升最明显:不冻结版 97.0,π0.5 92.4。
LIBERO-Plus(表 2)
7 种扰动下的成功率
上:零样本迁移(在 LIBERO 上训练);下:在 LIBERO-Plus 上监督微调。* 为用官方权重复现,◇ 为冻结主干。
原表数字(表 2,含全部基线)
零样本设定下,不冻结版平均 86.6,比 π0.5* 高 0.9 个点;Robot 初始状态 +3.2、Language +4.2,但 Camera(72.6 vs 75.8)和 Noise(87.8 vs 89.6)反而更低。冻结版 83.6,低于 π0.5*。监督微调设定下差距明显:Camera 96.6 vs 70.3,Noise 95.9 vs 71.8,平均 88.0 vs 75.7。
疑点微调设定里的 π0.5 基线比它自己的零样本还低 10 个点
同一个 π0.5,在 LIBERO 上训练、直接迁移到 LIBERO-Plus 得 85.7;在 LIBERO-Plus 自己的训练集上训练(冻结主干)反而只有 75.7,Robot 维度从 79.4 掉到 41.7。这说明 π0.5◇ 这一行受冻结主干影响很大,不是一个强基线。论文标题级的「+12.3」来自和这一行比,而 ACoT 的最佳 88.0 只比 π0.5 零样本的 85.7 高 2.3 个点。
VLABench(表 3)
5 个赛道的意图分 IS 与进度分 PS
三者都冻结主干,同一训练设置,各训 60K 步。
原表数字(表 3)
平均 IS 63.5 / PS 47.4,π0.5◇ 为 60.2 / 43.1。最大增益在 Texture(IS 74.6 vs 62.0,+12.6);Commonsense 上 IS 52.3、PS 37.8,两项都低于 π0.5◇ 和 π0◇;Instruction 的 IS 也略低。
真机(Figure 4)
AgiBot G1 三个任务 + AgileX 一个任务
数字读自原图柱顶标注。Wipe Stain 24 次,Pour Water 12 次,两个 Open-set Pick 各 40 次。
图中数字与对应的成功次数
疑点Pour Water 的 22.5% 在 12 次试验下不可能出现
附录 B 写 Pour Water 是 6 种配置各跑 2 次,共 12 次,成功率只能是 1/12 的整数倍(16.7%、25.0%、33.3%…)。图中 π0.5 的 22.5% 对不上;ACoT 的 33.3%(4/12)和 π0 的 25.0%(3/12)能对上。另外 Wipe Stain 的 79.1% 应为 19/24 = 79.2%。G1 Open-set Pick 上 π0.5(80.0%)高于 ACoT(77.5%),四项里 ACoT 只在三项领先。
Sim-to-real(附录表 11)
Genie Sim 3.0:在仿真数据上训练,在仿真和真机上测
4 个抓取/整理任务。试验次数未披露。
平均:仿真 84.2 vs 75.7,真机 82.9 vs 77.5。Grasp Targets 在仿真里 ACoT 更低(68.0 vs 71.7),Recognize Size 在真机上持平。论文把 sim-to-real 掉分少归因于「动作空间的引导不受视觉域差影响」,这是一个没有单独验证的推测。
消融 · §4.3 · 附录 C
两个模块各自有用,EAR 不是越大越好
模块消融(表 4、表 7)
EAR / IAR 的增减
左:LIBERO 平均;右:LIBERO-Plus 微调设定平均(冻结主干)。
原表数字(表 4、表 7)
LIBERO 上 EAR、IAR 单独各加 1.4 和 1.2 个点,合起来 1.6;LIBERO-Plus 上 EAR 单独 +8.0,IAR 单独 +4.7,合起来 +8.4。两个模块的收益明显不是相加关系,EAR 占了大头。
疑点三张 LIBERO 消融表用了两个不同的基线
表 4(模块消融)和表 6(IAR 方式)的 Baseline 是 98.8 / 98.2 / 98.0 / 92.4,平均 96.9,和表 1 里 π0.5 的数字完全相同。表 5(参考轨迹配置)和表 9(参数/步数)的 Baseline 却是 98.6 / 99.0 / 96.4 / 92.2,平均 96.6。另一方面,表 4 的 #1(EAR only)与表 5 的「步长 2 × 15」、表 9 的 #4 完全一致,而表 9 的图注写明主干冻结。也就是说,表 4 很可能是拿冻结主干的变体去和未冻结的 π0.5 数字比。论文没有说明两个基线分别是什么。
参数量与去噪步数对齐后的比较(表 9)
同样 600M、同样 20 个去噪步,EAR 还有没有用
表 9,均无 IAR、冻结主干;LIBERO-Plus 为微调设定
原表数字(表 9)
解读这是全文最有说服力的一组对照
把动作头直接加到 600M(#1)或再把去噪步数翻倍(#2),LIBERO-Plus 都不涨(74.9、75.1 vs 75.7)。同样 600M 的参数、同样 10 + 10 步拆成「EAR + 动作头」(#4),LIBERO-Plus 到 83.7。这至少说明增益不是单纯来自参数和算力,而是来自「先生成一段长程草稿、再以它为条件」这种结构。但它也说明了 ACoT 的本质:一个两段式级联生成器。EAR 加到 500M(超过动作头)反而掉到 80.9,作者解释为过拟合,没有进一步验证。
延迟(表 10)
| 配置 | EAR | IAR | 参数 | 延迟 | LIBERO | LIBERO-Plus |
|---|---|---|---|---|---|---|
| Baseline(π0.5) | 3.35B | 91 ms | 96.9 | 75.7 | ||
| #1 | ✓ | 3.80B | 110 ms | 98.3 | 83.7 | |
| #2 | ✓ | 3.36B | 93 ms | 98.1 | 80.4 | |
| #3 | ✓ | ✓ | 3.81B | 112 ms | 98.5 | 84.1 |
单张 RTX 4090,端到端。EAR 多出 0.45B 参数、19 ms;论文没写动作块是否异步执行、实际控制频率是多少。
读懂它
这篇真正说明了什么
关键 insight
1. 中间接口可以是「同模态」的
语言子任务、目标图像都需要一个翻译回动作的过程。ACoT 的中间产物和最终输出同属一个动作空间,动作头读它时不需要跨模态对齐,这是作者论证的核心。证据是表 9:同样参数和步数下,拆成两段比一段大模型好。
2. 草稿要比成品看得更远
默认参考轨迹覆盖 30 帧、动作块只有 10 帧。表 5 里所有配置都比基线好,但差别都在 0.4 个点以内,LIBERO 上无法区分哪种更好。「看得更远」这个设计意图论文没有做对照证明。
3. 收益集中在扰动和长程任务上
LIBERO 前三个套件基本饱和,提升主要在 Long;LIBERO-Plus 上主要在 Camera、Robot 初始状态和 Noise 三个维度。这和「参考轨迹提供运动先验、减少观测到动作映射的歧义」的说法一致。
4. IAR 是一个便宜的附加项
10M 量级参数、2 ms 延迟,LIBERO-Plus 上单独 +4.7。它从每层 KV 里只抽 1 个 128 维向量,和动作头再做一次交叉注意力,可以看作一种轻量的逐层特征读取。
容易误解的地方
- 「Chain-of-Thought」不是多步推理。没有显式的思考链,也没有多轮生成。EAR 一次去噪出一段轨迹,动作头再去噪一次。
- 「SOTA」的幅度。LIBERO 上 ACoT 98.5 对 VLA-Adapter 97.3、OpenVLA-OFT 97.1,差 1.2–1.4 个点,在 2,000 次试验下约 25 次成功之差。
- 「+12.3」只在一种设定下成立。见 LIBERO-Plus 疑点。零样本设定只领先 0.9。
- EAR 不是一个独立规划器。它和动作头同时训练、共用 VLM 的 KV,而且训练时根本不把自己的输出交给动作头(teacher forcing)。
FAQ
训练时用真值参考轨迹,那 EAR 学到的东西怎么传给动作头?
训练时传不过去。EAR 和动作头各自有 flow matching 损失,动作头训练时读的是真值轨迹的嵌入。只有推理时,EAR 的采样结果才第一次被动作头读到。两者通过共享的 MLP 投影(把参考轨迹编码成 Zex)对齐表示空间。论文没有报告 EAR 单独输出的质量,也没有测「推理时也喂真值参考」的上界。
为什么 EAR 的参数量要和动作头差不多?
表 9 试了 150M / 250M / 300M / 500M,LIBERO-Plus 分别是 81.7 / 83.1 / 83.7 / 80.9。300M 最好,但 150M 和 250M 的差距在 2 个点以内。超过动作头的 500M 掉分,作者归因于过拟合生成有偏的参考轨迹。
真机为什么用 30 步动作块?参考轨迹是多长?
附录表 8 给出真机动作头 H = 30、绝对关节控制、带状态输入。参考轨迹的长度和步长在真机设置里没有给出(§4.1 的 15 / 2 只针对默认设定)。
和同样做「先粗后细」的方法有什么区别?
论文的相关工作只对比了语言 CoT 和视觉 CoT,没有讨论动作空间的级联/分层生成方法,也没有和它们做实验比较。就机制而言,ACoT 的两段都条件在同一个 VLM 上、通过交叉注意力连接,这是它的具体做法。
局限与疑点
作者承认的,和我们读出来的
论文自己提到的(附录 D)
- 推理模块带来额外计算开销,资源受限的平台部署有压力。
- 当前动作表示是关节角或末端位姿序列,缺少显式几何结构(以物体为中心的协调、接触几何),ACoT 的潜力可能没完全发挥;未来想让 ACoT 在可解释的 3D 空间里推理。
我们读出来的
- 疑点LIBERO 消融表有两套 Baseline 数字(96.9 与 96.6),表 4 的变体是冻结主干、基线可能不是。
- 疑点LIBERO-Plus 微调设定的 π0.5◇ 比它的零样本结果低 10 个点,大幅增益是和弱基线比出来的。
- 疑点真机 Pour Water 的 22.5% 与 12 次试验矛盾;G1 Open-set Pick 上 π0.5 更高。
- 疑点学习率「从 5e-5 衰减到 5e-5」是笔误,终值不明。
- Teacher forcing 带来暴露偏差和目标泄漏,没有对照实验。
- 没有展示 EAR 生成的参考轨迹本身,也没有分析它和最终动作的偏差。
- VLABench 的 Commonsense 赛道 IS、PS 都低于两个基线,论文没有讨论。
- Sim-to-real 实验的试验次数未披露。
放到专题里看
结构化执行里「最内层」的一种接口
在 Harness for Robotics 专题里,结构化执行指把任务拆成「推理 → 意图/子任务 → 动作」,并用明确的中间接口把高层决策和低层控制接起来。ACoT 的接口在模型内部:一段动作空间的粗轨迹,端到端训练,不经过语言。
| ACoT-VLA | MotorMind | τ₀-VLA | TT-VLA | |
|---|---|---|---|---|
| 专题分类 | 结构化执行 | 结构化执行 | 评估与反馈 | 评估与反馈 |
| 中间接口 | 15 点粗参考轨迹 + 18 个隐式先验向量 | 参数化的 move / rotate / gripper 指令批 | 自然语言子任务 + 执行记忆 | 无(直接改策略参数) |
| 接口在哪里 | 模型内部,可微 | 模型外部,JSON | 两个模型之间,文本 | — |
| 需要训练吗 | 端到端训练 | 不训练,冻结通用 VLM | 高低层分别训练 | 测试时在线更新 LoRA |
| 闭环信号 | 无显式评价,靠每个动作块重新观测 | Monitor 打断 + Verifier 判定 | 世界模型想象 + 价值模型打分 | 进度估计器给稠密奖励 |
- 和 MotorMind:两者都认为「语言子任务到动作」这一步太粗。MotorMind 的回答是让通用 VLM 直接输出带数值的中层动作,交给确定性控制器;ACoT 的回答是在 VLA 内部多生成一段粗轨迹。前者零样本、可解释、慢(单回合 200 多秒);后者需要示范数据训练、快(112 ms 一次推理)。
- 和 τ₀-VLA:τ₀ 的中间接口是语言子任务,正好是 ACoT 批评的「语言 CoT」。但 τ₀ 处理的是数分钟、最长 12 分钟的长程任务,需要在子任务层面做记忆和搜索;ACoT 的轨迹只覆盖未来 30 帧(LIBERO 10 Hz 下约 3 秒)。两者其实在不同的时间尺度上工作,可以叠加。
- 和 TT-VLA:ACoT 没有任何外部评价信号,参考轨迹错了也没有机制发现;TT-VLA 正好补这一块,但它目前只支持离散 token 的 VLA,ACoT 这种 flow matching 头不能直接用。
术语表
读这篇会遇到的词
展开术语表
- ACoT
- Action Chain-of-Thought,把中间推理表示成动作空间的粗轨迹。
- EAR
- Explicit Action Reasoner,18 层 Transformer,用 flow matching 生成参考轨迹,每层读 VLM 同层 KV。
- IAR
- Implicit Action Reasoner,每层 1 个可学习 query,在降到 128 维的 K、V 上做交叉注意力,抽出隐式动作先验。
- AGP
- Action-Guided Prediction,加噪动作作为 query 分别读 Zex、Zim,融合后送入动作头。
- Zex / Zim
- 显式参考轨迹的嵌入 / 18 层隐式先验向量的集合。
- action shift
- 相对示范轨迹的时间步长:1 为逐帧,2 为隔一帧取一个。
- Equi. horizon
- 等效视野 = 步长 × 长度,即参考轨迹覆盖的未来帧数。
- teacher forcing
- 训练时用真值参考轨迹代替 EAR 的输出喂给动作头;推理时改用 EAR 的输出。
- ◇
- 表中标记,表示训练时 LLM 主干冻结。
- LIBERO-Plus
- 在 LIBERO 上加 7 种扰动的鲁棒性基准,10,030 个评测回合。
- IS / PS
- VLABench 的意图分(Intention Score)与进度分(Progress Score)。
- self-conditioning
- 生成模型中把上一轮的估计作为额外条件输入,论文以此类比 EAR。