3. 模仿学习入门

在自动驾驶策略学习中,模仿学习是最直接的一类方法:它不要求手工设计完整的奖励函数,而是假设专家驾驶数据中隐含了“好策略”的答案。本节围绕三条主线展开:行为克隆、逆强化学习与DAgger,并进一步讨论驾驶策略的输入输出表示,因为表示方式往往决定了模型能否真正学到可泛化的驾驶行为。

核心问题:给定专家轨迹数据,如何学习一个从感知输入到驾驶动作的映射,并尽量减小部署时的分布偏移?

一、行为克隆:最朴素的监督学习

行为克隆(Behavior Cloning, BC)把驾驶策略学习当作标准的监督学习问题。设专家在状态 s 下执行动作 a,BC 训练一个参数化策略 πθ(a|s) 去拟合专家动作分布。常见损失函数为均方误差或交叉熵:

L_BC(θ) = E_(s,a)~D_expert [ -log πθ(a|s) ]
或回归形式:
L_BC(θ) = E_(s,a)~D_expert [ ||πθ(s) - a||² ]

在驾驶场景中,输入通常是前视摄像头图像、激光雷达点云、车辆状态(速度、航向角、转向角)等;输出可以是离散动作(左转、直行、右转、加速、刹车),也可以是连续控制量(转向角、油门、制动压力)。BC 的优点是实现简单、训练稳定、易于与 CNN/Transformer 结合;缺点是存在协变量偏移:训练时只见过专家状态分布,部署时一旦偏离,误差会累积放大。

二、逆强化学习:从行为反推奖励

逆强化学习(Inverse Reinforcement Learning, IRL)不直接模仿动作,而是先推断专家行为背后的奖励函数 R(s,a),再基于该奖励用强化学习求解最优策略。其基本假设是:专家行为在某个奖励函数下近似最优。典型流程如下:

  1. 初始化奖励函数 Rψ(s,a);
  2. 在当前奖励下求解最优策略 π;
  3. 比较 π 与专家轨迹的特征期望;
  4. 更新奖励参数 ψ,使专家轨迹获得更高回报;
  5. 重复直至奖励函数收敛,再输出最终策略。

IRL 的优势在于能学到更抽象的目标(如“保持安全距离”“平顺驾驶”),对分布偏移更鲁棒;但计算代价高,且需要在线或反复求解 RL,工程落地难度较大。在驾驶策略评测中,IRL 常被用于解释专家行为、生成可解释的奖励信号,或作为 BC 的补充。

三、DAgger:用交互数据修正分布偏移

DAgger(Dataset Aggregation)是解决 BC 协变量偏移的经典方法。它让当前策略 πθ 在环境中执行,产生新状态,再由专家对这些状态标注正确动作,并把新数据不断聚合到训练集中。算法要点:

初始化数据集 D ← 专家演示数据
for i = 1..N:
    训练策略 πθ ← 在 D 上做监督学习
    用 πθ 在环境中采样轨迹,得到状态序列 {s_t}
    请专家对 {s_t} 标注动作 a_t*
    D ← D ∪ {(s_t, a_t*)}
返回最终策略 πθ

DAgger 的关键价值在于:训练分布逐步逼近策略实际访问的状态分布,从而显著缓解误差累积。在驾驶仿真中,这意味着让模型先“开歪”,再由专家纠正,模型就能学会从偏离状态中恢复。其代价是需要专家在线标注,成本较高,因此常与仿真器、安全员接管数据或自动标注结合使用。

四、驾驶策略的输入输出表示

输入输出表示直接决定策略能学到什么。常见输入包括:

  • 视觉输入:单目/多目 RGB 图像、BEV 特征图、语义分割图;
  • 几何输入:激光雷达点云、毫米波雷达目标列表、高精地图矢量;
  • 状态输入:自车速度、加速度、航向角、转向角、历史动作序列;
  • 交互输入:周围车辆轨迹、行人位置、交通灯状态。

输出表示则分为三类:离散动作(如 {左转, 直行, 右转})、连续控制(转向角、油门、刹车)、轨迹/路径点(未来 3~5 秒的 waypoint 序列)。轨迹输出近年来更受青睐,因为它天然包含时序信息,便于与规划模块衔接,也更容易做多模态建模。

方法学习目标数据需求优点主要风险
行为克隆 BC直接拟合专家动作静态专家数据集简单、稳定、易扩展协变量偏移、误差累积
逆强化学习 IRL先学奖励再求策略专家轨迹 + 环境交互可解释、泛化较好计算昂贵、训练不稳定
DAgger交互式聚合数据专家在线标注缓解分布偏移标注成本高、依赖专家

五、案例与常见误区

以城市路口左转为例:BC 可能只学会“看到路口就左转”,但遇到对向直行车时无法判断让行;IRL 可以从专家轨迹中推断出“避让直行、保持安全间隙”的奖励;DAgger 则让模型在仿真中先尝试左转,由专家在冲突点纠正,从而学会等待与博弈。三者并非互斥,实际系统常以 BC 做预训练,用 DAgger 做在线修正,再用 IRL 辅助奖励设计。

常见误区:
1. 只堆数据量,不关注状态分布覆盖,BC 仍会在长尾场景失效;
2. 把 IRL 当作“免交互”方法,忽略其内部仍需 RL 求解;
3. DAgger 中专家标注不一致,导致策略学到矛盾行为;
4. 输入输出表示与下游规划接口不匹配,例如输出离散动作却要求平滑轨迹。
实践建议:先明确输出表示(离散/连续/轨迹),再选择方法。若数据充足且场景封闭,BC 是快速基线;若追求可解释与泛化,可引入 IRL;若部署中发现误差累积,优先用 DAgger 做交互式数据聚合。
模仿学习三类方法:数据流与驾驶策略表示 输入表示 摄像头 / BEV 特征 激光雷达 / 雷达目标 自车状态与历史动作 地图 / 交通参与者 输出表示 离散动作:左/直/右 连续控制:转向/油门/刹车 轨迹:未来 waypoint 序列 多模态:意图 + 轨迹 策略学习方法 行为克隆 BC:监督拟合专家动作 逆强化学习 IRL:先学奖励再求策略 DAgger:交互聚合,纠正分布偏移 DAgger 交互式数据聚合流程 专家演示数据 D (s, a*) 训练策略 πθ 监督学习 策略采样轨迹 {s_t} 专家标注 a_t* 在线纠正 D ← D ∪ {(s_t, a_t*)},迭代聚合 BC 快速基线 · IRL 可解释奖励 · DAgger 缓解协变量偏移

总结来看,行为克隆适合快速建立基线,逆强化学习适合挖掘可解释的驾驶目标,DAgger 则是在线修正分布偏移的关键手段。真正决定驾驶策略上限的,往往不是单一算法,而是输入输出表示是否与任务匹配、数据是否覆盖长尾状态,以及评测时能否复现真实交互分布。