☰
WM、WAM与VLA:机器人模型从感知到动作的三层架构解析
2026/10/17 23:14:56 网站建设 项目流程

做机器人这些年,我越来越觉得,真正的问题不是"该用哪个算法",而是"机器人到底凭什么把一件事做完"。很多人一开始会以为这就是个感知加控制的拼接题,但等你真把相机、底盘、机械臂组合到一起就会发现,最大的瓶颈是模型层:它要能看懂场景,能在脑子里推演下一步,还能输出真正能让电机转动的信号。这就是为什么我把WM(World Model,世界模型)、WAM(World-Action Model,世界-动作模型)和VLA(Vision-Language-Action Model,视觉-语言-动作模型)放在一起研究。它们分别对应了从"看"到"想"再到"做"的三层能力,各自的侧重点和代价完全不同。

这篇文章不是教科书式的综述,而是我结合近期VLA综述、论文和一些开源模型实测经验做的阶段性总结。里面会聊清楚三者的架构差异、训练方式、能力边界,也会手把手走一遍VLA在LIBERO仿真环境里的测试流程,方便正在做技术选型或者刚入坑具身智能的同学直接参考。

1. 先把概念对齐:WM、WAM、VLA到底在指什么

1.1 WM:世界模型,机器人的"脑内沙盘"

先说WM。这里的World Model跟企业供应链里那套SAP WM模块完全是两码事,别搞混了。世界模型的核心目标是让机器人在内部建立一个关于环境如何变化的模型:给它过去一段时间的观测和动作,它能预测接下来环境会变成什么样。最经典的代表是Dreamer系列,从Dreamer到DreamerV2再到DreamerV3,都是靠学习潜在空间里的状态转移来预测未来。Google的Genie系列也是这个思路,只不过把生成对象从游戏画面扩展到了更多交互式场景。

你可以把WM理解成一个"脑内沙盘"。我们在做决策之前,往往会在脑子里推演一遍各种后果,WM就是把这种能力给了机器人。它不直接告诉你"现在该往左转还是往右转",它只告诉你"如果你往左转,未来大概率会发生什么"。这种预测能力在基于模型强化学习里非常关键,因为智能体可以用学到的世界模型去想象大量交互结果,而不是在真实环境里烧时间。代价也很明显:误差会随着预测步数堆积,长时间推演一定会漂移,所以实际工程里WM很少单独当作最终策略使用,更多的角色是给规划器当模拟器,或者拿来生成仿真数据。

1.2 WAM:从世界模型到动作的"直连通道"

再讲WAM。这个缩写在业内其实还没有统一标准,容易撞上语音处理里的加权平均模型。在机器人模型的分析语境下,我更倾向于把它理解为World-Action Model,也就是世界-动作模型。它走的路线介于WM和VLA之间:不像WM那样只做预测,也不像VLA那样非要通过大语言模型来理解指令,而是把"预测世界变化"和"生成动作"两件事放进同一个网络里,让模型直接根据世界动态的表征输出动作序列。

这类思路在最近一些基于model-based policy的工作里越来越常见:模型骨干学习环境动态,动作头直接吃动态特征生成控制信号。这么做的好处是训练目标更聚焦、推理链路更短,在任务固定、不依赖语义理解的场景里,效率和实时性都更好。但它的短板也很明显:语言通用性弱,换一个新任务基本要重新训练或者小心微调。如果你做一个插拔零件的机械臂项目,任务从来不变,WAM路线是非常值得考虑的;如果你希望机器人能听懂各种稀奇古怪的指令,那WAM就不够用了。

1.3 VLA:视觉-语言-动作一体化大模型

VLA是过去两年具身智能领域最出圈的架构。它的定义很直观:把一个视觉编码器、一个大语言模型和一个动作输出模块接在同一个网络里,输入是图像(有时加深度或点云)加上自然语言指令,输出是机械臂关节角、末端位姿或底盘速度这类可执行动作。代表性工作包括Google的RT-2、OpenVLA、Physical Intelligence的π系列(包括π VLA),还有NVIDIA面向辅助驾驶场景推出的Alpamayo。

VLA真正的价值在于把大语言模型里的语义理解、逻辑推理和世界知识迁移到了机器人操作上。它让机器人可以"听懂一句话、看懂一个场景、做出一个动作",而不是把每个任务都写成一堆if-else规则。当然,"全能"是有代价的:这类模型参数量大、推理延迟高、训练数据要求苛刻。你看VLA相关的论文越来越多,说明大家认可这个方向,但真正能跑到边缘设备上实时推理的,仍然需要大量剪枝和蒸馏工作,Alpamayo就是个很典型的工程化案例。

2. 架构设计与训练方式:三类模型从根本上为什么不一样

2.1 WM怎么学:预测未来帧,建立环境动态

WM的训练目标和分类任务不同,它不是"这张图是什么",而是"看过之前的状态,下一步会变成什么样"。以Dreamer系列为例,模型先用一个视觉编码器把连续图像帧压缩成潜在向量,然后用循环状态空间模型(RSSM)在潜在空间里学状态转移,最后用解码器重建出下一帧或下一状态。训练数据很容易获取,只需要智能体与环境做交互,收集"观测、动作、下一观测"这样的时间序列,甚至不需要人工标注。

这种训练方式让WM有机会学到非常底层的环境规律,比如物体的碰撞、掉落、被推动后的位移。但你在实际使用中要特别注意误差累积问题:一步预测误差可能很小,但连续预测几十步之后,想象中的世界跟真实世界就会严重偏离。所以把WM当作一个多步规划器使用时,一定要设置合理的推演深度,并且在关键决策点用真实观测做修正,否则会出现"脑内剧情很精彩,现实中已经撞墙"的情况。

2.2 VLA怎么练:预训练加微调,三个阶段的递进关系

VLA的训练路径几乎没有例外,都是"大规模预训练、指令微调、操控对齐"三段式。预训练阶段用的是海量图文和视频数据,目标是让视觉编码器和语言模型学会物体长什么样、物体之间有什么空间关系、不同动作会带来什么物理后果。指令微调阶段会引入机器人操作数据,比如"把红色方块放到白色盘子里"这类指令配上真实执行轨迹,让模型学会从语言和视觉联合表征里推理出动作。操控对齐阶段则更贴近部署,主要解决动作空间如何表示、推理速度怎么优化、遇到陌生场景怎么鲁棒地输出动作。

这里有一个非常容易被忽视的点:数据配比。互联网数据一旦太多,模型会变成一个"嘴上王者",聊天很厉害,但手部动作输出完全跑偏;机器人数据太少,它又学不会精细操作。我个人经验是,起步阶段先把机器人数据质量提上去,至少保证每条轨迹的动作干净、无抖动、标签一致,再决定要不要加互联网数据。数据里如果有时间戳没对齐、指令描述和动作对不上这类脏数据,模型再大也没用。

2.3 WAM的取舍:牺牲语言泛化,换来实时与稳定

WAM的设计理念我理解成"少即是多"。它把世界动态预测和动作生成捆绑在一起,相当于在模型内部把"想"和"做"焊死。训练时会有两个损失:一个来自未来状态预测的自监督信号,一个来自动作和结果比较的监督信号。反向传播的时候两边互相影响,真正做到了"预测是为了做,做完了还要修正预测"。

这种设计带来两个直接好处:一是参数量比VLA小很多,推理延迟更低;二是动作输出的稳定性和平滑度更好,因为模型每一步都在用环境动态约束动作,不容易出现突变。代价就是语言泛化能力被砍掉了,模型换任务的能力很弱。你自己权衡的时候要清楚:在一条固定产线上追求节拍和精度,WAM路线比VLA更可能达到工业级的要求;但如果你做的是迎宾机器人、家庭助手,需要面对千变万化的指令,WAM就很难支撑了。

3. 核心能力对比:从"看"到"想"再到"做"的完整拼图

3.1 感知力对比:谁能真正看懂场景

三类模型都具备感知能力,但感知的目标完全不同。WM的感知是为预测服务的,它必须捕捉到环境动态的变化规律,否则下一帧预测必定失败,但它不太关心物体的语义标签,它更关心"这个物体可能往哪里移动"。WAM的感知围绕状态变化设计,它对物体的位置、位姿变化异常敏感,但对"这是什么材质""有什么用途"这类语义信息基本无视。VLA的感知是最接近人类直觉的,它继承了多模态大模型的语义理解能力,能识别物体、判断空间关系,还能理解隐含的指令,比如"杯子倒了,把它扶起来"包含的状态判断,VLA是可以通过语言和图像联合推理做到的。

3.2 推理与规划能力对比:谁能先想一步

WM的推理方式是基于模型的前向推演。它生成一串可能出现的未来状态,再由规划器从中筛选出最优动作序列,典型做法是配合MPC使用。这种方式的可解释性最好,因为每一步推演都可以回溯、可视化,但计算开销很大,而且预测误差会随推演深度变大。VLA的推理更像是语言的快思考,注意力机制直接让语义和视觉特征交互,一步生成动作,速度快,但它依赖训练分布,遇到分布外任务容易产生"幻觉动作"——看起来很合理,实际完全不可执行。WAM介于两者之间,它的推演被压缩成了世界动态和动作之间的隐式映射,对物理过程有较强的约束,但抽象逻辑推理能力较弱,多步长任务规划不是它的强项。

3.3 动作执行能力对比:谁真正输出电机指令

WM本身不直接输出动作,它输出的预测状态要交给规划器。VLA输出动作的方式则五花八门:RT-2把连续动作离散化成token,用自回归方式生成;OpenVLA直接回归连续动作值;π VLA则采用流匹配的方式生成平滑的动作轨迹。从实际体感出发,连续动作输出的VLA在精细操作上明显比离散token方案更稳,动作之间的抖动更小。WAM输出连续动作且天然受世界动态约束,执行稳定性和重复精度在固定任务上往往是最好的,这一点在真实机械臂上差异非常明显,VLA偶尔会犯"动作幅度忽大忽小"的毛病,而WAM驱动的策略就显得踏实许多。

下面这个表是我自己整理的三类模型对比,方便你做选型时快速对照:

对比维度WMWAMVLA
核心定位预测环境动态世界状态与动作耦合视觉-语言-动作一体
输入历史观测+动作历史观测+动作图像+语言指令
输出预测的未来状态/帧连续动作动作token/连续动作/动作序列
语义感知能力较弱中等强
任务泛化能力中中低高
推理延迟中等较低较高
可解释性好中差
训练数据需求大量环境交互数据高质量交互数据海量互联网数据+机器人数据
典型场景仿真数据生成、MBRL固定任务实时操控开放指令、多任务切换
代表模型/工作DreamerV3、Geniemodel-based policy系列RT-2、OpenVLA、π VLA、Alpamayo

4. 落地实操:把VLA放到LIBERO里跑一遍

4.1 为什么推荐LIBERO作为评测基准

聊完架构和原理,肯定有人想问:VLA到底怎么测?网上讨论最多的评测基准之一就是LIBERO。它来自乔治亚理工学院等机构,提供了一个统一的仿真环境,包含Spatial、Object、Goal和Long四个套件,总共50个操作任务。它的价值在于把机器人软件栈、相机布局、动作空间全部统一了,你不需要操心不同环境之间的平台差异,跑出来的成功率可以直接和别人横向对比。尤其是想发论文或者验证一个新VLA结构,LIBERO是目前口碑最稳、社区资料最全的选择之一。

不过要泼一盆冷水:LIBERO还是仿真环境,它的场景真实感和物理引擎的复杂度跟真机差距很大,在LIBERO上成功率高并不代表真机上就能稳定运行。我通常把它当作"模型能不能跑通基本任务"的试验场,而不是最终交付的判据。

4.2 训练和评测的关键步骤拆解

第一步是准备环境。建议用conda创建独立的Python环境,版本选3.8或3.9,装PyTorch的CUDA版本、MuJoCo和LIBERO源码依赖。LIBERO官方仓库里有requirements文件,直接安装会省不少事。

第二步是下载数据集。LIBERO把数据封装成hdf5格式,包含每个任务的演示轨迹、语言指令和元数据。下载后记得把数据路径配置到训练脚本里,注意尽量用绝对路径,这一步很多人会踩坑。

第三步是选择套件。我个人习惯先跑LIBERO-Spatial,因为空间关系类的任务对模型的空间理解要求高,问题暴露得最明显。如果连Spatial都搞不定,就不要急着上Long这种多阶段长时程任务。

第四步是训练。官方仓库带了不少基线模型,比如RoboFlamingo、RoVi-Aug等。训练过程本质是模仿学习加少量数据增强,脚本会从经验池里不断抽取数据,把图片序列和语言指令编码成表征,再解码成动作。显存至少要24GB,建议直接用40GB以上的A100或4090,不然batch size提不上去,效果会打折扣。

第五步是评测。评测脚本会自动加载checkpoint,在每个任务上跑若干轮测试,通常看100轮测试中的成功率。重点要观察模型是否出现"动作抖动、任务卡死、反复执行上一步"之类的典型问题,这些现象往往比成功率更能说明问题。

4.3 常见问题与排查技巧实录

我在跑LIBERO时遇到过几个比较典型的坑,列出来供你参考。

第一是显存溢出。处理办法很简单,调小batch size、降低图像分辨率,或者用gradient checkpointing。但是batch size降到一定程度会影响稳定性,我自己一般保持在per-gpu batch size大于等于8的前提下调整。

第二是任务成功率波动大。这在仿真任务里很常见,不同的随机种子可能差出10到20个点。解决办法是多seed取平均,比如跑5个seed,把成功率的中位数和方差都报告出来,这样才有说服力。

第三是模型中途卡死。如果你的VLA在任务进行到一半时开始原地踏步,优先检查动作尺度是否匹配LIBERO的动作空间范围。LIBERO的动作序列有边界控制,输出超出边界会被强行裁剪,导致机械臂动作非常奇怪。可以在模型输出层加一个动作缩放的线性层,把输出范围明确映射到环境动作空间。

第四是数据路径错误。LIBERO对绝对路径依赖很强,相对路径经常会在某个子模块里突然找不到文件,建议从一开始就统一用绝对路径配置。

5. 典型模型与场景应用:VLA不是一条路走到底

5.1 两个方向上的代表:π VLA与NVIDIA Alpamayo

当前VLA方向的进展非常多,但从落地视角看,有两个代表值得重点关注。一个是Physical Intelligence的π VLA,它把流匹配动作专家和大语言模型结合起来,输出高频且平滑的连续动作,在需要精细力控的操控任务上表现很突出。另一个是NVIDIA面向辅助驾驶场景开源的VLA推理模型Alpamayo,这个命名来自现实中的一座山峰,它的侧重点是把VLA模型压缩到车载硬件能实时推理的规模,直接接收传感器画面和驾驶语义信息,输出底盘控制信号。

这两个案例放在一起非常有意思:π VLA在实验室里追求操作泛化和精度,Alpamayo在工程上追求推理效率和轻量化,说明VLA并不是一个锁死架构,它是一套可以按场景裁剪的建模思路。你在评估一个新模型时,不要只盯它效果多好,一定要看它是否针对某个真实约束做了专门设计,这个约束往往是它真正能落地的原因。

5.2 从辅助驾驶到工业操作:不同场景怎么选模型

辅助驾驶场景和室内机器人有个共同点:输入都是连续视频流,输出都是连续控制信号,但辅助驾驶对延迟的敏感度更高,所以Alpamayo这类模型才需要在推理优化上死磕。工业操作场景则是另一个极端:任务重复固定、动作要求高精度、环境相对可控,这类场景里VLA有时反而"杀鸡用牛刀",因为语言理解能力根本用不上,还白白增加了延迟和成本。很多做工业应用的朋友告诉我,他们在产线上最终用的还是传统控制器配合WAM式的策略,把感知和动作闭环做到极致,稳定性比任何大模型都可靠。

选型这件事,本质上是把你的真实约束列出来逐条比:有没有复杂的语言指令?任务切换频率高不高?延迟预算多少?数据能拿到多少?每一条都会改变最终答案。没有最好的模型,只有最合适的模型。

5.3 混用策略:把WM、WAM、VLA放进同一条流水线

我最近在项目里越来越倾向于混用这三类模型,而不是押注某一条技术路线。典型做法是:用VLA做任务级的语义理解和阶段规划,把"把螺丝拧进去"分解成"移动到螺丝位置、对准、下压、旋转"几个步骤;然后每一小步的精细动作交给WAM或传统的基于模型控制器执行;整个过程再配一个轻量级WM对状态做监控和异常预警。这种分层设计既拿到了VLA的泛化能力,又保住了底层执行的高实时性,还能用WM给系统加一层安全兜底。

当然,混用带来的工程复杂度会上升不少,你需要在不同模块之间解决通信延迟、状态同步和异常处理的问题。如果你刚开始接触,我建议先从一个VLA模型在LIBERO上完整跑通链路,再慢慢加WM做预测监控,最后再考虑要不要引入WAM替换底层控制器,每一步都留足验证时间。

写在最后的经验之谈

我自己最大的感受是,这三类模型不是替代关系,而是各自回答了不同层面的问题。VM回答"接下来会怎样",WAM回答"这一下该怎么动",VLA回答"听懂指令后整件事该怎么做"。真正做机器人项目时,最怕的就是拿一个看起来很前沿的VLA模型直接上真机,结果被延迟、抖动和成本拖垮。先把小规模问题在仿真环境里跑透,再根据任务重难点决定用哪类骨干模型,这是比较稳妥的路径。

最后分享一个小技巧:不论你最后选哪一类模型,第一优先级永远是数据质量。动作轨迹抖动大、标签对不上、时间戳不齐,这些问题不清理干净,任何模型结构都救不回来。先把数据治明白,模型效果自然就上来了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询