【三分钟看懂 SimWAM】(上):训练时让世界模型“预演”,上车后不再生成未来

一辆自动驾驶汽车驶到路口,前方既有并线车辆,也有红绿灯和复杂的道路边界。
如果让模型先生成几帧“接下来可能发生什么”的视频,再根据这些未来画面规划轨迹,直觉上当然合理:既然看见了未来,做决定似乎就会更稳。
问题是,生成未来视频本身很贵。
当一个数十亿参数的视频生成模型被塞进每一次规划循环,汽车就必须先等“未来画面”生成出来,才能决定下一步怎么走。世界模型带来了更强的动态理解,也把一段昂贵的视频生成过程带上了车。
SimWAM 想做的,正是把这两件事拆开:
训练时用未来视频教模型理解交通如何演化,部署时不再生成未来视频,直接输出驾驶轨迹。
这篇工作来自华中科技大学与东风研发总院。论文全名为 SimWAM: A Simple World Action Model for End-to-End Autonomous Driving,代码和模型权重已经开源。
图 1 SimWAM 的核心直觉:左侧未来视频只在训练期出现,部署时越过“隔离门”,直接生成驾驶轨迹(封面图)
旧的世界动作模型,为什么总要“想完再开”
传统端到端自动驾驶模型直接从相机、车辆状态和导航指令预测轨迹。它们速度快,但主要依赖模仿学习:训练数据里人类怎么开,模型就学着怎么开。
这种做法能记住大量驾驶模式,却未必显式理解“场景接下来会如何变化”。于是,世界动作模型(World-Action Model,WAM)开始把视频世界模型接入规划器:先预测未来场景,再让动作模型参考未来场景做决策。
论文把这种范式写成:
$$\
p(a\_{t+1+H}\mid o\_t,s\_t,l)\
\=\int p(z\_{t+1+N}\mid o\_t,s\_t,l),\
p(a\_{t+1+H}\mid o\_t,s\_t,l,z\_{t+1+N}),dz\
$$
其中,$o_t$ 是当前相机画面,$s_t$ 是速度、加速度和横摆角速度等自车状态,$l$ 是导航指令;$z_{t+1+N}$ 则是模型生成的未来视频潜变量。
翻译成人话,就是两步:先生成未来场景,再根据未来场景生成驾驶轨迹。
问题不在“想象未来”没有用,而在于它出现在了错误的时间:视频生成对学习动态很有价值,但未必需要在每次推理时重新做一遍。
SimWAM 因此把推理接口改回最直接的形式:
$$\
p(a\_{t+1+H}\mid o\_t,s\_t,l)\
\=p(a\_{t+1+H}\mid z(o\_t),s\_t,l)\
$$
部署时,动作专家只读取当前观察表征、自车状态和导航指令,直接规划未来轨迹。视频生成由“车上的必经步骤”,变成了“训练场里的老师”。
两个专家一起学,部署时只留一条路
SimWAM 由两个互不共享参数的专家组成:
- 视频专家:以 Wan2.2-5B 的 Video DiT 为主干,配合视频 VAE 和 T5 文本编码器,学习从当前画面预测未来 8 帧。
- 动作专家:一个隐藏维度为 1024 的 Action DiT,输入当前观察、自车状态和导航指令,预测未来 4 秒内的 8 个轨迹点。
训练阶段,二者通过统一的注意力接口联合工作;推理阶段,昂贵的未来帧生成路径被移除,动作分支直接输出轨迹。
这里需要说得更精确一点:被省掉的主要是视频 DiT 的未来帧 rollout,当前画面的必要编码仍然存在。SimWAM 并不是完全不使用视觉编码,而是不再把“生成完整未来视频”放进在线规划闭环。

图 2 SimWAM 总体架构:视频 DiT 与动作 DiT 联合训练,隔离注意力阻止动作读取未来帧;推理与强化学习阶段移除未来视频生成
第一把钥匙:联合 Flow Matching,把视频动态“教”给动作分支
视频和轨迹看起来是两种完全不同的对象,但 SimWAM 用同一种生成框架训练它们:Rectified Flow Matching。
其核心做法,是在真实样本 $x$ 和高斯噪声 $\epsilon$ 之间构造一条直线:
$$\
x\_\tau=(1-\tau)x+\tau\epsilon\
$$
网络学习预测这条路径上的速度 $\epsilon-x$:
$$\
\mathcal{L}*{FM}\
\=\mathbb{E}*{x,\epsilon,\tau}\
\left|v\_\theta(x\_\tau,\tau,c)-(\epsilon-x)\right|\_2^2\
$$
训练完成后,再从噪声端沿着学到的速度场积分回真实数据端。对视频分支来说,目标是未来帧潜变量;对动作分支来说,目标是未来轨迹。
SimWAM 的联合目标很朴素:
$$\
\mathcal{L}=\mathcal{L}^{act}*{FM}+\lambda\mathcal{L}^{vid}*{FM}\
$$
也就是“轨迹生成损失 + 未来视频生成损失”。论文中取 $\lambda=1$。
真正关键的不是把两个 loss 相加,而是两个任务在训练时围绕同一当前观察进行注意力交互。未来视频任务迫使表征捕捉车辆运动、道路拓扑和交通参与者变化;动作分支则把这些动态线索转成可执行轨迹。
换句话说,视频专家不需要在部署时继续替汽车“画未来”,它已经在训练阶段把“什么东西会动、可能往哪里动”压进了当前观察表征。
第二把钥匙:一张注意力掩码,切断未来帧的信息泄漏
如果训练时动作 token 可以直接看到未来帧 token,模型很容易学会走捷径:既然未来画面已经摆在面前,就直接照着未来做轨迹预测。
可一旦部署时删掉未来视频,这条信息通路突然消失,动作模型就会遇到训练—推理不一致。
SimWAM 的解决方案很简单:隔离注意力掩码(Isolated Attention Mask)。
它规定了三组 token 之间的信息流:
- 未来帧 token 可以看当前观察;
- 动作 token 也可以看当前观察;
- 未来帧 token 与动作 token 彼此不可见。
于是,两个专家共享的是“当前场景的动态表征”,而不是视频专家已经生成好的答案。动作分支从训练第一天起,就没有依赖未来帧。
这个设计只有一张 mask,却同时避免了未来信息泄漏,保证了训练与推理依赖关系一致,也允许部署时直接删除未来帧生成路径。
论文的注意力消融同样支持这一点:双向注意力得到 90.2 PDMS,“动作看视频”的单向模式得到 90.1,而隔离注意力得到 90.3。至少在这组实验中,让动作分支读取未来视频 token 没有带来可测收益,反而会把昂贵的未来生成重新绑回推理过程。
到这里,SimWAM 已经完成了第一步:让世界模型负责“教”,而不再强制它每次都负责“演”。
但只靠模仿学习,动作分支仍然是在复刻数据里的专家轨迹。下一篇继续看,作者如何把确定性的 Flow ODE 改成可探索的 SDE,再用强化学习把 PDMS 从 90.3 推到 91.5;以及这个“更快”为什么仍然不等于 1-NFE。
是的,我正想跟官方提这个问题,公式渲染不出来,我是按照latex的格式输入的公式,但是在我们平台无法识别渲染