机器人如何“想象未来“:隐空间世界动作模型 LaWAM 深度解析
0. 简介
这两年从 VLA 到世界模型再到各种"动作 + 未来"的混合体,几乎每个月都有一个新名字冒出来,让人怀疑这究竟是范式更替还是术语通胀。LaWAM 是其中少数让笔者愿意停下来读完代码与消融的一个,因为它没有去堆更大的视频生成底座,反而把"未来预测"整体搬进了一个紧凑的视觉隐空间,用一个仅 230M 参数的小模型,换来了相比像素空间世界模型最高 24 倍 的推理提速,同时把 LIBERO 成功率推到 98.6%。这篇文章会把论文的核心思想、关键代码段、训练目标与实验数字逐一拆开,让你读完既看得懂它为什么快,也看得懂它为什么准,还能知道它在具身智能路线图上站在哪个位置。
为了让没读过原文的读者也能跟上,本文会尽量沿着论文自身的脉络推进:先讲清动机与整体框架,再逐层拆开两条核心机制、训练目标与推理流程,最后落到实验数字与它在路线图上的定位。本文基配套资源如下:arXiv 论文 · 项目主页 · 代码仓库 · Hugging Face 模型。
1. 为什么这么做
1.1 从一条折毛巾视频看清问题
设想一台双臂机器人正在折毛巾:它先把毛巾抖开铺平,接着沿长边折两道,再沿短边折一道,即便是熟练的遥操作员,完整走完这套流程也要约七十秒。真正的麻烦在于,物理世界不会停下来等机器人思考——布料在动作过程中持续滑动、起皱、回弹,上一刻还合适的抓取点,下一刻可能已经偏了几厘米。如果机器人的"思考",也就是它对未来的预测,慢上几百毫秒,等动作真正落下时,它面对的已经是一块和预测对不上的布。这正是动态、可形变物体操作的核心难点:未来必须在动作还来得及调整时被算出来,而不是事后才补上。
直觉理解:把这件事类比成在高速公路上并线。老司机不是等并完线才去看后视镜,而是在打方向之前就在脑子里"预演"了车将滑到哪个位置。机器人若要稳,也得在动手之前就有一份"接下来场景会变成什么样"的预判,而且这份预判必须快到能赶在动作之前生成出来。
1.2 现有路线的三个缺口
过去一种很直觉的做法,是让模型先"画"出未来的画面,再让机器人照着画面行动,这条路线被称为像素空间的世界动作模型(World-Action Model, WAM)。它生成一段未来视频或一组未来图像,策略再据此输出动作。人类看这种未来很顺眼,因为它和我们眼睛看到的世界长得一样。但对一个需要实时控制的系统来说,逐像素重建整段画面,意味着把大量算力花在纹理、光照、背景这些和"下一步该怎么动"几乎无关的细节上。论文给出的对比很说明问题:在相同评测设置下,代表性像素 WAM 方法 LingBot-VA 完成一次策略推理需要 4482 毫秒,而普通 VLA 模型 π₀.₅ 只要 220 毫秒。
把现有路线摊开看,缺口集中在三处。第一,多数 WAM 预测的是未来图像或视频,把建模能力大量投入像素级合成,而非紧凑的、与动作真正相关的动态信息。第二,迭代式的未来生成带来可观延迟,前面的 4482 毫秒就是典型代价。第三,对操作任务真正有用的未来,应当暴露"下一段动作会把场景推向什么状态",而不只是生成一段视觉上合理、看起来符合任务的画面。这三点叠加,使得"想象未来"在真实控制回路里成了奢侈品。LaWAM 要解决的,正是如何让这份未来既便宜又有用。

2. 整体框架:把未来搬进隐空间
2.1 输入输出接口与隐空间视觉子目标
LaWAM 的出发点可以浓缩成一句话:把整个未来预测从像素空间整体搬进视觉隐空间。它不再生成未来图像,而是直接预测一个动作相关的未来特征,论文称之为隐空间视觉子目标(latent visual subgoal)。直观理解是,这是一张专门画给动作策略看的"未来动作提示图":它保留物体将如何移动、接触区域将出现在哪里、当前动作会把场景推向什么状态这些控制真正需要的信息,同时省掉纹理、光照、背景这些对下一步动作帮助有限的细节。这张提示图不给人看,而是直接交给一个"动作专家"模块去解析并生成动作块。
先看数学上的基线,这能帮我们看清不同路线到底差在哪一项。一个标准 VLA 不引入任何关于未来的显式建模,它直接学习在当前观测 o o o 和指令 l l l 条件下生成一整段动作块 a 1 : T a_{1:T} a1:T 的条件概率,所有对场景如何演化的理解都被隐式地压进了网络权重里:
p ( a 1 : T ∣ o , l ) p(a_{1:T} \mid o, l) p(a1:T∣o,l)
世界动作模型走的是另一条路,它把一个预测出的未来 o T o_T oT(动作时域末端的观测)显式地暴露给策略,让动作生成可以参考"场景接下来会变成什么样"。这样一来,原本的联合概率就被自然地分解为"未来预测"和"逆动力学"两项,前者负责想象未来,后者负责把想象映射回具体动作:
p ( a 1 : T , o T ∣ o , l ) ⏟ 联合 = p ( o T ∣ o , l ) ⏟ 未来预测 ⋅ p ( a 1 : T ∣ o , o T ) ⏟ IDM \underbrace{p(a_{1:T}, o_T \mid o, l)}_{\text{联合}} = \underbrace{p(o_T \mid o, l)}_{\text{未来预测}} \cdot \underbrace{p(a_{1:T} \mid o, o_T)}_{\text{IDM}} 联合 p(a1:T,oT∣o,l)=未来预测 p(oT∣o,l)⋅IDM p(a1:T∣o,oT)
这里第二项扮演逆动力学模型(Inverse-Dynamics Model, IDM)的角色,把"想要的视觉未来"映射回动作。核心问题在于第一项:如果 o T o_T oT 是高维像素图像或视频,这一项的生成代价极其昂贵。LaWAM 保留了这个"未来条件"的结构,但把未来整体映射到一个冻结视觉编码器的特征空间里,从根上避开像素重建。
2.2 训练与推理的关键不对称
这套框架最值得玩味的,是它在训练时和推理时的角色不对称。训练时模型能拿到真实的未来观测 o T o_T oT,于是可以反推出"动作意图"再去监督世界模型;推理时真实未来尚未发生,模型必须先把意图猜出来,再由世界模型展开成子目标。这层不对称正是后面所有设计的源头:它解释了为什么需要一个逆动力学编码器只在训练时存在,也解释了为什么需要一个策略先验在推理时顶替它的位置。下图是论文给出的两阶段总览,把这套不对称画得很清楚。
3. 第一条核心机制:隐动作模型 LAM
3.1 为什么不能直接翻译人手动作
LaWAM 的技术根基是隐动作模型(Latent Action Model, LAM)。它最初要解决的是一个很现实的难题:如果想让机器人从人类第一视角视频里学动作规律,没法直接把"人手怎么动"翻译成"机械臂关节转多少度"——人手的关节、机械臂的关节、夹爪形态、控制频率全都不一样,强行翻译几乎必然出错。更可行的做法,是先学一种抽象的动作意图,它不描述某个关节转多少度,而描述"当前画面到未来画面之间发生了什么变化"。这样一来,海量没有动作标注的人类视频就能被利用起来,成为机器人学习物理规律的素材。
3.2 被复用的解码器:从辅助件到世界模型
LAM 的结构很对称:一个逆动力学编码器看一对"当前视觉状态 + 未来视觉状态",从中推断出一个隐动作 z z z;一个解码器再根据"当前状态 + 隐动作"去预测未来状态。过去大量工作的注意力都集中在隐动作 z z z 本身——它该离散还是连续、怎么正则化、能否跨本体迁移——而把解码器仅当作训练时的辅助件,预训练完就丢弃。LaWAM 的关键一步反其道而行:它保留这个解码器,因为这个解码器其实已经学会了"给定当前视觉特征和一个动作意图,预测出未来视觉特征",这恰恰就是一个隐空间里的世界模型。论文把它命名为隐空间世界模型(Latent World Model, LaWM)。下图展示了 LaWM 预测出的子目标如何用热力图标出动作即将接近的交互区域,并引导机械臂逐步推进。


3.3 代码透视:隐空间中的 LAM
下面这段是第一阶段的核心:在冻结视觉编码器的特征空间里训练 LAM。它先把当前帧和未来帧都编码成特征,逆动力学编码器推断隐动作,解码器再据此重建未来特征,同时用一个轻量辅助头逼着隐动作去编码具身运动。这套流程跑下来,模型既学到了"怎么从一对前后画面里抽出动作意图",也学到了"拿着意图怎么把未来画面在特征空间里展开",而后者正是要被保留下来反复复用的那部分能力。
# 第一阶段(说明性代码,对应论文 Sec 3.2):在冻结特征空间训练 LAM
# f_psi 冻结(蒸馏版 DINOv3 ViT-B/16),编码器 / 解码器各为 24 层 Transformer
u = f_psi(o) # 当前观测特征
u_T = f_psi(o_T) # tau 秒后的未来观测特征(机器人 1.2s / 人类视频 0.4s)
z = q_phi(u, u_T) # 逆动力学编码器:推断隐动作后验 z ~ N(mu, sigma)
u_T_pred = LaWM(u, z) # 前向解码器:通过 AdaLN 注入 z,预测未来特征
s_T_pred = g(s, z) # 辅助头:让 z 偏向具身运动而非纯视觉外观
L_wm = mse(u_T_pred, u_T) # 未来特征预测误差
L_aux = mse(s_T_pred, s_T) # 末端执行器状态辅助损失
L_kl = kl_divergence(q_phi(u, u_T), Normal(0, 1))
L_lam = L_wm + L_aux + beta * L_kl # beta = 1e-5
这段代码做了三件事:把视觉转移编码成隐动作、用隐动作重建未来特征、用 KL 项把隐动作空间正则化到一个能被后续策略建模的形状。为什么要在 DINOv3 的冻结特征空间里做,而不是在像素上做?因为预训练视觉编码器已经把语义与空间结构抽好了,模型不必再花容量去学纹理重建,这是它能做小做快的前提。一个容易被忽略的工程细节是,因为 u T u_T uT 和 s T s_T sT 都由同一个物理间隔定义,学出来的子目标对应的是一段固定的真实流逝时间,而不是某个数据集特有的帧偏移,这为后面跨频率、跨本体的对齐埋下了伏笔。
4. 第二条核心机制:隐空间世界模型 LaWM
4.1 设计动机:隐动作不能单独当输入
一个自然的疑问是:既然隐动作已经能跨本体表达意图,为什么不直接拿它当策略的最终输入?这里要厘清的是隐动作与隐空间子目标的分工。隐动作是一个高度抽象的转移变量,它擅长跨不同机器人本体表达"把某物往那个方向移动"这类意图,但它本身不含当前场景的具体视觉状态。只有当 LaWM 把它放回当前隐空间视觉状态、展开成带具身信息的子目标之后,它对动作生成才真正有用。换句话说,隐动作负责"抽象转移",LaWM 负责"把转移落回此时此景",两者合在一起才构成从人类交互视频到机器人动作生成的中间层。
难点提示(隐动作 vs 隐空间子目标):可以把隐动作想成一句指路话"前面路口右转",它在任何城市任何车上都通用,但光有这句话开不了车;隐空间子目标则是把这句话叠加到你此刻挡风玻璃看到的画面上,标出"你这辆车此刻该往哪个像素区域挪"。前者可迁移但不可执行,后者可执行但不可迁移,LaWM 做的就是把前者翻译成后者。
4.2 AdaLN 注入与训练稳定性
LaWM 解码器如何把隐动作注入进去,是个看似细节却影响成败的选择。论文采用自适应层归一化(AdaLN)来条件化隐动作 z z z,而不是像 Genie 那样用加性 token 注入。直观理解是,加性注入会让隐动作范数的波动直接平移所有视觉 token,在跨本体设定下容易引起视觉 token 的整体漂移,进而让训练损失出现尖峰。AdaLN 把 z z z 转成缩放和偏移系数去调制归一化后的特征,影响是"乘性调制"而非"加性平移",在不同本体混训时稳定得多。
4.3 代码透视:策略驱动的子目标
第二阶段把预训练好的 LaWM 变成测试时可用的策略接口。第一阶段那个逆动力学编码器在部署时用不了,因为它需要尚未发生的未来特征,于是这里训练一个策略先验直接从当前观测和指令预测隐动作,再过一遍冻结的 LaWM 得到子目标。换句话说,第二阶段做的事,是把第一阶段那个"必须看见未来才能工作"的编码器,替换成一个"只看当下就能预判"的策略先验,让整套系统在推理时彻底摆脱对真实未来的依赖。
# 第二阶段(说明性代码,对应论文 Sec 3.3):把冻结 LaWM 接入 VLA 策略
z_hat = policy_prior(o, l) # 策略先验预测隐动作
u_hat_T = LaWM(u, z_hat) # 单次前向解码出隐空间子目标
a_chunk = action_expert(o, l, u, u_hat_T) # Alternate-DiT:语义流 × 动态流 交替
L_distill = mse(z_hat, z.detach()) # 隐动作蒸馏:z 来自第一阶段后验(教师)
L_wm = mse(u_hat_T, u_T) # 监督策略驱动出的子目标
L_act = flow_matching_loss(a_chunk, a_gt) # 动作的条件流匹配损失
L = lam_distill * L_distill + lam_wm * L_wm + L_act # lam_distill = lam_wm = 0.1
这段代码里藏着两个必须配合工作的机制。一是隐动作蒸馏,让策略先验学会稳定地驱动 LaWM,它需要来自第一阶段后验的直接监督,才能可靠地"开动"这个世界模型。二是知识隔离,在策略训练中保护 LaWM,使动作专家的梯度不会回流并破坏它已学到的场景变化规律。下面这张作者自绘的概念图,把这套两阶段数据流和梯度边界画在一起,便于理解谁在学、谁被冻结、梯度在哪里被切断。

5. 训练时的监督模块:两阶段如何衔接
5.1 第一阶段:学世界怎么变
第一阶段学的是 LaWM,也就是隐动作模型的前向解码器。每个训练样本包含一个当前观测 o o o 和一个在固定物理时间间隔 τ \tau τ 之后采样的未来观测 o T o_T oT,编码成特征对后,逆动力学编码器推断隐动作,解码器再据此预测未来特征。形式化地,记冻结编码器为 f ψ f_\psi fψ,第一阶段要学的关系是:
z ∼ q ϕ ( z ∣ u , u T ) , u ~ T = L a W M ω ( u , z ) z \sim q_\phi(z \mid u, u_T), \qquad \tilde{u}_T = \mathrm{LaWM}_\omega(u, z) z∼qϕ(z∣u,uT),u~T=LaWMω(u,z)
这里 q ϕ q_\phi qϕ 是隐动作后验,本质上是一个隐空间逆向动力学模型,解码器被保留为 LaWM。一个轻量但重要的辅助信号是:一个小预测器用"当前末端执行器状态 + 隐动作"去预测未来状态,目的是逼着隐动作去编码具身运动,而不是只编码视觉外观的变化。预训练结束后这个辅助头被丢弃,后验编码器只用于在第二阶段产生"教师隐动作"。
5.2 第二阶段:学策略怎么开
部署时真实未来特征 u T u_T uT 尚未发生,这正是训练与推理不对称的根源所在。策略必须先凭当前观测把隐动作预测出来,再用它去驱动冻结的 LaWM 产生子目标,整个链条不再依赖任何真实的未来信息。于是推理阶段的因子分解相比训练时多出了一个关键的"策略先验"项:
p ( a 1 : T , u ^ T , z ^ ∣ o , l ) ⏟ LaWAM = p θ ( z ^ ∣ o , l ) ⏟ 策略先验 ⋅ p ω ( u ^ T ∣ u , z ^ ) ⏟ LaWM ⋅ p η ( a 1 : T ∣ o , l , u , u ^ T ) ⏟ 动作专家 \underbrace{p(a_{1:T}, \hat{u}_T, \hat{z} \mid o, l)}_{\text{LaWAM}} = \underbrace{p_\theta(\hat{z} \mid o, l)}_{\text{策略先验}} \cdot \underbrace{p_\omega(\hat{u}_T \mid u, \hat{z})}_{\text{LaWM}} \cdot \underbrace{p_\eta(a_{1:T} \mid o, l, u, \hat{u}_T)}_{\text{动作专家}} LaWAM p(a1:T,u^T,z^∣o,l)=策略先验 pθ(z^∣o,l)⋅LaWM pω(u^T∣u,z^)⋅动作专家 pη(a1:T∣o,l,u,u^T)
读法是:策略先验 p θ p_\theta pθ 先预测隐动作 z ^ \hat{z} z^,冻结的 LaWM p ω p_\omega pω 把它确定性地解码成子目标 u ^ T = L a W M ω ( u , z ^ ) \hat{u}_T = \mathrm{LaWM}_\omega(u, \hat{z}) u^T=LaWMω(u,z^),动作专家 p η p_\eta pη 再基于当前上下文和这个隐空间子目标生成动作块。训练时用真实的 u T u_T uT 当监督目标,推理时用策略驱动出来的 u ^ T \hat{u}_T u^T 当子目标,一个用于学、一个用于跑,二者通过同一个 LaWM 衔接起来。
5.3 知识隔离与隐动作蒸馏
这两个机制的配合,是第二阶段能不能成的关键。隐动作蒸馏给策略先验提供来自第一阶段后验的直接监督,没有它,策略先验只能从动作梯度间接学习如何驱动 LaWM,信号太弱。知识隔离则在反向传播时切断动作专家流向 LaWM 的梯度,没有它,专为某个下游任务优化的动作梯度会逐步污染 LaWM 已经学到的、更通用的场景变化规律。消融实验会证明,去掉任何一个都会让长程任务明显掉点,二者缺一不可。这套"既要驱动、又要保护"的设计,本质上是在通用世界知识与任务特定策略之间,划出一道清晰的责任边界。
6. 推理时的执行模块:一次前向
6.1 推理 generate 流程
把训练讲清楚后,推理流程就显得格外简单了,但恰恰是这份简单构成了低延迟的来源。部署时真实未来不可得,所以策略必须自己先把未来在隐空间里"猜"出来,而且全程只猜一次,不做任何迭代式的反复生成,这一点决定了它在时间开销上的根本优势。
# 推理(说明性代码,对应论文 Sec 3.1 因子分解)
import torch
@torch.no_grad()
def infer(o, l):
u = f_psi(o) # 1) 编码当前观测
z_hat = policy_prior(o, l) # 2) 预测隐动作(不依赖未来)
u_hat_T = LaWM(u, z_hat) # 3) 单次前向,解码出隐空间视觉子目标
a_chunk = action_expert(o, l, u, u_hat_T) # 4) 基于子目标生成整段动作块
return a_chunk # 约 187 ms / 动作块
…详情请参照古月居
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)