Skip to content

具身智能与 VLA 模型笔记 ​

「具身智能」这个词这两年被用得很泛。这里只记录我关心的那条线: 让模型直接根据视觉输入和自然语言指令,输出机器人动作。也就是常说的 VLA(Vision-Language-Action)。

问题设定 ​

传统做法是拆成感知、规划、控制几段,每段单独调。VLA 的思路是把它们合成一个策略:

$$ \pi: (I_t, L) \rightarrow A_t $$

  • $I_t$:当前(或最近几帧)的图像观测
  • $L$:语言指令,例如"把红色方块放进左边的盒子"
  • $A_t$:动作,可以是末端位姿增量、关节角增量,或离散化的动作 token

关键区别在于:语言不是事后解释,而是和视觉一起进入同一个模型,动作由同一个网络输出。

几条技术路线 ​

1. 动作离散化成 token ​

把每个动作维度均匀分桶,映射成词表里的 token,然后让一个视觉语言模型自回归地"说"出动作序列。 代表工作是 RT-2 这类思路。优点是能直接复用预训练 VLM 的能力,缺点是为了动作新增了词表, 推理是逐 token 生成的,频率上不去。

2. 连续动作头 ​

在 VLM backbone 上加一个动作解码头(MLP 或 diffusion head),直接回归连续动作。 OpenVLA 一类工作走的是把动作 token 化后配专门解码的方式,而 diffusion policy 则完全绕开语言模型, 用扩散过程建模多模态的动作分布。

3. 流匹配 / 扩散式策略 ​

π0 这类工作用流匹配(flow matching)生成连续动作块(action chunk), 一次输出未来若干步的动作,缓解了逐步推理的延迟问题。实际部署时,"一次出 50 步、执行前若干步再重新规划" 是很常见的工程折中。

对比 ​

路线推理频率多模态动作分布训练难度
动作 token 自回归低一般中
回归式动作头高差(易平均化)低
扩散 / 流匹配中好高

"回归式动作头容易平均化"是个很实际的问题:当同一观测下存在多种合理动作时,MSE 损失会把它们平均成 一个谁也不像的动作。这也是扩散类方法流行的直接原因。

数据比模型更难 ​

公开数据集里规模最大的一类是 Open X-Embodiment,它把多个实验室的机器人数据统一了格式。 但统一格式不等于统一语义:

  • 动作空间不统一:有的是关节角,有的是末端位姿增量,有的带夹爪开合;
  • 控制频率不统一:3 Hz 到 30 Hz 都有,混着训练必须先重采样;
  • 相机视角不统一:腕部相机、第三人称、多目,模型对视角变化相当敏感;
  • 语言标注质量参差:同一段轨迹可能被标成"拿起杯子"或"把杯子移到桌上"。

实操建议:先在自己的机器人上采 50–100 条高质量演示,把整条链路跑通, 再考虑混入公开数据做大范围泛化。直接上大数据集往往连评测都做不清楚。

评测怎么做才可信 ​

VLA 论文里常见的指标是任务成功率,但这个数字很容易被"环境太友好"抬高。我倾向看这几项:

  1. 同分布成功率:训练时见过的物体和位置,换随机种子跑 20 次以上;
  2. 新物体泛化:换颜色、换形状、换尺寸;
  3. 新指令泛化:同一任务换说法,例如"把杯子拿起来" vs "帮我递一下杯子";
  4. 扰动鲁棒性:改变光照、移动相机、人为碰一下物体;
  5. 失败模式:记录它是抓空、抓偏还是中途放弃,比一个总数有用得多。

只有第一项高、后面几项掉得厉害,说明模型学到的更接近"位置记忆"而不是"指令理解"。

落地时绕不开的现实问题 ​

  • 延迟:从拍照到动作下发,超过 300 ms 在动态场景里就会明显滞后;
  • 精度:VLA 输出的动作通常是粗粒度的,最后几厘米往往还要靠伺服或视觉伺服补;
  • 安全:模型输出不可解释,必须在外层加力矩/速度限制和急停;
  • 可复现性:随机种子、相机标定、物体初始位置任一变化,成功率就可能差 20 个点。

我的判断 ​

VLA 目前更像"更好的任务级策略",而不是替代传统控制。合理的架构是: VLA 负责"做什么、往哪去",底层控制负责"怎么稳稳地做到"。 把两者边界划清楚,比争论端到端是否更先进更有意义。

参考方向 ​

  • Open X-Embodiment:跨本体数据集的统一尝试
  • RT-1 / RT-2:动作 token 化路线的代表
  • Diffusion Policy:把动作生成建模为去噪过程
  • π0:流匹配 + 动作块的工程化尝试

具体数字以原论文为准,这里只记思路。下一篇记录本地部署视觉语言模型的实际操作。

本站内容均为个人学习笔记与实践记录,欢迎交流指正。