来自小米具身智能团队,发表于 arXiv 2604.18486
摘要:先把故事讲清楚
想象你是一位经验丰富的老司机。遇到复杂路口时,你的大脑并不会真的在脑海里"逐字逐句"地默念"前方有红灯→行人正在过马路→我应该刹车"——你只是瞬间感知+立刻行动。然而,当前的自动驾驶AI在做决策时,往往要先把这段"内心独白"一字一字地写出来(也就是所谓的链式推理 Chain-of-Thought,CoT),这既慢又冗余。
OneVL 的目标,就是让AI也能像老司机那样:思考在心里,行动在当下——而且思考质量不降反升。
第一章:引言——三个核心矛盾
🚗 CoT推理为什么这么香?
近年来,视觉语言动作模型(VLA)已成为自动驾驶的核心基础设施。其中,链式推理(CoT) 是个大功臣:让模型在预测轨迹之前,先用自然语言描述场景、分析意图、推断行为——有了这个"思考过程",规划误差显著降低。
⏱️ 但它太慢了!
这里有个致命缺陷:传统CoT必须一个词一个词地生成推理链,再输出轨迹。推理链越长,等待时间越久。对于需要实时响应的自动驾驶系统,这个延迟完全不可接受。
💡 前人的尝试:隐式CoT,但踩坑了
有人想到"压缩"这条路:把冗长的推理链压缩成几个隐向量(latent tokens),推理在"向量空间里"偷偷发生,不用明着写出来——这叫隐式CoT。代表方法有 COCONUT、CODI、SIM-CoT。
但实验结果很尴尬:这些方法在自动驾驶上全军覆没,甚至比连推理都不做的"直接答题"还差。
🔍 为什么隐式CoT会失败?
论文给出了一个深刻的诊断:这些方法压缩的是语言描述,而语言本身已经是对物理世界的一层抽象——它只编码了语义标签,而不是"车会往哪儿走、路会怎么变"这类因果动力学。
换句话说,把抽象再压缩一次,离真实世界就更远了。
✨ OneVL:双模态隐式推理
本文提出 OneVL(One-step latent reasoning and planning with Vision-Language explanations),有两大创新:
- 双辅助解码器:一个"语言解码器"负责从隐向量重建人类可读的CoT推理文本;一个"视觉解码器"(世界模型角色)负责预测未来帧——强迫隐向量真正学到场景的物理因果结构。
- 预填充推理机制:推理时,辅助解码器全部丢弃,隐向量作为固定前缀一次性并行输入,速度与"不推理直接答题"几乎相同。
结果:OneVL 是第一个在隐式CoT里超越显式CoT的方法。
第二章:相关工作——站在巨人的肩膀上
2.1 隐式与隐式链式推理
从 COCONUT 到 CODI,再到 SIM-CoT,这些方法都在同一条路上探索:用更紧凑的表示替代冗长的推理 token。但它们都是为纯文本任务设计的,遇到自动驾驶这种高度视觉化、空间化的任务就"水土不服"。
2.2 VLM与VLA在自动驾驶中的应用
这一领域近年来异常活跃。从 AdaThinkDrive(自适应CoT)、LaST-VLA(大型VLA)到 Alpamayo-R1(用推理链对抗长尾场景),都在证明"让模型先想再开"是有效的——代价就是慢。
2.3 世界模型在自动驾驶中的角色
世界模型的核心思想来自强化学习:让AI能预测"我这样做之后,世界会变成什么样"。GAIA-1、Cosmos、DriveVLA-W0 等工作分别在数据生成、闭环评估、表示学习三个维度上利用世界模型。
OneVL 的独特之处在于:把世界模型当作一个训练时的辅助监督信号,而不是独立的大系统——训练完就丢,推理时零开销。
第三章:模型架构——“三合一"的精妙设计
3.1 主干:视觉语言模型
OneVL 的主干是 Qwen3-VL-4B-Instruct,一个视觉编码器(ViT)+ 视觉投影层(MLP)+ 大语言模型(LLM)的标准三件套。输入是前视摄像头图像 + 结构化文本(ego状态、历史轨迹、行驶指令)。
3.2 隐向量设计——两种"特殊占位符”
这是整个框架最有趣的部分。OneVL 在助手回复里插入两类特殊 token:
- 视觉隐向量(Zv):4个视觉潜在token,负责编码空间-时间视觉推理(“未来场景长什么样”)。在实现中用35个词表token表示。
- 语言隐向量(Zl):2个语言潜在token,负责编码语义推理(“我应该怎么想这件事”)。用20个词表token表示。
💡 有个有趣的工程细节:直接往词表里加新special token会掉点,所以他们用原有词表的token来表示隐向量——模型在训练中自然学会赋予这些位置特殊含义。
理论与工程的精妙博弈
理论上的 $C_t = 2$ 探讨的是隐式推理通道的逻辑概念深度。为了强迫模型不偷懒、不进行无用的信息死记硬背,信息论里的 信息瓶颈(Information Bottleneck) 要求这个通道必须窄到极致。在理论推导中,作者认为:
- 2 个逻辑单位(Logical Tokens) 的语义表达能力,就已经足够在高度抽象的隐藏空间里编码一个驾驶意图(比如"减速让行")
- 4 个逻辑单位 就可以在物理维度上编码 $+0.5$ 秒和 $+1.0$ 秒的未来路况预测
工程上的 20 / 35 个 Token 解决的是:如何在保护大模型预训练能力、对抗词表语义干扰的前提下,为这 2 个逻辑深度提供充足的物理表征带宽。
为什么不直接添加新的特殊Token?向已经预训练好的多模态大模型(如 Qwen3-VL)中添加全新的特殊 Token,会导致明显的性能退化:
- 冷启动难题:新加入的特殊 Token,其 Embedding 权重完全是随机初始化的,没有任何预训练的知识
- 破坏预训练对齐:大模型的 Attention 机制非常敏感,在中途强行插入没有任何语义的全新 Token,会干扰预训练模型原本极其丝滑的上下文注意力分配
解决方案:完全不新增特殊 Token,直接复用大模型原始词表中已有的 Token。这样大模型对这些 Token 的 Embedding 已经有了极好的预训练初始化。
那为什么要用 20 个(和 35 个)词表 Token?如果只用 2 个已有的词来充当隐式推理的瓶颈,会产生两个致命缺陷:
- 原语义的干扰(Semantic Bias):当只有 1 到 2 个 Token 时,自注意力机制会极难克服它们原本固有的字面含义
- 表征容量的瓶颈:大模型(如 4B 大小)的一个隐藏层向量维度 $d$ 通常在 $3072$ 左右,仅靠 2 个 Token 提供的隐藏状态空间,信息容量极易发生溢出和丢失
增加到 20 个 Token 的妙处在于:
- 稀释原始语义:当 20 个已有的词组合成一个固定的长序列时,它在自注意力机制中会形成一个相对独立的"语义盲区",有利于模型更容易地将其"重编程"为一个纯粹存放隐式推理的物理隐空间
- 极佳的信息瓶颈:20 个语言 Token(加上 35 个视觉 Token)既给两个辅助解码器提供了足够宽、足够稳的输入维度来重建出复杂的思维链和未来路况图像,同时相比于直接自回归吐出几百个文字,它依然保持了极窄、极度压缩的特征瓶颈
3.3 语言辅助解码器
从语言隐向量的隐藏状态 Hl 出发,结合当前帧的视觉 patch 嵌入 V,拼接后输入一个独立的语言模型解码器,让它重建出完整的CoT推理文本。
训练目标就是标准的交叉熵:预测的CoT要和标注的CoT尽量一致。这个损失(Ll)会反向传播到主模型,逼着隐向量"记住"语义推理内容。
3.4 视觉辅助解码器——世界模型之心
这是整篇论文最关键的创新。视觉解码器拿到视觉隐向量隐藏状态 Hv 和当前帧视觉嵌入,输出的目标是:预测未来 +0.5s 和 +1.0s 的视觉token序列。
图像先通过 IBQ 视觉分词器(来自 Emu3.5,codebook 有 131,072 个离散视觉码)离散化;Qwen3 的词表也对应扩充了 131,072 个视觉token ID。
这一步的逻辑非常优雅:要预测"0.5秒后道路长什么样",模型就必须学会车辆运动规律、道路几何结构、障碍物动态——这正是轨迹预测所需要的因果动力学,而不是模糊的语言标签。
3.5 联合训练目标
$$\mathcal{L} = \mathcal{L}_c + \lambda_l \mathcal{L}_l + \lambda_v \mathcal{L}_v$$
其中:
- Lc:主模型的轨迹预测交叉熵损失
- Ll:语言解码器损失,权重 λl = 1.0
- Lv:视觉解码器损失,权重 λv = 0.1(视觉重建更难,权重调小防止它"喧宾夺主")
3.6 预填充推理——速度魔法
推理时,辅助解码器全部抛弃。推理 prompt 构建为:
[System] + [User query] + <start-latent-vis> + Zv × 4 + <end-latent-vis>
+ <start-latent> + Zl × 2 + <end-latent>
这些隐向量 token 全部放入预填充阶段(prefill phase),现代 Transformer 会把整个前缀一次性并行处理——几乎零额外开销。之后只需自回归地生成轨迹 token。
推理结果可选输出三种东西:
- 轨迹预测(必须输出)
- 语言解释(可选,供事后人工审查)
- 视觉预测帧(可选,空间预览)
为什么变成"输入"后可以并行计算?
Transformer 底层最核心的物理机制——“读(预填充 Prefill)“与"写(解码 Decoding)“的本质区别。
可以把 GPU 想象成一个**“阅读速度极快、但写字速度极慢的超级打字员”**。
当隐式Token是"输出"时(自回归):
- 因果关系限制:模型在写第 2 个字时,必须知道第 1 个字写了什么
- 串行计算:GPU 哪怕算力再强,也无法"预知未来”,必须老老实实地运行 55 次完整的前向传播
- 带宽瓶颈:每次只写一个字,GPU 都需要把大模型几十 GB 的权重从显存里完整读取一遍
当隐式Token变成"输入"后(预填充):
- 信息完全已知:GPU 在启动前,已经拿到了全部的输入
- 矩阵乘法的并行神话:Transformer 的自注意力机制可以一次性并行计算出所有 Token 之间的 Query、Key、Value 矩阵
- 一次读取,全部算完:GPU 只需要将大模型权重从显存里读取一次,就能把这 55 个 Token 对应的 Hidden State 在 1 个 Step 内全部并行计算出来
训练建立的真正是什么能力?
训练建立的并不是"生成这些token"的能力,而是**“利用这些位置做推理"的习惯**。
在大模型的底层数学世界里,“自己吐出来的 Token"和"外部塞进去的 Token"是完全等价的。对于任何一个 Token 位置,它的计算只取决于三样东西:
- 这个 Token 的 ID 是什么(查 Embedding 词表得到初始向量)
- 它的位置编号是多少(加上位置编码)
- 它的左边都有哪些 Token(通过注意力机制计算相关性)
训练时模型一步步"写"出占位符;推理时占位符是外部一次性塞给它的输入——但当 GPU 计算到这些位置时,它所经历的数学矩阵乘法、注意力掩码、以及位置编码,与训练时完全一模一样。
大模型学到的真正能力是**“注意力路由机制(Attention Routing)”**:
- “吸星大法”:当计算运行到这 55 个占位符的位置时,模型各层的 Attention 会把左侧"图像中行人的位置、前车的加速度、马路的边界"等关键特征,全部抽取并压缩存储在这 55 个 Token 对应的隐藏状态里
- “定向读取”:当计算运行到最后的
<answer>轨迹预测位置时,注意力网络会直接去那 55 个中转站提取高度浓缩的’思想'
第四章:三阶段训练流程——“循序渐进"才能不崩溃
预备阶段:视觉解码器自监督预训练
在把视觉解码器接到主模型之前,先让它"独自练习”:只给当前帧,让它预测下两帧——不涉及任何隐向量。这相当于先让它学会"世界的一般运动规律”,再教它"按照驾驶意图来预测未来”。
Stage 0:主模型热身
把主模型+隐向量接在一起,只训练轨迹预测任务(没有辅助解码器)。目的是让隐向量位置自然地发展出对轨迹有用的内部表示,同时让注意力机制建立起"轨迹token→隐向量"的信息路由路径。
Stage 0 的隐式压力来源
Stage 0 唯一的压力来自因果注意力机制的结构:
输入tokens → 视觉隐向量位置 → 语言隐向量位置 → 轨迹tokens
↑ ↑
轨迹tokens可以attend到这些位置
如果模型发现"把一些中间计算结果存到隐向量位置,再从那里读取"比"直接从几千个图像 token 里检索"更高效,梯度下降就会朝这个方向推。
但问题是:模型完全可以绕过隐向量位置,直接让轨迹 token attend 图像 token,隐向量位置形同虚设。没有任何硬约束阻止这件事。
Stage 0 的真正作用是建立路径,不是充分利用路径。隐向量位置在 Stage 0 结束时,可能只编码了一些模糊的、局部的信息,远不是有意义的推理表示。但它为 Stage 1 的强监督创造了一个稳定的起点。
Stage 1:辅助解码器热身
冻结主模型,只训练两个辅助解码器。此时主模型输出的隐向量表示已经稳定,解码器可以专心学习"从固定的隐向量表示→语言/视觉输出"的映射。
为什么 Stage 1 不会崩溃?
有两个安全网:
- 视觉解码器有预训练兜底:即使 Hv 是弱信号,视觉解码器可以主要依赖 V(当前帧特征),把 Hv 的贡献压到接近零
- 两个解码器都能看到当前帧特征 V:解码器的输入是拼接的,V 是明确的、高质量的视觉信息
Stage 1 的真正作用是:
- 学习解码器的基本结构
- 给 Stage 2 提供初始化(解码器不是从随机开始)
- 稳定梯度来源
Stage 2:端到端联合微调
三者同时训练,Ll 和 Lv 的梯度反流回主模型,形成良性循环:
- 更好的隐向量 → 更准的轨迹预测
- 解码器反馈 → 隐向量编码更丰富的信息
正因为 Stage 0 和 Stage 1 把所有组件都"预热"好了,Stage 2 才能稳定收敛。跳过三阶段训练的后果是灾难性的。
第五章:实验——用数字说话
5.1 四个测试基准
- NAVSIM:基于真实驾驶日志的大规模非反应式仿真规划基准,评价指标是 PDM-score(越高越好,综合安全/舒适/进度)。
- ROADWork:专攻施工路段,有锥桶、临时标志、工人——所有让常规模型头大的场景,评价指标是 ADE/FDE(越低越好)。
- Impromptu:从8个开放驾驶数据集蒸馏而来,专注四类非结构化边角场景,带规划导向Q&A标注。
- APR1:引入"因果链"注释,对应复杂驾驶行为,强调可解释性和泛化性。
5.2 实验配置
所有方法都基于 Qwen3-VL-4B-Instruct,公平对比。对手包括:
- AR Answer:直接输出轨迹,不推理,最快的基线
- AR CoT+Answer:先生成完整推理链再输出,最慢但最准的显式CoT
- COCONUT/CODI/SIM-CoT:三种隐式CoT对手
- AdaThinkDrive(8B)、LaST-VLA(8B):文献最优方法
5.3 主要结果:OneVL全面碾压
| 基准 | 最优对手 | OneVL | 提升 |
|---|---|---|---|
| NAVSIM PDM↑ | 88.29(AR CoT) | 88.84 | +0.55 vs CoT |
| ROADWork ADE↓ | 13.18(AR CoT) | 12.49 | -0.69 |
| Impromptu ADE↓ | 1.42(AR CoT) | 1.34 | -0.08 |
| APR1 ADE↓ | 2.99(AR CoT) | 2.62 | -0.37 |
延迟方面:OneVL 在 NAVSIM 上达到 4.46s,与 AR Answer(4.49s)几乎相同,比 AR CoT(6.58s)快 1.5倍;在 ROADWork 上甚至比 AR Answer 还要快(4.71s vs 4.74s)。
最重要的发现:三种隐式CoT对手(COCONUT、CODI、SIM-CoT)在几乎所有基准上都不如"直接答题”,充分证明纯语言隐式CoT用于驾驶是失败的。
5.4 解释质量评估
OneVL 不只是快,还要能讲清楚"为什么这么开”。在 NAVSIM 500个测试样本上,用三种维度评估语言解释:
- 元动作准确率(高层驾驶决策的精确匹配):OneVL 71.0,优于 SIM-CoT 的 67.2
- 语义相似度(STS):OneVL 78.26,接近 AR CoT 的 79.75
- LLM-as-Judge 评分:OneVL 79.13,接近 AR CoT 的 81.86
AR CoT 的语言解释质量仍略胜一筹(毕竟它是直接生成文本的),但 OneVL 以"压缩隐向量还原文本"的方式已经非常接近——而速度快得多。
5.5 消融实验:每个组件都有贡献
| 模型变体 | NAVSIM PDM ↑ |
|---|---|
| 去掉视觉解码器 | 87.97(-0.87) |
| 去掉语言解码器 | 88.53(-0.31) |
| 去掉三阶段训练 | 67.13(-21.71!) |
| 完整 OneVL | 88.84 |
几个关键发现:
🔥 去掉三阶段训练 → 直接崩溃。初始梯度范数爆炸到 378.22(正常版本是 0.28),轨迹预测损失高出 37%,最终 PDM 直接掉 21.71 分。这说明三阶段课程不是锦上添花,而是不可或缺的"稳定器"。
🔥 视觉解码器的贡献(+0.87)远大于语言解码器(+0.31)。因为轨迹预测本质上是空间预测任务,视觉未来帧预测是比语义描述更直接的因果监督信号。
可视化对比也很直观:用完整训练方案时,视觉解码器输出的未来帧与真实场景高度一致;去掉三阶段训练后,解码器退化成"背答案",输出与输入图像毫无关联的乱码图像。
5.6 迈向真实部署
对于需要极低延迟的车载系统,论文还探索了一个"轻量化"变体:在最后一个隐向量的隐藏状态上接一个MLP直接回归头,一次前向传播输出轨迹(不再自回归)。
| 变体 | PDM ↑ | 延迟 ↓ |
|---|---|---|
| OneVL(AR解码) | 88.84 | 4.46s |
| OneVL(MLP头) | 86.83 | 0.24s(4.16 Hz) |
0.24s 的延迟相当于 AR 模型延迟的 5.4%,满足车载"几赫兹"的预算,同时性能仍然优于之前的 SOTA 方法(如 LaST-VLA 的 87.30)。
5.7 深度分析:收益从哪里来?
为什么压缩反而更准? 论文给出信息瓶颈理论的视角:紧凑的隐向量强制模型只保留对轨迹预测真正有用的因果特征,过滤掉冗余的"正确废话"。而显式CoT链里可能充斥着与轨迹决策无关的描述,反而引入噪声。
为什么先前的隐式CoT在自动驾驶上失败? 两个根本原因:
- 缺少视觉世界模型监督——纯语言隐向量编码的是"世界的语义抽象",而不是"世界的物理规律"
- 没有分阶段训练——优化从一开始就处于混乱状态,各组件无法协同
第六章:结论与展望
核心洞见
OneVL 的核心命题是:压缩驱动泛化(compression drives generalization)。但压缩什么很关键——压缩语言描述(已经是抽象)只满足了"效率要求",没满足"智能要求"。必须压缩真实世界的因果动力学,才是真正有意义的压缩。
视觉世界模型解码器提供了这个"因果锚点":要预测出未来场景图像,模型就必须真正理解场景运动的物理规律。
局限性
- 训练时需要同时保持三个4B参数模型在内存中,约为3倍训练显存,即使有 DeepSpeed ZeRO-2 也不轻松
- 隐向量数量是经验性选择,如何系统性地权衡"隐向量数量 vs 表示容量"有待深入研究
未来方向
- 轨迹token并行解码:目前预填充阶段已经很快,瓶颈在于轨迹token仍需自回归——并行解码轨迹是下一步
- 多摄像头世界模型:扩展到360°全景未来帧预测,提供更全面的因果场景理解
- 人机交互界面:实时向驾驶员展示"视觉+语言双解释"——车为什么这样走,AI来给你说清楚,同时也能为强化学习提供更丰富的训练信号
附录一瞥
- 数据格式示例:详细展示了CoT标注的格式,包括对场景感知、关键物体、驾驶意图的结构化描述
- CoT标注构建:NAVSIM 使用 AdaThinkDrive 的公开标注;ROADWork 内部生成;Impromptu 基于Q&A对重建;APR1 使用"因果链"标注
- 定性可视化:四个数据集各有详细的案例展示,包括未来预测帧和推理文本,充分展示了 OneVL 的可解释性
一句话总结:OneVL 找到了自动驾驶AI"既快又聪明"的正确姿势——把推理藏进向量,但用未来视觉图像来"考核"这个向量是否真的懂得了驾驶的物理规律。