• 正文
  • 相关推荐
申请入驻 产业图谱

十分钟读论文 | 机器人如何“想象未来“:隐空间世界动作模型 LaWAM 深度解析

08/17 13:18
318
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

转载自公众号:敢敢AUTOHUB

0. 简介

这两年从 VLA 到世界模型再到各种"动作 + 未来"的混合体,几乎每个月都有一个新名字冒出来,让人怀疑这究竟是范式更替还是术语通胀。LaWAM 是其中少数让笔者愿意停下来读完代码与消融的一个,因为它没有去堆更大的视频生成底座,反而把"未来预测"整体搬进了一个紧凑的视觉隐空间,用一个仅 230M 参数的小模型,换来了相比像素空间世界模型最高 24 倍 的推理提速,同时把 LIBERO 成功率推到 98.6%。这篇文章会把论文的核心思想、关键代码段、训练目标与实验数字逐一拆开,让你读完既看得懂它为什么快,也看得懂它为什么准,还能知道它在具身智能路线图上站在哪个位置。

为了让没读过原文的读者也能跟上,本文会尽量沿着论文自身的脉络推进:先讲清动机与整体框架,再逐层拆开两条核心机制、训练目标与推理流程,最后落到实验数字与它在路线图上的定位。

论文地址:https://arxiv.org/abs/2606.15768
项目主页:https://rlinf.github.io/LaWAM/
代码仓库:https://github.com/RLinf/LaWAM
Hugging Face 模型:https://huggingface.co/collections/jialei02/lawam-checkpoints

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 不引入任何关于未来的显式建模,它直接学习在当前观测  和指令  条件下生成一整段动作块  的条件概率,所有对场景如何演化的理解都被隐式地压进了网络权重里:

世界动作模型走的是另一条路,它把一个预测出的未来 (动作时域末端的观测)显式地暴露给策略,让动作生成可以参考"场景接下来会变成什么样"。这样一来,原本的联合概率就被自然地分解为"未来预测"和"逆动力学"两项,前者负责想象未来,后者负责把想象映射回具体动作:

联合未来预测

这里第二项扮演逆动力学模型(Inverse-Dynamics Model, IDM)的角色,把"想要的视觉未来"映射回动作。核心问题在于第一项:如果  是高维像素图像或视频,这一项的生成代价极其昂贵。LaWAM 保留了这个"未来条件"的结构,但把未来整体映射到一个冻结视觉编码器的特征空间里,从根上避开像素重建。

2.2 训练与推理的关键不对称

这套框架最值得玩味的,是它在训练时和推理时的角色不对称。训练时模型能拿到真实的未来观测,于是可以反推出"动作意图"再去监督世界模型;推理时真实未来尚未发生,模型必须先把意图猜出来,再由世界模型展开成子目标。

这层不对称正是后面所有设计的源头:它解释了为什么需要一个逆动力学编码器只在训练时存在,也解释了为什么需要一个策略先验在推理时顶替它的位置。下图是论文给出的两阶段总览,把这套不对称画得很清楚。

3. 第一条核心机制:隐动作模型 LAM

3.1 为什么不能直接翻译人手动作

LaWAM 的技术根基是隐动作模型(Latent Action Model, LAM)。它最初要解决的是一个很现实的难题:如果想让机器人从人类第一视角视频里学动作规律,没法直接把"人手怎么动"翻译成"机械臂关节转多少度"——人手的关节、机械臂的关节、夹爪形态、控制频率全都不一样,强行翻译几乎必然出错。更可行的做法,是先学一种抽象的动作意图,它不描述某个关节转多少度,而描述"当前画面到未来画面之间发生了什么变化"。这样一来,海量没有动作标注的人类视频就能被利用起来,成为机器人学习物理规律的素材。

3.2 被复用的解码器:从辅助件到世界模型

LAM 的结构很对称:一个逆动力学编码器看一对"当前视觉状态 + 未来视觉状态",从中推断出一个隐动作 ;一个解码器再根据"当前状态 + 隐动作"去预测未来状态。过去大量工作的注意力都集中在隐动作  本身——它该离散还是连续、怎么正则化、能否跨本体迁移——而把解码器仅当作训练时的辅助件,预训练完就丢弃。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 的冻结特征空间里做,而不是在像素上做?因为预训练视觉编码器已经把语义与空间结构抽好了,模型不必再花容量去学纹理重建,这是它能做小做快的前提。一个容易被忽略的工程细节是,因为  和  都由同一个物理间隔定义,学出来的子目标对应的是一段固定的真实流逝时间,而不是某个数据集特有的帧偏移,这为后面跨频率、跨本体的对齐埋下了伏笔。

4. 第二条核心机制:隐空间世界模型 LaWM

4.1 设计动机:隐动作不能单独当输入

一个自然的疑问是:既然隐动作已经能跨本体表达意图,为什么不直接拿它当策略的最终输入?这里要厘清的是隐动作与隐空间子目标的分工。隐动作是一个高度抽象的转移变量,它擅长跨不同机器人本体表达"把某物往那个方向移动"这类意图,但它本身不含当前场景的具体视觉状态。只有当 LaWM 把它放回当前隐空间视觉状态、展开成带具身信息的子目标之后,它对动作生成才真正有用。换句话说,隐动作负责"抽象转移",LaWM 负责"把转移落回此时此景",两者合在一起才构成从人类交互视频到机器人动作生成的中间层。

难点提示(隐动作 vs 隐空间子目标):可以把隐动作想成一句指路话"前面路口右转",它在任何城市任何车上都通用,但光有这句话开不了车;隐空间子目标则是把这句话叠加到你此刻挡风玻璃看到的画面上,标出"你这辆车此刻该往哪个像素区域挪"。前者可迁移但不可执行,后者可执行但不可迁移,LaWM 做的就是把前者翻译成后者。

4.2 AdaLN 注入与训练稳定性

LaWM 解码器如何把隐动作注入进去,是个看似细节却影响成败的选择。论文采用自适应层归一化(AdaLN)来条件化隐动作 ,而不是像 Genie 那样用加性 token 注入。直观理解是,加性注入会让隐动作范数的波动直接平移所有视觉 token,在跨本体设定下容易引起视觉 token 的整体漂移,进而让训练损失出现尖峰。AdaLN 把  转成缩放和偏移系数去调制归一化后的特征,影响是"乘性调制"而非"加性平移",在不同本体混训时稳定得多。

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,也就是隐动作模型的前向解码器。每个训练样本包含一个当前观测  和一个在固定物理时间间隔  之后采样的未来观测 ,编码成特征对后,逆动力学编码器推断隐动作,解码器再据此预测未来特征。形式化地,记冻结编码器为 ,第一阶段要学的关系是:

这里  是隐动作后验,本质上是一个隐空间逆向动力学模型,解码器被保留为 LaWM。一个轻量但重要的辅助信号是:一个小预测器用"当前末端执行器状态 + 隐动作"去预测未来状态,目的是逼着隐动作去编码具身运动,而不是只编码视觉外观的变化。预训练结束后这个辅助头被丢弃,后验编码器只用于在第二阶段产生"教师隐动作"。

5.2 第二阶段:学策略怎么开

部署时真实未来特征  尚未发生,这正是训练与推理不对称的根源所在。策略必须先凭当前观测把隐动作预测出来,再用它去驱动冻结的 LaWM 产生子目标,整个链条不再依赖任何真实的未来信息。于是推理阶段的因子分解相比训练时多出了一个关键的"策略先验"项:

策略先验动作专家

读法是:策略先验  先预测隐动作 ,冻结的 LaWM  把它确定性地解码成子目标 ,动作专家  再基于当前上下文和这个隐空间子目标生成动作块。训练时用真实的  当监督目标,推理时用策略驱动出来的  当子目标,一个用于学、一个用于跑,二者通过同一个 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 / 动作块

进一步看这段代码与像素 WAM 的差别。像素 WAM 在第 3 步要迭代式地一帧帧生成未来画面,每一步去噪都在重建大量与控制无关的像素;LaWAM 把这一整段昂贵的迭代生成,换成了"每个动作块只做一次隐空间子目标预测"。这不是把生成做快了,而是改变了未来进入策略的形式,这点是它和"加速版像素 WAM"在本质上的区别。

6.2 延迟从何而来

延迟收益有两笔账。第一笔是算法账:未来被表示成一个隐空间子目标后,每个动作块只需一次子目标预测,无需迭代生成整段视频,算力被集中到动作真正需要的未来状态上。第二笔是参数账:LaWM 本身只有 230M 参数,相比那些以 5B 参数的 WAN 视频生成模型为底座的方案,世界建模部分的参数量减少了约 95%。两笔账叠加,使得 2.3B 规模的 LaWAM 每次动作块推理仅需 187 毫秒,相比 LingBot-VA 的 4482 毫秒,端到端延迟最高降低约 24 倍。这意味着世界模型的角色从一个像素视频生成器,转向了一个"提前为策略准备好下一步所需未来状态"的轻量组件。

7. 训练目标:损失装配

7.1 第一阶段损失

第一阶段的训练目标要同时兼顾"未来预测准不准"和"隐动作空间整不整齐"两件事,因此它用一个前向预测主损失搭配一个 KL 正则项来训练整个隐动作模型,再加上一个轻量的状态辅助项约束隐动作偏向具身运动,三者按下式合成最终的总目标:

其中  训练 LaWM 去匹配未来特征, 训练辅助状态预测器,KL 项把隐动作空间正则化到一个能被策略先验建模的形状,权重  取得很小,目的是让重建主导、正则轻轻兜底。这里关键的工程取舍是  不能大:太大则隐动作被压成各向同性噪声,丢掉了它本该携带的动作语义;太小又会让隐空间散乱到难以被先验拟合。

7.2 第二阶段损失

第二阶段的目标更复杂一些,它要同时教会策略先验预测隐动作、约束它驱动出的子目标贴近真实未来、并让动作专家生成高质量动作,因此把隐动作蒸馏、子目标监督和动作流匹配这三项损失按各自的权重装配在了一起,构成下式所示的联合训练目标:

其中  是隐动作蒸馏, 监督策略驱动出的子目标, 是动作的条件流匹配损失,两个辅助权重都取 。直观理解是,蒸馏项让策略先验对齐第一阶段那个"见过未来"的教师,子目标项保证它驱动 LaWM 的结果不跑偏,而动作项才是最终决定输出质量的主力。

解读:两个辅助损失都只给 0.1 的权重,主力仍是动作流匹配损失。这说明蒸馏与子目标监督的角色是"塑形"而非"主导"——它们把策略先验和 LaWM 拉到正确的工作点上,真正决定动作质量的还是流匹配主损失。这种"小权重撑起关键结构"的现象,在世界模型类工作里相当常见。

8. 一个易忽略的细节:混频数据的物理时间对齐

8.1 控制频率不一致带来的歧义

真实世界的机器人数据来自五花八门的平台,控制频率各不相同:有的 5 Hz,有的 20 Hz。同一个"第 i 个动作 token",在不同频率下对应的真实流逝时间并不一样,这会让模型在混合数据上训练时彻底混乱。LaWAM 的处理办法是:每个数据分支保留各自的原生控制频率,但用一个固定的物理时间间隔  来定义每个动作块。对一个原生频率为  的分支,其离散动作步数为:

这样无论 token 数量怎么变,时域末端始终对应同一段真实时间。举例来说,在同一个  下,5 Hz 分支用的动作 token 比 20 Hz 分支少,但两者都对着"同样物理时长之后"的未来视觉状态做监督,子目标因此在不同数据集之间可比。这种以物理时间而非帧数为锚的做法,让来自不同平台、不同采样率的数据可以被放进同一个训练锅里而不互相打架。

8.2 正弦物理时间编码

动作专家还需要知道每个动作 token 落在物理时间轴的哪个位置,否则它无法把子目标和动作在时间上对齐。因为  在不同分支不同,单凭 token 索引会有歧义——同一个索引在不同频率下代表的真实时刻并不一样,于是给每个 token 加一个正弦物理时间编码来消歧。记 token  的时间戳为  秒,编码为:

工程价值:这个看似边角的设计,其实是把"用海量异构机器人数据预训练一个统一基座"变得可行的前提之一。论文专门构造了一个可控实验,从同一批 20 Hz 数据下采样出 10 Hz 和 5 Hz 版本再混训:不加物理时间编码时成功率相对纯 20 Hz 上界明显下降,加上之后基本恢复到上界附近。两个物理时间相同的 token 会拿到相同的编码,即便它们的索引不同,歧义就此消除。

下面这段代码把混频对齐的两个步骤串在一起:先按物理间隔算出当前分支的动作步数,再为每个 token 生成正弦时间编码并叠加上去,便于读者对照前面的两条公式逐行理解它在工程上到底是怎么落地的,也方便迁移到自己的多频率数据管线里。

# 混频对齐(说明性代码,对应论文附录 C.3):以物理时间而非 token 索引为统一坐标
import math

H_b = round(tau * h_b)               # 分支 b 在 tau 秒内的离散动作步数(5Hz 比 20Hz 少)
t   = i / h_b                        # token i 的物理时间戳(秒)

omega = [math.exp(-math.log(P_max) * k / max(K - 1, 1)) for k in range(K)]
phi   = [f(t * w) for w in omega for f in (math.sin, math.cos)]
action_token[i] = action_token[i] + phi   # 物理时间相同 → 编码相同,即便索引不同

9. 总结

LaWAM 的核心贡献不是再造一个名词,而是把未来预测进入策略的形式,从一段昂贵的、给人看的视频,换成了一个轻量的、给策略看的隐空间视觉子目标。98.6% 的 LIBERO 成功率、91.22% 的 RoboTwin 平均成功率、187ms 配 24 倍提速,这三个数据点合起来,足以让这套架构进入下一代高效世界动作模型的候选清单。它证明了一件事:在具身控制里,"未来"不必画得逼真,只要对动作有用且算得够快。

但移动相机下的自运动解耦,与细粒度可形变动态的数据覆盖,这两个缺口还悬着——前者决定它能不能从固定相机走向人形与移动机器人,后者决定它能不能真正啃下精细布料、绳索这类高难度操作。等更大规模、更多样的真实交互数据与开源权重进一步铺开后,再回过头看这套隐空间范式能不能稳稳落到工业与真实家庭场景,会是更有说服力的检验。

相关推荐