Lesson 03 · Learning signal

车从哪里学会驾驶

驾驶数据记录了专家做过什么,却不一定告诉模型偏离以后怎么办。序列决策的麻烦,从模型第一次犯错后才真正开始。

预计 35–45 分钟 连接强化学习基础 含 4 道即时题

先把四个词放对位置

方法监督从哪里来策略访问什么状态自动驾驶中的典型用途
行为克隆 BC固定专家动作或轨迹主要是专家访问过的状态从行车日志直接训练策略
交互式模仿专家对当前策略状态的标签策略自己访问的状态补充偏离恢复与失败场景
强化学习 RL奖励与环境转移策略探索得到的状态在仿真中学习教师或规划器
辅助监督目标、地图、深度、occupancy 等标签取决于主数据来源给共享表示加入结构

端到端与这四种训练方式是两个维度。一个传感器到轨迹的模型可以用行为克隆,也可以模仿 RL 教师;一个 RL 策略也可能只控制模块化规划器中的一小段。

1. 行为克隆:把驾驶变成监督学习

Behavioral cloning 收集专家驾驶数据 (observation, action),训练策略预测专家动作。若输出是轨迹,就比较预测轨迹和专家轨迹。

dataset D = {(oₜ, gₜ, aₜ*)} policy âₜ = πθ(oₜ, gₜ) loss LBC = Σ distance(âₜ, aₜ*)

它的优点很实际:真实车每天能积累大量日志,不需要在线试错;训练可以离线完成;常规驾驶包含丰富的视觉和交通上下文。

但专家日志偏向“正确状态”。人类驾驶员通常保持在车道中央,很少带着 30 厘米横向偏差、错误转角和惊慌制动继续开。模型在部署时一旦偏离,就进入训练集很少出现的状态。

一个看似很小的误差怎样滚大

监督学习常假设训练样本与测试样本来自相似分布。驾驶不满足这个条件:动作会改变下一次观测。策略自己的错误会制造新的测试分布,这叫 covariate shift;小错误经多步反馈放大,叫 compounding error

2. DAgger:在策略真正会去的地方问专家

DAgger 的核心不是一个特殊网络,而是数据收集循环:

  1. 先用专家数据训练一个初始策略。
  2. 让当前策略在环境中运行,访问它自己会到达的状态。
  3. 请专家为这些状态给出正确动作,不一定真的接管车辆。
  4. 把新数据并入数据集,重新训练,再重复循环。
D₁ = expert demonstrations for iteration i: statesᵢ = rollout(πᵢ) labelsᵢ = expert(statesᵢ) Dᵢ₊₁ = Dᵢ ∪ {(statesᵢ, labelsᵢ)} πᵢ₊₁ = train(Dᵢ₊₁)

它直接针对分布偏移,因为监督数据开始覆盖策略会犯错的区域。真实道路上,让不成熟策略自由探索有安全风险,所以工程中常用仿真、封闭场地、影子模式、人工接管日志或合成偏移近似这个循环。

噪声注入为什么有用

训练数据可以故意加入相机位置偏移、轨迹扰动或历史动作噪声,再要求策略恢复到正确路线。它让模型看见“偏了以后怎么回去”。但合成扰动若不符合车辆动力学,也会教出不真实的恢复动作。

3. 因果混淆:相关信息可能害人

Causal Confusion in Imitation Learning 指出,行为克隆是判别式监督学习,本身不知道专家、动作和环境之间的因果结构。模型会选择最容易降低训练误差的相关信号,即使部署时这个信号不应决定动作。

刹车灯悖论

假设训练输入包含自车当前速度和专家的制动状态。日志里“正在制动”与“下一时刻减速”高度相关。模型可能学会:看到刹车已经踩下,继续预测制动;看到刹车没踩,继续不制动。

部署时,策略必须先决定是否踩刹车。把自身上一动作当作原因,会产生惯性循环:该开始制动时没有制动信号,该松开时又因历史制动继续刹。训练相关性没有告诉模型“前方障碍导致专家踩刹车”。

更多输入不保证更好。如果额外信号是专家动作的后果、数据收集过程的痕迹或测试时不可用的信息,模型可能走捷径。

解决办法不是只删一个字段。需要通过干预打破错误相关性:在同样场景下改变动作、收集偏离状态、查询专家,或用因果上更合理的表示和训练任务。

4. 强化学习在这里扮演什么角色

你已有的 RL 直觉可以直接套用:

state sₜ → policy π(aₜ | sₜ) → action aₜ environment P(sₜ₊₁ | sₜ, aₜ) reward rₜ = progress − collision − violation − discomfort

RL 的吸引力在于目标可以跨时间:为了几秒后安全并线,当前可能需要减速让行。策略通过 rollout 看到动作如何改变未来状态,不局限于逐帧模仿。

真实道路却不适合大规模探索。碰撞不能拿来反复试;稀有场景样本效率低;奖励权重容易产生投机行为。例如进度奖励过大,策略可能冒险穿过缝隙;碰撞惩罚过大,策略可能永远停车。

常见组合:RL 教师,模仿学习学生

Learning by Cheating 先训练一个能读取场景真值和所有交通参与者位置的 privileged teacher,再训练只看相机的学生模仿教师。教师在部署时不存在,它的作用是生成稳定监督。

Roach 进一步用强化学习训练读取 BEV 特权信息的专家,再让单目端到端学生模仿。这里 RL 负责在仿真中学习较好的交互策略,模仿学习负责把策略转移到真实部署可用的视觉输入。

所以“用 RL”并不一定表示最终车上的策略直接通过 RL 训练。RL 也可以只存在于教师、数据生成或世界模型内的规划阶段。

5. 辅助任务是在给表示加约束

只有转向或轨迹监督时,一个场景被压成很少的输出数字。辅助任务要求共享表示同时支持目标检测、深度、车道、occupancy 或交通灯状态,减少网络依赖偶然纹理的空间。

Ltotal = λplan Ltrajectory + λdetect Lobjects + λmap Llanes + λocc Loccupancy + λcontrol Lactions

但辅助任务不是越多越好。任务标签可能昂贵;不同损失尺度会争夺表示;一个对检测有利的特征不一定对规划有利。现代 planning-oriented 方法强调最终规划目标,而不是让所有任务平均用力。

数据来源决定你学到什么

数据来源擅长覆盖常见盲点补救方式
人类常规日志真实视觉与正常交通偏离恢复、危险长尾事件挖掘、接管数据、合成扰动
规则专家仿真可控场景和大量标签规则上限、视觉域差异更强教师、域随机化、真实微调
RL 专家仿真交互策略和 on-policy 状态奖励投机、仿真偏差多指标审计、真实日志验证
生成式数据场景组合和稀有条件物理错误、频率失真真实数据校准、自动规则检查

6. 失败诊断:先问是哪一种问题

没见过

传感器或场景超出训练分布,例如特殊车辆、施工改道或强眩光。

见过但没恢复

训练集只有专家状态,没有策略偏离后的恢复监督。

学了错误线索

模型用动作后果、地图偏差或数据采集痕迹预测专家动作。

目标写歪了

损失或奖励允许策略通过停车、贴线或冒险获得较高分。

这四类问题需要不同修复。单纯加模型参数,无法替代状态覆盖、因果干预和目标审计。

7. 即时检查

题 1 · 行为克隆最直接优化什么?

题 2 · DAgger 主要补充哪类数据?

题 3 · 为什么“更多输入可能更差”?

题 4 · RL 教师加视觉学生的目的是什么?

8. 迁移练习:车辆越偏越多

一辆行为克隆车辆在直路表现正常。遇到侧风后,它向右偏 20 厘米,随后转向开始左右振荡,最终压线。训练数据来自熟练司机的正常道路日志。

请写出:

  1. 这是 covariate shift、causal confusion,还是奖励设计问题?可以有多个。
  2. 为什么只收集更多“车道中央”的日志帮助有限?
  3. 用 DAgger、噪声注入或 RL 教师各会怎样补数据?
  4. 你会增加哪一个验证指标,确认修复不是只让平均转角误差变小?

把答案发给我,可以根据你的 RL 基础进一步讨论 on-policy distribution 和 reward hacking。

本课压缩

  1. 行为克隆简单而实用,但专家日志主要覆盖专家状态。
  2. 策略动作改变下一状态,导致分布偏移和多步误差累积。
  3. DAgger 在当前策略访问的状态上查询专家,直接修补训练分布。
  4. 因果混淆说明模型会利用错误相关性,更多输入不保证更好。
  5. RL 常用于仿真教师、规划器或世界模型内训练,再通过模仿转到视觉策略。

首选资料与选读

  1. 首选:DAgger 原始论文先读摘要,抓住 future observations depend on previous actions 这句。
  2. Causal Confusion in Imitation Learning关注 causal misidentification 和 targeted interventions。
  3. Learning by Cheating看 privileged teacher 与 vision student 的训练和部署边界。
  4. Imitating a Reinforcement Learning Coach观察 RL 专家如何生成 on-policy 与 off-policy 示范。