学车时教练会分三步教:先练倒库、再练侧方、最后上路。每一步都有口诀,可一上真实马路,你会发现口诀全都用不上——对面来车、行人乱穿、前车急刹,你根本来不及按“步骤”反应。老司机不一样,他把一切“吃”成了直觉。坐在副驾的师傅会在某个弯道前提前松油门、轻打方向,你问他为什么,他说“感觉前面那辆车的轨迹不对劲”。端到端规划(E2E),就是让自动驾驶像老司机那样,把“眼睛看到的画面”直接变成“手脚的动作”,中间不再有繁琐的分解步骤。本文用“老司机带徒弟”这条线索,带你拆解它背后的原理、网络结构、训练算法与量产挑战。

岗位关联

掌握端到端规划的核心思想,能让你理解自动驾驶从“规则堆砌”走向“数据驱动”的关键转折,是投身智能驾驶算法、数据与仿真岗位的必修课。

目录
  1. 可视化演示
  2. 端到端概述
  3. 网络结构
  4. 模仿学习
  5. 强化学习
  6. 世界模型
  7. 数据闭环
  8. 评估验证
  9. 产业实践
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

演示端到端规划范式、行为克隆模仿学习、TransFuser多模态融合规划,直观展示传感器原始输入如何直接映射到轨迹与控制指令。

本节配有交互动效(进入视口后自动加载,约 3KB)。

E2E与传统模块化对比 直接映射轨迹 sensor→plan 一体化网络替代感知规划控制多模块级联

端到端概述

驾校教的是“口诀派”:先判断障碍物、再规划路径、最后打方向盘,每一步都有单独的口诀。可老司机是“感觉派”——他扫一眼路况,方向盘已经自然转动,没有中间商。端到端规划就是“感觉派”:把摄像头、激光雷达等传感器看到的原始画面,直接映射成一条未来轨迹或一个转向动作,中间不再显式地拆分出“感知、预测、规划、控制”四个独立模块。

传统模块化像公司里的层层传话:感知部门写报告,预测部门看报告写预判,规划部门再根据预判画路线,最后控制部门执行。每层传话都会丢信息、延迟、累积误差;而端到端是“老司机一个人全包”,所有信息直达决策,天然避免了层层传递的误差堆积,还能全局联合优化——因为整个网络是一起训练的。

当然,“感觉派”不是没有规则,而是把规则内化进了网络的参数里。端到端规划的目标,是在给定观测 \(O\) 和网络参数 \(\theta\) 时,找到最可能的轨迹 \(\tau\):

回到比喻:口诀派教出的新手,每一步都“想太多”;端到端的车就像跟了十年师傅的老司机,看一眼路况,手已经动了。效率高、动作顺,但前提是——师傅得靠谱,训练得扎实。

τ∗=arg⁡max⁡τP(τ∣O;θ)\tau^* = \arg\max_{\tau} P(\tau \mid O; \theta)
这条公式的意思是:在所有可能开法里,挑那种在“当前看到的画面”下最像老司机开法的轨迹。网络训练得越好,这个“最像”就越接近真实的安全驾驶。
  1. 轨迹 τ代表规划器输出的未来行驶路径,例如未来 5 秒内每隔 0.1 秒的车身坐标点序列,是“打算怎么开”的完整描述。
    τ\tau
  2. 观测 O表示此刻车辆感知到的全部输入,包括图像、点云、车速、导航信息等,相当于老司机当下看到的整幅路况画面。
    OO
  3. 条件概率 P(τ|O)给定画面 \(O\) 时,轨迹 \(\tau\) 被老司机采纳的可能性;好的轨迹概率高,危险或别扭的轨迹概率低。
    P(τ∣O)P(\tau \mid O)
  4. argmax 选择在所有候选轨迹中挑概率最高的那一条,这就是网络最终输出的规划结果。
    arg⁡max⁡τ\arg\max_{\tau}

网络结构

老司机的“一眼就会”并非魔法,而是眼、脑、手的高度协同。端到端规划的网络结构也分三块:眼睛是感知编码器,大脑是 Transformer 特征融合器,手脚是轨迹解码器。摄像头图像和激光雷达点云先被编码成紧凑特征,这些特征在 Transformer 里充分交互——就像老司机会同时关注前车刹车灯、旁边自行车和路口行人——最终解码器输出未来轨迹。

早期的端到端网络直接把图像压成“方向盘转角”,像一个只看正前方的愣头青;现在的先进架构(如 UniAD、VAD)引入了隐式表征:网络内部会形成一个“场景理解”的中间状态,相当于老司机脑中对“周围谁在动、谁可能变道”的全局印象。这个隐状态不依赖人工标注,是从数据里自己长出来的。

轨迹的输出形式也讲究:可以直接输出未来 N 个航点,也可以解耦成横向偏移和纵向速度两条曲线,类似老司机心里同时盘算“往哪边绕”和“快慢怎么配合”。整体结构可以简洁表达为:

老司机的“眼脑手”是一体的,端到端网络也如此。编码器、Transformer、解码器联合训练,哪一个环节都不能单独优化——正如你不可能只练手腕就学会漂移。

τ=Decoder(Encoder(O))\tau = \text{Decoder}\big(\text{Encoder}(O)\big)
编码器把原始画面压缩成“场景概要”,解码器把概要展开成“具体走法”。中间那层隐特征,就是老司机说不清道不明的“感觉”。
  1. Encoder 编码器把高维图像、点云压缩成低维特征向量,相当于老司机扫一眼就把路况“存到心里”,而不是记住每一个像素。
    Encoder(O)\text{Encoder}(O)
  2. 隐式表征编码器输出的中间向量,承载着物体位置、相对运动、道路结构等信息,虽无显式标签,却对决策至关重要。
    z=Encoder(O)z = \text{Encoder}(O)
  3. Decoder 解码器把隐表征 \(z\) 展开成具体的轨迹点序列,相当于把心里的判断落实为方向盘和踏板的动作。
    τ=Decoder(z)\tau = \text{Decoder}(z)

模仿学习

想让徒弟学会开车,最直接的办法是让他坐副驾,看师傅怎么操作,然后照着做。这就是模仿学习,其中最常见的是行为克隆(Behavior Cloning, BC):采集大量“画面 + 师傅操作”的数据对,让网络学会“看到什么画面就输出什么操作”。师傅的操作被称为专家动作,数据被称为专家数据。

但只照着做有个隐患:徒弟一开始开得不像师傅,动作有偏差,车子就开到了师傅从没开过的位置——这些“没见过的情况”里,徒弟更不知道怎么办,偏差越来越大。这就是模仿学习著名的“分布偏移”问题,好比新手一紧张把车开进了小路,而所有教学场景都在大路上。

解决思路之一来自 DAgger 算法:让徒弟先开,师傅坐在旁边实时纠正,把这些“纠正后的场景”也加入训练数据。相当于“在错误中补课”,让模型见过自己会犯错的那些状态。行为克隆的损失函数是让网络输出尽量贴近专家动作:

模仿学习是端到端规划的“启蒙课”:先跟着师傅学个大概,但光靠模仿成不了顶尖司机,还得自己下场练——这就引出强化学习。

LBC=1N∑i=1N∥πθ(oi)−ai∗∥2L_{\text{BC}} = \frac{1}{N}\sum_{i=1}^{N}\left\| \pi_{\theta}(o_i) - a_i^* \right\|^2
简单说:一共有 \(N\) 个教学片段,每个片段里网络猜了个动作,拿它和师傅的真实动作比,差多少就惩罚多少,最后取平均。
  1. 网络输出 π_θ(o_i)第 \(i\) 个画面输入网络后,模型根据当前参数 \(\theta\) 猜出的动作,比如转向角或加速度。
    πθ(oi)\pi_{\theta}(o_i)
  2. 专家动作 a_i*同一个画面下师傅(人类专家)实际做出的动作,作为监督学习的“标准答案”。
    ai∗a_i^*
  3. 平方差范数两者相减后取平方,衡量“猜得多离谱”,平方让大偏差受到更重惩罚。
    ∥πθ(oi)−ai∗∥2\left\| \pi_{\theta}(o_i) - a_i^* \right\|^2
  4. 均值累加对所有样本求和再除以 \(N\),得到平均损失,训练就是不断让这个平均值变小。
    1N∑i=1N\frac{1}{N}\sum_{i=1}^{N}

强化学习

徒弟光看师傅开还不够,真正上手后要自己摸索:开得稳、安全到达,师傅给颗糖;剐蹭、压实线,师傅打手心。强化学习就是这个“给糖打手心”的机制。在端到端规划中,智能体是车辆策略网络,环境是仿真道路,奖励函数则综合了安全性、舒适度和到达效率——比如碰撞要重罚、急刹要轻罚、顺利到达要加分。

有了奖励,网络要回答“怎么调整参数才能拿更多糖”,最经典的方法是策略梯度:沿着“让高奖励动作概率变大”的方向更新参数。直觉上,如果某个动作带来了高回报,就提高下次再做这个动作的概率;反之则降低。这种试错式学习在真实道路上太危险,所以通常在仿真器(如 CARLA)里大规模训练,再迁移到真车。

量产中还会引入安全约束:不是“拿糖最多就好”,而是“保证不碰撞的前提下拿糖最多”,这称为带约束的强化学习。策略梯度公式如下:

强化学习让徒弟从“会照做”进阶为“会随机应变”。但无论是模仿还是试错,都少不了一样东西——预判能力,这正是世界模型的用武之地。

∇θJ(θ)=E ⁣[∑t∇θlog⁡πθ(at∣st) Rt]\nabla_{\theta} J(\theta) = \mathbb{E}\!\left[ \sum_{t} \nabla_{\theta}\log \pi_{\theta}(a_t \mid s_t)\, R_t \right]
意思是:把整段驾驶中每个动作的“对数概率梯度”乘上它带来的总回报 \(R_t\),再取平均,就得到参数应该往哪个方向调。
  1. 策略 π_θ(a_t|s_t)在状态 \(s_t\)(当前画面与车况)下,网络输出动作 \(a_t\)(打多大方向、踩多深油门)的概率分布。
    πθ(at∣st)\pi_{\theta}(a_t \mid s_t)
  2. 对数概率梯度对“做这个动作的概率”取对数再求梯度,表示“往哪个方向调参能让这个动作更容易被选到”。
    ∇θlog⁡πθ(at∣st)\nabla_{\theta}\log \pi_{\theta}(a_t \mid s_t)
  3. 回报 R_t从时刻 \(t\) 开始往后所有奖励的累积(含折扣),体现“这一步动作对长远收益的贡献”。
    Rt=∑k=0∞γkrt+kR_t = \sum_{k=0}^{\infty}\gamma^k r_{t+k}
  4. 期望求和对所有时间步和所有可能轨迹取平均,让更新方向稳定,不被某一次偶然运气带偏。
    E ⁣[∑t]\mathbb{E}\!\left[ \sum_{t} \right]

世界模型

老司机最厉害的不是反应快,而是预判准:看到前车刹车灯亮,就知道它要减速;看到路边皮球滚出,就猜到可能有孩子冲出来。世界模型就是给自动驾驶装上这种“预判”能力。它学习环境的演化规律:给定当前隐状态和自车动作,预测下一个隐状态,相当于在脑中模拟“如果这么开,世界会变成什么样”。

有了世界模型,规划器就不只是“看到什么反应什么”,而是能“推演几步再决定”——像下棋时多想几步。同时,世界模型还能处理遮挡:看不见的角落可以用隐状态推测“那里大概率有车”,从而提前减速。这种对未来隐状态的滚动预测可以表示为:

世界模型还常被用来做预训练:让网络先在海量驾驶视频里学会“世界怎么动”,再学具体规划任务,好比徒弟先大量观察路况,培养车感后再摸方向盘。预判能力有了,接下来还缺“见多识广”——这依赖数据闭环。

zt+1=fθ(zt,at)z_{t+1} = f_{\theta}(z_t, a_t)
当前脑中的场景概要 \(z_t\),加上自己要做出的动作 \(a_t\),一起送入演化函数 \(f_\theta\),就得到下一步的场景概要 \(z_{t+1}\)。
  1. 隐状态 z_tt 时刻网络对周围世界的压缩理解,包括物体位置、速度、道路结构等,但不依赖人工标注。
    ztz_t
  2. 动作 a_t自车打算执行的驾驶操作,例如转向角与加速度,是影响世界演化的关键输入。
    ata_t
  3. 演化函数 f_θ一个神经网络,学习“世界如何随时间变化”的规律,相当于老司机脑中的物理直觉。
    fθf_{\theta}
  4. 递推更新把 \(z_t\) 和 \(a_t\) 输入 \(f_\theta\),输出下一时刻隐状态,如此滚动,就能在脑中预演未来好几秒。
    zt+1z_{t+1}

数据闭环

老司机为什么什么路况都见过?因为开了十几年,每天收车后还会复盘:今天那个加塞的车真险,记下来,下次注意。数据闭环就是自动驾驶的“收车复盘 + 笔记系统”。车队在真实道路上跑,通过影子模式持续记录——系统一边开一边后台运行,如果发现“自己开的和理想老司机开的差异大”,就把这段数据标为难例,回传服务器。

回传的数据经过自动标注(通常由离线大模型完成,成本远低于人工标注)和质量筛选,进入训练集。训练出新模型后,第一件事不是直接上车,而是放到仿真器里回放海量历史场景,看有没有“退化”——以前会开的路现在会不会开?这就是仿真回放回归测试。整个过程循环往复,数据越滚越多,模型越开越好。

难例挖掘是核心环节:如果随机抽样,99% 都是无聊的高速巡航,学不到东西;数据闭环要像教练挑“教学重点”一样,把鬼探头、加塞、修路这些“教学价值高”的场景筛出来。数据集的更新规则可以概括为:

数据闭环是端到端规划的“经验复利”:跑得越多,数据越好;数据越好,模型越强。但如何知道模型真的变强了?需要一套科学的评估验证手段。

Dnew=Dtrain∪Hsel(Score(Dbuffer))D_{\text{new}} = D_{\text{train}} \cup \mathcal{H}_{\text{sel}}\big(\text{Score}(D_{\text{buffer}})\big)
训练集加上从缓冲区里挑出的高价值难例,组成新训练集。挑选标准由评分函数决定,分数高意味着“这场景能教会模型新东西”。
  1. 训练集 D_train当前用来训练模型的数据集合,相当于徒弟已经学过的全部课程内容。
    DtrainD_{\text{train}}
  2. 缓冲区 D_buffer车队回传的待筛选数据池,包含大量普通场景和少量稀有难例,尚未决定是否采用。
    DbufferD_{\text{buffer}}
  3. 评分函数 Score为每条数据打分,基于“模型在此场景表现多差、场景多稀有、标注置信度多高”等维度。
    Score(⋅)\text{Score}(\cdot)
  4. 难例筛选 H_sel挑出分数最高的那批数据加入训练集,让每一份算力都花在刀刃上。
    Hsel\mathcal{H}_{\text{sel}}

评估验证

路考时,考官不会只问“你感觉会开了吗”,而是看压实线没有、起步平不平、刹车顿不顿。端到端规划的评估也分两部分:离线指标和在线安全评测。离线阶段最常用的指标是平均位移误差(ADE)和最终位移误差(FDE):把模型预测的轨迹和真实人类驾驶轨迹逐点比较,差得越小说明规划越像老司机。

但离线指标好不等于安全。为此还需要场景库测试:从真实路采中整理出成千上万个“危险考试题”——突然横穿的行人、强行加塞的车、逆行的电动车——每个场景跑一遍,统计碰撞率、接管率。这些长尾场景正是端到端模型的薄弱点,也是数据闭环重点增强的方向。

最后才是真实路测:在指定道路和里程要求下,让系统脱手驾驶,统计人工接管频率。评估指标的含义可以被写成公式:

评估就像路考:既考基本功(离线指标),又考突发应对(场景库),最终还要上路实战(路测)。层层把关,才能确认“徒弟”真的可以出师。

ADE=1TN∑t=1T∑i=1N∥y^t,i−yt,i∥\text{ADE} = \frac{1}{TN}\sum_{t=1}^{T}\sum_{i=1}^{N}\left\| \hat{y}_{t,i} - y_{t,i} \right\|
把每个时刻、每个预测目标(比如自车和周围车辆)的预测位置与真实位置做差,取绝对值后求平均,就是“平均偏了多少米”。
  1. 预测位置 ŷ_t,i模型在时刻 \(t\) 对第 \(i\) 个目标(自车或他车)未来位置的估计。
    y^t,i\hat{y}_{t,i}
  2. 真实位置 y_t,i同一时刻该目标实际到达的位置,来自人类驾驶或高精传感器真值。
    yt,iy_{t,i}
  3. 一阶范数距离两者差值的绝对值,度量“预测偏差”的大小,单位是米。
    ∥y^t,i−yt,i∥\left\| \hat{y}_{t,i} - y_{t,i} \right\|
  4. 双重平均先对所有目标、所有时刻求和,再除以总数 \(TN\),得到整体平均误差。
    1TN∑t=1T∑i=1N\frac{1}{TN}\sum_{t=1}^{T}\sum_{i=1}^{N}

产业实践

拿到驾照只代表“会开”,真正上路还得遵守交规、系安全带、买保险——这些是兜底的安全冗余。端到端规划的量产落地也是如此。特斯拉 FSD v12 是端到端路线的代表:把城市道路驾驶几乎全部交给一个神经网络,从图像直接输出转向、加速、刹车指令,靠数百万车队的影子模式源源不断回传数据迭代。

但更多车企选择混合架构:端到端网络负责“像老司机一样”的流畅决策,规则安全层在后台监控——一旦检测到端到端输出可能越界(如距离过近、超出道路边界),立即接管或降级。这种“老司机 + 交规考官”的组合,既保留了端到端的灵活,又满足了安全认证的可解释性要求。

量产还要翻越两座大山:一是可解释性,发生事故时,监管和保险都想知道“为什么这么开”,于是出现了可解释中间表征(如鸟瞰视角占用栅格)作为解释窗口;二是算力,端到端大模型需要大算力芯片支撑,从训练集群到车端推理都是硬性成本。安全约束可形式化为最小安全距离条件:

端到端规划从实验室走向量产,靠的不是“彻底取代规则”,而是“End-to-End 负责聪明,规则层负责安全”。就像老司机再熟练,也绝不会不系安全带。

min⁡t d(t)−dsafe>0\min_{t}\, d(t) - d_{\text{safe}} > 0
整段驾驶中,自车与障碍物的最近距离都必须大于安全阈值,一旦逼近这个红线,安全层就介入。这是对“老司机感觉”的最后一道保险。
  1. 最近距离 min_t d(t)在全部行驶时间内,自车与最近障碍物的距离最小值,代表全程最危险的瞬间。
    min⁡t d(t)\min_{t}\, d(t)
  2. 安全阈值 d_safe根据车速、反应时延和制动性能计算出的安全距离,车速越快,阈值越大。
    dsafed_{\text{safe}}
  3. 正余量约束两者相减必须大于零,相当于把“安全红线”内化为硬性约束,任何情况下都不可突破。
    min⁡t d(t)−dsafe>0\min_{t}\, d(t) - d_{\text{safe}} > 0

AI 应用场景

特斯拉 FSD 的端到端驾驶

阶段:模型训练与推理规划

解决的问题:传统模块化系统在城市复杂路况下规则写不完——几万个 corner case 靠人工规则永远补不齐。端到端用一个神经网络从图像直接输出驾驶动作,让模型从海量真实驾驶数据中自己学会“如何处理加塞、无保护左转、施工改道”,不再依赖手写规则。

具体案例:FSD v12 采用“视觉输入 → 端到端网络 → 转向/加速/刹车”的架构,数百万特斯拉车队通过影子模式回传难例,持续迭代。用户反馈其变道更顺滑、更像人类驾驶,此前版本中常见的“犹豫不决”大幅减少。

自动驾驶公司的数据闭环流水线

阶段:数据工程与模型迭代

解决的问题:端到端模型的效果上限由数据质量决定,随机收集数据会陷入“平庸驾驶”——模型只会开简单路况。数据闭环通过难例挖掘与自动标注,让模型每一次迭代都重点学习“不会开”的场景。

具体案例:某 Robotaxi 公司每天回传 10 万公里路采数据,后台用离线大模型自动标注障碍物与轨迹,按“模型预测与真值差异”打分,自动把分数最高的前 5% 难例送入训练队列;新模型先过 2000 个仿真回归场景,再上测试车队开放道路验证。

量产车的混合安全架构

阶段:系统集成与安全验证

解决的问题:端到端规划缺少形式化安全保证,监管认证困难。混合架构让端到端网络负责体验,规则安全层负责兜底,兼顾智能与合规。

具体案例:某车厂量产方案中,端到端模型输出目标轨迹后,安全层实时检查“距前车距离是否小于安全阈值、是否压线、是否超速”,若违反则平滑接管并降级为 L2 辅助驾驶,同时记录触发日志用于后续优化。

Python 演示

python41 行
import numpy as np def generate_expert_data(n=2000, seed=0):    rng = np.random.default_rng(seed)    d = rng.normal(0, 0.8, (n, 1))      # 距车道中心的横向偏移    c = rng.normal(0, 0.5, (n, 1))      # 前方道路曲率    X = np.hstack([d, c])    expert = -0.9 * d + 0.6 * np.tanh(c * 3) + rng.normal(0, 0.05, (n, 1))    return X, expert def forward(X, W1, b1, W2, b2):    h = np.tanh(X @ W1 + b1)    y = h @ W2 + b2    return y, h def train(X, Y, hidden=8, epochs=300, lr=0.05):    rng = np.random.default_rng(1)    W1 = rng.normal(0, 0.3, (X.shape[1], hidden))    b1 = np.zeros((1, hidden))    W2 = rng.normal(0, 0.3, (hidden, 1))    b2 = np.zeros((1, 1))    for _ in range(epochs):        y, h = forward(X, W1, b1, W2, b2)        grad2 = h.T @ (y - Y) / len(X)        gradh = (y - Y) @ W2.T * (1 - h ** 2)        grad1 = X.T @ gradh / len(X)        W2 -= lr * grad2        b2 -= lr * np.sum(y - Y, axis=0, keepdims=True) / len(X)        W1 -= lr * grad1        b1 -= lr * np.sum(gradh, axis=0, keepdims=True) / len(X)    return W1, b1, W2, b2 def main():    X, Y = generate_expert_data()    W1, b1, W2, b2 = train(X, Y)    y, _ = forward(X, W1, b1, W2, b2)    rmse = float(np.sqrt(np.mean((y - Y) ** 2)))    print("行为克隆训练完成, RMSE=%.4f" % rmse) if __name__ == '__main__':    main()
目的:用 NumPy 从零实现一个微型“行为克隆”——模拟端到端规划中最基础的模仿学习,让神经网络从师傅(专家)的驾驶数据中学会“看到偏移和曲率,输出对应转向”。
  1. expert = -0.9 * d + 0.6 * np.tanh(c * 3) + ...模拟专家驾驶策略:偏移越大打得越猛,曲率越大提前转向,并加少量噪声让数据更真实。
  2. h = np.tanh(X @ W1 + b1)隐藏层用 tanh 激活,让网络能拟合“偏移 + 曲率”的非线性组合,而不是简单线性回归。
  3. y = h @ W2 + b2输出层把隐藏特征压缩成一个转向值,这就是端到端“画面到动作”最简形态的映射。
  4. grad2 = h.T @ (y - Y) / len(X)计算输出层梯度:网络预测和专家动作差多少,就往反方向调多少(损失是均方误差)。
  5. gradh = (y - Y) @ W2.T * (1 - h ** 2)用链式法则把误差“传回”隐藏层,tanh 的导数是 1 - h²,让中间特征也参与学习。
  6. rmse = float(np.sqrt(np.mean((y - Y) ** 2)))计算均方根误差,评测徒弟和师傅动作的平均差距,越小说明模仿越像。

常见误区

误区我一直以为端到端就是把所有规则代码删掉,一切都交给神经网络,连安全底线也靠网络自己学。

正解端到端替代的是“感知→预测→规划”之间那些手写接口和中间规则,但量产车普遍保留独立的规则安全层,像交规考官一样在后台监控。安全约束(最小距离、限速、车道边界)不是靠网络“自觉”,而是硬编码兜底。端到端负责聪明,规则层负责不出事。

为何常见:因为很多宣传材料强调“一个网络搞定一切”,让人误以为规则彻底退场,忽略了工程落地时的安全冗余设计。

误区我听人说端到端就是个黑盒子,出事也不知道为什么,所以它只能停留在实验室,没法过安全认证。

正解端到端确实不像规则那样逐条可读,但业界已发展出多种解释手段:中间可以挂接鸟瞰视角占用栅格、注意力热力图、目标轨迹头等“解释窗口”,让工程师看到网络“在关注什么、打算怎么开”。特斯拉事故分析中也大量使用回放与可视化归因,可解释性正在从“全黑”走向“半透明”。

为何常见:把“端到端”和“不可解释”划等号,是只看到了早期论文的输入输出结构,没关注近两年可解释中间表征的研究进展。

误区我觉得只要不断堆数据,比如把全国的路采视频都灌进去,模型自然就会越来越强,不用管什么数据分布。

正解随机堆数据很容易让模型学到“平均驾驶”——只会开平淡的高速和直路,遇到长尾场景依然抓瞎。真正重要的是数据分布和难例覆盖:一个包含 1000 个鬼探头场景的精选集,可能比 100 万公里高速巡航更有效。数据闭环的核心是“选什么数据进训练集”,而不是“有多少数据”。

为何常见:深度学习“数据越多越好”的印象深入人心,但端到端驾驶的数据价值密度极低,让人忽视了难例挖掘的重要性。

误区既然特斯拉都端到端了,那传统模块化肯定很快被淘汰,所有公司都会在一年内切换到纯端到端。

正解端到端在场景理解连贯性和开发效率上有优势,但在安全认证、可解释性、算力成本上仍有短板。主流趋势是混合架构:端到端负责规划和体验,规则层负责安全兜底,两者长期共存。从模块化到端到端是一段“渐变”而非“突变”,需要数据、算力、验证体系共同成熟。

为何常见:媒体喜欢放大“革命性”叙事,加上 FSD 的示范效应,让人误以为产业切换是一夜之间的事。

面试题

Q1. 端到端规划与传统模块化最本质的区别是?

单选题 · easy

  • A.使用了更多的传感器
  • B.从感知到轨迹一步映射← 正确答案
  • C.抛弃了激光雷达方案
  • D.增加了更多人工规则

答案:B。端到端的本质是“观测到动作的直接映射”,中间不设显式的感知、预测、规划分模块(B 正确)。传感器的多寡、是否用激光雷达都不是本质;端到端恰恰是减少手写规则,而不是增加。

Q2. 行为克隆(BC)属于哪种学习范式?

单选题 · easy

  • A.无监督学习
  • B.强化学习
  • C.监督模仿学习← 正确答案
  • D.自监督学习

答案:C。行为克隆用“画面 + 专家动作”的配对数据做监督训练,本质是监督学习,同时也是模仿学习的一种(C 正确)。它不依赖奖励信号,所以不是强化学习;数据有标签,所以不是无监督。

Q3. 下列哪一项通常不属于端到端规划的输入?

单选题 · easy

  • A.车载摄像头的图像
  • B.激光雷达的点云
  • C.高精地图的先验
  • D.空调温度设定值← 正确答案

答案:D。端到端规划的输入是与驾驶决策相关的观测:图像、点云、导航与地图信息都可能被编码进网络(A/B/C 都可作为输入)。空调温度与行车轨迹无关,不属于规划输入(D 正确)。

Q4. 模仿学习中最典型的“分布偏移”问题是?

单选题 · mid

  • A.训练数据过多导致过拟合
  • B.模型误差进入专家未覆盖状态← 正确答案
  • C.传感器噪声导致无法收敛
  • D.奖励函数设计过于复杂

答案:B。BC 假设训练数据分布与部署一致,但自车的微小偏差会把它带进专家从未开过的状态,越错越偏(B 正确)。过拟合、传感器噪声不是分布偏移的本质;奖励函数属于强化学习范畴,与模仿学习无关。

Q5. DAgger 算法的核心思想是?

单选题 · mid

  • A.盲目增加网络层数
  • B.专家在线纠正自车错误← 正确答案
  • C.完全放弃专家数据
  • D.仅仅扩大专家数据集

答案:B。DAgger 让自车先开,专家在线纠正其错误操作,并把“纠正后的场景”重新加入训练集(B 正确)。它不靠加层数、不放弃专家数据、也不只是静态扩充数据集,而是动态弥补分布偏移。

Q6. 世界模型在端到端规划中的主要作用是?

单选题 · mid

  • A.预测未来隐状态辅助决策← 正确答案
  • B.直接输出方向盘转角
  • C.完全替代所有传感器
  • D.仅用于离线数据标注

答案:A。世界模型学习环境演化规律,让模型在脑内推演未来隐状态,从而辅助规划决策(A 正确)。输出方向盘转角的是策略网络;世界模型不替代传感器,也不只是标注工具。

Q7. 用强化学习训练端到端规划时,奖励函数通常要考虑哪些因素?

多选题 · mid

  • A.碰撞惩罚项← 正确答案
  • B.行驶平顺性← 正确答案
  • C.到达效率性← 正确答案
  • D.数据标注难度

答案:ABC。奖励设计需综合安全性(碰撞重罚)、舒适性(急刹急转向轻罚)和效率(尽快到达加分),所以 A/B/C 正确。数据标注难度是数据工程指标,与奖励函数无直接关系(D 错误)。

Q8. 端到端规划数据闭环的关键环节包括?

多选题 · hard

  • A.影子模式难例挖掘← 正确答案
  • B.自动标注与场景筛选← 正确答案
  • C.仿真回放回归测试← 正确答案
  • D.随机删除全部旧数据

答案:ABC。数据闭环要求“采到难例(影子模式)→ 标注筛选 → 训练 → 仿真回归”循环迭代,A/B/C 都对。随机删除全部旧数据会丢失历史经验,是错误做法(D 错误)。

Q9. 离线评估指标 ADE(平均位移误差)度量的是?

单选题 · hard

  • A.平均轨迹位移误差← 正确答案
  • B.最终轨迹位移误差
  • C.模型推理时延
  • D.网络训练参数量

答案:A。ADE 是预测轨迹与真实轨迹在全部时间步上的平均距离偏差(A 正确)。FDE 才是最终时刻的误差;推理时延和参数量属于性能与模型规模指标,不走轨迹误差维度。

Q10. 关于量产端到端规划,下列说法正确的是?

多选题 · extreme

  • A.需要安全冗余层兜底← 正确答案
  • B.需要配套数据闭环迭代← 正确答案
  • C.端到端可完全取代规则层
  • D.可解释性仍待进一步增强← 正确答案

答案:ABD。量产既要端到端的流畅体验,也要安全层兜底和持续数据迭代,A/B 正确。可解释性是监管与事故分析刚需,目前仍在增强中,D 正确。当前主流是混合架构,端到端并不能完全取代规则层,C 错误。