从理解到操作的技术演进
近年来,人工智能在视觉和语言领域取得了显著突破,大型语言模型(LLM)和视觉语言模型(VLM)已经能够“看”懂图像并“理解”人类指令。然而,通往通用人工智能(AGI)的道路上仍存在一个关键挑战:如何让AI系统不仅能够理解世界,还能够物理操作和改变世界?这就是具身智能(Embodied AI)的核心问题。
传统的机器人系统往往依赖于复杂的编程或特定任务的强化学习,难以适应千变万化的现实环境。随着大语言模型和视觉语言模型的成功,一个新兴研究方向应运而生——视觉-语言-动作模型(Vision-Language-Action Models, VLA)。这类模型旨在将视觉感知、语言理解和物理动作融为一体,让机器人能够听懂人的指令(如“把桌子上的苹果拿给我”),识别当前环境(识别出苹果和桌子),并自主生成一系列动作来完成任务。
在VLA模型的发展历程中,一个关键瓶颈在于:现有的视觉-语言-动作模型往往局限于特定任务的操作数据,并且会遭受预训练的视觉-语言能力的灾难性遗忘。为了弥补这一差距,中科大、浙大和上海AI实验室的研究团队提出了InstructVLA模型,这是一个端到端的VLA模型,既保留了大型视觉语言模型的灵活推理能力,又提供了领先的操作性能。
本文将深入解析视觉-语言-动作指令调优(VLA-IT)的技术原理、架构设计及其创新之处,结合生活化案例和代码示例,帮助读者全面理解这一推动具身智能发展的前沿技术。
VLA模型的演进与挑战
从单模态到多模态的演进
VLA模型的发展深深植根于计算机视觉(CV)、自然语言处理(NLP)和强化学习(RL)三大领域的历史积淀。其演进过程可以概括为以下几个阶段:
-
单模态模型的奠基:计算机视觉领域从ResNet、ViT到SAM的发展提供了强大的视觉感知能力;自然语言处理领域从GRU、Transformer到BERT、ChatGPT的进展让AI能“听懂”人类语言;强化学习从DQN、AlphaGo到决策Transformer则为AI提供了从试错中学习最优策略的理论框架。
-
多模态模型的兴起:以CLIP、LLaVA为代表的视觉语言模型(VLM)成功将视觉和语言两种模态对齐,实现了看图说话、视觉问答等功能,为VLA的出现奠定了基础。
-
VLA模型的诞生与发展:早期工作如CLIPort将VLM能力与机器人控制相结合;RT-1、VIMA等模型利用Transformer架构将机器人控制问题转化为序列预测问题;像SayCan、PaLM-E这样的模型则利用LLM强大的推理能力将复杂任务分解为简单子任务。2023年的RT-2模型正式提出了“VLA”这一术语,展示了将庞大VLM直接微调用于机器人控制的潜力。
现有技术的局限性
尽管VLA模型取得了显著进展,但仍面临几个关键挑战:
-
数据依赖与质量困境:传统监督微调(SFT)严重依赖大量高质量、一致性的人类演示数据,采集成本高昂且易受噪声影响。
-
泛化能力不足:在分布外场景(新物体、新布局、新任务目标)或长程多步骤任务中,纯模仿学习策略容易失效。
-
灾难性遗忘问题:现有VLA模型在微调操作能力时,往往会牺牲或遗忘预训练的视觉-语言能力。
-
缺乏主动优化与闭环反馈:SFT本质为开环模仿,模型无法根据动作结果自我修正,难以实现安全探索与目标对齐。
这些局限性严重制约了VLA模型在真实世界场景中的应用效果和范围。
InstructVLA架构设计
整体架构概述
InstructVLA采用了一个统一的框架,使用单个视觉语言模型同时进行多模态推理和语言引导的潜在动作规划。该模型不仅生成文本输出以保留预训练VLM强大的语言理解和多模态推理能力,同时还生成用于下游操作的潜在动作表征。
以下是InstructVLA的整体架构图:
生成过程包含三个关键步骤:
-
VLM进行异步自回归推理
-
潜动作生成
-
动作解码
核心组件详解
用于文本和潜动作生成的嵌入VLM
InstructVLA提出一个统一框架,使用单个VLM即可同时进行多模态推理和语言引导的潜在动作规划。该模型基于紧凑高效的Eagle2-2B主干网络,采用交叉熵作为监督学习目标对语言输出进行训练,损失函数为 。
为了支持动作规划,模型引入了N个可学习的动作查询 ,它们关注VLM的隐状态并提取与任务相关的潜动作
,其中
是VLM的隐藏维度。这一机制允许模型在保持语言能力的同时,学习生成适合物理操作的表示。
混合专家自适应机制
一个关键挑战是使模型能够在推理时无缝地在推理和操作之间切换。为此,InstructVLA采用混合专家(MoE)设计,将多模态推理与语言引导的潜动作相结合。
具体而言,LoRA模块在LLM主干网络中用作专家,在保留预训练能力的同时确保高效的推理。一个尺度头通过对隐状态进行分类来预测每个专家的门控系数 ,使模型能够自适应地混合他们的输出。
个专家的隐状态计算如下:
其中 为原始权重,
表示输入,
和
为LoRA参数,
为LoRA缩放因子。
流模型作为高效的动作专家
为了将低级控制与高级理解分离,动作专家被设计为根据基于VLM意图的图像观察来生成动作。它从DINOv2中提取图像特征,从VLM中提取潜动作,包含噪声动作嵌入以及本体感觉等可选信息,并将这些信息与一个带有分块因果注意机制的简单Transformer架构融合。
DINOv2视觉编码器通过特征线性调制(FiLM)得到进一步增强,在将动作引导至空间和上下文输入方面发挥着至关重要的作用。流匹配目标用于监督动作学习。
两阶段训练方案
InstructVLA采用了一个两阶段训练方案:
第一阶段:动作预训练
在这个阶段,模型使用异构操作数据进行预训练。为了将知识从VLM中分离出来进行操作,模型被训练用于预测动作和基于规则的带注释语言动作,其中后者通过交叉熵损失进行监督。由于流匹配和下一个token预测的稳定性,最终损失是两个损失的直接和:
在此阶段,仅调整LLM主干网络上动作查询和动作LoRA适配器的输入和输出嵌入。
第二阶段:视觉-语言-动作指令调优
一旦动作专家模型经过预训练,能够遵循VLM中的潜动作,进一步调整LLM主干模型,使模型能处理包含更复杂指令的操作任务并生成合适的响应。在此阶段,动作专家模型保持不变,并添加新的语言LoRA适配器和MoE自适应的尺度头。
模型使用多模态数据集进行协同训练,以提升多模态理解能力。最终的模型被称为“通才模型”,反映了其兼具视觉-语言和操作能力。
关键技术创新点
视觉-语言-动作指令调优(VLA-IT)
InstructVLA引入的核心创新是视觉-语言-动作指令调优(VLA-IT)训练范式。它采用多模态训练和混合专家自适应方法,在标准VLM语料库和精心挑选的65万个样本VLA-IT数据集上联合优化文本推理和动作生成。
VLA-IT数据集分为四类:
具身场景理解(Embodied Scene Understanding):这类数据旨在让模型“看懂”它所处的环境。它包括:
-
场景字幕(Scene Captioning):为机器人摄像头捕捉到的图像生成描述性文本,例如“一个红色的苹果放在木质餐桌的中央,旁边有一把餐刀”。
-
视觉问答(Visual Question Answering, VQA):基于当前视觉场景进行问答,例如问:“桌上有几个苹果?”,答:“一个”。
指令理解与潜行动作规划(Instruction Understanding & Latent Action Planning):这类数据旨在让模型“听懂”指令并思考“如何做”。它包括:
-
指令重写(Command Rewriting):将模糊的用户指令转化为精确、可执行的机器人指令。例如,用户说“帮我拿一下那个”,模型需要根据上下文重写为“用机械臂夹取桌子上的蓝色马克杯”。
-
上下文创建(Context Creation):为多步骤任务生成隐式的用户目标或进度线索,帮助模型在长程任务中保持对整体目标的记忆。
操作与动作执行(Manipulation & Action Execution):这是最核心的操作类数据,直接教导模型“如何动手”。它包括:
-
动作序列(Action Sequences):包含大量机器人执行具体任务的演示数据,例如“抓取”、“放置”、“推开”、“按压”等动作的轨迹(如关节角度、末端执行器位姿)。
-
任务分解(Task Decomposition):将复杂任务分解为一系列简单的子动作步骤。例如,任务“泡一杯咖啡”可分解为“拿起杯子”、“走到咖啡机前”、“按下冲泡按钮”等。
安全与纠错(Safety & Error Correction):这类数据旨在让模型的操作更安全、鲁棒,并学会在出错时“如何调整”。它包括:
-
安全约束(Safety Constraints):标注在何种情况下不应执行动作,例如当抓取路径上有易碎品阻挡时,应终止动作或重新规划。
-
错误恢复(Error Recovery):提供当任务执行出现意外(如物体滑落、目标移动)时,应如何检测错误并执行恢复策略的示例。
这种精心设计且覆盖全面的四类数据集,确保了InstructVLA模型能够同时保持强大的视觉-语言理解能力,又能获得精确、安全的任务操作技能,有效避免了以往模型在微调操作能力时出现的“灾难性遗忘”问题。
高效的推理机制
InstructVLA设计了多项技术来提升推理速度:
-
解码策略:为了减少自回归解码的延迟,文本响应通过贪婪搜索生成,直到第一个动作查询token出现。然后,剩余的动作查询在VLM的单次前向传递中并行解码。
-
语言响应和潜动作缓存:通过在多个动作步中缓存文本输出,利用其时间稳定性,将语言响应与动作生成分离。InstructVLA还支持缓存潜动作,与ECoT相比,这减少了VLM的前向传递次数,同时将性能影响降至最低。
强化学习的融合应用
虽然InstructVLA主要基于监督学习,但强化学习(RL)技术在VLA模型的优化中扮演着越来越重要的角色。RL通过引入目标驱动、环境交互与奖励信号,为突破VLA模型的上限提供了关键路径。
具体而言,强化学习在VLA模型中的价值体现在:
-
奖励驱动优化:替代被动模仿,通过设计/学习奖励函数引导模型主动优化策略
-
高效利用交互数据:从环境试错中学习,降低对演示数据的依赖
-
提升鲁棒性与适应性:在交互中学习应对状态扰动与任务变化,增强模型在开放世界的泛化能力
例如,ConRFT强化微调方法通过一致性策略和离线-在线协同训练,仅需45-90分钟在线交互微调,即可在8个真实任务上达到96.3%的平均成功率,较SFT提升144%。
应用案例与生活化示例
家庭环境中的应用
VLA模型在家庭环境中有着广泛的应用前景。例如,Figure公司的人形机器人Figure 02能够将盘子、玻璃杯和碗放入洗碗机,这得益于其Helix视觉-语言-动作模型。对于机器人来说,握住易碎物体,应用足够的力量,确定每个部件的方向并将其放置在正确的位置是一项巨大的挑战。Helix的关键在于通过观察他人来学习,并且不需要对每个手势进行逐步编程,使得它能够适应、纠正错误,甚至从小的撞击或意外碰撞中恢复。
从2025年的演示来看,该团队展示了在线包裹分拣(六月)、将衣服放入洗衣机(七月)、按照语音指令折叠毛巾(八月),以及添加洗碗功能(九月)。这些进展强化了这样一种观点:单个AI大脑可以执行非常不同的任务。
社交机器人与酒店应用
TCL推出的Ai Me机器人旨在提供情感陪伴和家庭监控,通过自然互动和情感陪伴吸引用户。其模块化设计包括婴儿核心(识别表情和声音以做出共情反应)、驱动核心(自主移动基地和充电站)和迷你核心(便携式模块陪伴用户,拍摄照片并保持持续连接)。这种方法寻求一种能够与家人一起成长并适应一天中不同时间的解决方案。
在酒店业,日本连锁店Henn na酒店一直在尝试使用机器人负责长班次并缓解员工短缺问题。过去的挑战(如令人困惑的打鼾并提出要求)已使用新版本进行了完善。业内高管指出,更实惠的人工智能和更便宜的硬件正在使这些系统更接近中端机构。不过,大多数人还是选择了人机混合方案来平衡个人接触与自动化,将后台任务(从物流到地板清洁)留给机器,并让人们与主人保持敏感的互动。
代码示例与实现细节
以下是一个简化的代码示例,展示了InstructVLA模型的基本结构和关键组件:
import torch
import torch.nn as nn
from transformers import AutoModel, AutoTokenizer
from einops import rearrange
class MoEAdaptation(nn.Module):
"""
混合专家自适应机制
实现LoRA专家和自适应门控机制
"""
def __init__(self, base_model, num_experts=4, lora_rank=8):
super().__init__()
self.base_model = base_model
self.hidden_size = base_model.config.hidden_size
self.num_experts = num_experts
# LoRA专家初始化
self.lora_A = nn.ModuleList([
nn.Linear(self.hidden_size, lora_rank, bias=False)
for _ in range(num_experts)
])
self.lora_B = nn.ModuleList([
nn.Linear(lora_rank, self.hidden_size, bias=False)
for _ in range(num_experts)
])
# 门控网络
self.gate_network = nn.Sequential(
nn.Linear(self.hidden_size, num_experts),
nn.Softmax(dim=-1)
)
# LoRA缩放因子
self.alpha = 0.1
def forward(self, x):
# 原始模型输出
original_output = self.base_model(x)[0]
# 计算专家门控权重
gate_weights = self.gate_network(x.mean(dim=1)) # [batch_size, num_experts]
expert_outputs = []
for i in range(self.num_experts):
# LoRA专家前向传播
lora_out = self.lora_B[i](self.lora_A[i](x)) # [batch_size, seq_len, hidden_size]
expert_outputs.append(lora_out)
# 加权聚合专家输出
expert_output = torch.stack(expert_outputs, dim=0) # [num_experts, batch_size, seq_len, hidden_size]
gate_weights = gate_weights.unsqueeze(-1).unsqueeze(-1) # [batch_size, num_experts, 1, 1]
weighted_expert = (expert_output * gate_weights.permute(1, 0, 2, 3)).sum(dim=0)
# 结合原始输出和专家输出
return original_output + self.alpha * weighted_expert
class ActionExpert(nn.Module):
"""
动作专家模块
将高级意图解码为具体动作
"""
def __init__(self, visual_dim, action_dim, hidden_size=512):
super().__init__()
self.visual_proj = nn.Linear(visual_dim, hidden_size)
self.action_decoder = nn.TransformerDecoder(
nn.TransformerDecoderLayer(hidden_size, nhead=8),
num_layers=3
)
self.action_head = nn.Linear(hidden_size, action_dim)
def forward(self, visual_feat, latent_action):
# 视觉特征投影
visual_feat = self.visual_proj(visual_feat)
# 动作解码
memory = visual_feat.unsqueeze(0) # [1, batch_size, hidden_size]
tgt = latent_action.unsqueeze(0) # [1, batch_size, hidden_size]
action_feat = self.action_decoder(tgt, memory)
action = self.action_head(action_feat.squeeze(0))
return action
class InstructVLA(nn.Module):
"""
InstructVLA主模型
整合视觉编码、语言理解和动作生成
"""
def __init__(self, vision_encoder, language_model, action_dim):
super().__init__()
self.vision_encoder = vision_encoder
self.language_model = language_model
self.moe_adaptation = MoEAdaptation(language_model)
# 动作相关组件
self.action_queries = nn.Parameter(torch.randn(10, language_model.config.hidden_size))
self.action_expert = ActionExpert(vision_encoder.config.hidden_size, action_dim)
def forward(self, images, instructions):
# 视觉编码
visual_features = self.vision_encoder(images) # [batch_size, visual_dim]
# 语言编码
text_features = self.language_model(**instructions).last_hidden_state # [batch_size, seq_len, hidden_size]
# 多模态融合(简化版)
multimodal_feat = text_features[:, -1, :] + visual_features # [batch_size, hidden_size]
# MoE自适应
adapted_feat = self.moe_adaptation(multimodal_feat.unsqueeze(1))
# 动作查询关注
action_context = torch.einsum('bd,nd->bn', adapted_feat.squeeze(1), self.action_queries)
action_context = torch.softmax(action_context, dim=-1)
# 潜动作生成
latent_action = torch.einsum('bn,nd->bd', action_context, self.action_queries)
# 动作解码
actions = self.action_expert(visual_features, latent_action)
return actions
这个简化代码示例展示了InstructVLA的关键组件,包括混合专家自适应机制、动作专家模块和主模型架构。在实际应用中,这些组件会更加复杂,并包含更多的优化细节。
实验结果与性能分析
基准测试结果
InstructVLA在多个基准测试中展现了卓越的性能。在域内SimplerEnv任务中,InstructVLA比SpatialVLA实现30.5%的提升。为了评估其泛化能力,研究团队引入了SimplerEnv-Instruct,这是一个包含80个任务的基准测试,需要闭环控制和高级指令理解。在该基准测试中,InstructVLA的性能比经过微调的OpenVLA高出92%,比借助GPT-4o进行操作的专家高出29%。
这些结果证明了InstructVLA在保持视觉-语言能力的同时,显著提升了操作性能,有效解决了传统VLA模型的灾难性遗忘问题。
泛化能力分析
InstructVLA在泛化能力方面表现出色,这主要归功于其创新的训练范式和大规模多样化的训练数据。VLA-IT数据集包含了65万个样本,涵盖了各种指令、模型响应和推理模式。这种多样性使模型能够适应新场景、新物体和新任务,而无需重新训练。
此外,混合专家架构使模型能够根据输入上下文自适应地选择最合适的专家处理当前任务,进一步增强了模型的泛化能力。
未来发展方向与挑战
技术挑战
尽管InstructVLA取得了显著进展,但VLA模型仍面临多个技术挑战:
-
实时控制:真实世界操作通常需要毫秒级的响应时间,这对大模型的计算效率提出了极高要求。
-
多模态动作表示:如何有效表示和生成连续、高维、多模态的动作空间仍然是一个开放问题。
-
系统可扩展性:随着模型复杂度和数据规模的增加,训练和部署成本呈指数级增长。
-
对未见任务的泛化能力:模型在完全未知的任务和环境中的适应能力仍需提升。
-
伦理部署风险:VLA模型在真实世界中的部署带来了新的伦理和安全问题,需要谨慎应对。
未来方向
针对这些挑战,未来研究可能集中在以下几个方向:
-
更高效的架构设计:探索更轻量级、更高效的模型架构,降低计算成本的同时保持性能。
-
强化学习与模仿学习的融合:结合强化学习的探索能力和模仿学习的效率,实现更高效的学习范式。
-
世界模型与预测能力:开发能够预测动作后果的世界模型,使智能体能够在采取行动前进行“想象”和规划。
-
跨具身泛化:研究如何将在一个机器人平台上学到的知识迁移到其他平台,减少对特定硬件的依赖。
-
人机协作与交互:探索更自然、更高效的人机协作模式,使人类和智能体能够互补优势。
结论
视觉-语言-动作指令调优(VLA-IT)代表了具身智能领域的一个重要里程碑,它通过统一的框架将视觉理解、语言推理和物理操作能力紧密结合。InstructVLA作为这一方向的先进实现,通过创新的混合专家架构、两阶段训练范式和精心设计的数据集,有效解决了传统VLA模型的灾难性遗忘问题,同时在操作性能上取得了显著提升。
随着技术的不断发展,VLA模型将在家庭助理、工业自动化、医疗护理等领域发挥越来越重要的作用。然而,要实现真正通用、可靠的具身智能,仍需解决实时控制、泛化能力、安全性等诸多挑战。未来的研究需要跨学科合作,融合计算机视觉、自然语言处理、机器人学、认知科学等多个领域的知识,共同推动具身智能的发展。
通过持续的技术创新和对挑战的深入解决,视觉-语言-动作模型有望最终实现能够真正理解人类意图、适应环境变化、并安全高效地执行物理操作的通用具身智能体,为人类生活和工作带来革命性的变化。