NavWAM:让机器人一边“想象未来“,一边“决定怎么走“

发布时间:2026/7/27 23:41:17
NavWAM:让机器人一边“想象未来“,一边“决定怎么走“ 0. 简介设想你被蒙上眼睛只在每走一步时被允许睁眼看半秒。你的任务是走到房间另一头一张照片里拍到的那个位置。你能看到的永远只是眼前这一小块画面照片里的目标在哪个方向、隔着几道墙、拐过哪个弯你都得靠脑补。直观理解是你会本能地做一件事在迈步之前先在脑子里预演一下——如果我往右前方走两步画面大概会变成什么样那个样子是离照片更近了还是更远了这套先预演、再落脚的循环就是本文主角要解决的问题原型。机器人的目标导向视觉导航goal-conditioned visual navigation本质上就是在做这件被蒙眼的事。它最难的地方从来不是看见目标而是在只能看到局部、看不全环境的前提下判断自己下一步该往哪挪才会离目标更近。本文要解读的 NavWAM正是为这个边想象边决策的问题给出的一套新答案。它出自东京大学等机构的团队论文见 arXiv:2606.13494项目主页 dachii-azm.github.io/navwam。图 1左边是过去的做法——世界模型只负责预测候选动作对应的未来画面再交给外部规划器挑动作右边是 NavWAM——在一个策略表示里同时吐出未来画面、目标进度价值和可直接执行的动作块。1. 部分可观测才是导航真正的敌人1.1 机器人没有上帝视角我们平时说导航脑子里往往浮现出手机地图那种上帝视角整张地图摊开起点终点一目了然算法沿着路网找一条最短路。但机器人面对的现实完全不是这样。它头上装着一个第一人称相机egocentric camera每一时刻只能看到镜头正对的那一小块空间。拐角后面有什么、身后是不是死路、目标究竟在左还是在右——这些信息统统不在当前画面里。学术上把这种只能看到局部、拿不到全局真值的情况称为部分可观测partial observability它是几乎一切真实机器人任务绕不开的前提。这里的关键是部分可观测带来一个直接后果只根据当前这一帧画面做反应是不够的。因为同一帧画面背后可能对应着完全不同的正确动作。举个例子机器人正对着一条走廊画面里看不出走廊尽头是左转还是右转通往目标房间。要做对决策它必须具备一种能力——预判自己的动作会把视野改变成什么样并判断那个改变后的样子是不是朝目标靠近了。论文里把这层能力概括得很清楚机器人必须能够 anticipate预判“我这样动未来的第一人称画面会怎么变”以及这个变化是否让我更接近目标。1.2 一个合格的导航模型必须回答的三个问题进一步看一个合格的导航模型至少要同时回答三个问题我这样走未来会看到什么这条动作会不会让我更接近目标如果前方被遮挡、或者路线偏了我能不能及时修正传统的直接策略direct policy即从当前画面直接映射到动作的模型在动作监督的训练下或许能隐式地学到一点这种预感但它们从来没有被明确要求去预测动作的视觉后果。这就留下了一个机器人学习领域的核心问题怎样才能让明确的视觉预见真正为闭环控制所用NavWAM 的全部设计都是在回答这一句话。用数学语言把任务写清楚会更有帮助也方便后面把直接策略、NWM 与 NavWAM 三者放在一起逐一对照。在时刻t tt机器人拿到当前观测o t o_tot​和目标图像g gg要输出一段长度为H HH的可执行动作块也就是从t tt到t H − 1 tH-1tH−1的一串连续动作而不是只走一步就停下来重算。传统直接策略学的就是下面这个条件分布它把当前画面加目标直接映射成接下来该走的一串动作π θ ( a t : t H − 1 ∣ o t , g ) \pi_{\theta}\left(a_{t:tH-1} \mid o_t,\, g\right)πθ​(at:tH−1​∣ot​,g)这里的关键是这个式子只关心给定当前画面和目标动作是什么却完全没有把执行完动作会看到什么写进来等号右边没有任何关于未来观测的项。换句话说直接策略默认动作可以脱离对后果的想象而单独学好这正是后面 NavWAM 要补上的一块短板。2. 上一代方案 NWM会想象但自己不会走2.1 NWM 学会了想象未来要理解 NavWAM 的新得先看清它的前辈——导航世界模型Navigation World ModelNWM到底做到了哪一步、卡在了哪一步。NWM 是 Bar、LeCun 等人发表于 CVPR 2025 的工作arXiv:2412.03572它本质上是一个可控的视频生成模型给它当前的观测画面和一串动作它能预测出机器人执行完这串动作之后未来的第一人称画面长什么样。用一句话概括它的能力——它学会了想象未来。写成条件分布NWM 建模的是给定当前画面和候选动作未来画面的样子p θ ( o t H ∣ o t , a t : t H − 1 ) p_{\theta}\left(o_{tH} \mid o_t,\, a_{t:tH-1}\right)pθ​(otH​∣ot​,at:tH−1​)换句话说NWM 是一个给动作、还画面的预测器喂进去一串候选动作它吐出对应的未来画面。这里要注意它天生只回答未来长什么样并不回答我到底该选哪条动作——后者被完整地留给了下游一个单独的规划模块而这道分工正是它后来在速度上吃大亏的根源。2.2 CEM 规划器又慢又重的外挂核心问题在于想象和行动之间那道没被打通的缝。NWM 本身只是一个预测模块prediction module它并不直接输出我该怎么走。到了真正要控制机器人的推理阶段系统还得外挂一个规划器planner最常见的就是交叉熵方法Cross-Entropy MethodCEM。CEM 的工作方式是采样—打分—筛选的循环它先随机采样出一大批候选动作序列让世界模型逐个预测这些序列对应的未来画面再拿每个预测画面和目标图像比对打分最后挑出得分最高的那条轨迹执行它的第一个动作。走一步整套流程重来一遍。这套逻辑在数学上无懈可击但在工程上极其笨重因为每走一步都要把想象这件事重复上百遍。这里要把这个外挂搜索的过程写成伪代码才能直观感受到它的开销——真正的代价全藏在那个每步都要重跑一遍的采样循环里候选数一大单步耗时就爆炸式增长# 传统 NWM CEM 的推理循环示意# 每走一步都要重复这整段搜索defnwm_cem_step(obs_now,goal_img,world_model,N120,H8):best_action,best_scoreNone,-inf# 1) 采样 N 条候选动作序列N 常取 120candidate_actionssample_action_sequences(numN,horizonH)foractionsincandidate_actions:# 循环 N 次# 2) 让世界模型预测这条序列对应的未来画面future_viewworld_model.rollout(obs_now,actions)# 昂贵一次完整视频生成# 3) 拿预测画面和目标图像比对打分scoresimilarity(future_view,goal_img)ifscorebest_score:best_score,best_actionscore,actions# 4) 只执行最优序列的第一个动作然后整段推倒重来returnbest_action[0]这意味着候选越多预测次数越多计算量近乎线性地膨胀。论文附录 C.1 给出了实测数字——在同一块 RTX PRO 6000 上NWM 在 CEM 的 N120论文主结果所用预算设置下每执行一个动作要耗费约 14,521 TFLOPs、延迟高达 23 万毫秒量级运行频率掉到不足 1 Hz。对静态图片而言慢一点无所谓但对一台正在移动的机器人来说这个频率是致命的。环境在变机器人自己也在动推理慢一拍动作就滞后一拍规划不连续轨迹就会抖误差一旦累积机器人就可能偏航、卡死甚至撞上障碍物。一句话理解NWM 的困境是我能想象未来但还得靠别人替我决定怎么走而那个’别人’CEM 搜索太慢了。它把预测和决策拆成了两段慢就慢在两段之间那道每步都要重跑上百次的搜索缝。图 2传统 NWM 每走一步都要对上百条候选动作逐一预测未来画面 打分计算量随候选数线性膨胀闭环频率被压到 1 Hz 以下。3. NavWAM 把动作也塞进同一个去噪画布3.1 把动作从外部搬回模型内部NavWAM 最关键的创新是把动作生成从外部规划器里彻底拿了出来放回模型内部。它不再是先预测画面、再让规划器找动作的两段式流水线而是让视觉预见和动作决策在同一个模型、同一次计算里一起完成。为了做到这一点它借用了当前视频生成领域最主流的骨架——扩散-变换器Diffusion-Transformer, DiT并且站在一个预训练好的视频世界模型 Cosmos Predict2NVIDIA 开源的肩膀上。用一个统一的条件分布来写NavWAM 学的不再是单独的动作或单独的画面而是把动作、未来状态、未来画面、目标进度价值一起联合建模p θ ( a t : t H − 1 , s t H , o t H − 1 : t H , v t H ∣ o t , g ) p_{\theta}\left(a_{t:tH-1},\, s_{tH},\, o_{tH-1:tH},\, v_{tH} \mid o_t,\, g\right)pθ​(at:tH−1​,stH​,otH−1:tH​,vtH​∣ot​,g)对照第 1 节的直接策略和第 2 节的 NWM差别一目了然直接策略等号左边只有动作a aaNWM 左边只有未来画面o t H o_{tH}otH​两者各管一半而 NavWAM 把动作、未来状态、未来画面连同目标进度价值v t H v_{tH}vtH​全塞进了同一个联合分布里用一次去噪同时解出从根上取消了预测与决策之间那道需要外部规划器来缝合的缝。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:tH-1}待预测5未来状态 s_{tH}待预测6未来观测 o_{tH-1}待预测7未来观测 o_{tH}待预测8目标进度价值 v_{tH} ∈ [0,1]待预测图 3NavWAM 架构。底部四帧是观测条件空白帧、当前状态、目标图、当前观测顶部五帧是预测目标动作块、未来状态、两帧未来观测、目标进度价值。所有帧共用一个扩散-变换器和一个去噪目标。3.4 广播成帧动作和图像共享同一个去噪目标这张画布真正精巧的地方在于动作、状态、价值这些非图像的变量不再是像传统做法那样各接一个独立的 MLP 输出头而是被广播broadcast到隐空间的空间网格里和图像生成共享同一个去噪目标。也就是说一个 3 维的动作向量会被平铺到整张隐层网格上当成一帧来处理预测时再把这一帧去噪后的所有格子取空间平均还原回那个 3 维动作。这么做的意义是模型不再是一边看图想象、另一边另起炉灶做控制而是在同一个生成过程里把未来视觉和实际动作死死绑在了一起。想象与行动从此共用一套权重、一次前向。4. 训练目标让想得准和走得对互相成全4.1 一个去噪损失搞定所有预测把动作和图像放进同一块画布只是结构上的第一步真正让它们长在一起的是训练目标。NavWAM 的训练本质上就是一个标准的扩散去噪损失往干净画布里加噪声让 DiT 学会还原。用公式写出来网络F θ F_{\theta}Fθ​要最小化还原出的画布和原始干净画布之间的差距且这个损失只施加在需要预测的那几帧上L d i f f E σ , ϵ [ w ( σ ) ∥ x 0 − F θ ( x σ , σ , c ) ∥ 2 2 ] \mathcal{L}_{\mathrm{diff}} \mathbb{E}_{\sigma,\epsilon}\left[\, w(\sigma)\, \left\| x_0 - F_{\theta}(x_\sigma,\, \sigma,\, c) \right\|_2^2 \,\right]Ldiff​Eσ,ϵ​[w(σ)∥x0​−Fθ​(xσ​,σ,c)∥22​]这里x 0 x_0x0​是干净画布x σ x_\sigmaxσ​是加了噪声强度σ \sigmaσ之后的画布w ( σ ) w(\sigma)w(σ)是随噪声强度变化的加权项c cc是条件信息观测帧掩码、条件嵌入等。这里的关键是同一个损失同时管住了动作、状态、画面和价值——它们不是四个任务而是一块画布的四个部分。把它翻译成伪代码会更直观# NavWAM 训练目标deftraining_step(canvas_clean,model):# canvas_clean: 九帧隐层画布的干净版本sigmasample_noise_level()# 采样一个噪声强度noisegaussian_like(canvas_clean)canvas_noisycanvas_cleansigma*noise# 按扩散调度加噪canvas_predmodel(canvas_noisy,sigma,cond)# DiT 一次去噪还原# 关键 1损失只算待预测帧4~8观测帧0~3不算lossweighted_mse(canvas_clean,canvas_pred,frames[4,5,6,7,8])# 关键 2动作帧维度低只有 3H# 怕被高维图像重建损失淹没所以给它加权 λ5lossupweight(loss,frame4,factor5)returnloss这里有两个细节值得停下来说。第一动作帧只有 3H 维论文主实验里动作块长度 H4即 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 搜索…详情请参照古月居