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

十分钟读论文 | NavWAM:让机器人一边“想象未来“,一边“决定怎么走“

07/27 13:13
192
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

转载自公众号:敢敢AUTOHUB

0. 简介

设想你被蒙上眼睛,只在每走一步时被允许睁眼看半秒。你的任务是走到房间另一头一张照片里拍到的那个位置。你能看到的,永远只是眼前这一小块画面;照片里的目标在哪个方向、隔着几道墙、拐过哪个弯,你都得靠"脑补"。直观理解是,你会本能地做一件事:在迈步之前先在脑子里预演一下——"如果我往右前方走两步,画面大概会变成什么样?那个样子是离照片更近了,还是更远了?"这套"先预演、再落脚"的循环,就是本文主角要解决的问题原型。

机器人的目标导向视觉导航(goal-conditioned visual navigation),本质上就是在做这件被蒙眼的事。它最难的地方,从来不是"看见"目标,而是在只能看到局部、看不全环境的前提下,判断自己下一步该往哪挪,才会离目标更近。本文要解读的 NavWAM,正是东京大学团队为这个"边想象边决策"的问题给出的一套新答案。

论文地址:https://arxiv.org/html/2606.13494v1
项目主页:https://dachii-azm.github.io/navwam/

图 1:左边是过去的做法——世界模型只负责预测候选动作对应的未来画面,再交给外部规划器挑动作;右边是 NavWAM——在一个策略表示里同时吐出未来画面、目标进度价值和可直接执行的动作块。

1. 部分可观测,才是导航真正的敌人

1.1 机器人没有上帝视角

我们平时说"导航",脑子里往往浮现出手机地图那种上帝视角:整张地图摊开,起点终点一目了然,算法沿着路网找一条最短路。但机器人面对的现实完全不是这样。它头上装着一个第一人称相机(egocentric camera),每一时刻只能看到镜头正对的那一小块空间。拐角后面有什么、身后是不是死路、目标究竟在左还是在右——这些信息统统不在当前画面里。学术上把这种"只能看到局部、拿不到全局真值"的情况称为部分可观测(partial observability),它是几乎一切真实机器人任务绕不开的前提。

这里的关键是,部分可观测带来一个直接后果:只根据当前这一帧画面做反应,是不够的。 因为同一帧画面背后,可能对应着完全不同的正确动作。举个例子,机器人正对着一条走廊,画面里看不出走廊尽头是左转还是右转通往目标房间。要做对决策,它必须具备一种能力——预判自己的动作会把视野改变成什么样,并判断那个"改变后的样子"是不是朝目标靠近了。论文里把这层能力概括得很清楚:机器人必须能够 anticipate(预判)"我这样动,未来的第一人称画面会怎么变",以及"这个变化是否让我更接近目标"。

1.2 一个合格的导航模型必须回答的三个问题

进一步看,一个合格的导航模型至少要同时回答三个问题:我这样走,未来会看到什么?这条动作会不会让我更接近目标?如果前方被遮挡、或者路线偏了,我能不能及时修正? 传统的直接策略(direct policy,即从当前画面直接映射到动作的模型)在动作监督的训练下,或许能隐式地学到一点这种"预感",但它们从来没有被明确要求去预测"动作的视觉后果"。这就留下了一个机器人学习领域的核心问题:怎样才能让"明确的视觉预见"真正为闭环控制所用? NavWAM 的全部设计,都是在回答这一句话。

用数学语言把任务写清楚会更有帮助,也方便后面把直接策略、NWM 与 NavWAM 三者放在一起逐一对照。在时刻 ,机器人拿到当前观测  和目标图像 ,要输出一段长度为  的可执行动作块,也就是从  到  的一串连续动作,而不是只走一步就停下来重算。传统直接策略学的就是下面这个条件分布,它把"当前画面加目标"直接映射成"接下来该走的一串动作":

这里的关键是,这个式子只关心"给定当前画面和目标,动作是什么",却完全没有把"执行完动作会看到什么"写进来,等号右边没有任何关于未来观测的项。换句话说,直接策略默认动作可以脱离对后果的想象而单独学好,这正是后面 NavWAM 要补上的一块短板。

2. 上一代方案 NWM:会想象,但自己不会走

2.1 NWM 学会了"想象未来"

要理解 NavWAM 的新,得先看清它的前辈——导航世界模型(Navigation World Model,NWM)到底做到了哪一步、卡在了哪一步。NWM 是 Bar、LeCun 等人发表于 CVPR 2025 的工作(https://arxiv.org/abs/2412.03572),它本质上是一个"可控的视频生成模型":给它当前的观测画面和一串动作,它能预测出机器人执行完这串动作之后,未来的第一人称画面长什么样。用一句话概括它的能力——它学会了想象未来。 写成条件分布,NWM 建模的是"给定当前画面和候选动作,未来画面的样子":

换句话说,NWM 是一个"给动作、还画面"的预测器:喂进去一串候选动作,它吐出对应的未来画面。这里要注意,它天生只回答"未来长什么样",并不回答"我到底该选哪条动作"——后者被完整地留给了下游一个单独的规划模块,而这道分工,正是它后来在速度上吃大亏的根源。

2.2 CEM 规划器:又慢又重的外挂

核心问题在于"想象"和"行动"之间那道没被打通的缝。NWM 本身只是一个预测模块(prediction module),它并不直接输出"我该怎么走"。到了真正要控制机器人的推理阶段,系统还得外挂一个规划器(planner),最常见的就是交叉熵方法(Cross-Entropy Method,CEM)。CEM 的工作方式是"采样—打分—筛选"的循环:它先随机采样出一大批候选动作序列,让世界模型逐个预测这些序列对应的未来画面,再拿每个预测画面和目标图像比对打分,最后挑出得分最高的那条轨迹,执行它的第一个动作。走一步,整套流程重来一遍。

这套逻辑在数学上无懈可击,但在工程上极其笨重,因为每走一步都要把"想象"这件事重复上百遍。这里要把这个"外挂搜索"的过程写成伪代码,才能直观感受到它的开销——真正的代价,全藏在那个每步都要重跑一遍的采样循环里,候选数一大,单步耗时就爆炸式增长:

# 传统 NWM + CEM 的推理循环(示意)
# 每走一步都要重复这整段搜索
def nwm_cem_step(obs_now, goal_img, world_model, N=120, H=8):
    best_action, best_score = None, -inf
    # 1) 采样 N 条候选动作序列(N 常取 120)
    candidate_actions = sample_action_sequences(num=N, horizon=H)
    for actions in candidate_actions:          # 循环 N 次
        # 2) 让世界模型预测这条序列对应的未来画面
        future_view = world_model.rollout(obs_now, actions)   # 昂贵:一次完整视频生成
        # 3) 拿预测画面和目标图像比对打分
        score = similarity(future_view, goal_img)
        if score > best_score:
            best_score, best_action = score, actions
    # 4) 只执行最优序列的第一个动作,然后整段推倒重来
    return best_action[0]

这意味着,候选越多,预测次数越多,计算量近乎线性地膨胀。论文附录 C.1 给出了实测数字——在同一块 RTX PRO 6000 上,NWM 在 CEM 的 N=120(论文主结果所用预算)设置下,每执行一个动作要耗费约 14,521 TFLOPs、延迟高达 23 万毫秒量级,运行频率掉到不足 1 Hz。对静态图片而言慢一点无所谓,但对一台正在移动的机器人来说,这个频率是致命的。环境在变,机器人自己也在动,推理慢一拍,动作就滞后一拍;规划不连续,轨迹就会抖;误差一旦累积,机器人就可能偏航、卡死,甚至撞上障碍物。

一句话理解:NWM 的困境是"我能想象未来,但还得靠别人替我决定怎么走,而那个'别人'(CEM 搜索)太慢了"。它把"预测"和"决策"拆成了两段,慢就慢在两段之间那道每步都要重跑上百次的搜索缝。

图 2:传统 NWM 每走一步,都要对上百条候选动作逐一"预测未来画面 + 打分",计算量随候选数线性膨胀,闭环频率被压到 1 Hz 以下。

3. NavWAM 把动作也塞进同一个"去噪画布"

3.1 把动作从外部搬回模型内部

NavWAM 最关键的创新,是把动作生成从外部规划器里彻底拿了出来,放回模型内部。 它不再是"先预测画面、再让规划器找动作"的两段式流水线,而是让视觉预见和动作决策在同一个模型、同一次计算里一起完成。为了做到这一点,它借用了当前视频生成领域最主流的骨架——扩散-变换器(Diffusion-Transformer, DiT),并且站在一个预训练好的视频世界模型 Cosmos Predict2(NVIDIA 开源)的肩膀上。用一个统一的条件分布来写,NavWAM 学的不再是单独的动作或单独的画面,而是把动作、未来状态、未来画面、目标进度价值一起联合建模:

对照第 1 节的直接策略和第 2 节的 NWM,差别一目了然:直接策略等号左边只有动作 ,NWM 左边只有未来画面 ,两者各管一半;而 NavWAM 把动作、未来状态、未来画面连同目标进度价值  全塞进了同一个联合分布里,用一次去噪同时解出,从根上取消了"预测"与"决策"之间那道需要外部规划器来缝合的缝。

3.2 扩散模型:先加噪,再学着去噪

这里需要先花几句话解释"扩散模型"是怎么工作的,因为它是理解 NavWAM 的钥匙。扩散模型的训练思路很反直觉:先往一张干净的数据(比如一帧图像)里一点点加噪声,直到它变成纯粹的雪花点;然后训练一个网络,学会把这个过程反过来——从雪花点里一步步"去噪",还原出干净的数据。生成时,就从随机噪声出发,让网络反复去噪,最终"长出"一张全新的、符合训练分布的图像。这意味着扩散模型本质上是一台"从噪声里还原结构"的机器。NavWAM 的巧妙之处在于:它去噪的对象,不只是图像。

3.3 九帧隐层画布:一张表格装下全部变量

具体来说,NavWAM 构建了一块固定的九帧隐层画布(nine-frame latent canvas)。你可以把它想象成一张有九个格子的表格,每个格子都被编码进同一个视频隐空间里。其中一部分格子是"已知条件"(观测帧,负责给去噪过程提供上下文),另一部分格子是"待预测内容"(生成帧,是去噪要还原出的目标)。它们被放在同一个 DiT 序列里,一起参与同一个去噪过程。论文附录表 S1 把这九帧的分工列得非常清楚,我整理成下面这张表:

帧编号 内容 角色
0 空白填充帧(因果 VAE 时间压缩需要) 已知条件
1 当前机器人状态 s_t = [x, y, 朝向角] 已知条件
2 目标图像 g(图像目标导航时) 已知条件
3 当前第一人称观测 o_t 已知条件
4 可执行动作块 a_{t:t+H-1} 待预测
5 未来状态 s_{t+H} 待预测
6 未来观测 o_{t+H-1} 待预测
7 未来观测 o_{t+H} 待预测
8 目标进度价值 v_{t+H} ∈ [0,1] 待预测

图 3:NavWAM 架构。底部四帧是观测条件(空白帧、当前状态、目标图、当前观测),顶部五帧是预测目标(动作块、未来状态、两帧未来观测、目标进度价值)。所有帧共用一个扩散-变换器和一个去噪目标。

3.4 广播成帧:动作和图像共享同一个去噪目标

这张画布真正精巧的地方在于:动作、状态、价值这些非图像的变量,不再是像传统做法那样各接一个独立的 MLP 输出头,而是被"广播"(broadcast)到隐空间的空间网格里,和图像生成共享同一个去噪目标。 也就是说,一个 3 维的动作向量,会被平铺到整张隐层网格上当成一"帧"来处理;预测时,再把这一帧去噪后的所有格子取空间平均,还原回那个 3 维动作。这么做的意义是,模型不再是"一边看图想象、另一边另起炉灶做控制",而是在同一个生成过程里,把"未来视觉"和"实际动作"死死绑在了一起。想象与行动,从此共用一套权重、一次前向。

4. 训练目标:让"想得准"和"走得对"互相成全

4.1 一个去噪损失搞定所有预测

把动作和图像放进同一块画布只是结构上的第一步,真正让它们"长在一起"的是训练目标。NavWAM 的训练本质上就是一个标准的扩散去噪损失:往干净画布里加噪声,让 DiT 学会还原。用公式写出来,网络  要最小化"还原出的画布"和"原始干净画布"之间的差距,且这个损失只施加在需要预测的那几帧上:

这里  是干净画布, 是加了噪声强度  之后的画布, 是随噪声强度变化的加权项, 是条件信息(观测帧掩码、条件嵌入等)。这里的关键是,同一个损失同时管住了动作、状态、画面和价值——它们不是四个任务,而是一块画布的四个部分。把它翻译成伪代码会更直观:

# NavWAM 训练目标
def training_step(canvas_clean, model):
    # canvas_clean: 九帧隐层画布的干净版本
    sigma = sample_noise_level()                       # 采样一个噪声强度
    noise = gaussian_like(canvas_clean)
    canvas_noisy = canvas_clean + sigma * noise        # 按扩散调度加噪

    canvas_pred = model(canvas_noisy, sigma, cond)     # DiT 一次去噪还原

    # 关键 1:损失只算"待预测帧"(4~8),观测帧(0~3)不算
    loss = weighted_mse(canvas_clean, canvas_pred, frames=[4,5,6,7,8])

    # 关键 2:动作帧维度低(只有 3H),
    #        怕被高维图像重建损失淹没,所以给它加权 λ=5
    loss = upweight(loss, frame=4, factor=5)
    return loss

这里有两个细节值得停下来说。第一,动作帧只有 3H 维(论文主实验里动作块长度 H=4,即 12 维),而两帧未来图像各是 3×224×224 维,两者相差好几个数量级。如果直接一视同仁,低维的动作信号会被高维的图像重建损失彻底压住,模型就会"只顾画画、不管走路"。NavWAM 的解法是给动作帧一个 λ=5 的加权,让它在损失里占据应有的分量。第二,也是理念上最重要的一点:动作生成、未来状态预测、未来画面预测、价值估计,全部是同一个去噪目标的组成部分,而不是在一个"只管动作"的策略上外挂几个辅助损失。 未来画面在这里不再是一个"好看的旁路输出",它和动作共享梯度、彼此约束——想得准会逼着走得对,走得对也会反过来校准想得准。

工程价值:动作帧加权 λ=5 是个不起眼却致命的细节。低维动作信号和高维图像信号放进同一个 MSE 损失时,若不加权,动作梯度会被图像梯度淹没,训练出来的模型"画得很好、走得很差"。复现这套方法时,这个系数是必须照抄的关键超参之一。

4.2 三种条件模式:一套权重练出三种本事

进一步看,为了让同一套权重同时具备"生成动作""在给定动作下预测未来""评估目标进度价值"这三种能力,NavWAM 在训练时并不是各训一个模型,而是用**三种条件模式(multi-mode conditioning)**在每个训练样本上随机切换、混合采样,三者的比例固定为 50/25/25,靠改变"哪几帧当条件、哪几帧当预测目标"来切换模式:

策略模式 (50%)   : 已知 0~3 帧 → 预测 4~8 帧(动作+未来状态+未来画面+价值)
                  ← 这是推理时唯一使用的模式
世界模型模式(25%): 额外已知第 4 帧(动作)→ 预测 5~8 帧
                  ← 支持可选的 best-of-N 采样
价值模式 (25%)   : 已知 0~7 帧 → 只预测第 8 帧(标量价值)
                  ← 作为辅助的价值估计能力

这里要强调的是,论文里所有主结果,推理时只用策略模式——一次前向,直接出动作。世界模型模式和价值模式只在训练时出场,属于"顺便练出来的备用技能"。这种设计的好处是,同一套权重既能当策略用(直接出动作),也能在需要时切回世界模型用(给定动作预测未来、做 best-of-N 筛选),灵活性远高于只会一件事的专用模型。

5. 推理提速:一次去噪链,取代整套 CEM 搜索

5.1 一次去噪链直出动作

理解了训练,推理就顺理成章了。NavWAM 在推理时默认跑在策略模式下:给定当前观测  和目标图像 ,模型通过一次去噪链(a single denoising chain),直接把动作块解码出来。机器人随后以**滚动时域(receding-horizon)**的方式执行——每次只走一小段动作块,走完就拿最新的观测重新查询一次模型,如此循环。这里的关键是,那套"采样上百条候选、逐个预测、逐个打分"的 CEM 搜索被彻底删除了。对照第 2 节 NWM 那个沉重的循环,差别一眼可见:

# NavWAM 的推理循环(示意)——对照第 2 节 NWM 的沉重循环
def navwam_step(obs_now, goal_img, model):
    # 组装九帧画布:填入已知的 0~3 帧,4~8 帧留作待去噪
    canvas = build_canvas(state_now, goal_img, obs_now)
    # 一次去噪链,直接得到全部预测帧
    pred = model.denoise(canvas)                 # 没有 for 循环,没有候选采样
    action_chunk = decode_action(pred.frame[4])  # 直接读出可执行动作块
    # 未来画面 pred.frame[6:8] 和价值 pred.frame[8] 一并产出,
    # 但执行动作并不需要它们——它们是"可解释的视觉预见"
    return action_chunk                          # 滚动时域执行,走完再来一次

5.2 从不足 1 Hz 到约 5 Hz 意味着什么

这个改动对真实机器人意义重大。回到附录 C.1 的实测:NavWAM 用的是 2B 参数的 Cosmos Predict2 骨干,无论零样本还是微调后,每个动作只需约 4.45 TFLOPs、延迟约 205.7 毫秒、峰值显存 4.82 GB,实际运行频率约 5 Hz。而同样规模骨干套上 CEM 的基线,每动作要吞掉一万八千多 TFLOPs、显存大它 4 到 10 倍,频率掉进 sub-Hz。这意味着两条路线的成本差距不是"快一点",而是数量级级别的鸿沟。更有意思的是论文观察到的一个现象:CEM 的精度早早就饱和了。 NWM 的轨迹误差从 N=8 到 N=240 几乎纹丝不动,把候选数从 120 翻到 240 不但没拉近和 NavWAM 的差距,精度反而略有下降。这说明"堆更多候选"并不是通往更好导航的路——单次去噪的 NavWAM 在整条 CEM 曲线上全程压制。

频率从"不足 1 Hz"提到"约 5 Hz",带来的不是简单的"更快",而是闭环行为质的稳定。机器人能更及时地修正偏航,更快地响应眼前的局部障碍,也更不容易因为连续决策的延迟而漂移。速度在这里不是炫技指标,它直接决定了机器人在真实世界里站不站得稳。

直觉理解:把 CEM 想成"每一步都要在脑子里穷举一百种走法、逐一想象再打分",而 NavWAM 是"扫一眼就直接落脚"。前者想得慢,机器人真身却还在往前挪,等它算完,世界已经变了;后者一步到位,才谈得上跟得上真实世界的节奏。

6. 一个关键疑问:直接出动作,会不会把"想象力"给废了?

6.1 视觉预见不降反升

读到这里,一个很自然的担心会冒出来:既然 NavWAM 图快、绕开了 CEM 直接输出动作,那它作为"世界模型"最引以为傲的视觉预见能力,会不会因为不再被反复用来打分而悄悄退化、甚至被牺牲掉?毕竟鱼与熊掌通常难以兼得,省了搜索会不会就丢了想象。论文用一组消融实验正面回答了这个问题,结论是——不但没废,反而更强了。

衡量视觉预见质量用的指标叫主体一致性(subject consistency),通俗说就是"预测出来的未来画面,和真实的未来画面在视觉特征上有多像、主体有没有跑偏"。数据显示:在没有针对性微调的情况下,NavWAM 把主体一致性从 NWM 的 0.524 提升到了 0.668;即便经过微调,也稳定保持在 0.635,依然高于 NWM。这意味着,NavWAM 在直接生成动作的同时,画未来画的本事甚至超过了那个"专职画画"的前辈。

图 4:未来视图预测的定性对比。NavWAM 预测的未来画面更贴近目标场景,而 NWM 常常漂移到视觉上不连贯的未来。

6.2 为什么"想"和"走"能互相成全

论文附录 C.2 还从反方向做了一组更狠的消融,直接回答了"为什么会更强"。它拿掉未来画面的监督(让第 6、7 帧照样生成,但把它们的损失清零),其余一切——骨干、画布、训练课程、数据、步数——全部保持一致,唯一变量就是"未来视图这份监督信号在不在"。结果是:在长时域 h=8 上,加回未来视图监督后,轨迹误差 ATE 从 0.262 降到 0.192(降了 27%),RPE 从 0.103 降到 0.070(降了 32%)。这里的关键是,背后有两个机制:其一,未来画面这份稠密的重建监督,让骨干网络的表示更贴近它预训练时的视频生成目标,间接喂养了动作头;其二,由于目标只给了一张遥远的照片,模型必须"脑补"出几步之后应该看到什么,这个过程逼着它内化了"在部分可观测下、朝目标前进"的转移规律,给动作决策提供了一个目标一致的视觉锚点

这恰恰点出了 NavWAM 和传统世界模型最本质的分野。传统模型的逻辑是"我能想象未来,但得靠别人帮我决定怎么走";NavWAM 的逻辑是"我想象未来的同时,就把动作一并生成出来"。未来图像在这里不再是一个孤立的漂亮预测,它亲身参与了动作的生成——视觉预见真正开始为控制服务。

7. 总结

把所有实验串起来看,NavWAM 的意义并不在于"又提出了一个更大的扩散模型"。它真正证明的是一个关于方法论的判断:在视觉导航中,如果未来图像预测只是一个挂在旁边的旁路模块,它的价值是有限的;只有当未来视觉、动作和目标进度在同一个模型里被联合学习时,视觉预见才会真正转化为机器人的控制能力。

进一步看,论文的三组核心证据互相咬合,构成了一个完整的论证闭环。只有图像预测、哪怕配上 N=120 的 CEM 搜索,也不足以支撑导航——光会想象没用。在一个已经很强的"动作—状态—价值"策略上,把未来视图监督加回来,轨迹精度进一步提升——想象确实有用,但前提是它和动作、价值绑在一起学。两相对照得出结论:未来视图预测既不能单独成事,加进联合框架后也绝非冗余——是"联合"这件事本身,而非任何单一的预测目标,让视觉预见变得可用于控制。

8. 参考资料

    • NavWAM 论文原文(含方法、实验与附录数据):A Navigation World Action Model for Goal-Conditioned Visual Navigation, arXiv:2606.13494• NavWAM 项目主页:dachii-azm.github.io/navwam• 前作 NWM(本文对比基线):Navigation World Models, Bar et al., CVPR 2025, arXiv:2412.03572• 视频世界模型骨干 Cosmos Predict2:NVIDIA Cosmos-Predict2• 相关方向延伸阅读:A Unified Navigation World Model for Foresight-Driven Planning, arXiv:2606.24101

相关推荐