3. VLA模型架构解析

视觉语言动作模型(Vision-Language-Action, VLA)的核心思想,是把图像观测、自然语言指令与机器人动作统一到同一个可微分的网络中,让模型直接从“看到什么、听到什么”映射到“该怎么做”。理解 VLA 的架构,关键要抓住三段式主线:多模态编码器负责把异构输入变成语义向量,融合机制负责让视觉、语言、本体状态在共享空间中对齐,动作解码器负责把融合表示转成可执行的动作序列。本节围绕这条主线,拆解典型结构、训练范式与常见误区。

一、典型多模态编码器:把三种模态变成同一种“语言”

VLA 的输入通常包含三类信息:视觉观测(RGB、深度、多视角)、语言指令(任务描述、目标物体)、机器人本体状态(关节角、末端位姿、夹爪开合)。编码器的任务是把它们投影到统一的嵌入空间。

  • 视觉编码器:常用 ViT、SigLIP、DINOv2 或 ResNet。ViT 类模型把图像切成 patch,输出 patch token 序列,天然适合与语言 token 拼接。多视角场景下,每个相机独立编码后再加视角嵌入。
  • 语言编码器:常用预训练 LLM 的 tokenizer 与嵌入层,如 LLaMA、T5、PaLM 的词表。语言 token 与视觉 token 共享同一 Transformer 主干,是当前主流做法。
  • 状态编码器:本体状态维度低、数值连续,通常用 MLP 或线性层投影成若干 state token,再与视觉、语言 token 拼接。

编码阶段最重要的设计选择是是否共享主干。共享主干(如 RT-2、OpenVLA)让视觉与语言在同一个注意力空间里交互,参数效率高;分离主干(如早期 CLIP+策略网络)则更易模块化调试,但跨模态对齐能力弱。实践中,共享主干 + 轻量适配器是主流折中。

二、融合机制:从“拼接”到“交叉注意力”

融合机制决定多模态信息如何交互。常见方案有三类:

  1. 早期拼接融合:把视觉 token、语言 token、state token 直接拼成一条长序列送入 Transformer。实现简单,但序列长、注意力开销大,且不同模态的 token 数量差异会带来偏置。
  2. 交叉注意力融合:语言作为 query,视觉作为 key/value,或双向交叉。适合视觉 token 多、语言 token 少的场景,能显著降低计算量。
  3. 适配器/投影融合:用 Q-Former、Perceiver Resampler 或 MLP 把视觉特征压缩成固定数量的“视觉摘要 token”,再与语言拼接。这是当前 VLA 最常用的方案,兼顾效率与表达力。
融合层的输出不是最终动作,而是“任务条件化的场景表示”。它需要同时保留空间细节(物体位置、抓取点)和语义抽象(任务目标、子步骤),因此融合层往往保留多尺度特征,而不是只取最后一层。

三、动作解码器:连续动作的生成方式

动作解码器把融合表示映射为动作。按输出形式可分为:

解码方式输出形式典型代表适用场景
离散 token 解码把动作离散成 token,自回归生成RT-2、OpenVLA复用 LLM 词表,适合语言-动作统一建模
连续回归解码MLP 直接回归动作向量BC-Z、Diffusion Policy 早期动作维度低、实时性要求高
扩散/流匹配解码从噪声逐步去噪生成动作序列Diffusion Policy、π0多模态动作分布、精细操作
动作 chunk 解码一次输出未来 H 步动作ACT、OpenVLA-OFT降低推理频率、提升平滑性

动作 chunk 是近年最重要的工程改进之一:模型一次预测未来若干步动作,机器人执行时按时间展开,既减少推理次数,又缓解单步抖动。代价是 chunk 边界处可能出现不连续,需要重叠执行或时间集成(temporal ensemble)来平滑。

四、端到端训练范式:从预训练到微调

VLA 的训练通常分两阶段:大规模预训练与任务微调。预训练阶段用互联网图文数据、机器人演示数据、仿真数据混合训练,让模型学会视觉-语言对齐与基础操作先验;微调阶段用目标机器人的少量演示数据,把动作空间、相机标定、本体动力学适配到具体硬件。

# 典型微调配置(示意)
model: openvla-7b
vision_encoder: siglip-so400m
action_dim: 7            # 6D位姿 + 1D夹爪
action_chunk: 8
batch_size: 16
lr: 2e-5
epochs: 30
lora_rank: 32            # 低秩适配,降低显存
dataset: demo_pick_place  # 200条演示

端到端训练的核心挑战是动作空间对齐:不同机器人的关节数、单位、坐标系不同,直接混合训练会让模型学到“平均动作”。常见做法是统一到末端位姿增量空间,或为每个机器人加一个本体嵌入(embodiment token)。另一个挑战是因果混淆:模型可能记住场景背景而非任务本身,需要通过随机化背景、光照、物体位置来增强泛化。

实操建议:微调时先冻结视觉编码器,只训练融合层与动作解码器;待损失稳定后再解冻顶层视觉块。这样能显著降低显存占用,并减少对预训练视觉表征的破坏。

五、案例与复盘:一次抓取任务的架构走查

以“把红色方块放进蓝色盒子”为例:RGB 图像经 ViT 编码为 256 个 patch token;指令经 tokenizer 变为 12 个语言 token;关节状态经 MLP 变为 4 个 state token。三者拼接后送入 7B Transformer,融合层输出 272 个 token 的上下文表示。动作解码器取最后一个 token 的隐状态,经线性头输出 8 步动作 chunk,每步 7 维。机器人执行前 4 步后重新推理,形成闭环。

常见误区:把 VLA 当成“更大的模仿学习模型”。实际上 VLA 的关键增益来自语言条件化与跨模态预训练,如果微调数据里语言指令高度重复、场景单一,模型会退化成纯视觉策略,语言分支形同虚设。复盘时应检查语言 token 的注意力权重是否被激活。
VLA 端到端架构:编码 → 融合 → 动作解码 视觉观测 RGB / 深度 / 多视角 语言指令 任务描述 / 目标物体 本体状态 关节角 / 位姿 / 夹爪 ViT / SigLIP patch token 序列 Tokenizer + Embed 语言 token MLP 投影 state token 多模态融合 拼接 / 交叉注意力 Q-Former 压缩 共享 Transformer 主干 任务条件化场景表示 动作解码器 离散 token 自回归 连续回归 MLP 扩散 / 流匹配 动作 chunk 输出 7 维动作 × H 步 机器人执行 闭环反馈 / 时间集成 执行结果与观测回流,形成闭环控制 训练范式:大规模图文+机器人数据预训练 → 目标机器人少量演示微调(LoRA / 冻结视觉编码器)

总结来看,VLA 架构的解析可以归纳为一张“输入—编码—融合—解码—执行”的链路图。多模态编码器解决“怎么表示”,融合机制解决“怎么对齐”,动作解码器解决“怎么生成”,端到端训练解决“怎么学”。四者缺一不可,而工程上最容易被忽视的,往往是融合层的 token 设计与动作 chunk 的边界处理。