
2016年,AlphaGo打败李世石的时候,围棋界曾经有一种共识正在悄悄崩塌:machine只能模仿人类,不可能超越人类。这个共识在自动驾驶领域也存在了很多年。几乎所有的端到端自动驾驶系统,都在做同一件事:找一堆人类司机开车的录像,让AI去模仿。这套路子跑了快十年,大家都觉得这是唯一正确的道路。
但小米汽车这次的研究,把这个共识撬开了一道裂缝。他们做了一套叫DriveZero的系统,核心思路简单粗暴又反直觉:不靠人类示范,靠AI自己在虚拟世界里练出来的驾驶能力去教另一个AI。而且结果还挺让人意外,在NAVSIMv1这个业界公认的自动驾驶评测榜单上,DriveZero拿到了95.3分,超过了人类司机的94.8分。这是第一次有端到端模型在这个榜单上比人类司机分数更高。
这件事值得琢磨一下:AI凭什么能超过人类司机?人类开车这么多年积累的经验难道不是天花板吗?
模仿学习的天花板在哪里
先说说传统方法卡在哪儿了。
绝大多数端到端自动驾驶系统用的是模仿学习,说白了就是让AI看着人类司机开车的视频和轨迹数据,去学"人在这种情况下会怎么打方向盘、怎么踩油门"。这套路子好处很明显:数据来源现成,训练稳定,工程上好落地。
但问题也很扎心。每一段被记录下来的真实驾驶场景,只包含人类司机实际做出的那一个选择。可现实中,同一个路口、同一个红绿灯前,其实有很多种合理的开法,猛打方向躲避、缓慢刹停、加速通过都可能是对的,但录像里永远只留下了那一种。更麻烦的是,真正危险的场景,比如险些追尾后的紧急修正、被别的车逼到路肩后怎么调整回来,这些"救命"级别的操作在正常行车记录里少之又少,因为大部分司机大部分时间都开得很规矩。
模仿学习*:一种让AI观察人类行为记录,然后学习模仿相同决策的训练方式,AI的能力上限被训练数据的质量和覆盖范围锁死。
这就带来一个致命的连锁反应。AI一旦在实际上路时走出了训练数据覆盖的范围,比如遇到了录像里没出现过的诡异路况,它就没有任何"人类怎么应对"的参考样本,只能靠训练时学到的模糊经验硬撑,一步走错就可能步步错下去。这个现象在学术界有个专门的名字,叫复合误差(compounding error)。
这就好比让一个只看过别人下棋录像的新手去下棋。棋谱里的每一步都是高手的正解,新手学得再认真,也只学到了棋谱里那唯一的一条路径。一旦对手走出了棋谱之外的一步,新手立刻没了参照,只能凑合应付,而这一步凑合往往会让后面的局面越来越糟。如果不让AI自己去试错、去承受走错一步之后的连锁反应,它永远学不会怎么从错误里爬出来,因为它压根没经历过"走错"这件事。
强化学习给出了另一条路。它不是照抄人类的某一步,而是让AI自己在环境里试错,通过一个明确的奖励信号,去优化整体表现。开对了给奖励,闯祸了给惩罚,AI自己去摸索什么是好的驾驶行为。这条路理论上能突破录像数据的天花板,因为它不依赖于某一次具体的示范,而是在不断的交互里逼近一个"好司机"应该有的策略。
强化学习*:让AI通过与环境互动、根据反馈奖励不断调整自己行为策略的一种训练方式,区别于死记硬背某个标准答案。
但强化学习用在自动驾驶上有个巨大的门槛:直接在摄像头画面上做强化学习,需要海量的探索和极其昂贵的视觉仿真,成本高到离谱。这就形成了一个两难:闭环强化学习最适合用来学怎么开车,但真正要部署上车的那个只看摄像头的策略网络,恰恰最不适合拿来做大规模在线试错。这个矛盾,就是DriveZero整篇论文要解决的核心问题。
拆开来做:感知和行动分开练
小米团队的解法很有意思,他们没有硬着头皮去解决"摄像头策略怎么做强化学习"这个难题,而是绕了个弯:把感知和行动这两件事彻底拆开,各自用最适合的方式去练,练好了再拼到一起。
这个思路背后有个朴素的判断。感知这件事的核心是"看懂世界",什么是车、什么是路、什么是障碍物,这种能力靠海量多样的图片喂出来最有效,越多越杂越好。而行动这件事的核心是"跟世界打交道",方向盘怎么打、刹车怎么踩,这种能力必须靠真实的交互反馈才能学出来,光看图片是学不会开车的。既然两件事需要的养料完全不同,那就没必要绑在一起训练,分别喂给它们最合适的食物,练成之后再想办法拼起来。
这就像培养一个赛车手。你不会让他一边学怎么通过后视镜和仪表盘判断路况,一边同时学怎么在弯道上精准控制刹车和油门,这两件事的训练方式天差地别。判断路况需要大量的观察和见识,你会带他看无数场比赛录像、无数种路况图片;控制车辆需要真实的手感反馈,你必须让他真的坐进车里,一次次过弯,一次次感受轮胎打滑的临界点。如果把这两种训练硬凑在一起,又要看录像又要练手感,效率反而会更低,因为观察见识和肌肉记忆本来就不是一回事。
DriveRL:教AI在虚拟世界里学开车
行动这部分的核心叫DriveRL,这是一个从零开始、完全没有用人类示范来预训练的强化学习驾驶策略。
DriveRL的第一步是造一个能"互动"的世界。他们拿真实的nuPlan行车日志做底子,把里面记录的场景重新搭建成一个可以交互的仿真环境,环境里除了自己控制的那辆车,周围的其他车辆和行人可以有三种行为方式:按录像原样重演、用规则模型(比如智能驾驶员模型IDM)模拟正常跟车逼真反应、或者干脆也是一个正在被训练的AI策略。这三种方式可以在同一个场景里混合共存。
nuPlan*:由自动驾驶公司motional开源的一个大规模真实行车数据集,也是业内常用的闭环仿真测试基准。
IDM*:智能驾驶员模型(Intelligent Driver Model),一种经典的交通流仿真规则,用于让虚拟车辆模拟出跟车、刹车等符合物理常识的行为。
这个仿真环境跑起来的规模相当夸张,96块GPU同时运转,最多可以同时模拟196608个独立的驾驶世界。在这些世界里,DriveRL的策略网络用PPO算法反复试错。
PPO*:近端策略优化(Proximal Policy Optimization),强化学习里一种常用且训练相对稳定的优化算法,通过限制每次策略更新的幅度来避免训练突然崩掉。
值得说清楚的是,PPO这套训练完全从随机初始化开始,没有用任何人类的驾驶轨迹去做预训练,日志数据只用来给场景和导航目标"起个头",剩下的驾驶行为全靠AI自己在互动里练出来。
这个策略网络本身设计得很紧凑,只有570万个参数,输入是结构化的场景信息(周围车辆、地图、红绿灯状态)和导航目标点,输出是纵向加速度变化率和方向盘转动速率的概率分布,直接控制车辆,不需要中间再做一次轨迹规划。
DriveRL在训练时用的奖励函数设计得相当讲究。它把奖励拆成三块:硬性安全事件(比如撞车会直接扣分并终止这一回合)、到达目标的一次性奖励、以及六项软性驾驶质量指标(安全性、合规性、舒适度等)的乘积。这里有个细节值得多说一句,为什么要用乘积而不是加权求和?因为乘积意味着六项指标必须同时表现良好才能拿到高分,任何一项特别差都会把整体分数拉得很低,这样可以防止AI找到某种"偏科"的取巧策略,比如开得特别稳但总是抢黄灯,或者特别遵守规则但开得磕磕绊绊。
这套系统练出来之后,效果如何?在nuPlan官方的三个社区测试集(Val14、Test14-hard、Test14-random)上,涵盖非反应式和反应式两种模式共六项评测,DriveRL的平均分是93.01,六项全部超过了原始录像重演(Log-Replay)的表现。这个结果本身就很说明问题,因为原始录像重演代表的正是人类司机当时的实际驾驶水平,AI在同样的场景里表现得比人类司机记录本身更好。
推理时的"再想一想":值价值引导的测试时搜索
DriveRL训练完之后,团队又加了一层技巧,叫value-guided test-time action search(价值引导的测试时动作搜索),这个设计挺值得细说,因为它解决了一个很实际的问题:训练好的策略网络输出的是一个概率分布,实际执行时只取这个分布里最可能的那个动作(模态动作),这样做会丢掉两类有用的信息,一是策略本身还保留的其他备选动作,二是PPO训练时顺带学出来的价值函数(critic)对未来收益的估计。
价值函数(critic)*:强化学习里用来预测"当前状态未来能拿到多少总收益"的一个辅助模型,PPO训练策略网络的同时也会训练出这个价值函数。
具体做法是,在每一步决策时,除了保留策略网络认为最优的那个动作作为候选0,再从同一个策略分布里额外采样几个备选动作,然后针对每个候选动作,往后滚动模拟几步,用同样的奖励函数和价值函数给每个候选打分,只有当某个备选动作的分数明显超过默认动作(超过一个固定安全边际)时,才会用这个备选动作替换默认选择,否则依然执行默认动作。
这个设计的谨慎程度值得琢磨。它不是每次都无脑选"看起来更好"的那个动作,而是设了一道门槛,只有明显更优才换。这就好比一个经验丰富的老司机在开车,脑子里其实一直在盘算好几种打方向的方案,大部分时候他会按照最熟悉、最保险的那个方案走,但偶尔遇到一个稍微复杂的路口,他会多想一步"如果我现在往左压一点,后面几秒会不会更顺",只有确实想清楚了更好的方案时才会临时调整,而不是每次都瞎折腾。如果没有这道安全边际,AI可能会因为仿真误差导致的噪声波动而频繁地做出没有意义的临时调整,反而破坏了整体的稳定性。
这层加成把候选数量从8个提升到64个时,平均分从93.01进一步提升到93.57,其中提升最明显的是Test14-hard和Test14-random的非反应式设置,分别提升了1.16分和1.43分。这说明额外的计算量确实在帮AI找到一些原本会错过的更优选择。
DriveVFM:不靠标注数据也能学会"看懂路"
行动模型练好了,接下来要解决感知这一半的问题。行动模型DriveRL用的是结构化的场景信息,比如已经标注好的车辆位置、地图信息,这些是"上帝视角"的输入。但真正部署到车上的策略只能看摄像头拍到的原始图像,怎么让AI从像素里直接读出"这是车、这是路、这个东西离我多远",这就是感知模型DriveVFM要解决的事。
传统做法通常是给一个共享的骨干网络配上好几个专门的任务头,比如检测头、分割头、深度估计头,每个任务头都需要大量人工标注的数据去训练。这条路走得通,但代价很大,标注成本随着任务数量线性上涨。
DriveVFM换了个思路,它不去标注新数据,而是"偷师"已经训练好的几个视觉基础模型,把它们的知识提炼到一个统一的骨干网络里,整个过程只用原始图片,不需要任何人工标注。具体请来的"老师"有四位:DINOv3负责提供空间结构和视觉对应关系的能力,SigLIP2贡献图像级别的语义理解,SAM提供对物体边界特别敏感的分割能力,Depth Anything V2带来几何深度信息。
视觉基础模型*:在海量通用图片上预训练好、已经具备强大视觉理解能力的大模型,比如DINOv3、SAM等,各自擅长不同的视觉任务方向。
蒸馏*:让一个较小或待训练的模型去模仿一个已经训练好的模型的输出或内部特征,从而继承其能力的训练方式。
这套多老师蒸馏的思路借鉴了RADIO这个工作的agglomerative distillation(聚合式蒸馏)方法。有意思的是,不同老师被安排去教不同的"课",DINOv3同时教全局语义和局部细节,SigLIP2只教全局语义,SAM只教局部细节,这是因为每个老师模型在各自擅长的那部分表现最强,让它只教自己最擅长的部分,效果会比强行让它教全部内容更好。
这里有个容易被忽略但很关键的技术细节:不同老师模型输出的特征在数值尺度上差别很大,有的激活值集中,有的分散,如果直接混在一起训练,数值大的那个老师会不自觉地主导整个学习过程,把学生网络往它的方向拉偏。DriveVFM用了一个叫PHI Standardization(PHI-S)的技巧,把每个老师的特征做标准化处理,让它们在同一个尺度上公平竞争,谁也别仗着数值大就占便宜。
这就像几个不同领域的专家一起给一个学生上课,如果物理老师说话声音特别大,数学老师说话很轻,学生很容易不自觉地更相信物理老师说的话,即便数学老师讲的内容同样重要。你得先把大家的音量调整到同一个响度,学生才能真正公平地吸收每一门课的知识,而不是被嗓门大小左右了注意力。
DriveVFM训练分两阶段,先在256x256分辨率下训练60万步,再放大到512x512继续训练20万步,训练数据混合了通用图片(LAION-2B、ImageNet-21K、SA-1B)和真实驾驶场景图片(OpenDV、nuPlan、Waymo)。训练完成后,那几个老师模型的任务就完成了,直接扔掉,只留下这个统一的骨干网络供后续使用。
论文里做了一个特别直观的可视化实验,用Mask2Former分割模型找出图像里的地面区域,算出地面的平均特征作为"地面原型",然后看每个像素点的特征和这个原型的相似度。结果发现DriveVFM相比DINOv3,能更清晰地把路面上的长尾障碍物(比如一些不常见形状的杂物)和地面本身区分开来,这说明它确实学到了更精细的空间辨别力,而不只是笼统地知道"这是路"。
拼起来:DriveZero怎么把两边的知识融合
有了行动模型和感知模型,最后一步是把它们拼成一个能真正上车用的、只靠摄像头就能开车的系统,这就是DriveZero。
关键的桥梁是行车日志本身。每一帧行车记录里,既有多视角摄像头拍到的图像,也有对应的结构化场景状态。这意味着可以让DriveRL这个"老师"在结构化状态上跑出一条它认为最优的轨迹,同时让DriveZero这个"学生"看着同一帧的图像,去学着模仿老师跑出来的那条轨迹,而不是去模仿人类司机当时实际走的那条路。
这个设计巧妙的地方在于,学生从来不需要真的进入一个仿真环境里去闭环试错,它是在已经录好的日志帧上做开环训练,训练目标全部来自老师的推演结果,整个过程不需要渲染任何画面,效率很高。
DriveZero的架构上,它输入四个摄像头视角的图像、车辆当前的运动状态和一个导航指令,输出64条候选轨迹,每条轨迹还配了一个预测得分。摄像头图像先过DriveVFM骨干网络编码,为了在效率和效果间找平衡,训练时DriveVFM的主体参数是冻结的,只用LoRA微调其中很小一部分参数。
LoRA*:低秩适应(Low-Rank Adaptation),一种参数高效的微调方法,只训练一小部分新增的低秩参数,而不改动原模型的绝大部分权重,能大幅降低训练成本。
轨迹的训练用了一个叫winner-takes-all(胜者全得)的策略,64条候选轨迹里,只有和老师轨迹最接近的那一条会参与损失计算并得到梯度更新,剩下的候选轨迹在这一次不会被直接纠正。这样设计是为了让不同的候选轨迹去捕捉不同的驾驶风格模式,具体选哪一条在真正上路时交给另外一个专门的打分模块来判断。
这套系统还有一个特别值得展开说的设计,叫goal augmentation(目标增强)。因为DriveRL这个老师是可以根据不同的导航目标点给出不同回答的,同一个场景,只要换一个目标点去问它,它就能给出一条完全不同但同样合理的轨迹。这意味着可以给同一段真实场景反复"换角度提问",生成好几条不同的、但各自都合理的监督轨迹,而这一点,靠真实的人类行车记录是永远做不到的,因为人类司机在那一刻只会实际走一条路,你没法让真实世界里的那个人"重新走一次不同的路"给你录像。
这就像给一个学生出考卷,如果只有一份标准答案,学生学到的就是死记硬背这一份答案。但如果老师能针对同一道题,从不同的解题角度反复演示好几种正确解法,学生学到的就是解题的思路本身,而不是某一个具体的答案。人类司机的行车记录天生只能提供"一份标准答案",而DriveRL这个可以被反复提问的老师,能提供好几份不同但都正确的解法,这直接扩大了监督信号的丰富程度。
结果证实了这个设计的价值。论文里的对照实验显示,如果只用人类轨迹做监督,PDMS得分是93.92;如果换成DriveRL生成的轨迹(不加目标增强),得分反而略降到93.61;但一旦加上目标增强,得分跳到94.41,比人类轨迹监督还高出0.49分。这说明单纯换一个"老师"并不必然更好,真正带来提升的是目标增强所打开的那种数据多样性,这是只有可交互的AI老师才能提供的独特优势。
跑分说话:这套系统到底有多强
理论讲完了,看看实际成绩单。
在NAVSIMv1的navtest测试集上,用来评估自动驾驶系统的核心指标叫PDMS(Predictive Driver Model Score,预测性驾驶模型评分),它综合了无碰撞率、可行驶区域合规性、碰撞时间、舒适度、行驶进度等多个维度。
DriveZero(纯摄像头输入,不用SimScale额外数据)拿到94.8分,正好和人类司机的94.8分打平。如果再叠加SimScale这个仿真数据集做数据规模扩展,得到的DriveZero-Scale进一步冲到95.3分,正式超过人类司机。
SimScale*:一个用于扩充自动驾驶训练数据的仿真数据集,能提供大量真实数据里覆盖不到的场景。
方法 | 输入 | PDMS
Human Driver | GT | 94.8
DriveSuprim | 摄像头+激光雷达 | 93.5
DrivoR-Scale | 摄像头 | 94.6
DriveZero | 摄像头 | 94.8
DriveZero-Scale | 摄像头 | 95.3
在更难的NAVSIMv2 navhard测试集上,评价指标升级为EPDMS(Extended PDMS),这个测试集还专门设计了第二阶段考验,用高斯溅射(Gaussian Splatting)技术给车辆状态加扰动,考察系统面对突发状况的鲁棒性。DriveZero-Scale在这里拿到57.1分,超过了同样用了SimScale数据的DrivoR-Scale(54.6分),也超过了用上帝视角输入的传统规则方法PDM-Closed(56.6分)。这一点特别值得强调,因为PDM-Closed用的是完美的场景信息,DriveZero-Scale只靠摄像头图像就做到了更高的分数。
在真正的闭环测试基准HUGSIM上(这个基准是用真实场景重建出来的照片级仿真世界,测试时车辆的每一步动作都会真正影响后续场景,不是简单的轨迹打分),DriveZero-Scale在零样本迁移(也就是完全没有针对HUGSIM场景做过任何微调)的情况下,拿到46.6的HD-Score,比之前的最好成绩GigaPixel(38.5分)高出8.1分。
论文里还专门放了几个直观的对比场景。有一个场景是人类司机在路口前明显犹豫、停在原地不动,虽然路况其实是通畅的,DriveZero-Scale经过同样的场景,给出了一条更长、更顺滑的轨迹,同时和周围车辆保持安全距离,直接开过去了。另一个对比场景是前车突然刹车,之前的最强基线模型DrivoR-Scale没有及时减速,直接撞了上去,而DriveZero-Scale提前减速,保持了安全距离。
真车上路:这不只是跑分
小米团队还把DriveRL部署到了实车上做了验证,这一点值得单独提一下,因为很多论文的方法只停留在仿真评测阶段。
部署时的训练逻辑延续了论文里的思路,用自己采集的行车日志做仿真世界的种子场景,同样不使用人类示范轨迹,结构化状态由自动标注的感知真值构建,同时把实际车载感知系统输出的(带一定误差的)结果混进训练数据里,让AI提前适应真实感知系统不完美的情况,并且加入了大量域随机化来提升鲁棒性。团队在一条车流密集的城市道路上演示了系统的闭环控制能力。
写在后面
读到这篇论文时,最触动我的其实不是那几个跑分数字,而是它对"数据"这个东西的理解方式。过去这些年,整个深度学习行业有种默认的信仰,数据越多越真实越好,人类行为记录是最宝贵的黄金标准。但这篇论文实际上在说一件更微妙的事:人类行为记录固然真实,但它天生只能提供"一个答案",而好的监督信号需要的是"多个合理答案",这两者不是一回事。
这让我想起小时候学写作文,老师给你看一篇范文,你学的是那一篇的写法,但如果老师能针对同一个题目给你演示三种不同的开头方式,你学到的是"怎么想开头"这件事本身。DriveRL之所以能通过目标增强产生比人类记录更好的监督效果,本质上就是完成了从"给一个答案"到"教一种思路"的转变。
另一个让我意外的细节是QK-Clip这个看似很小的工程技巧。论文花了不少篇幅讲怎么防止注意力机制里的数值爆炸,还专门做了FP32到FP16转换后的特征偏差对比实验。这种细节通常不会被写进摘要,但恰恰是这种细节决定了一个系统能不能真正稳定地跑在量产车上,而不只是在论文的实验环境里好看。
论文里还留了一个没完全讲透的问题:训练时用的仿真世界,背景车辆的行为无论是按录像重演还是用IDM规则模拟,都不是真实人类司机会做出的复杂反应。论文自己也承认,在nuPlan的评测体系下,让背景车辆变得更"聪明"(比如让它们也是自我博弈训练出来的AI),带来的提升很有限,作者归因于评测体系本身没有奖励这种更自然的交互行为。这其实暴露了一个更深的问题:我们现在用来评价自动驾驶好坏的标准,本身可能还没有完全跟上"AI能超越人类"这件事所需要的评价维度。
如果连怎么给一个超越人类的司机打分都还没想清楚,那超越本身又意味着什么?
Q&A
Q1:DriveZero是什么?
A:DriveZero是小米汽车团队研发的一套端到端自动驾驶系统,它不依赖人类驾驶录像做训练,而是通过强化学习教出来的AI老师DriveRL生成监督信号,配合视觉基础模型DriveVFM构建感知能力,最终拼成一个只靠摄像头就能开车的系统。
Q2:DriveZero真的比人类司机开得好吗?
A:在NAVSIMv1 navtest这个业界公认的仿真评测基准上,DriveZero-Scale拿到95.3分的PDMS成绩,超过了人类司机记录对应的94.8分,这是首次有端到端自动驾驶模型在该榜单上超越人类司机分数。但这只是特定评测标准下的结果,不代表在所有真实路况下都全面超越人类。
Q3:DriveRL和DriveVFM分别负责什么?
A:DriveRL是负责学开车的行动模型,完全通过强化学习在仿真世界里从零练成,不用人类示范数据;DriveVFM是负责看懂路况的感知模型,通过蒸馏多个视觉基础模型(如DINOv3、SAM等)的知识练成,不需要人工标注数据。两者训练好之后再通过蒸馏方式拼接成完整的DriveZero系统。
好文章,需要你的鼓励
本文介绍LT-OPD训练框架,通过让极限压缩的多模态大模型在自己生成的内容上接受满血版模型指导,并配合渐进式课程学习,在仅保留5%视觉token时把性能保留率从68.6%提升到82.3%,且不增加推理成本。
本文解读ALIGNOPSD方法,该方法针对AI智能体训练中"决策与时间戳错配"问题,通过先对齐功能相同的决策场景再打分,并按可变长度决策段分配信用,在ALFWorld、WebShop、Search-QA三大任务上相比GRPO提升5.5%至8.7%。
本文介绍自适应一致性图(ACG)方法,通过持久化执行记忆图与预算感知的上下文构建,帮助AI智能体在长任务中减少信息失联,在多项基准测试中相比ReAct等基线方法提升了任务成功率。
多智能体AI协作时重复计算KV缓存浪费严重。PReCache提出预计算低秩缓存和中性基础缓存重构两项设计,免训练实现最高3.1倍加速、2.3倍吞吐提升,且准确率仅比不共享方案低1.1个百分点。