2. VLA基础认知

VLA(Vision-Language-Action Model,视觉-语言-动作模型)是一类把视觉感知、自然语言指令与机器人动作生成统一到同一模型中的具身智能方法。它要解决的核心问题是:让机器人不再依赖人工编写的规则或单一任务策略,而是能够理解“把红色杯子放到托盘左边”这类开放语言指令,观察当前场景,并直接输出可执行的动作序列。与只做图像分类的视觉模型、只做文本生成的语言模型不同,VLA 的输出必须落到物理世界,因此它同时受到语义理解、空间推理、时序决策和底层控制的多重约束。

一句话定义:VLA 是以视觉观测和语言指令为条件输入,以机器人动作为输出目标的端到端或模块化具身模型。它的关键不是“看懂”或“会说”,而是“看懂并说清之后还能做对”。

一、核心原理:从多模态输入到动作输出

VLA 的典型结构可以拆成四个环节:视觉编码、语言理解、跨模态融合、动作解码。视觉编码器把 RGB 图像、深度图或多视角图像转成视觉 token;语言编码器把指令转成文本 token;融合模块通过交叉注意力或统一 Transformer 让两种 token 对齐;动作解码器则输出动作 chunk、末端位姿增量、关节目标或离散动作 token。与纯文本模型不同,VLA 的动作输出通常具有时间维度,例如一次预测未来 8 到 16 步的动作序列,再由底层控制器执行。

从学习范式看,VLA 常见三条路线:一是模仿学习,用人类遥操作或示范数据训练策略;二是离线强化学习,从已有轨迹中学习价值与策略;三是视觉语言预训练 + 动作微调,先利用大规模图文数据获得语义泛化,再用机器人数据对齐动作空间。当前主流 VLA 多采用第三条路线,因为纯机器人数据规模远小于互联网图文数据,预训练能显著提升开放指令理解能力。

VLA 信号链:视觉 + 语言 → 融合 → 动作 → 执行 视觉观测 RGB / 深度 / 多视角 视觉 Token 语言指令 “把红杯放托盘左” 文本 Token 跨模态融合 交叉注意力 / 统一 Transformer 对齐语义与空间位置 输出融合表征 动作解码 动作 Chunk / 位姿增量 关节目标 / 离散动作 Token 未来 8~16 步 机器人执行 底层控制器 / 伺服 训练数据来源 人类遥操作示范 · 机器人轨迹 · 互联网图文预训练 · 仿真数据

二、发展脉络:从模块化到端到端

VLA 并非突然出现,它经历了三个明显阶段。早期是模块化流水线:目标检测、语言解析、任务规划、运动控制各自独立,优点是可控,缺点是误差逐级累积,且难以处理开放语言。中期是多模态大模型 + 动作头:以 CLIP、LLaVA 等视觉语言模型为骨干,外接动作解码器,开始具备零样本指令理解能力。近期则走向统一端到端 VLA,如 RT-2、OpenVLA、π0 等,把动作离散为 token 或使用扩散/流匹配生成连续动作,直接在机器人数据上微调,显著提升了泛化性和动作平滑度。

这一脉络背后的推动力有三点:一是 Transformer 统一了多模态表征;二是大规模机器人数据集和仿真环境降低了数据门槛;三是动作表示从单步回归转向动作 chunk 和生成式建模,使高频控制更稳定。

三、典型应用场景

  • 桌面抓取与放置:根据“把蓝色积木放进盒子”等指令完成目标定位、抓取和放置,是 VLA 最常见的验证场景。
  • 家庭服务:整理桌面、开关抽屉、递送物品,要求模型理解日常语言和杂乱场景。
  • 工业分拣:在传送带或料框中识别指定零件并抓取,强调节拍和成功率。
  • 移动操作:结合底盘导航与机械臂操作,完成“去厨房拿一瓶水”等长程任务。
  • 人机协作:理解“先别动”“往左一点”等交互指令,实现动态修正。

四、机器人学习范式对比

范式 数据来源 优点 局限 典型代表
模仿学习 人类遥操作示范 实现直接、样本效率较高 分布外泛化弱、误差累积 ACT、Diffusion Policy
离线强化学习 已有轨迹 + 奖励标注 可利用次优数据、优化长期回报 奖励设计难、训练不稳定 IQL、CQL
视觉语言预训练 + 动作微调 互联网图文 + 机器人数据 开放指令泛化强、语义先验好 动作对齐成本高、推理较慢 RT-2、OpenVLA、π0

五、常见误区与复盘

误区一:把 VLA 当成“更大的视觉语言模型”。VLA 的难点不在语言生成,而在动作空间连续、时序依赖强、物理约束硬。只堆语言能力而不解决动作表示,机器人仍然做不对。

误区二:认为端到端一定优于模块化。端到端泛化好,但调试困难、安全边界模糊;工业场景中模块化仍有一席之地。选型要看任务开放度和可靠性要求。

误区三:忽视动作表示。动作是离散 token、连续回归还是扩散生成,直接决定训练稳定性和控制频率。动作表示工程是 VLA 落地的关键环节。

复盘建议:评估一个 VLA 系统时,先看它输出什么动作表示、预测多长动作 chunk、控制频率多少,再看视觉语言骨干和训练数据配比。动作接口没对齐,后面的语义能力很难转化为真实操作成功率。

# 一个典型 VLA 推理伪代码
obs = get_camera_images()          # RGB / depth
instruction = "把红色杯子放到托盘左边"
tokens = vision_encoder(obs) + text_encoder(instruction)
fused = cross_modal_transformer(tokens)
action_chunk = action_head(fused)  # shape: [T, action_dim]
for a in action_chunk:
    robot.step(a)                  # 底层控制器执行

理解 VLA 的定义、脉络、场景与学习范式,是后续进入数据集构建和动作表示工程的前提。只有先明确“输入是什么、输出是什么、数据从哪来、动作怎么表示”,才能在具体工程中做出合理的技术选型。