自动驾驶为什么走向「端到端」——从高精地图到 VLA 的技术演进、架构之争与量产现实
端到端不是「少写几个模块」,而是让模型直接生成可控、可验证、可量产的驾驶轨迹。这篇文章把这条路上的技术演进、两种架构、四类轨迹生成方法,以及量产里绕不开的现实,整理成一张能一次读完的全景图。
2026-07 修订:并入二轮学习的增量内容,17 篇论文全部补上 arXiv 链接,自测题附参考答案,并配套一页交互式复习速查页(公式、论文记忆卡、易混点)。
引子:端到端到底在解决什么
这几年自动驾驶最核心的一个问题,其实可以压缩成一句话:怎样让自动驾驶从「感知模块输出标签、规划模块写规则」,逐步走向「用一个统一模型直接生成可控、可验证、可量产的驾驶轨迹」。
听上去像是把几个模块合并,但真正难的地方在于,它同时拉扯着三组张力:
- 信息完整性 vs 工程可解释性:一段式 latent 信息更完整,两段式中间表征更好调。
- 多模态生成 vs 可控执行:Diffusion/Flow 更适合表达「未来有好几种可能」,AR 更贴近「一步一步把车开下去」。
- 学习目标 vs 量产安全:RL 能优化长期目标,但 reward 不完美、会打架、会被 hacking,所以必须结合数据、场景隔离、规则兜底和闭环评测。
后面几乎所有的技术分支,都是在这三组张力之间找平衡。读这篇文章时,可以一直带着这三把尺子。
如果先要一张整体地图,大致是这样一条问题链:
技术路线总览
│
├─ 两段式 E2E ──┐
└─ 一段式 E2E ──┴─→ 导航信息与中间表征
│
├─→ 轨迹生成:Diffusion ─→ Diffusion / Flow + RL ─┐
└─→ 轨迹生成:AR ────────→ AR + RL / Plan-R1 ─────┤
│
RL 基础与训练框架
│
量产闭环:数据、场景、规则、评测
下面就沿着这条链,一段段拆开。
一、技术演进:从高精地图到 VLA
近几年自动驾驶的主线演进,大致可以这样排:
- 2021 以前:高精地图。 地图提供道路级、车道级、交通规则等强先验,能降低实时感知负担,提升规划可靠性。
- 2022:BEV 无图方案。 BEV 解决多视角融合,降低对地图的依赖。
- 2023:Occupancy。 解决经典检测模型只能识别规则形状物体的问题。
- 2024:端到端。 用模型直接预测短时轨迹,替代大量传统规则方法。
- 2025:VLA / VLM。 把视觉输入、语言/语义桥接和动作输出,纳入同一个多模态端到端控制框架。
端到端想解决的,并不是「少写几个模块」这么简单,而是三个系统性问题:
- 信息损失:感知把世界压成检测框、车道线、置信度这些标签,很多上下文和细节在这一步就丢掉了。
- 误差累积:上游标签本身不确定,下游规划还要基于它继续决策,错误会被一层层放大。
- 规则瓶颈:目标检测、车道线、预测、路径规划、运动控制……模块越多,系统越复杂,维护和调参越痛苦。
但有一条底线要先立住,后面会反复出现:端到端 ≠ 取消所有工程约束。 量产里仍然要保留导航、规则、安全检查、后处理和评测闭环。
二、先分清:像不像专家,和安不安全是两件事
主流的公开数据和评测大致有两个方向:
| 数据/评测 | 数据内容 | 场景 | 常见指标 |
|---|---|---|---|
| nuPlan | HD 地图、自车与他车轨迹、感知信息、行为标签 | 无保护左转、VRU 交互、车道保持、变道 | 开环、闭环非反应式、闭环反应式、ADE、FDE、Miss Rate |
| Motion 类数据 | Lidar 点云、agent tracks、HD map | 变道、无保护左转、VRU 交互、车道保持 | ADE、FDE、Overlap Rate、MR |
但学的时候要把指标和真实目标分开看:
- ADE/FDE 衡量像不像专家轨迹,但不等于一定安全或舒适。
- Miss Rate / Overlap 关注轨迹预测覆盖,但对规则、导航一致性、交互博弈仍然不足。
- 开环指标可复现、成本低,但无法验证「动作改变未来状态后的恢复能力」。
- 闭环指标更接近真实驾驶,但依赖仿真质量,而且更难稳定复现。
一句话:榜单分数高,不代表车开得好。 这个区分会一直贯穿到后面的 reward 设计和量产评测。
三、两段式 vs 一段式:一场「信息 vs 可控」的架构之争
这是整个端到端话题里最值得花时间的一段。两段式和一段式并不是非黑即白的对立,而是同一个连续谱的两端。
两段式:先把世界翻译成人能看懂的结构,再规划
两段式可以理解为:第一段输出结构化世界,第二段基于结构化世界输出轨迹。
典型的中间表征包括:
- 动态信息:3D 目标框、速度、yaw、类别、tracking ID。
- 静态信息:车道线 polyline、虚实线、颜色、road boundary、curb、road marker。
- 交通灯信息:3D/2D 框、朝向、颜色、类型、路口级通行性。
- 规控输出:未来 N 个时间步位置、多模态轨迹分支和概率。
它的优点很「工程」:
- 可解释:能看见感知输出、轨迹候选和规则触发。
- 可控:能加入规则约束、风险检测、后处理。
- 训练稳定:分开训练,链路短,模块可单独迭代。
- 易工程化:感知、规划、交通灯、导航可以分别修。
缺点也同样明显:
- 中间表征过度压缩,语义化时丢掉细节。
- 上下游协同困难,planner 和 perception 容易互相甩锅。
- 端到端数据闭环不完整,梯度无法跨模块反传。
- 性能上限可能不如一段式,尤其是需要联合优化、多模态融合、世界模型和 RL 的任务。
这里有一个非常实用的经验判断:数据解决问题约占 60%,模仿学习约 30%,强化学习约 10%。 这不是精确公式,但它提醒我们,别一上来就把 RL 当成所有问题的第一解法。这一路最具代表性的工作是 PLUTO,它把纵横向 aware 的结构、batch-wise auxiliary loss、对比学习、数据增强和闭环 nuPlan benchmark 放进同一个框架,证明了「数据与训练目标设计」往往比直接上复杂 RL 更早产生收益。再往上游看,BEVFormer 对应静态/BEV 表征和时序融合,Sparse4D 用稀疏 query 换 3D 检测效率,MOTR 用 track query 把检测和跟踪一体化——它们解释了两段式第一段的车、线、灯、轨迹连续性到底从哪来。
一段式:把世界压进模型的潜空间
一段式把感知特征、动作特征、目标规划、导航约束、历史轨迹等,全部放进同一个 latent space,直接优化驾驶输出。
这里的 latent space(潜空间/隐空间)可以直接理解成「模型脑子里的压缩世界」。原始输入可能是摄像头图像、点云、历史轨迹、导航、地图、周围车辆,非常复杂;模型会先把这些信息编码成一组内部向量。这组向量不是人能直接读懂的「车道线表格」或「车辆列表」,但里面可能隐含了「前方有车」「旁边车道能变道」「后车很近」「导航要求左转」「这里该保守一点」等信息。
原始世界:图像 + 点云 + 地图 + 导航 + 历史轨迹 + 周围车
↓ 编码器
潜空间 latent space:模型内部的一组压缩向量
↓ planner / policy head
输出:未来轨迹、动作 token、控制建议
所以两段式更像「先把世界翻译成人能看懂的结构化信息,再规划」;一段式更像「把世界压进模型内部潜空间,让模型自己决定哪些信息对驾驶最重要」。这也是一段式上限高但难 debug 的根源:潜空间信息更完整,但人不容易直接看懂。
它的优点:
- 特征表达更丰富,不必先变成 BEV、3D 检测、lane segmentation、occupancy、tracking 等显式结构。
- 统一时空表示,让网络自己学哪些特征对规控最关键。
- 避免 perception-induced planning failure——中间检测即使不完美,最终轨迹仍可能正确。
- 更自然地接入世界模型、VLA、RL 和大规模数据。
缺点:
- 不可解释性强,出错后难判断是检测、预测、规控还是 latent 融合的问题。
- 联训不稳定,不同子任务的 loss 和梯度会互相影响。
- 闭环仿真困难,可能出现 feature warp 失真、轨迹左右抖动、跟车不稳、连续偏差发散。
- 对评测和安全兜底的要求更高。
一段式还引出三个建模方向,后面都会展开:
- Diffusion:多模态表达强,可通过条件/guidance 控制,但推理慢、训练成本高,对物理约束和法规需要后处理。
- 世界模型:通过对环境状态建模和未来推演支持决策,但长期预测容易不稳定,可能虚构不存在的物体或漏掉真实风险。
- VLA:把视觉、语言、动作统一到 latent space,适合更高层意图和语义条件化,但量产验证链路更长。
不是二选一,而是一条连续谱
VAD 把场景表示成 agent motion 和 map elements 的 vectorized representation,而不是重 raster;VADv2 进一步走向 probabilistic planning,核心启发是:一段式不该只输出单条确定轨迹,而要把不确定性纳入 action distribution。
读这类工作时,别只看榜单,重点追问三个问题:它保留了哪些可解释结构?哪些约束仍然是 explicit 的?哪些地方开始变成 latent / probabilistic?想清楚这三点,就会明白「一段式」和「两段式」从来不是二选一,而是一条连续谱。
顺便分清:query、proposal 和候选轨迹
在 transformer planner 里,query 不直接等于候选轨迹,这三个词经常被混着用:
| 概念 | 更具体的理解 |
|---|---|
| query | 模型里一组可学习向量,像「带槽位的探针」,通过 attention 从场景特征里取信息 |
| proposal | query 读完信息后,由解码头输出的候选结果,可能是轨迹、意图、目标或其他结构 |
| proposal set | 多个 proposal 组成的候选集合,用于排序、选择、refine 或 RL reward 比较 |
所以 query 更像「负责生成候选的内部角色」,proposal 才是最后拿出来比较的候选轨迹。
四、导航信息:不是轨迹,而是长期意图
导航模块的核心职责包括:
- 车道级全局路径规划:在车道拓扑图上搜索 lane sequence。
- 关键机动点识别:左转、右转、直行、上/下匝道、掉头、终点到达。
- 参考线生成:lane centerline、route polyline、曲率、坡度、限速。
- 规划约束与优先级:优先车道、禁止车道、变道窗口、剩余距离。
- 路径监控与重规划:偏离 route、错过路口、无法完成目标变道时 reroute。
这里有两个关键区分,初学最容易混:
- 参考线 ≠ 轨迹。 参考线是几何基准和长期方向,轨迹是可以控车的未来状态序列。
- Navigation path 不是行为生成器。 它表达导航决策和路线约束,但不能直接当成控车轨迹。
在两段式里,navigation path 常作为 planner 的输入,让第二阶段输出预测轨迹,适合路口择道、非结构化道路、地下停车场、通行概率类人性等场景。
在一段式里,导航更像条件 token 或先验 embedding,常见编码方式有:SD waypoints(位置点)、waypoint action(主导航动作)、speed limit(限速)、lane action / lane recommend(候选与推荐车道),并通过 cross-attention 把 lane-prior 注入 waypoint query。
还有一点容易被忽略:导航增强很重要。横向偏移 aug 模拟定位漂移与地图误差,行点稀疏/缺失 aug 模拟地图短暂不可用,纵向时序偏移模拟行点更新慢,时间不一致 aug 模拟感知与上一帧行点异步。这些增强的目的不是让导航「变随机」,而是防止模型过度依赖某一种完美导航输入。
五、轨迹怎么生成(上):Diffusion
Diffusion 的基础思想是:先把数据逐步加噪,再学习逐步去噪,从噪声恢复到符合数据分布的样本。
放到自动驾驶轨迹里:
- 场景条件是自车状态、地图、障碍物、导航、历史信息等。
- 输出可以是未来轨迹、控制序列、BEV 未来状态或 occupancy。
- Diffusion 适合建模「未来有多个合理答案」的情况,例如变道、让行、绕行、路口通行。
优点是多模态表达强、对不确定性友好,并且可以通过条件、guidance、value 或 reward 控制生成过程;缺点是多步去噪导致推理慢、训练采样细节敏感(可能 mode collapse)、物理约束和法规规则不容易硬编码,而且生成候选不等于最终可控,还需要排序、过滤、后处理。
两个代表思路值得记:
- DiffusionDrive 解决「Diffusion 多模态很好,但车端实时性太差」的矛盾——用多模态 anchors 和 truncated schedule,让模型只需少量 denoising steps 也能生成多样轨迹。
- ResAD 不直接预测完整轨迹,而是用车辆当前状态建立惯性参考系,再学习归一化残差;先给强物理先验,再让生成模型补残差。
两者放一起读,会看到一个量产友好的原则:生成模型不要从零学全部驾驶物理,最好给它 anchor、reference、normalization 这类强先验,把学习目标缩小到「在合理先验上做必要偏离」。
六、轨迹怎么生成(下):AR
AR 的核心是 next-token prediction:当前输出由历史输出和条件输入逐步生成。 在自动驾驶里,关键问题立刻变成:轨迹的 token 到底怎么定义?
| token 方式 | 含义 | 优点 | 缺点 |
|---|---|---|---|
| 时间步状态 token | 每个 token 是一个时间步车辆状态 | 连续、物理一致、可加动力学约束 | 序列长,误差累积严重 |
| 空间点 token | 沿轨迹顺序生成空间点 | 序列短,更贴近规划 | 时间隐式,速度和 jerk 需额外约束 |
| acc/yaw_rate 量化 | 原始轨迹转加速度和横摆角速度,再 k-means 成 token | 学习难度低,积分平滑,dyaw 抖动小 | 急加减速场景 action 稀疏,可能崩 |
| dx/dy/dyaw 量化 | 轨迹增量量化成 token | 极端场景相对更真实 | 学习难度高,噪声几何放大,dyaw 抖动大 |
AR 的优点:训练目标清晰(连续控制变成离散分类),Cross Entropy 稳定、梯度方向干净,Transformer 天然适合 token 序列与 causal mask,而且和 RL 很自然——AR 本质上在建模策略 π(a|s),推理过程就是 rollout,可以先 BC/CE 学 imitation,再 PPO/GRPO fine-tune。
缺点也很集中:
- Exposure bias:训练看真实历史,推理看自己预测,错误会改变下一步输入分布并放大。
- 多模态表达弱:早期 token 一旦选边,后续条件分布容易坍缩到单一模式。
- 长期规划能力有限:AR 最大化局部似然,不直接最大化长期回报。
这里顺便把 rollout 讲透,因为它会反复出现。rollout 就是「让模型一步一步往未来执行/模拟」:
s0 当前状态
-> a0 模型第 1 步动作
-> s1 环境更新后的状态
-> a1 模型第 2 步动作
-> s2
-> a2
-> ...
后一步会受前一步影响,所以前一步错了,后面可能一路偏下去——这正是 AR 容易误差累积的原因。对比之下:
AR / RL:一步一步 rollout,适合闭环反馈和策略优化
Diffusion:一次生成整段未来轨迹,适合多模态候选生成
一句话记忆:AR 更像「按时间一步步开车」,Diffusion 更像「一次提出多条未来路线」。
至于 token 怎么设计,FAST 这类 action tokenizer 工作给出的迁移启发是:tokenizer 不是数据预处理的小细节,而是策略模型的控制接口。 一个差的 tokenization 会让 AR 看似会 next-token prediction,但落到连续控制时抖动、延迟、误差累积;一个好的 tokenization 应该压缩高频控制信号,同时保留可执行动作的物理结构。
七、接上强化学习:从 AR+RL 到 Diffusion/Flow+RL
生成式策略怎么接 reward,是这一段的主题。
AR + RL 与 Plan-R1
AR + RL 是更偏量产的推荐范式,基本流程是:
- 用 imitation / CE 预训练 AR policy。
- 冻结 reference model,作为 KL 约束基准。
- policy model 在状态下生成动作或 token 序列。
- reward model 把驾驶好坏映射成标量。
- 用 PPO/GRPO 等方法做 RL fine-tune。
Reward 通常写成这样一组加权:
Reward =
HardSafetyPenalty
+ λ1 * ProgressReward
+ λ2 * ComfortReward
+ λ3 * RuleCompliance
+ λ4 * PreferenceReward
- β * KL(π || π_ref)
Plan-R1 把轨迹规划「语言建模化」:先做 principle alignment,让模型知道安全和可行性的原则,再做 behavior learning,让输出轨迹像真实驾驶。这里 GRPO 的作用不是「凭空学会驾驶」,而是在多条 rollout/候选之间用相对优势,去推高安全、可行、类人的轨迹。
不过 AR + RL 也有天花板:AR 本身不显式建模未来因果,只优化条件概率;因果关联、长期效果、多智能体反应,要靠 RL、环境和 reward 弥补;而且 top1 输出会牺牲多模态,量产里仍需多候选、打分或后处理。
Diffusion / Flow + RL
把 Diffusion 接 RL,常见有三条路线:
| 路线 | 思想 | 优点 | 难点 |
|---|---|---|---|
| Policy-Level RL | 直接把 diffusion 当策略 πθ(a|s),用 Q-learning 或 policy gradient 更新 | 统一成 actor-critic | 多步去噪 log prob 难算,variance 大 |
| Value-Guided | 训练时不改 diffusion,采样时用 value/reward gradient 引导 | 不必重训 base generator | guidance 强度、稳定性和安全性难调 |
| Energy-Based | 把 reward 当 energy,对生成分布做指数重加权 | 适合候选轨迹打分与重拟合 | reward 质量决定上限,易偏 |
Diffusion + RL 最大的问题是 credit assignment:模型输出整条轨迹,reward 通常也是 trajectory-level,RL 梯度要分配回多步去噪过程,训练会敏感且容易震荡。
Flow Matching 的动机正是减少 diffusion 多步采样的成本——它不再预测噪声,而是学习从噪声轨迹到专家轨迹的连续速度场。放到自动驾驶里:输入是场景、自车状态、周围 agent、地图;训练时采样噪声轨迹、真实轨迹和时间 t,构造中间状态让模型预测真实速度场;推理时从噪声轨迹开始解 ODE,得到最终轨迹。Flow-GRPO 的一句话理解是:Flow 是轨迹生成器,GRPO 是优化器,GRPO 根据组内相对奖励,让 Flow 的生成方向朝高 reward 区域弯曲。
其中 DiffusionDriveV2 的关键洞见尤其适合量产理解:DiffusionDrive 用 anchor 保留了多模态,但 imitation learning 只监督最接近 GT 的正模式,负模式可能生成低质量甚至碰撞轨迹。RL/GRPO 在这里的作用,是用 intra-anchor GRPO 提升同一驾驶意图内候选的质量,用 inter-anchor GRPO 协调不同意图之间的 mode 质量,让每个 anchor 内的候选更安全、更目标导向,同时避免不同驾驶意图互相压塌。
还有一条容易被漏掉的路线是偏好对齐:TrajHF 把 RLHF 思路迁移到轨迹生成,用人类反馈微调驾驶风格——它接管的是手写 reward 写不出来的类人性和个性化,代价是偏好标注主观且可能不一致。
这一组工作(DiffusionDriveV2、GoalFlow、DPPO、Diffusion-QL、Diffuser、Flow-GRPO、TrajHF)共同回答一个问题:生成式策略如何接受 reward 约束? AR 的优势是 rollout 粒度天然对齐 RL;Diffusion/Flow 的优势是整段轨迹多模态更强,但 reward credit assignment 更难,所以需要 anchor、goal、value guidance、GRPO 分组、ODE-to-SDE 这类设计。
八、强化学习基础:一条概念链
如果对 RL 不熟,建议按「概念链」来记,而不是孤立背名词:
Markov Chain
-> MDP: state, action, transition, reward, discount
-> Policy: deterministic / stochastic
-> Trajectory and Episode
-> Return
-> V(s) and Q(s, a)
-> Bellman equation
-> MC / TD
-> REINFORCE
-> Actor-Critic
-> PPO / GRPO
几个关键概念:
- MDP:状态、动作、转移概率、奖励函数、折扣因子。
- Policy:给定状态选动作,可以是确定动作,也可以是动作概率分布。
- Trajectory / Episode:一次交互产生的状态-动作-奖励序列 / 从 reset 到终止的一整段生命周期。
- Return:一条具体轨迹的折扣累积奖励。
- V(s):站在状态 s,按策略走下去,平均能拿多少长期收益。
- Q(s, a):在状态 s 选动作 a,再按策略走下去,长期看有多好。
- Bellman:把当前价值拆成即时奖励和后续价值。
RL 在自动驾驶里能解决的,主要是这几类「规则难穷举」的问题:长时序决策(提前变道/让行)、多目标权衡(安全、效率、舒适、法规、偏好)、多智能体交互(加塞、礼让、抢行)、稀疏/延迟反馈(路口类人性、一路无接管),以及人类直觉主导的灰色决策区。
但 RL 的工程难点也很真实:训练稳定性差、样本效率低、GPU 利用率低、超参数敏感、reward 设计困难,以及绕不开的 reward hacking——模型学会最大化公式,而不是学会真正把车开好。
九、开环、闭环与伪闭环
量产里大量使用开环,不是因为开环最好,而是因为它安全、稳定、成本低、可复现。
| 维度 | 开环训练 | 闭环训练 |
|---|---|---|
| 状态转移 | 使用数据集中真实下一状态 | 使用环境动力学产生下一状态 |
| 状态分布 | 固定,来自数据集 | 随策略变化 |
| 误差累积 | 看不到 | 能看到 |
| 纠错能力 | 弱 | 强 |
| 训练稳定性 | 高 | 低 |
| 样本效率 | 高,可 replay | 低,需要 rollout |
| 仿真依赖 | 不依赖或弱依赖 | 强依赖 |
| 长期回报优化 | 较弱 | 强 |
| 调试复现 | 容易 | 困难 |
怎么选?可以这样判断:想先让模型像人类,用 imitation / open-loop;想让模型处理「自己犯错之后的状态」,需要 closed-loop;想优化长期目标但仿真又不完全可信,就需要伪开环、规则环境代理、IDM、多样化 logsim 和严格评测来折中。
十、量产现实:模型、数据、场景、规则
量产从来不是单点算法问题,而是一个闭环系统。这一段是整篇里最「接地气」的部分。
10.1 模型调优
常见问题集中在几类:静态碰撞(路沿等静态障碍物识别不准)、轨迹类人性(RL 后轨迹可能不类人)、控速能力(信息损失影响上限)、横向稳定性(单步预测受上一时刻影响,变道犹豫)、因果关系弱(AR 不易学会动作影响未来)、多模态缺失(量产 AR 常只选 top1)。
关于 RL 数据规模,有几条经验值得记:reward 正确性验证用少量样本即可先查方向(约 10 条数据就能发现明显问题);单任务优化每个任务百到千条 clip;全量训练约 10w clip 能看到较好效果;一段式预训练可能需要千万级 clip。
10.2 数据调优
数据不是「越多越好」,而是要分层、配比、挖难例。这里有一条很实用的多标签配比原则:
- 如果一条数据只有一个标签,该标签计数加 1。
- 如果有 n 个标签,每个标签计数加 1/n。
- 先确定一级标签配比,再确定二级和子层级配比。
- 最终用总数据量乘配比,得到生产所需数据量。
它解决的是:多标签数据不要重复计满,否则长尾和复合场景会被配比统计误导。
10.3 场景调优
课程里重点讲了几类场景,每一类的经验都很典型:
- 拥堵加塞:高密度、强博弈、弱可预测,安全、效率、舒适三目标冲突明显。如果只用安全 reward,模型可能学会「原地等待直到完全安全」——这就是 reward hacking。为了类人,需要针对「成功插入同一 gap、关键横向位移、导航变道成功」设计奖励;但奖励增强后又可能过度自信,所以要引入失败折回数据、等待时机数据、IDM 后车不让行等对抗式交互。
- 静态偏航(路口、一分多、主辅路、环岛出口):可基于「距最晚可换道点的纵向距离」和「距导航中心线的横向距离」做双阶段平滑引导,用 Sigmoid 平滑过渡避免硬阈值导致策略震荡;无效换道可用车道锁定机制,但要和绕行慢车等合理跨车道场景隔离;主辅路和环岛出口可用虚拟墙惩罚,但虚拟墙标注容易跟随 GT 偏差,需要谨慎。
- 碰撞与绕行:TTC penalty 可用于车辆、对向会车、横穿、cut-in、VRU;VRU penalty 可比较自车与 VRU 轨迹 polyline 的交点以及到达时间同步程度;绕行场景的奖励冲突要按优先级处理——安全 > 法规 > 体感。
10.4 规则和后处理
端到端并不等于取消后处理。一条典型的后处理链路是:多模轨迹输入 → 轨迹过滤(融合导航、动静态信息)→ 轨迹打分(横纵解耦)→ 时空联合优化(trajectory refine)→ 控制。红绿灯也仍然需要检测、识别、选灯、颜色/属性赋予、倒计时、故障、黄闪/绿闪等工程模块。
量产里更现实的一句话判断是:模型给候选,规则管底线,评测找回归,数据闭环修分布。
10.5 把闭环真正跑起来的工作流
上面所有环节最终组成一个循环,顺序大致是:
线上/仿真发现问题
→ 归因:感知、预测、规划、导航、reward、规则
→ 难例挖掘和场景标签
→ 数据配比和增广
→ reward / rule / token / 模型结构调整
→ 开环评测:ADE、FDE、MR、规则指标
→ 闭环评测:reactive / non-reactive / comfort / safety
→ 小流量或实车验证
⟲ 回到「发现问题」,持续循环
它解释了为什么量产团队的日常不是「调一个更强的模型」,而是持续运转这个循环:每一环都可能是瓶颈,每一环也都有自己的评测标准。
十一、一张横向对比表
把前面所有分支压成一张表,方便随时回看:
| 主题 | 最强能力 | 主要代价 | 适合解决 |
|---|---|---|---|
| 两段式 | 可解释、可控、易工程化 | 信息压缩,上下游割裂 | 量产稳定性、模块化迭代、规则接入 |
| 一段式 | 信息完整、联合优化上限高 | 难 debug、难闭环验证 | 复杂交互、统一表征、数据规模化 |
| Navigation Path | 长期意图和路线约束 | 抖动、跳变、不能直接控车 | 路口择道、环岛、主辅路、地下停车场 |
| Diffusion | 多模态整段轨迹生成 | 推理慢、RL credit 难 | 候选轨迹、长尾不确定性、场景生成 |
| AR | 训练稳定、RL 接口自然 | 误差累积、多模态坍缩 | token policy、闭环 rollout、Plan-R1 |
| Flow Matching | 连续速度场、采样潜力更快 | 工程成熟度和验证链路 | 轨迹生成、Flow-GRPO |
| RL | 长期目标和多目标权衡 | reward 难、样本贵、hacking | 加塞、偏航、舒适、交互、灰色决策 |
十二、最容易混淆的 7 个点
- 端到端不是没有中间约束。 量产系统仍然需要导航、规则、后处理和评测。
- Navigation path 不是轨迹。 它是路线意图和先验,不能直接控车。
- Diffusion 能多模态,不代表每条候选都安全。 还要打分、筛选、refine。
- AR 也可以输出概率分布, 但早期 token 一旦选择,后续会向单一模式坍缩。
- RL 不是替代模仿学习。 更常见的是 BC/CE 预训练后再 RL 微调。
- 开环训练不是闭环训练的低级替代, 而是现实工程妥协:安全、稳定、复现、成本低。
- Reward 不可能完美。 正确做法是让系统能容忍 reward 不完美,而不是假设 reward 写对了。
检验一下:25 道自测题(附参考答案)
如果想确认自己是不是真读懂了,先自己回答,再对照答案——答不上来的,回到对应章节看一遍。
- 端到端主要解决传统 pipeline 的哪两类问题?
- 为什么端到端不等于取消规则和后处理?
- 两段式为什么更容易量产?
- 两段式的中间表征会带来什么信息损失?
- 一段式为什么 debug 难?
- latent space 和显式 BEV / agent / map token 的区别是什么?
- Navigation Path 为什么不是轨迹?
- 什么场景适合使用 Navigation Path?
- Diffusion 为什么适合多模态未来?
- 为什么「多模态」不等于「每条候选都安全」?
- DiffusionDrive 为什么要 truncated?
- ResAD 为什么要先给 inertial reference?
- AR 里的「下一步 token」可以怎么定义?
- acc/yaw_rate 和 dx/dy/dyaw 的取舍是什么?
- rollout 为什么会导致误差累积?
- RL 在自动驾驶中解决哪 5 类问题?
- 为什么 RL 不是替代 imitation learning?
- Plan-R1 里的 reference model 起什么作用?
- GRPO 为什么适合多候选 rollout?
- Diffusion + RL 的 credit assignment 为什么比 AR + RL 更难?
- reward hacking 为什么不是偶发 bug?
- 拥堵加塞为什么是安全、效率、舒适三目标冲突?
- 静态偏航 reward 为什么要做场景隔离?
- 碰撞和绕行 reward 为什么要设置优先级?
- 量产闭环里,数据、reward、规则、评测分别负责什么?
参考答案
| 题号 | 参考答案 |
|---|---|
| 1 | 主要解决两类问题:第一是信息损失与误差累积,传统 pipeline 会把丰富感知压成检测框、车道线、规则状态,再层层传递误差;第二是系统复杂性与规则瓶颈,模块太多、规则难穷举、长尾场景维护成本高。 |
| 2 | 因为端到端只是让模型更直接地学习从输入到驾驶输出的映射,不代表最终系统可以不要导航、法规、安全检查、后处理和评测。量产里通常是模型生成候选轨迹,规则和评测负责兜底、筛选和发现回归。 |
| 3 | 两段式保留结构化中间表示,比如目标、车道线、地图元素、预测轨迹,便于定位问题和接入规则。它可以分别优化感知、预测、规划,训练更稳定,工程迭代成本低,所以更接近当前量产方式。 |
| 4 | 中间表征会把原始传感器和场景上下文压缩成有限标签或向量,细粒度几何、遮挡关系、交互意图可能被丢掉。Planner 看到的是「被整理过的世界」,不是完整世界,因此上游一点误差可能在规划里被放大。 |
| 5 | 一段式把感知、预测、规划放进统一 latent space,输出错了以后很难判断错在检测、地图、交互预测还是规划策略。它缺少清晰中间接口,闭环仿真中一旦轨迹抖动或发散,归因和修复都更困难。 |
| 6 | latent space 是模型内部连续向量工作台,信息丰富但不直接可读;显式 BEV / agent / map token 是人为定义的结构化表达,更容易解释和加约束。前者上限高但 debug 难,后者可控性强但可能压缩信息。 |
| 7 | Navigation Path 表示长期路线意图,例如该走哪条车道、哪个出口、哪个方向,但它不包含完整避障、舒适性、动力学和实时交互约束。最终轨迹还必须根据动态障碍物、交通规则和车辆状态重新规划。 |
| 8 | 适合路口择道、主辅路切换、环岛出口、地下停车场、通行概率估计等长期意图强但局部几何或感知不充分的场景。不适合把它直接当作普通车道保持或最终控制轨迹。 |
| 9 | 因为自动驾驶未来天然有多个合理答案:可以跟车、变道、让行、绕行,也可能有激进/保守不同风格。Diffusion 是生成分布的模型,能从噪声中采样出多种可能轨迹,比单条回归更适合表达不确定性。 |
| 10 | 多模态只说明模型能生成多种候选,不代表每条候选都满足安全、法规、舒适和导航目标。生成模型可能同时输出合理轨迹和碰撞轨迹,因此还需要 scoring、rule check、optimization 或 RL 约束。 |
| 11 | 标准 Diffusion 需要很多步去噪,车端实时规划无法接受高延迟。DiffusionDrive 用 truncated diffusion 缩短去噪过程,并结合 anchor 先验,让模型在较少步骤内生成可用的多模态轨迹。 |
| 12 | 因为直接从零预测完整未来轨迹会让模型承担太多物理和远期不确定性。ResAD 先给 inertial reference 这样的物理参考轨迹,再学习 residual 残差,相当于让模型只学「相对合理先验的必要偏离」。 |
| 13 | 可以定义成未来某个时间步的车辆状态、空间轨迹点、控制量如 acc/yaw_rate,也可以是 dx/dy/dyaw 这样的相对位移航向变化。不同 token 定义会改变学习难度、噪声传播、动力学一致性和极端场景表现。 |
| 14 | acc/yaw_rate 更接近控制量,学习难度低,积分后比较平滑,dyaw 抖动小,但急加减速时 action 分布可能稀疏;dx/dy/dyaw 更贴近几何位姿变化,极端场景可能更真实,但解码后 yaw 抖动容易被放大。 |
| 15 | rollout 是一步输出影响下一步输入的过程。前一步预测错了,后续状态就偏离训练分布,模型会在错误状态上继续生成,导致误差一路累积,AR 轨迹和闭环策略都容易遇到这个问题。 |
| 16 | 五类问题是:长时序决策、多目标权衡、不确定交互建模、稀疏/延迟反馈、规则难穷举的灰色决策区。它们共同特点是很难靠逐帧监督或固定规则解决,需要通过长期 reward 或偏好来优化策略。 |
| 17 | 因为 RL 从零探索驾驶行为样本效率低、风险高、reward 难写,也容易不类人。更现实的方式是先用 imitation learning / CE 学到基本驾驶分布,再用 RL 微调安全、效率、舒适、规则和偏好。 |
| 18 | reference model 是预训练策略的冻结基准,用来约束新 policy 不要为了 reward 乱跑出原有合理驾驶分布。它通常通过 KL 约束或对照采样维持稳定性,让 RL fine-tune 更像「对齐」,而不是重学驾驶。 |
| 19 | GRPO 在同一场景下采样多条候选 rollout,用组内相对 reward 计算优势,不一定需要显式 value function。自动驾驶规划天然有多候选轨迹,GRPO 可以比较哪条更安全、更可行、更类人。 |
| 20 | AR 是一步步生成动作 token,reward 可以较自然地对应 rollout 时间步;Diffusion 往往是多步去噪后一次得到整条轨迹,最终 reward 要分配回各个去噪步骤和轨迹片段,归因更间接、更不稳定。 |
| 21 | reward hacking 是 RL 的本性之一:模型会最大化你写下来的数值,而不是你心里真正想要的驾驶行为。例如只惩罚碰撞,模型可能学会极低速、路口犹豫、合流不敢进,因为「不动」在 reward 上很安全。 |
| 22 | 加塞时太保守会一直让行,被连续插队,效率差;太激进会抢位、急加速、压迫侧后车,舒适性和安全变差。它还涉及对方是否让行的博弈,所以安全、效率、舒适三个目标同时冲突。 |
| 23 | 因为同一个 reward 在不同场景下含义可能相反。比如车道锁定能抑制静态无效换道,但如果前方有慢车需要绕行,锁定就会阻碍合理避障,所以 reward 必须按场景生效,避免互相打架。 |
| 24 | 碰撞和绕行可能同时给出相反信号:绕行奖励鼓励偏离原车道,但安全惩罚要求避开碰撞风险。量产中要明确安全 > 法规 > 体感,避免模型为了拿绕行奖励而牺牲安全,也避免同一时刻重复施加冲突 reward。 |
| 25 | 数据负责覆盖分布和补齐难例;reward 负责把安全、效率、舒适、规则、偏好转成训练信号;规则负责底线约束和后处理兜底;评测负责发现开环/闭环回归。四者一起构成量产闭环,不能只靠单个模型。 |
再进一步:12 道扩展题(不给答案,检验第二轮)
- 高精地图方案为什么能降低实时感知负担?
- BEV、Occupancy、端到端、VLA 分别补上了哪一类能力?
- 什么是 perception-induced planning failure?
- SD waypoints、speed limit、lane action 如何变成模型输入?
- 为什么要对 SD 行点做横向偏移、缺失和时序偏移增强?
- KL 惩罚在 RL fine-tune 里为什么重要?
- Flow Matching 和 Diffusion 的核心区别是什么?
- MDP 的五个组成是什么?
- V(s) 和 Q(s,a) 有什么差异?
- Bellman 方程解决了什么「当前与未来」的关系?
- 开环训练为什么学不到纠错能力?
- 虚拟墙机制可能引入什么 GT 偏差?
术语速查
| 术语 | 快速解释 |
|---|---|
| BEV | Bird's Eye View,把多传感器视角融合到鸟瞰空间 |
| Occupancy | 用占据状态表达空间中是否存在障碍/可通行 |
| E2E | End-to-End,尽量统一学习从感知到规划/控制的输出 |
| 两段式 | 先输出结构化世界,再规划轨迹 |
| 一段式 | 用统一 latent 直接优化驾驶输出 |
| Latent Space / 潜空间 | 模型内部学出来的压缩世界表示;可能包含车辆、道路、导航意图、交互风险,但不是人能直接读懂的表格 |
| Rollout / 逐步展开 | 让策略按「状态 → 动作 → 新状态 → 下一动作」一步步模拟未来;AR 和 RL 都很依赖 |
| Navigation Path | 导航意图/参考线,不是控车轨迹 |
| SD / SDPro | 导航与车道级先验信息,SDPro 更细到车道拓扑/类型 |
| ADE / FDE | 平均位移误差 / 终点位移误差 |
| AR | AutoRegressive,自回归 next-token 生成 |
| Diffusion | 加噪再去噪的生成模型 |
| Flow Matching | 学习从噪声到数据的连续速度场 |
| BC / CE | Behavior Cloning / Cross Entropy,模仿学习常用训练 |
| MDP | Markov Decision Process,RL 的状态-动作-奖励框架 |
| Return | 折扣累积奖励 |
| V / Q | 状态价值 / 动作价值 |
| PPO | Proximal Policy Optimization,常用策略优化算法 |
| GRPO | Group Relative Policy Optimization,用组内相对优势优化 |
| Reward Hacking | 模型利用 reward 漏洞拿高分,但行为不符合真实目标 |
| TTC | Time To Collision,碰撞时间 |
| VRU | Vulnerable Road User,行人、骑行者等弱势交通参与者 |
复习时只抓 6 个句子
全文压到最短,是这 6 句:
- 端到端是减少信息损失和规则瓶颈,但不是取消工程约束。
- 两段式保留可解释中间结构,一段式追求统一表征和联合优化上限。
- Navigation Path 表达长期路线意图,不是直接控车轨迹。
- Diffusion 适合一次生成多种未来,AR 适合一步步 rollout。
- RL 负责长期目标、多目标权衡、交互博弈、延迟反馈和灰色决策。
- 量产系统必须承认 reward 不完美,用数据闭环、场景隔离、规则兜底和评测回归控制风险。
想要更细的速查版(每章公式、17 篇论文记忆卡、易混点),看配套的交互式复习速查页。
结语:先用场景讲顺,再回头啃公式
如果你是第一次系统看端到端自动驾驶,我的建议是:第一轮不要陷进公式细节。 先把每一块都能用一个具体的驾驶场景讲出来——
- 路口无保护左转:需要导航、交互、多模态、长期收益。
- 拥堵加塞:需要博弈、reward、类人性、安全优先级。
- 主辅路分叉:需要 SDPro、导航拓扑、虚拟墙、偏航惩罚。
- VRU 横穿:需要预测、TTC、轨迹交汇时间、保守策略。
每一块还可以按同一个节奏过一遍:先问「这一节在解决什么问题」,再画清输入、输出、中间变量和训练信号,然后找它的优点、缺点、适用与失败场景,最后用一个真实 case 把它复述出来,并翻译成量产动作——加数据、改 reward、加规则、改 token、改评测,分别会发生什么。
等这些场景都能讲顺,再回头去啃 MDP、Bellman、PPO/GRPO、Diffusion loss、Flow Matching ODE。这样学下来,你会更像在理解一套自动驾驶系统,而不是在孤立地背一串算法名字。