动作预测不是只看机器人状态,还要把"任务指令"作为条件一起喂进网络。

输入到底是什么?

在训练和执行时,策略网络的输入通常是多模态的,不是只有 state:

  1. 视觉观测(observation):腕部/第三人称相机图像、点云等——"现在看到了什么"。

  2. 机器人本体状态(proprioception):关节位置、夹爪开合、末端位姿——"机械臂现在长什么样"。

  3. 语言指令(language instruction):比如 "pick up the red cup" / "把红色的杯子放到左边"——"要做什么"。

把这三者合起来,才构成网络的完整输入。

语言指令怎么参与预测

语言不会是原始字符串丢进去,而是先经过一个文本编码器(如 CLIP / BERT / T5)变成一串 embedding 向量,然后以某种方式"条件化"到动作网络上:

  • 拼接(concatenation):把语言 embedding 和状态特征拼成一个大向量,一起送进 MLP/Transformer。

  • 交叉注意力(cross-attention):在 Transformer 里,动作 token 通过 cross-attention 去"查询"语言 token,相当于"根据指令来决定动作"。

  • 作为扩散条件(conditioning):在 Diffusion Policy 里,语言 embedding 和状态一起作为去噪网络的 condition,指导从噪声里生成出符合指令的动作。

也就是说,同一个机器人状态,给不同语言指令,网络会输出完全不同的动作——指令决定了"往哪个目标走"。

训练时怎么学的

数据集里的每一条示范都带着对应的语言标注(由采集者/标注者给出):

(图像帧, 机器人状态, "把杯子放进抽屉")  →  人类遥操作动作
(图像帧, 机器人状态, "把杯子放到桌上")  →  人类遥操作动作

网络的监督信号是:给定 (状态 + 语言),去拟合人类当时做的动作(gt action)。它学到的就是"在某种视觉情境下,听到某句话,手应该怎么动"。

执行时

推理阶段,实时提供:

  • 当前相机的图像 + 机器人当前状态
  • 你想让它执行的语言指令

网络就输出一串预测动作,机器人执行,再滚动到下一帧,循环。

一句话总结

动作 = f(状态, 视觉, 语言指令)。语言指令是网络的"目标条件",训练时从带标注的示范里学出"指令→动作"的映射,执行时你下什么指令,它就朝那个目标动。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐