外观
具身智能与 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 论文里常见的指标是任务成功率,但这个数字很容易被"环境太友好"抬高。我倾向看这几项:
- 同分布成功率:训练时见过的物体和位置,换随机种子跑 20 次以上;
- 新物体泛化:换颜色、换形状、换尺寸;
- 新指令泛化:同一任务换说法,例如"把杯子拿起来" vs "帮我递一下杯子";
- 扰动鲁棒性:改变光照、移动相机、人为碰一下物体;
- 失败模式:记录它是抓空、抓偏还是中途放弃,比一个总数有用得多。
只有第一项高、后面几项掉得厉害,说明模型学到的更接近"位置记忆"而不是"指令理解"。
落地时绕不开的现实问题
- 延迟:从拍照到动作下发,超过 300 ms 在动态场景里就会明显滞后;
- 精度:VLA 输出的动作通常是粗粒度的,最后几厘米往往还要靠伺服或视觉伺服补;
- 安全:模型输出不可解释,必须在外层加力矩/速度限制和急停;
- 可复现性:随机种子、相机标定、物体初始位置任一变化,成功率就可能差 20 个点。
我的判断
VLA 目前更像"更好的任务级策略",而不是替代传统控制。合理的架构是: VLA 负责"做什么、往哪去",底层控制负责"怎么稳稳地做到"。 把两者边界划清楚,比争论端到端是否更先进更有意义。
参考方向
- Open X-Embodiment:跨本体数据集的统一尝试
- RT-1 / RT-2:动作 token 化路线的代表
- Diffusion Policy:把动作生成建模为去噪过程
- π0:流匹配 + 动作块的工程化尝试
具体数字以原论文为准,这里只记思路。下一篇记录本地部署视觉语言模型的实际操作。