2. 自动驾驶与模仿学习基础

在进入数据工程细节之前,需要先建立一张“共同地图”:自动驾驶系统由哪些模块组成、模仿学习在其中处于什么位置、行为克隆与逆强化学习各自解决什么问题。只有把这张地图画清楚,后续的数据采集、标注、清洗、训练与评测才有统一的坐标系。

一、自动驾驶分级:从辅助到无人

SAE J3016 将驾驶自动化分为 L0 到 L5 六个等级,核心区别在于“谁负责动态驾驶任务”以及“谁负责兜底”。L0 到 L2 属于辅助驾驶,驾驶员始终是责任主体;L3 在特定条件下由系统完成驾驶,但需要驾驶员在请求时接管;L4 在限定运行域内系统可独立完成全部任务,无需人类接管;L5 则要求在全场景、全气候下达到人类水平。

等级名称动态驾驶任务接管责任典型能力
L0无自动化驾驶员驾驶员仅报警提示
L1驾驶辅助驾驶员+系统驾驶员纵向或横向单一控制
L2部分自动化系统驾驶员同时控制横向与纵向
L3有条件自动化系统系统请求后驾驶员特定场景下脱手
L4高度自动化系统系统限定运行域内无人
L5完全自动化系统系统全场景无人

对数据工程而言,等级决定了数据需求:L2 需要大量接管样本与边界场景;L3 需要“系统请求接管”前后的时序数据;L4 则更强调长尾场景覆盖与仿真回放。等级越高,对数据闭环的依赖越强。

二、感知—决策—规划—控制模块

典型自动驾驶软件栈可拆为四个层次。感知层负责把传感器原始信号变成结构化世界表示,包括目标检测、车道线识别、语义分割、多目标跟踪与自车定位。决策层负责行为选择,例如跟车、变道、让行、超车。规划层在决策意图下生成一条满足动力学约束、舒适性与安全性的轨迹。控制层把轨迹转化为油门、刹车、转向等执行器指令。

数据流方向:传感器 → 感知 → 决策 → 规划 → 控制 → 执行器;同时存在反馈:执行器状态与车辆姿态回传至感知与规划,形成闭环。

模仿学习主要作用于决策与规划层,也可用于端到端感知—控制映射。它不直接编写规则,而是从人类驾驶数据中学习“在什么状态下应该输出什么动作或轨迹”。

自动驾驶模块链路与模仿学习作用点 传感器 相机/雷达/激光雷达 感知 检测/分割/跟踪/定位 决策 跟车/变道/让行 规划 轨迹生成/优化 控制 油门/刹车/转向 模仿学习作用区 从人类驾驶数据学习决策与轨迹 数据闭环:车端采集 → 回传 → 标注/挖掘 → 训练 → 仿真评测 → OTA 回灌 模仿学习模型在闭环中持续迭代,长尾场景决定上限

三、模仿学习定义与行为克隆

模仿学习(Imitation Learning)是指智能体不依赖显式奖励函数,而是从专家示范中学习策略。形式化地,给定专家轨迹数据集 \(D=\{(s_i,a_i)\}\),目标是学习策略 \(\pi_\theta(a|s)\) 使其接近专家策略 \(\pi_E\)。在自动驾驶中,专家通常是人类驾驶员,状态 \(s\) 是感知输出与自车状态,动作 \(a\) 是转向、油门、刹车或未来轨迹点。

行为克隆(Behavior Cloning, BC)是最直接的做法:把模仿学习当作监督学习,最小化动作预测误差。其损失函数可写为:

L_BC(θ) = E_(s,a)~D [ || π_θ(s) - a ||² ]

# 训练伪代码
for batch in dataloader:
    s, a = batch          # 状态与专家动作
    a_hat = policy(s)     # 模型预测
    loss = mse(a_hat, a)  # 回归损失
    loss.backward()
    optimizer.step()

BC 的优点是简单、稳定、易扩展,适合大规模数据。但它存在两个经典问题:一是分布偏移,训练时只见过专家状态,推理时一旦偏离就会进入未见过状态并持续犯错;二是因果混淆,模型可能学到“刹车灯亮所以减速”这类伪相关,而非真正因果。缓解手段包括数据增强、DAgger 式在线纠错、加入历史帧与多模态输入等。

四、逆强化学习简介

逆强化学习(Inverse Reinforcement Learning, IRL)换了一个思路:不直接学策略,而是先从专家行为中反推奖励函数 \(R(s,a)\),再用强化学习在学到的奖励下求最优策略。其直觉是“专家之所以这样做,是因为这样做回报高”。

IRL 的典型流程为:采集专家轨迹 → 初始化奖励函数 → 在当前奖励下求解策略 → 比较专家与策略的占用度量 → 更新奖励 → 迭代至收敛。相比 BC,IRL 对分布偏移更鲁棒,且奖励函数可迁移到新场景;但计算成本高、训练不稳定,通常用于仿真或小规模精细场景。

工程取舍:量产数据规模大、迭代快,BC 及其变体(如多任务、多模态输出)是主力;IRL 更适合作为奖励建模与仿真评测的补充手段。

五、案例与常见误区

假设一个城市路口左转场景。BC 模型直接学习“方向盘转角 + 油门”序列,若训练集中左转样本多为低速,模型在高速接近路口时可能仍输出大转角,导致危险。若改用 IRL,模型可能学到“安全通过路口且不干扰对向车流”的奖励,从而在不同速度下产生更合理的让行或加速决策。

常见误区一:把模仿学习等同于“复制人类动作”。实际上人类数据含噪声、犹豫与不一致,直接克隆会学到坏习惯。误区二:只关注模型结构,忽视数据分布。模仿学习的上限由数据覆盖度与专家一致性决定。误区三:用离线指标代替闭环评测。BC 的验证损失低,不代表闭环不撞车。

因此,数据工程在模仿学习中的核心任务不是“多标数据”,而是“标对数据”:覆盖长尾、保持专家一致、保留时序上下文,并建立从车端到训练到仿真的闭环。理解分级、模块、BC 与 IRL 的差异,是后续设计采集策略与标注规范的前提。