3. 持续学习与灾难性遗忘

自动驾驶模型上线后并不会“一劳永逸”。新城市、新天气、新车型、新交规、新传感器标定,都会持续带来新的数据分布。若每次都用新数据重新训练,模型很容易在旧场景上性能骤降,这就是灾难性遗忘(Catastrophic Forgetting)。持续学习(Continual Learning)要解决的核心问题,是让模型在吸收新知识的同时,尽量保留旧知识,实现稳定与可塑的平衡。

一、持续学习的定义与自动驾驶中的任务形态

持续学习指模型按时间顺序从非独立同分布的数据流中学习多个任务,且在学习新任务后仍能保持对旧任务的性能。在自动驾驶中,它通常表现为以下几种形态:

  • 增量场景学习:先学白天与晴天,再学夜间、雨天、雪天、逆光等新场景。
  • 增量类别学习:感知模型先识别车、人、骑行者,后续新增锥桶、施工牌、动物等类别。
  • 增量区域学习:从国内城市道路扩展到海外右舵、环岛、复杂路口等区域。
  • 增量功能学习:从基础车道保持扩展到自动变道、无保护左转、泊车等新功能。

这些任务共享同一套网络参数,但数据分布不断漂移。若只做普通微调,新任务梯度会覆盖旧任务的重要权重,导致旧场景漏检、误刹或轨迹抖动。

二、灾难性遗忘的成因:参数竞争与分布漂移

灾难性遗忘并非单一 bug,而是深度网络在非平稳数据流上的固有现象。主要原因包括:

  1. 参数共享与竞争:同一组权重既要表达旧任务特征,又要拟合新任务,梯度更新会破坏旧任务的关键连接。
  2. 数据分布漂移:新数据分布与旧数据差异大,模型为降低新任务损失而大幅调整参数。
  3. 旧数据不可见:出于存储、隐私、合规或成本考虑,历史数据往往不能全部保留,形成“无回放”困境。
  4. 任务边界模糊:自动驾驶数据流没有清晰的任务切换点,场景是连续渐变的,难以显式划分任务。
  5. 长尾与类别不平衡:新增长尾类别样本少,模型容易过拟合新类而遗忘旧类。
核心矛盾:稳定性(保留旧知识)与可塑性(学习新知识)之间的权衡。持续学习的所有方法,本质上都在调节这两者的平衡。

三、主流方法:正则化、回放与参数隔离

下面用一张图概括三类主流方法在自动驾驶训练流水线中的位置与作用。

持续学习三大方法在自动驾驶训练流水线中的协同 旧任务数据/模型 白天·晴天·城市A 新任务数据流 夜间·雨天·城市B 训练目标 新任务损失 + 旧知识约束 正则化方法 EWC / SI / MAS 约束重要权重 无需存旧数据 适合感知主干 代价:约束强度难调 回放方法 Replay / 生成回放 旧样本或伪样本 与新数据混合训练 效果稳定、易落地 代价:存储与采样成本 参数隔离 Adapter / LoRA 子网络 / 掩码 旧参数冻结 新任务独立分支 代价:容量与调度 自动驾驶落地组合策略 感知主干:正则化 + 小比例回放 | 新增类别:参数隔离 + 类别平衡采样 预测规划:回放为主 + 场景分层评估 | 车端:LoRA 增量更新,云端统一回归 目标:旧场景不退化,新场景快速收敛

四、方法对比与自动驾驶适用性

方法 核心机制 是否需要旧数据 自动驾驶适用场景 主要风险
正则化(EWC/SI/MAS) 对重要参数施加约束,限制其大幅偏移 否,仅需旧任务统计量 感知主干网络、BEV 特征提取器 约束过强导致新任务学不动
回放(Replay) 旧样本或生成样本与新数据混合训练 是,需样本或生成器 检测、分割、预测规划全链路 存储成本、采样偏差、隐私合规
参数隔离(Adapter/LoRA) 冻结旧参数,为新任务增加独立分支 否,但需任务标识 多车型、多区域、多功能增量 分支增多、推理调度复杂
知识蒸馏 用旧模型输出约束新模型 否,需旧模型 模型压缩与版本迭代并行 旧模型错误会被继承

五、案例:夜间雨天增量训练中的遗忘复盘

某项目在白天晴天数据上训练的感知模型,直接微调夜间雨天数据后,夜间召回提升明显,但白天误检率上升、远处车辆漏检增加。复盘发现:

  • 新数据仅占旧数据分布的 8%,但学习率沿用全量训练配置,导致参数大幅漂移。
  • 未保留白天困难样本,旧任务关键特征被覆盖。
  • 评估集只关注新场景,缺少旧场景回归门禁。

改进方案采用“正则化 + 回放 + 分层评估”组合:对主干网络启用 EWC 约束,回放 20% 白天困难样本,并在 CI 中设置旧场景性能下降不超过 1% 的硬门禁。配置示例如下:

continual_learning:
  method: ewc_plus_replay
  ewc_lambda: 0.4
  replay_ratio: 0.2
  replay_source: hard_cases_daytime
  lr: 1.0e-4
  epochs: 6
  eval_gate:
    old_scene_drop_max: 0.01
    new_scene_recall_min: 0.92
    night_rain_map_min: 0.55
实践建议:持续学习不是“只学新数据”,而是“新数据 + 旧知识约束 + 回归验证”的闭环。每次增量训练都应保留旧场景评估集,并把遗忘指标纳入发布门禁。
常见误区:把持续学习等同于“多任务联合训练”。联合训练需要同时访问所有任务数据,而持续学习强调数据流顺序到达、旧数据不可全量保留。二者在工程约束和评估方式上完全不同。

六、工程落地要点

  1. 任务划分:按场景、区域、类别或功能定义增量任务,避免任务边界过于模糊。
  2. 重要性估计:用 Fisher 信息、路径积分或掩码统计识别旧任务关键参数。
  3. 回放缓冲区:优先保留困难样本、长尾样本和边界场景,控制采样比例。
  4. 参数隔离粒度:按车型或区域挂载 LoRA/Adapter,车端只更新小参数集。
  5. 评估体系:同时监控新任务收益与旧任务退化,设置遗忘率、平均精度、召回率等指标。
  6. 版本回滚:保留旧模型与数据快照,出现严重遗忘时可快速回退。

持续学习的目标不是彻底消除遗忘,而是把遗忘控制在可接受范围内,并让模型在持续迭代中保持稳定、可解释、可回滚。对自动驾驶而言,这既是算法问题,也是数据、训练、评估与发布流程的系统工程。