背景#
当前VLA的三种方式
(a)让 VLM 先生成一些中间子任务subtasks到浅层空间,再结合浅层提示和vlm的kv cache做cross attention
再linear映射到标量做为动作输出,这里有两种监督,一个是浅空间vlm 文本指令类监督做交叉熵损失,另外一个是动作监督做mse均方误差·监督,通过联合任务建模,提升动作信号在图像文本里面关联建模融合(pi fast核心自回归action token)(典型模型pi0.5)(里面核心也是用视觉,文本特征引导动作生成)
(b)世界模型典型的worldModel类模型。核心由编码器、动力学模型、解码器和奖励模型组成,编码器将图像压缩为潜变量,动力学模型基于当前潜变量和动作预测未来状态,解码器将潜变量重建为图像以验证预测的准确性,奖励模型预测每个状态转移的奖励。就是也是两种建模,一个是未来下一个状态图像重建建模,未来下一个动作轨迹预测建模。训练的时候,做第一个loss的时候判断预测图像和真实图像是否尽可能接近,第二个loss时候判断轨迹路线是否尽可能拟合,可以用KL或者mse损失(里面核心也是说用视觉特征引导动作生成)
(c)这个就是典型的pi0模型,本质上就是vlm做对齐工作讲视觉文本指令对齐到action上面,在通过参考的action构造噪声action融合,做vt训练得到局部的去噪方向,再推理中多步去去噪,逼近真实action。(这里核心就是多模态对齐工作,和flowmatching去噪)
但是
仍停留在输入空间,而不是输出动作空间。
更具体说,VLM 的预训练知识偏语义理解,擅长“看懂、说懂”,不天然擅长低层控制;世界模型预测的是未来视觉状态,本质仍是视觉表征;可机器人最后要执行的是连续低层动作,二者之间存在一个文中反复强调的 **semantic-kinematic gap。**就是说没有一个过渡的粗略动作状态空间,去平滑VLM和action expert
故,项目的核心围绕着Explicit Action Reasoner 和 Implicit Action Reasoner。构建合成粗粒度运动轨迹以提供直接运动线索和利用交叉注意力建模从 VLM 骨干内部表征中提取潜在动作先验去做:动作层面的粗粒度参考。
核心思路#
把推理环节推理发生在动作空间浅空间(故事成分多感觉,本质是pi0.5推理环节也是发生在浅空间做subtasks环节,只是作者觉得这里的监督方式还是监督文本指令,而不是action推理(大概就是说的粗略action))
Explicit Action Reasoner, EAR 显式动作推理器 负责生成一条粗粒度参考动作轨迹
Implicit Action Reasoner, IAR 隐式动作推理器 负责从 VLM 内部表征里提取潜在动作先验
Action-Guided Prediction, AGP 动作引导预测头 把 EAR 和 IAR 的结果一起喂给最终动作头,帮助做动作预测
这个设计其实非常有意思,因为作者把“动作推理”拆成了两个互补来源:
显式动作信息:像示范轨迹那样,能直接写成动作序列 (粗动作,应该这里是有真实的监督信号)
隐式动作信息:语言里的“抓取”“伸手”,视觉里的 affordance、交互意图,这些虽然不是机械臂轨迹,本质上就是前在的语义空间,(就是vlm里面的kv cache,通过和pi0.5一样的在pre-train环节大规模多模态数据训练得到的语义分布,同时又包含了action token自回归的训练,attention交互融合后,概率分布空间隐含了动作关联视觉文本信息),但隐含可行动作分布。
做两套动作层面的 reasoning:
一套是可执行的粗参考动作
一套是潜在动作分布/行为先验
然后再共同约束最终动作预测。一起联合做监督
模型架构#
整体#
VLM Backbone#
模型配置#
实例化#
ACoT-VLA是实现于pi0.5 之上的,代码上看还兼容pi0。
它采用:
SigLIP作为视觉编码器
Gemma 2B 作为 LLM backbone
也就是说,ACoT-VLA 并没有推翻pi0.5 的主干,而是在pi0.5上,额外插入动作空间reasoning模块(EAR,IAR)外挂上去。
coarse action expert:负责 EAR 对应的粗动作参考轨迹生成
action expert:负责最终动作预测
**IAR:**直接从 VLM 的 KV cache 上抽隐式动作先验
总体来看的话,数据流向:
共享前缀#
1,把三路图像都变成视觉 token每张图先走 SigLIP,得到 image tokens。
2,把 prompt 变成语言 token调用 LLM 的 embed 方法得到 token embedding。然后把所有 token 沿序列维拼起来,形成统一 prefix。
后续 KV cache 的全部来源
Explicit Action Reasoner (EAR)#
显式动作推理器 负责生成一条粗粒度参考动作轨迹
输入:多模态上下文 + noisy coarse action
输出:reference trajectory
训练:flow matching
推理:先 denoise 生成 coarse action,再引导最终动作头
如何外挂加进去?#
粗动作推理支路使用一套单独的表示空间它不直接和最终action expert共享输入投影,和论文中讲的EAR是单独轻量transformer是一样的。
实例化#
输入#
初始来源
生成的:
coarse_actions
这个是对ERA这个小模型的真正GT。
也就是说原始的输入就是一个一条粗粒度动作轨迹。
怎么来的,应该就是在原始的suffix中对真实纯净的action进行采样,采样出一个粗略的action 也就是coarse_action
输出#
输出的就是参考粗略轨迹动作
做监督loss#
这个和pi0 一样action expert 用的是flow matching
这个说明这个模型也是联合loss做监督,一个是粗动作loss, 一个是Action-Guided Prediction
下面两个loss = loss + loss
Implicit Action Reasoner (IAR)#
隐式动作推理器负责从 VLM 内部表征里提取潜在动作先验(就是vlm 里面的kv cache特征信息)
实例化#
这三种本质上是怎么 KV里读信息这个核心点上做了三种不同设计
交互模块
把提取出来的implicit action tokens,和当前的action expert tokens做cross-attention对齐
所以IAR是做两步:
第一段:self.implicit_action_reasoner
从 KV cache提取 $Z^{im}$
第二段:self.implicit_action_reasoner_interact
让最终动作token去读取$Z^{im}$ ,得到对齐后的$S^{im}$
这里就是所谓的潜在动作先验
输入#
IAR extractor的输入
IAR interact的输入
输出#
这个输出就是隐式动作相关特征。
Action-Guided Prediction(AGP)#
这个就是模型最后的动作预测头了:EAR(显式轨迹)+ IAR(隐式先验)转成对最终 action expert 的条件约束,并参与 flow matching 训练。
这这个地方接收所有的输入:(就是pi0 里面的action expert)
核心(两次 cross attention)#
EAR#
大概就是当前token应该去query当前应该做什么动作
IAR#
从高层语义kv中获取关联度更高的动作 action。
论文原图中:两个cross attention地方
融合#
先liner 在concat融合。再做self attention做query互斥(各种学不同特征表达(相当于是学习不同的范式))学习融合。
最终监督#
AGP 接收 EAR 的 coarse trajectory 和 IAR 的 latent prior,通过两次 cross-attention 将它们对齐到当前 action token,再融合成最终动作表示,最后通过 flow matching loss(u_expert_t vs v_expert_t)进行监督。
总结#
ACoT-VLA 的本质是:在 pi0.5 的基础上,引入动作空间的中间推理(coarse trajectory + latent prior),并通过 cross-attention 将其注入到最终动作生成过程中,从而显著提升长时序任务与泛化能力。
存疑问?#
在pi0.5下,IAR是有必要的吗?pi0.5包含了pi-fast拥有自回归训练action token,理论上说,action动作信息已经融合进去vlm里面了。已经在同一个概率分布空间里面,拥有先验的推理预测能力。