ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

从世界模型到VLA再到WAM:机器人学习的三层递进解析

从世界模型到VLA再到WAM:机器人学习的三层递进解析 先聊点实际的如果你最近几个月一直在刷机器人学习相关的论文和开源项目大概率已经被 World Model、World Action Model、VLA 这几个词轮番轰炸了。有人喊“VLA 才是机器人的 ChatGPT”有人反驳说“没有世界模型的 VLA 只是高级反射弧”还有人把 WAM 当成缝合怪。作为一路从传统控制、模仿学习折腾到端到端模型的人我的感受是这三个东西的边界确实被说乱了但它们之间的关系并非非此即彼而是一条从感知、认知到执行的递进链条。这篇内容我就从“看”、“想”、“做”三个层次出发把 WM、WAM、VLA 的底层逻辑、各自痛点、训练方式、部署感想全部摊开来讲力求给正在选方向、做技术选型或者准备入坑的同学一份能直接抄作业的参考。1. 内容整体设计与思路拆解1.1 先搞清楚三个概念分别解决什么问题先说 WM也就是 World Model世界模型。这个概念的源头可以追溯到 David Ha 和 Jürgen Schmidhuber 2018 年的工作本质是让模型学习一个环境的内部表征通过对状态转移的预测来模拟“如果做了某个动作环境会变成什么样”。它最打动人的一点是有了世界模型智能体可以在“脑子里”做规划预先推演几条路径而不是每次都在真实世界里试错。相当于你开车到一个陌生路口之前先在心里跑一遍不同走法的结果。然后是 VLAVision-Language-Action Model视觉-语言-动作模型。这是近两年具身智能赛道最火的范式典型代表有 Google 的 RT-2、RT-X以及国内一些开源项目。VLA 的核心是把视觉输入和语言指令一起扔进一个大模型中直接输出动作 token形成了一个“感知-理解-决策”的端到端映射。它厉害的地方在于能借助互联网级别的图文数据完成跨模态理解并且可以通过自然语言指令灵活指定任务目标。最后是 WAMWorld Action Model世界动作模型。这个概念最近才被广泛讨论主要推手是 Physical Intelligence 发布的 π0.5 相关工作。WAM 的定位更像一个桥梁既要有世界模型的想象能力也要有动作策略的执行能力。换句话说WAM 不满足于“知道环境怎么变”还要求“知道该怎么动”并且把这两种能力整合在同一个模型框架里而不是两条独立 pipeline 拼接。为了让你快速抓住差异我习惯用一句话概括三者的关系WM 回答“接下来会发生什么”VLA 回答“看到这个、听到指令后该做什么”WAM 则同时回答“如果这么做会发生什么、以及此刻该怎么做”。1.2 为什么最近 WAM 突然被频繁提及说实话WAM 这个概念并不是全新的。早在 2019 年左右就有研究者在做 latent world model 与 policy 联合训练的工作只是当时没有一个统一的称呼。最近被重新包装并推上台前我认为有三个直接诱因。第一纯 VLA 方案在实际部署中的天花板开始暴露。VLA 本质上是一个输入到输出的条件映射它对训练数据之外的状态转移缺乏想象力。比如说你让它在桌面上抓杯子它可以做得很好但如果你把杯子碰倒让它把杯子扶起来再放回原位这类需要多步闭环推理的任务VLA 就会显得机械因为它不理解“杯子倒了之后会发生什么”只是机械地匹配已有的动作模式。第二机器人数据还是太贵。相比互联网文本和图片机器人交互数据的采集成本极高。世界模型有一个显著优势它可以通过自监督的方式学习环境动态甚至能用视频生成来做数据增强。于是大家开始想能不能让世界模型负责“想象”动作策略负责“执行”两者共用一套表征这样既降低数据需求又能提升泛化能力。WAM 就是这个思路下的产物。第三长程任务和可解释性需求倒逼。你会发现当前很多 VLA 论文在短程、单步操作上效果惊艳但一到长程任务就拉胯要么出现累计误差要么在中间步骤偏离指令。而世界模型天然具备预测和规划能力可以把长程任务拆解成多步推演。所以把世界模型和动作策略耦合起来就成了应对长程操作的一个自然选择。1.3 分清“联合训练”和“单独拼接”的路线取舍在谈到 WAM 的实现细节之前有必要先把路线问题讲清楚。现在做 WAM 大致有两条技术路径。一条是“联合训练”路线。模型同时被训练去做两件事一是预测未来的视觉/状态表征二是输出当前步的动作。这两者在训练时共享大部分网络参数只是在输出头分成两个分支。优点是表征能力更统一世界模型的预测能力可以直接帮助动作决策缺点是训练难度大损失函数怎么加权需要精细调不然容易出现顾此失彼的情况。另一条是“独立模块拼接”路线也是 π0.5 早期采用方案的思路。世界模型部分单独用大量视频数据做预训练动作策略部分用真实的机器人交互数据做微调最后把两个模块通过一个中间表征比如 visual token 序列耦合起来。优点是更灵活两个模块可以各自迭代、各自升级缺点是需要设计中间表征的接口如果两个模块的表征空间不匹配融合效果会大打折扣。所以如果你看到一个工作说自己做了 WAM先别急着看效果指标先去翻它的模型架构和训练流程搞清楚它是真联合训练还是在外面套了一层世界模型壳的普通 VLA。2. 核心原理拆解从“看”到“想”再到“做”的递进2.1 VLA 的“看”到底是怎么工作的VLA 的输入侧通常有两路一路是视觉编码器比如 ViT抽取的图像特征另一路是语言指令经过 tokenizer 后的文本特征。两条特征会在模型的某个中间层对齐然后送入一个 transformer 主干网络。这个主干网络完成跨模态融合之后输出 head 不是生成自然语言而是生成动作 token动作 token 经过逆归一化之后变成机器人各关节的目标位置或者末端执行器的位姿增量。我拿 Google RT-2 的结构来举例。RT-2 是在一个预训练过的视觉-语言模型VLM基础之上把输出层从文本 token 换成动作 token 来微调。它最聪明的做法是动作也被表示成文本一样的离散 token比如把关节角度的数值范围离散化成 256 个 bin这样模型不需要真正生成连续数值只需要做 token 级别的分类。这个设计的最大好处是可以直接复用 VLM 的能力缺点是离散化会带来精度损失尤其在需要精细力控的场景里256 个 bin 往往不够用。所以后来也有不少工作尝试连续动作输出比如直接回归关节角度的连续值但效果取决于损失函数设计和数值稳定性。我的实际感受是在做桌面抓取、搬运这类对精度要求不极端苛刻的任务时离散 token 足够用而且实现难度低很多但一旦涉及插孔、拧螺丝这类需要亚毫米级精度的操作建议认真对比连续输出方案。2.2 WM 的“想”是如何建立环境认知的世界模型的核心目标是学习一个状态转移函数。形式化地说给定当前状态 s_t 和动作 a_t模型要预测下一状态 s_{t1}。但这里有个关键问题状态 s 应该用什么表示是原始像素还是低维的 latent 特征早期工作比如 World Models 论文用的是 latent representation先训练一个 VAE 把高维图像压成低维向量再用一个 RNN 在低维空间里做预测。这样训练效率高但会丢失大量细节导致预测不精准。后来 Dreamer 系列的做法是直接在 latent 空间学习 dynamics同时用 reconstruction loss 保证 latent 表征不偏离真实分布。到了现在的视频生成时代世界模型又多了一种形态直接用 diffusion 模型预测未来的视频帧。比如最近的很多工作把世界模型做成一个 video generator输入当前帧和动作条件输出未来几秒的视频。这种方式生成的未来画面细节丰富而且人类可以直接“看”模型的想象过程可解释性很好。缺点是需要消耗巨大的算力推理速度也远达不到实时控制的要求。这里我得提醒一句世界模型不等于视频预测。视频预测只是世界模型的一种实现方式尤其在机器人控制这个场景里我们更关心的是预测出来的状态对决策有没有用而不是像素级别的还原度有多高。很多评测只看视频生成质量其实是被带偏了。2.3 WAM 的“做”世界模型和动作策略如何合体现在把 WM 和 VLA 合体成 WAM 的时候最核心的问题变成世界模型预测出的未来状态信息要怎么注入到动作策略里目前在开源项目里能看到的方案大体分三类。第一类是“预测-规划”式模型先做若干步想象在想象空间中搜索一条最优动作序列然后执行第一步再重新规划。这种做法的优点是可以利用模型自身的预测能力完成多步推理缺点是搜索空间大、实时性差目前主要用在仿真导航或低速操作中。第二类是“特征注入”式。世界模型分支去预测未来的 latent state把这个预测结果作为额外的条件特征拼到动作策略的输入里。动作策略本身还是一个 VLA 结构只是输入除了当前视觉和语言指令之外还多了一个“未来状态嵌入”。这个设计比较轻量改动小但有一个隐患如果世界模型预测得不准反而会误导动作策略所以在训练时要非常小心地控制预测分支的 loss 权重。第三类是“目标生成”式。世界模型直接产出一个子目标图像或目标位姿动作策略再以这个子目标为指令去执行。比如拿一个杯子倒水的任务世界模型预测出“下一步应该把手移动到杯柄处”这个中间目标然后策略去执行。这种方式的好处是中间结果容易可视化调试方便缺点是子目标的定义比较困难不是所有任务都能清晰拆解出中间目标。从实际效果来看我目前比较看好第二类和第三类的结合世界模型先产生中间子目标再以子目标作为额外条件输入到动作策略中。这个思路在长程任务中表现最明显策略不会因为一步走偏就彻底迷失方向。3. 实操对比训练数据、模型结构、部署表现3.1 三者对数据需求的差异有多大聊机器人模型数据永远是绕不开的话题。WM、WAM、VLA 这三者在数据需求上的差异直接决定了你的项目到底能不能落地。VLA 对数据质量要求极高通常需要大量带语言标注的机器人操作数据。你不仅要有“拿起红色杯子放到蓝色托盘”这类多样化的指令形式还要保证动作轨迹的质量足够好。因为 VLA 本质上是行为克隆如果数据里充满了失败轨迹或者低效动作模型学到的策略就会带着这些坏习惯。WM 对数据质量的容忍度相对高一些因为它不需要精确的动作标签而是从状态转移中学习环境动态。你可以用大量无标注视频数据做自监督预训练甚至用仿真环境低成本采集。这是让我觉得世界模型在数据稀缺场景下特别有价值的原因。但 WM 对数据的覆盖度要求很高环境状态分布不能太单一否则想象出来的未来会很飘。WAM 最为特殊因为它的数据需求取决于实现方式。如果采用联合训练路线你需要同时提供“状态转移对”和“动作标签”对数据格式的一致性要求很高如果采用模块拼接路线你可以分别用视频数据训练世界模型部分、用操作数据训练策略部分数据需求最灵活。这也是为什么现在很多团队做 WAM 时会走拼接路线的原因毕竟能省很多数据成本。3.2 模型架构选型的几个关键考量在做架构选型时我会从以下四个维度做评估知识迁移能力、决策实时性、长程推理能力、可解释性。VLA 的架构优势在于知识迁移。因为底层是 VLM继承了互联网图文知识的理解能力能够处理一些抽象指令比如“把它放在左边那叠书旁边”对“左边”和“那叠书”的理解可以做得很好。但在实时性上有明显短板尤其是参数量较大的 VLA在单张 GPU 上推理一次可能需要几百毫秒甚至秒级很难直接用于高动态控制场景。WM 架构的可解释性最好。如果世界模型以视频生成的形式实现你可以直接看到模型预测的未来画面马上能判断它是不是“想对了”。但决策实时性比 VLA 更差因为做一次规划往往需要多步预测每次预测都是一次模型前向。在灵巧操作这种需要 10Hz 以上控制频率的场景里纯 WM 规划不现实。WAM 目前看起来是最容易平衡实时性和能力上限的选择。通过在联合训练中把世界模型分支和动作策略分支共享大部分计算推理时只走动作策略分支世界模型分支可以按需启用。这样既能保持较高的控制频率又能保留多步推理的潜力。当然这是架构设计层面上的优势具体能不能兑现还得看你训练得怎么样。3.3 一张表对比三者的关键属性维度WM世界模型VLA视觉-语言-动作WAM世界动作模型核心目标预测环境动态建立内部想象空间建立视觉语言到动作的直接映射融合环境预测与动作决策形成闭环主要输入状态序列、动作序列当前图像、语言指令当前图像、语言指令、历史状态/预测状态主要输出未来状态图像、feature、状态向量动作指令关节角度/末端位姿动作指令 未来状态预测数据需求大量无标注状态转移数据对质量容忍度高高质量、带语言标注的操作数据取决于路线联合训练需带状态动作的数据拼接路线更灵活泛化能力对动态变化感知好但对任务理解弱对语义指令理解强但对环境动态缺乏推演两者兼得但要平衡好预测与决策的权重实时性最差中等取决于模型规模中等偏优推理时可按需启用预测分支典型任务仿真导航、运动规划桌面抓取、简单操作长程操作、动态环境中的多步任务可解释性最好可生成未来帧可视化最差端到端黑盒中等可通过预测分支解释决策合理性3.4 我踩过的坑单纯堆模型参数的教训有一段时间我也迷信一个想法以为把 VLA 的模型规模做大效果就自然上去了。毕竟 NLP 和视觉领域都是这么走过来的但机器人领域有个本质区别你没有足够的数据去喂饱一个超大模型。我用 7B 规模的 VLA 做了一次实验在单任务仿真数据集上效果反而不如 300M 的小模型原因很简单数据量不足以支撑大模型的参数拟合过拟合得非常严重。后来我切换到 WAM 思路之后把模型容量用在“预测分支”上而不是“动作分支”上情况好很多。世界模型分支学到了环境动态之后动作分支的输入信息量更充足哪怕动作分支本身是个小网络也能做出不错的决策。这个经验让我想明白一件事在数据受限的机器人领域与其卷参数规模不如卷表征质量。这一点我觉得 WAM 的设计哲学是对的。4. 从技术选型到部署落地新手入坑与团队实践建议4.1 新手入坑先跑通一个最小闭环如果你刚接触这些概念不要一上来就追最复杂的 WAM 方案。我的建议是分三步走。第一步选择一个成熟的 VLA 开源项目把预训练权重下载下来在仿真环境或者真实机器人上跑通一个最简单的抓取任务。RT-1 的开源实现或者是基于 OpenVLA 的部署仓库都可以。这一步的目的是让你直观感受 VLA 的输入输出格式以及它对指令的响应方式。第二步找一个世界模型的代码库建议从 DreamerV3 的复现版本入手在 MuJoCo 环境里训练一个机器人控制任务。你会发现世界模型在低维状态输入的情况下收敛非常快而且能明显感受到它学会了在“想象”中规划动作。这个阶段你不需要使用真实图像先用状态向量跑通。第三步尝试做简单的融合。比如把世界模型的 latent state 拼接到 VLA 的动作 token 输入中不要做到很复杂只需要在仿真里验证一下加了预测状态之后任务成功率是否有提升。这一步能帮你建立对 WAM 最直观的体感远比你读十篇综述管用。4.2 团队实践从需求出发定方案而非追新概念如果你是带着团队一起做决策我的建议就更直接了不要为了用 WAM 而用 WAM而是先看你任务的特征。如果任务偏短程、操作对象固定、场景简单比如工业分拣这种VLA 就足够了。你不需要额外引入世界模型维护成本和推理复杂度都是多余的。如果任务需要在未知或者稀疏环境中做导航、探索或者需要根据场景变化动态调整策略那 WM 或者带规划能力的模块更重要动作策略反而是次要的。如果你的任务属于长程多步操作中途可能遇到物体状态变化比如整理桌面、做菜、装配这类那 WAM 思路的价值会最大。它可以让模型在中间过程“多想一步”减少犯错几率。另外我要特别强调一个团队协作的细节跨模块接口设计一定要尽早确定。很多团队做 WAM 失败不是模型效果不行而是世界模型产出的表征与策略模块的表征对不上导致两边数据流不通。建议在项目启动阶段就把“中间表征的规范”写清楚是使用固定维度的特征向量还是使用 token 序列需要尽早拍板。4.3 部署中的常见性能瓶颈与优化思路模型选型定了部署阶段还有几个容易被低估的性能瓶颈。第一个是视觉编码器的推理开销。无论是 VLA 还是 WAM视觉编码器处理的图像分辨率直接影响推理延迟。如果你用的是 224x224 输入还需要全局 attention那么在嵌入式平台上很难做到实时。一个常见的优化手段是降低视觉编码器的更新频率比如以 5Hz 的频率更新视觉特征动作策略使用异步缓存的方式读取最新特征。虽然牺牲了一点点感知实时性但对很多非超高动态任务来说完全够用。第二个是多模态输入的 token 数。语言指令和视觉特征加在一起可能会产生成百上千的 token这会直接影响 transformer 的计算量。常用的方案是做 token 融合压缩比如用 Q-Former 类的结构把视觉 token 压缩到几十个或者使用 Perceiver Resampler 做降采样。你把 token 数降下来推理速度马上就上来了。第三个是动作输出的平滑性问题。很多 VLA 输出的动作在时序上会有抖动直接用于机器人控制会导致末端抖动甚至损坏硬件。建议在输出层之后加一个低通滤波或者动作缓存平滑模块。从我的经验看一个简单的指数滑动平均就能把大部分高频抖动滤掉且几乎不增加额外延迟。4.4 开源项目评测与复现建议目前如果你想快速复现和评测这三类模型有几个值得推荐的开源项目。VLA 方面OpenVLA 是目前最活跃的社区项目之一提供了完整的训练和推理代码在任务成功率、迁移能力上表现比较均衡适合做基线。WM 方面DreamerV3 的官方实现或者社区的高质量复现是你理解世界模型训练流程的必读代码。WAM 方面可以重点关注 Physical Intelligence 的 π0 相关代码和近期公开的 WAM 预训练框架但需要提醒的是这类项目对环境依赖和硬件要求往往比较高建议先在仿真环境里跑通再考虑迁移到真机。从我个人的复现经验看有几个容易踩的坑需要提前防范一是明确区分训练环境和推理环境很多代码库在训练时用 GPU 大 batch 推理在部署时换成 CPU 或者低功耗 GPU数值表现可能完全不同二是注意模型的归一化参数VLA 和世界模型训练时使用的动作归一化、图像归一化参数必须固化否则部署时模型表现会断崖式下降三是多模型拼接时模块间的版本管理很重要不然世界模型更新了、策略模型没有同步更新接口就会悄悄不兼容这种 bug 排查起来极其痛苦。5. 常见问题与排查技巧实录5.1 为什么我的 VLA 在仿真里效果好、真机上就拉胯这是被问得最多的问题。原因通常是 sim-to-real gap但细拆下来有几类。一是视觉域差异仿真渲染的图像纹理、光照和真实相机捕捉的差异会被视觉编码器感知为不同的分布二是动力学差异仿真中的摩擦、质量、关节阻尼和真实硬件不一致导致同样的动作在真机上产生不同结果三是控制频率差异仿真里你可以用很高的控制频率而真机底层可能有通信瓶颈导致动作执行延迟。排查思路先在真机上做一轮数据采集把真实图像和动作数据拿来和仿真数据一起做分布对比重点看视觉特征分布和动作边界分布。如果迁移失败的主要原因是视觉差异建议在训练时加入随机化纹理、光照和相机位置的域随机化策略如果是动力学差异建议建立精准的系统辨识模型或者在训练中引入扰动。还有一个很多人忽略的细节真机部署时一定要检查动作命令的单位。代码库里关节角度、角速度、力矩单位不统一是迁移失败最常见也最难排查的原因。建议在接口层统一做单位校验至少写一个 sanity check 脚本让机器人空跑一段轨迹确认执行值和目标值一致再进入正式任务测试。5.2 世界模型训练不收敛loss 下不去怎么办世界模型训练不收敛我遇到的情况大多出在状态表征和预测目标上。如果预测目标是原始像素模型会花大量容量去还原静止背景而对前景物体的动态预测能力反而弱。我建议把 loss 权重做一下重构背景区域权重降低前景运动区域权重提高。具体可以通过光流或者帧间差分提取运动掩膜再基于掩膜调整 loss 权重。另一个常见问题是 latent state collapse。也就是编码器把不同的输入映射到了相近的表征上导致世界模型没法有效区分不同的状态。这种情况下可以尝试增大 KL 惩罚项的权重或者在 latent 空间里加一个对比学习 loss让不同状态在表征空间里尽量分散开。我在实验中前者见效快但可能损伤重建效果后者训练更稳定但对实现复杂性要求高一些。还有一个容易被忽视的问题是训练步数不足。世界模型本质上是学习一个连续动态系统它的收敛速度比判别式模型慢得多。很多开源实现里默认的训练步数可能不够如果你的数据量不大建议先用小模型、大 batch size、长时间跑观察 loss 的平稳下降趋势再逐步增加模型容量和训练步数。5.3 加上世界模型之后任务成功率反而下降这是一个非常反直觉的问题。我一开始也遇到过加了世界模型的预测分支之后短程抓取任务成功率不升反降。原因排查下来是世界模型的预测误差干扰了策略判断。世界模型在训练时对多步预测的误差会累计到第 5 步、第 10 步时预测的未来状态可能与真实状态相差很远策略拿着这个不准确的预测去做决策自然被带偏了。解决方法有两个方向。方向一是限制预测步数只在执行当前动作前做一步或者两步的预测不让预测距离过长。方向二是把预测结果从“硬条件”变成“软辅助”也就是在策略网络里用 cross-attention 的方式让预测特征参与决策而不是作为直接输入拼接到状态向量后面。这样策略可以自主决定要参考多少预测信息模型会逐渐学会在预测可靠时更信任预测在预测不可靠时回归到纯感知决策。5.4 快速定位问题的小技巧调试这类模型我有一套自己的排查顺序。先检查输入输出格式再检查 loss 曲线最后才看任务层指标。格式问题最多也最好修。loss 曲线能告诉你模型到底学到了什么。如果 task success rate 上不去但 loss 在正常下降说明任务评估和模型目标之间有偏差可能需要重新审视评估协议而不是盲目调模型。还有一个高频问题多个模型模块之间使用不同的深度学习框架可能导致 tensor 形状、数据类型不一致这种报错往往在数据流进入神经网络之前很难发现。我习惯在模块边界统一加一层类型检查和形状检查一旦维度不匹配就立刻报错而不是等到训练跑了一阵子才发现。这里也分享一个非常实用的小技巧在模型结构里加一个“不可训练的状态预测头”专门用来监测预测分支在训练过程中的精度变化。它不参与梯度回传但会定时输出预测误差这样你可以随时知道世界模型分支到底学得怎么样而不会被主任务的 loss 曲线掩盖真相。6. 一些更前沿的探索开篇提到过和 WAM 相关的热词里还有 nvidia alpamayo 面向辅助驾驶的开源 VLA 推理模型以及 VLA 如何在 libero 上进行测试在这些方向上也快速补充几句。NVIDIA 的 Alpamayo 如果按辅助驾驶的场景理解把 VLA 从桌面机械臂扩展到车辆这种高动态平台最大的变化是实时性要求完全不同。车辆控制要 30Hz 甚至更高而当前大模型 VLA 的推理速度和可靠性还远不能满足这个要求。我个人的判断是面向这种场景的 VLA 大概率会走“双系统”路线一个快速反应的策略网络负责执行一个相对较慢的规划模型负责整体推理。这和 WAM 的“策略预测”架构在哲学上非常接近只不过执行端的实时性约束更加硬核。至于 Libero 这个 benchmark它目前是测评 VLA 在真实任务里泛化能力的一个重要平台提供了多任务、多场景的仿真环境。如果你想评测 VLA/WAM 的泛化能力而不只是单任务内插能力用它来做测试是很合适的选择。测的时候要特别注意任务数、训练测试场景的划分方式因为这些设计对结果影响极大。有一些小组会人为制造障眼法比如只在某个任务上微调就能刷分而不是真正提升模型的跨任务泛化能力读者在对比论文数据时要多留个心眼。多模态大模型快速迭代模型架构和概念还在快速演化前两年大家还在争论 VLA 是不是伪需求现在 WAM 已经成了新的灯塔。但在我看来普通工程师没必要被概念牵着走更关键的是理解它们各自解决的核心问题以及在自己的任务场景中怎么组合使用。不管最后是叫 VLA 还是 WAM能稳定、高效地在真实环境中完成长程任务的模型就是好模型。最后再多说一句我倾向于认为未来一两年内的真正突破不会来自某一个单独模型而是来自“世界模型提供想象 语言模型提供指令理解 动作策略提供执行”三者深度耦合的系统。而 WAM 的意义就是第一次让我们在统一的模型体系里把这三件事串了起来。如果你也正在这条路上摸索希望这篇从概念到实操的梳理能让你少走几步弯路。
返回列表