1. 从标题拆解PlanWAM到底在解决什么问题
1.1 自动驾驶世界模型的“无效预测”困境
自动驾驶领域这两年最火的方向之一就是世界模型。简单说,世界模型就是让系统在脑子里“预演”接下来几秒甚至十几秒会发生什么——自车往前开,旁边的车会不会突然变道?路口的行人会不会冲出来?这些预测如果做得好,规划模块就能提前做出更安全的决策。
但问题来了。我接触过不少做端到端自动驾驶的朋友,大家普遍反映一个痛点:世界模型预测出来的未来画面确实很逼真,视频生成质量也很高,可到了规划模块那里,这些预测几乎用不上。为什么?因为世界模型往往在预测“像素级的未来”,而不是“决策级的未来”。它关心的是下一帧图像长什么样,而不是“我如果左转,旁边那辆车会不会让我”。
这就好比你下棋的时候,脑子里在模拟对手下一步怎么走——你不需要精确预测对手手指的每一个关节角度,你只需要知道“他大概率会跳马”或者“他可能会吃我的车”。PlanWAM这篇工作的核心洞察就在这里:世界模型应该预测对规划真正有用的未来,而不是所有未来。
1.2 PlanWAM的核心思路:规划感知的世界模型
PlanWAM这个名称本身就有讲究。Plan是规划,WAM大概率是World Model的缩写变体。从标题来看,这个工作的核心主张是:世界模型的预测目标不应该由重建损失或者像素相似度来定义,而应该由下游规划任务的需求来定义。
换句话说,传统世界模型的训练目标是“预测得准”,PlanWAM的训练目标是“预测得对规划有用”。这两个目标在很多时候并不一致。一个世界模型可能把路面的纹理预测得非常精确,但对“前方车辆是否会紧急刹车”这个规划最关心的问题却预测得很模糊。
我个人的理解是,PlanWAM很可能采用了一种规划导向的表示学习方式。它不会去预测完整的未来图像帧,而是预测一组对规划有意义的中间表示——比如其他交通参与者的未来轨迹分布、可行驶区域的演变、潜在碰撞风险的时间演化等等。这些表示直接喂给规划模块,规划模块不需要再去从像素里“猜”出决策所需的信息。
1.3 为什么这个方向值得关注
自动驾驶的端到端方案现在面临一个尴尬:感知模块越来越强,规划模块却经常被诟病“不够智能”。一个很重要的原因就是,感知和规划之间缺少一个有效的“接口”。世界模型本来应该扮演这个接口的角色,但之前的世界模型大多是在做“视频预测”,而不是在做“决策预测”。
PlanWAM如果真能做到让世界模型直接输出规划可用的未来表示,那它实际上是在重新定义世界模型在自动驾驶栈中的位置。它不再是一个独立的预训练任务,而是规划模块的一个可微分组件。这意味着整个系统的优化目标可以端到端地对齐——规划做得好不好,直接反馈给世界模型去调整它预测什么。
这个思路如果走通,对行业的影响会很大。因为现在很多团队在做世界模型时,最大的困惑就是“我到底该预测什么”。PlanWAM给出了一个明确的答案:预测那些如果预测错了会导致规划失败的东西。
2. 核心技术点深度拆解
2.1 规划导向的预测目标设计
PlanWAM最核心的技术点,我认为是它如何定义“对规划有用的未来”。这不是一个简单的问题。规划模块需要的信息可以有很多种,但并不是所有信息都同等重要。
从常见的自动驾驶规划实践来看,规划模块最关心的信息大概有这么几类:第一类是其他交通参与者的意图和轨迹,尤其是那些可能与本车产生交互的对象;第二类是空间的可通行性,比如某条车道是否被占用、某个区域是否安全;第三类是时间维度上的风险演化,比如一个潜在冲突点是会逐渐消解还是会加剧。
PlanWAM很可能设计了一套预测头,每个预测头对应一类规划关心的信息。然后通过规划损失来反向选择哪些预测头是重要的。这有点像注意力机制,但注意力是在特征维度上做加权,而PlanWAM是在预测目标维度上做选择。
注意:这里说的“选择”不一定是硬选择,更可能是软加权。因为规划任务本身是连续的,硬选择会导致梯度无法回传。
2.2 世界模型与规划器的联合优化
如果PlanWAM只是设计了一套规划友好的预测目标,那它还不够“WAM”。我推测它的另一个关键技术点是世界模型和规划器的联合优化。
传统做法是先训练世界模型,再训练规划器,两个阶段是解耦的。这种做法的好处是训练稳定,坏处是世界模型学到的表示可能对规划器来说并不是最优的。PlanWAM很可能采用了一种交替优化或者端到端微调的策略,让规划器的梯度能够回传到世界模型,从而让世界模型学会“规划器需要我预测什么”。
这里的技术难点在于,规划器的输出通常是离散的决策序列或者连续的轨迹参数,这些输出的梯度如何有效地回传到世界模型的预测头上。如果世界模型预测的是未来图像,那梯度回传的路径会非常长,而且图像空间的梯度噪声很大。PlanWAM如果预测的是中间表示,那梯度回传就会干净很多。
2.3 与现有世界模型方案的对比
为了更清楚地说明PlanWAM的特点,我整理了一个对比表格。需要说明的是,这个表格是基于我对这个方向常见方案的理解整理的,PlanWAM的具体实现细节可能有所不同,但核心差异应该能体现出来。
| 对比维度 | 传统视频预测世界模型 | 规划导向世界模型(PlanWAM思路) |
|---|---|---|
| 预测目标 | 未来图像帧或像素级表示 | 规划相关的中间表示 |
| 训练信号 | 重建损失、感知损失 | 规划损失为主,重建为辅 |
| 与规划器关系 | 解耦,先训后用 | 联合优化,梯度互通 |
| 计算开销 | 高,需要生成高分辨率未来帧 | 较低,只需预测低维表示 |
| 可解释性 | 差,规划器难以理解预测结果 | 较好,预测结果直接对应规划变量 |
| 泛化能力 | 对未见场景的像素预测容易崩溃 | 对未见场景的规划表示更鲁棒 |
这个对比不是要否定视频预测世界模型的价值。在仿真和场景生成方面,视频预测仍然很重要。但在实车规划任务中,规划导向的世界模型显然更实用。
2.4 潜在的技术挑战
PlanWAM这个思路听起来很合理,但实现起来有几个硬骨头要啃。
第一个挑战是规划损失的设计。规划损失本身就是一个很难设计的东西。如果规划器是基于采样的,那损失可能是采样的轨迹和专家轨迹之间的距离;如果规划器是基于优化的,那损失可能是优化目标的值。不管哪种,规划损失都比重建损失难优化得多,因为它涉及序列决策和交互。
第二个挑战是预测表示的选择。到底预测哪些中间表示对规划最有用?这个问题的答案可能因场景而异。城市道路和高速公路的规划关注点就不一样。PlanWAM可能需要一种自适应的表示选择机制。
第三个挑战是训练稳定性。联合优化世界模型和规划器很容易导致训练崩溃。世界模型可能会为了迎合规划器而输出退化的表示,规划器也可能因为世界模型的噪声而学不到好的策略。这需要精细的课程学习和正则化设计。
3. 实操层面的复现思路与关键细节
3.1 整体架构的搭建思路
如果你要复现PlanWAM的核心思想,我建议从以下几个模块开始搭建。
首先是场景编码器。这个模块负责把当前的传感器输入(可以是图像、激光雷达点云或者两者的融合)编码成一个场景表示。这个表示不需要太高维,关键是包含规划所需的信息。我个人的经验是,用BEV(鸟瞰图)特征作为场景表示比较合适,因为它天然对齐了规划的空间坐标系。
然后是世界模型预测头。这个模块接收场景表示和自车的候选动作,输出对未来规划相关变量的预测。候选动作可以是一组离散的轨迹片段,也可以是一个连续的动作空间。预测头可以设计成多头结构,每个头负责一类规划变量。
接着是规划器。规划器接收世界模型的预测结果,输出最终的轨迹或者决策。规划器可以是一个简单的优化器,也可以是一个学习到的策略网络。如果要做联合优化,规划器最好是可微的。
最后是损失函数。这是PlanWAM思路的关键。损失函数应该包含两部分:规划损失和辅助损失。规划损失衡量规划结果和专家轨迹的差异,辅助损失可以是预测表示和真实未来表示之间的差异。辅助损失的权重需要仔细调节,太高会主导训练,太低则起不到正则化作用。
3.2 数据准备与预处理要点
自动驾驶的数据集现在有不少公开的,比如nuScenes、Waymo Open Dataset等。但如果你要做规划导向的世界模型,这些数据集可能不够用,因为它们主要标注的是感知任务,规划相关的标注比较少。
我建议的做法是,先用感知数据集预训练场景编码器,然后用带有规划标注的数据集(比如一些带有自车轨迹和交互标注的数据集)来训练世界模型和规划器。如果找不到合适的公开数据集,可以考虑用仿真环境生成数据。CARLA是一个常用的选择,它可以生成带有精确规划标注的交互场景。
数据预处理方面,有几个细节需要注意。第一是时间对齐,传感器数据、自车状态、其他交通参与者状态必须在时间上严格对齐。第二是坐标系转换,所有数据都要统一到自车坐标系或者BEV坐标系下。第三是归一化,不同模态的数据量纲差异很大,需要做适当的归一化。
3.3 训练策略与超参数选择
训练PlanWAM这样的联合模型,我个人的经验是分阶段训练比较稳妥。
第一阶段,单独训练场景编码器和世界模型预测头,用辅助损失作为主要监督信号。这个阶段可以让模型学会预测合理的未来表示。学习率可以设大一点,比如1e-3到1e-4之间。
第二阶段,冻结场景编码器,训练规划器。这个阶段让规划器学会从世界模型的预测中提取决策信息。学习率可以小一点,比如1e-4到1e-5。
第三阶段,联合微调。解冻所有模块,用规划损失为主、辅助损失为辅进行端到端优化。学习率要更小,比如1e-5到1e-6,并且要加梯度裁剪防止训练崩溃。
超参数方面,辅助损失的权重我建议从0.1开始试,然后根据规划性能调整。如果规划性能不好,可以降低辅助损失权重;如果世界模型预测的表示退化严重,可以提高辅助损失权重。批量大小受显存限制,一般能多大就多大,因为联合训练对批量大小比较敏感。
3.4 评估指标的设计
评估PlanWAM这样的系统,不能只看规划的成功率或者碰撞率。我建议从多个维度评估。
规划安全性方面,可以用碰撞率、急刹车频率、偏离可行驶区域的比例等指标。规划舒适性方面,可以用加速度变化率、转向角变化率等指标。规划效率方面,可以用到达目的地的时间、行驶距离等指标。
世界模型预测质量方面,可以用预测表示和真实表示之间的误差,但要注意这个误差应该只在规划相关的维度上计算。如果预测表示是高维的,可以用降维后的可视化来定性评估。
还有一个很重要的评估维度是规划对世界模型预测的敏感度。如果规划结果对世界模型的预测变化不敏感,那说明世界模型可能没起到作用。可以通过扰动世界模型的预测输出来观察规划结果的变化程度。
4. 常见问题与排查技巧实录
4.1 训练不收敛怎么办
联合训练世界模型和规划器时,训练不收敛是最常见的问题。我遇到过几次,排查下来通常有这几个原因。
第一个原因是损失尺度不匹配。规划损失和辅助损失的量纲可能差好几个数量级,导致其中一个主导了梯度。解决办法是对损失做归一化,或者用自适应权重调整。
第二个原因是梯度冲突。世界模型希望预测得准,规划器希望预测得有用,这两个目标在某些情况下是冲突的。解决办法是使用梯度手术(gradient surgery)或者交替优化,不要让两个梯度同时更新共享参数。
第三个原因是模型容量不够。如果场景编码器太小,它可能无法同时满足世界模型和规划器的需求。解决办法是增大编码器容量,或者让世界模型和规划器使用不同的编码器分支。
4.2 规划结果抖动严重怎么排查
规划结果抖动是另一个常见问题。表现是相邻时间步的规划轨迹变化很大,导致车辆控制不平顺。
排查思路是这样的:先看世界模型的预测是否抖动。如果世界模型预测的未来表示在相邻帧之间变化很大,那规划抖动就是必然的。这时候需要检查世界模型的时序建模是否充分,可能需要加入时序平滑损失。
如果世界模型预测是稳定的,那问题可能在规划器。规划器可能对输入噪声太敏感。可以尝试在规划器输入端加噪声进行鲁棒性训练,或者使用轨迹平滑后处理。
还有一个可能的原因是候选动作空间设计不合理。如果候选动作之间的差异太小,规划器容易在相近的候选之间跳来跳去。可以增大候选动作的多样性,或者使用连续动作空间。
4.3 世界模型预测退化的识别与处理
世界模型预测退化是指它输出的预测表示变得没有信息量,比如所有维度的值都趋同,或者预测结果和真实未来完全无关。这种情况在联合训练中很容易出现,因为规划器可能学会忽略世界模型的输出,导致世界模型得不到有效的梯度。
识别方法很简单:定期计算世界模型预测表示和真实表示之间的互信息或者相关性。如果相关性持续下降,说明世界模型在退化。
处理方法有几个。一是增加辅助损失的权重,强制世界模型保持预测能力。二是使用stop-gradient技巧,在规划器更新时不让梯度回传到世界模型,避免规划器“带偏”世界模型。三是定期用辅助损失单独微调世界模型,让它“找回”预测能力。
4.4 常见问题速查表
| 问题现象 | 可能原因 | 排查方法 | 解决思路 |
|---|---|---|---|
| 训练损失震荡 | 学习率过大或批量太小 | 观察损失曲线,检查梯度范数 | 降低学习率,增大批量,加梯度裁剪 |
| 规划碰撞率高 | 世界模型预测不准或规划器过拟合 | 对比世界模型预测和真实未来 | 增加辅助损失权重,增加训练数据多样性 |
| 规划轨迹抖动 | 世界模型时序不一致或规划器敏感 | 检查相邻帧预测差异 | 加时序平滑损失,规划器鲁棒性训练 |
| 世界模型退化 | 规划器忽略世界模型输出 | 计算预测表示与真实表示的相关性 | 增加辅助损失,使用stop-gradient |
| 推理速度慢 | 世界模型预测头太多或规划器太复杂 | 分析各模块耗时 | 剪枝预测头,简化规划器,使用缓存 |
4.5 几个容易被忽略的实操细节
第一个细节是坐标系的一致性。世界模型预测的未来表示和规划器使用的坐标系必须一致。我见过一个案例,世界模型在自车坐标系下预测,规划器在全局坐标系下规划,结果规划出来的轨迹完全不对。这个坑很隐蔽,因为两个模块单独测试都没问题,只有联合运行时才暴露。
第二个细节是时间步长的对齐。世界模型可能预测的是未来1秒、2秒、3秒的表示,规划器可能需要的是未来0.5秒、1.5秒、2.5秒的表示。如果时间步长不对齐,规划器就需要做插值,插值会引入误差。最好让世界模型的预测时间步长和规划器的时间步长一致。
第三个细节是候选动作的覆盖范围。世界模型需要针对候选动作做预测,如果候选动作没有覆盖到最优动作,那规划器再强也选不出好轨迹。候选动作的覆盖范围要足够大,同时分辨率要足够细。我一般建议候选动作在横向和纵向上都要覆盖规划时域内可能的最优动作,分辨率根据控制精度要求来定。
5. 这个方向后续可以怎么扩展
5.1 从单模态到多模态预测
PlanWAM目前可能主要处理的是确定性预测,即给定当前状态和候选动作,预测一个未来的表示。但实际交通场景中,未来是多模态的——前车可能刹车也可能不变道,行人可能等待也可能抢行。如果世界模型只预测一个未来,规划器就失去了对不确定性的建模能力。
一个自然的扩展方向是让世界模型输出多模态的未来表示,每个模态对应一种可能的未来演化。规划器可以基于这些模态做风险敏感的规划,比如对高风险模态做保守规划,对低风险模态做激进规划。这需要世界模型具备多模态输出的能力,可以用混合密度网络或者扩散模型来实现。
5.2 从开环到闭环训练
目前PlanWAM很可能是在开环数据集上训练的,即用专家轨迹作为规划目标。但开环训练有个根本问题:规划器在训练时看到的未来是专家轨迹下的未来,而不是自己决策下的未来。这会导致分布偏移——规划器在推理时做出的决策可能把车辆带到训练时没见过的状态。
闭环训练是解决这个问题的方向。在闭环训练中,规划器的决策会影响世界模型的输入,世界模型再预测新的未来,规划器再决策,如此循环。这需要可微的仿真环境或者可微的世界模型。训练难度会大很多,但学到的规划器会更鲁棒。
5.3 从单车到多车交互
PlanWAM目前可能主要关注自车的规划,其他交通参与者作为环境的一部分。但在密集交通中,其他车辆也在做规划,它们的规划会影响自车的未来,自车的规划也会影响它们的未来。这是一个博弈问题。
扩展方向是把世界模型扩展成多智能体世界模型,每个智能体都有自己的规划器,世界模型预测所有智能体的联合未来。这需要处理智能体之间的交互建模和联合优化。计算复杂度会高很多,但更接近真实交通场景。
5.4 从模块化到端到端
PlanWAM目前可能还是模块化的——场景编码、世界模型预测、规划器是分开的模块。虽然联合优化了,但架构上还是分离的。更激进的扩展是端到端方案:一个统一的网络直接从传感器输入输出规划轨迹,世界模型预测作为中间表示隐式地存在。
端到端方案的好处是架构简洁,没有模块间的接口损失。坏处是可解释性差,调试困难。我个人的看法是,在安全关键的自动驾驶领域,完全端到端可能还需要一段时间才能被接受。PlanWAM这种规划导向的世界模型是一个很好的折中——既保留了模块化的可解释性,又实现了规划导向的优化。
5.5 从仿真到实车部署
最后,任何自动驾驶算法最终都要面对实车部署的挑战。PlanWAM在仿真或者数据集上表现好,不代表在实车上也能表现好。实车部署要考虑计算资源限制、传感器噪声、通信延迟等问题。
一个实用的扩展方向是模型轻量化。世界模型预测头可以剪枝,规划器可以用更高效的实现。另一个方向是鲁棒性增强,在训练时加入传感器噪声和延迟模拟,让模型适应实车环境。还有一个方向是在线自适应,让世界模型在实车运行中持续学习,适应特定的车辆动力学和传感器特性。
我个人在实际操作中的体会是,规划导向的世界模型这个思路,最大的价值不在于它提出了某个具体的网络结构,而在于它重新定义了世界模型的评价标准。以前我们评价世界模型,看的是预测得准不准、生成得像不像。PlanWAM告诉我们,应该看预测得有没有用。这个视角的转变,可能会影响未来很多世界模型的设计思路。