作者 | Cheng Gong、Haoyang Wang、Chao Lu、Zirui Li、Jianwei Gong
论文 | Learning from Mistakes: Rollout-Retrieval Lifelong Policy Learning for Autonomous Driving
版本 | arXiv:2606.30537v1,2026 年 6 月 29 日
关键词 | 自动驾驶规划 / Lifelong Policy Learning / Closed-loop Rollout / Mistake Retrieval / nuPlan / 长尾闭环场景01 自动驾驶策略真正难的不是不犯错
自动驾驶策略即使在离线数据上训练得很好,部署到闭环场景里仍然会犯错:长尾交互、策略自身偏移、连续决策累积误差,都会让模型进入训练集中没见过的状态。
这篇 R2LPL 的出发点很清楚:错误不可避免,关键是策略能不能把自己的错误转成可复用的纠错知识。 它不把 closed-loop failure 只当成评测失败,而是把失败前后的 rollout 变成持续学习材料。
R2LPL 的立意不是“再堆一个更强 planner”,而是提出一个闭环策略学习范式:策略先在模拟中暴露错误,再从可恢复错误中检索纠错目标,最后用终身学习把新知识写进策略,同时避免忘掉旧纠错。
02 资源与开源状态
- DOI:https://doi.org/10.48550/arXiv.2606.30537
- 官方代码:GitHub - Engibacter/R2LPL
截至 2026 年 6 月 30 日,官方仓库已经公开,README 标注为 R2LPL 的 official implementation,并采用 Apache-2.0 license。仓库也提示仍在 active cleanup 阶段:主实验复现脚本和 base planner checkpoint / planner anchors 已提供,但 ablation、custom training 等说明仍在清理验证中。03 它和模仿学习 / 强化学习有什么不同
普通 imitation learning 依赖固定专家数据;reinforcement learning 通过 reward 驱动试错;closed-loop supervised learning 可以在 rollout 状态上做专家标注或回放。但 R2LPL 要解决的是更实际的问题:策略犯错时,现场并没有一个在线专家告诉它“这里应该怎么开”。
图 1:策略学习范式对比。原文图注翻译:R2LPL 将可恢复的策略诱发错误转成纠错目标,并通过 replay memory 保留知识,从而形成由策略自身错误驱动的终身改进。R2LPL 的关键差异是:它不是从 fixed expert logs 里学更多泛化能力,也不是靠部署时规则修正,而是从“当前策略自己诱发的状态分布”里找到可学习、可恢复、可记忆的错误。04 总体框架:ROCL 三步循环
论文把每一轮更新称为 ROCL round。一个 ROCL round 由三步构成:
- Rollout:当前策略在闭环模拟器中运行,暴露 failure、risk、conflict。
- Retrieval:从错误前的时间窗口里筛出可恢复状态,并检索可行的 corrective target。
- Lifelong Policy Learning:把新检索到的纠错知识和 replay memory 一起训练,更新策略并进入下一轮。
图 2:R2LPL 总体流程。原文图注翻译:每轮 ROCL 都遵循 rollout、retrieval、lifelong policy learning 循环:闭环 rollout 暴露错误证据,retrieval 构造纠错目标,LPL 用新知识和历史记忆更新策略。
这套流程真正重要的地方在于:它不把所有失败帧都拿来训练。很多失败到了最后一刻已经不可挽回,直接监督反而会给模型错误信号。R2LPL 的检索重点是失败前仍然存在可行动作、还能挽救局面的状态。
05 R2:不是所有错误都值得学
R2,也就是 Rollout-Retrieval,先根据三类证据挖掘 mistake-related states:failure、risk 和 conflict。failure 是碰撞或驶出道路;risk 通过 TTC 等指标捕捉潜在风险;conflict 则表示策略行为与专家日志明显不一致。
但被挖出来还不够。R2 还要判断状态是否可恢复:如果候选动作集合里没有任何可行 trajectory,就把这类状态丢掉;如果存在可行候选,就用规则评价器给 candidate anchors 打分,选出稀疏监督目标。

这个分数把三类信息组合起来:规则规划质量、参考一致性、专家一致性。越接近日志状态,专家一致性越重要;越偏离日志状态,规则和参考路线越重要。直观地说,模型不能被强行拉回已经不适用的专家轨迹,而要找从当前诱发状态出发仍然可行的纠错动作。
R2 的关键不是“找到失败”,而是把失败前仍然可恢复的状态找出来,再把它们转成可靠监督。 这一步决定了后面的持续学习是在修正策略,而不是把噪声错误写进模型。06 LPL:学新错误时,别忘旧错误
闭环策略学习还有一个难点:每次策略更新后,它会进入新的状态分布,暴露新的错误。如果只训练最新一批错误,旧错误可能再次出现;如果无限保存所有历史知识,训练成本和内存会爆炸。
R2LPL 因此引入 replay memory,并给历史样本维护优先级。新样本看训练损失,也看 rollout utility:与 failure、risk、conflict 关联越强、越难恢复的样本越值得保留。

LPL 的训练目标由三部分构成:当前轮新知识、记忆回放监督、以及对前一轮策略的 logits distillation。前两者负责吸收纠错经验,蒸馏项负责抑制遗忘。
这和普通 fine-tuning 的差别很大。R2LPL 不是“在新错误上再训一下”,而是把纠错样本变成一个有容量约束、有优先级、有蒸馏保护的记忆系统。07 实验设置:它不是小 toy benchmark
实验基于 nuPlan。作者使用一个 anchor-based planner,候选轨迹库包含 4096 个 trajectory anchors,每个 anchor 覆盖 4.0s 规划 horizon,时间间隔 0.2s。基础模型先在 nuPlan training set 上用 1M samples 预训练 30 epochs。
Rollout 和 retrieval 采用 model-only planning,不加部署时 post-processing。failure 前 40 steps 会被收集作为潜在错误窗口;risk 使用 TTC 阈值;conflict 通过等待速度、进度 gap、移动速度等阈值识别。
这组设置很重要:论文想证明的是 R2LPL 能改进 planner 本身,而不是靠更强规则后处理、在线专家或部署时 corrective module 把结果修好。08 主结果:Test14-hard 上提升最明显
表 1:nuPlan 主结果。原文图注翻译:NR 和 R 分别表示 non-reactive 与 reactive simulation protocol;分数越高越好,粗体为最佳,下划线为第二。R2LPL 的基础策略并不强:在 Test14-hard 上只有 60.67 / 65.25。经过 5 轮 ROCL 后,同一个 planner 提升到 83.51 / 78.38;10 轮搜索预算下的 envelope 结果达到 86.54 / 78.88。
更有意思的是,它不只在 hard split 上涨。在 Val14 和 Test14-random 上,R2LPL-ROCL-5 也达到 91.26 / 85.38 和 92.25 / 87.99,说明错误驱动修正没有把策略过拟合到少数失败场景。
这组结果的核心不是“R2LPL 分数最高”,而是一个中等水平的基础策略,经过几轮从自身错误中检索纠错知识,就能接近甚至超过很多更强的学习式 planner。09 多轮更新:第一轮补安全,后面补行为质量
表 2:Test14-hard 五轮 ROCL 更新指标。原文图注翻译:括号中为相对上一轮的绝对变化。从 Table II 看,第一轮提升最大:总分从 60.67 到 71.64,collision 从 75.55 到 91.36,TTC 从 64.76 到 84.92。这说明最早暴露出来的错误多是安全相关,R2 可以快速把它们转成 corrective targets。
图 3:ROCL 轮次曲线。原文图注翻译:曲线展示 Val14、Test14-hard 与 Test14-random 上的闭环性能;虚线为对应 expert-log replay score。后续轮次提升变慢,但仍然持续。到第 5 轮,总分到 83.52,drivable 到 97.43,progress 从第一轮低点 74.68 恢复到 91.80。这反映出多目标规划里的典型权衡:第一轮可能先学会“更保守更安全”,后面再逐步恢复进度、舒适和可行驶表现。
10 记忆池:持续学习不是只学最新失败
图 4:错误数据和 replay memory 演化。原文图注翻译:三幅图分别展示检索数据按 recovery reason 分类、memory 按 reason 分类、以及每轮 memory source。Figure 4 能解释 LPL 为什么必要。早期轮次产生大量 failure 相关样本,后续明显减少,但 risk 和 conflict 仍持续提供新信息。memory source 也不是只保留最后一轮,而是混合来自多个 ROCL round 的纠错知识。
这说明策略每轮都在改变自己的错误分布:旧错误修掉后,新一轮 rollout 会暴露更细的风险和行为冲突。如果没有 replay memory,策略很容易在新数据上迁移,却把旧纠错忘掉。
11 消融:R2 和 LPL 都不是装饰
表 3:Test14-hard 消融实验。原文图注翻译:SFT 表示 supervised fine-tuning,w/o 表示 without;第 0 轮对所有变体都是同一个预训练基础策略。消融很清楚:
- expert-log SFT 几乎没用:60.67 -> 60.79。
- RoaD-style SFT 有短期提升,但到第 5 轮掉到 63.58。
- R2-style SFT 能涨到 79.51,但第 5 轮回落到 76.17。
这说明论文的两个关键模块都在发挥作用:R2 负责提供更可靠的可恢复纠错监督,LPL 负责让多轮更新稳定积累,而不是打一针补丁后又遗忘或震荡。12 定性案例:它到底学会了什么
图 5:R2 纠错监督构造。原文图注翻译:蓝框为 rollout ego vehicle,黄框为周围车辆;左侧是基础策略失败,右侧是在同一状态下检索到的 target。Figure 5 说明 R2 的直觉:基础策略可能在某一帧看起来动作还合理,但前方连续决策会逐渐导致 off-road 或 collision。R2 不是只看最终失败帧,而是在失败前窗口中找还能修正的状态,并从候选动作里选择 recovered plan。
图 6:定性恢复示例。原文图注翻译:每一行展示基础策略失败及第 5 轮 R2LPL 在同一关键帧附近的 rollout;绿色/红色轨迹表示可恢复/不可恢复失败窗口状态。在高横向加速度、低速碰撞、pickup/dropoff 三类场景里,ROCL-5 策略都能在失败前提前修正行为。文章里最值得注意的是 green / red 分段:绿色表示可恢复窗口,红色表示已经难以从当前 action space 修回来的状态。这正是 R2LPL 不盲目学习所有失败帧的原因。
13 局限与边界
- 依赖结构化动作空间。 R2 当前基于 anchor candidate evaluation,能否迁移到连续生成式 planner,需要在 latent trajectory space 做 retrieval 或 projection。
- 依赖 evaluator 质量。 corrective target 来自规则评分器和参考一致性,如果评分器覆盖不足,检索目标会受影响。
- 仍是模拟闭环。 论文验证在 nuPlan closed-loop benchmark 上,距离真实车队在线学习还有安全、审核和部署隔离问题。
- 开源仍在清理。 官方仓库已公开,但 README 也明确提示仍在 active cleanup,部分复现说明仍 under construction。
- 不是替代强模型。 R2LPL 更像一层策略持续改进机制,可以叠加在 planner 上,而不是取代 planner 架构创新。
14 结论
R2LPL 最值得记住的判断是:自动驾驶策略不可能永远不犯错,关键是能不能把闭环错误转成下一轮不会再犯的知识。
- 闭环失败不只是评测结果,而是策略自我改进的数据入口。
- 不是所有失败都该学,只有可恢复、可评分、可记忆的错误才适合作为纠错监督。
- 持续学习的重点不是一次 fine-tuning,而是多轮 rollout 中不断发现新弱点,同时不忘旧纠错。
从这个角度看,R2LPL 做的不是给 planner 加一个临时补丁,而是在给自动驾驶策略补上一套“错误复盘机制”:策略在模拟中犯错、复盘、记忆、再出发。未来自动驾驶系统要真正进入长期运营,这种从部署经验中持续改进的能力,可能会和模型规模、数据规模一样重要。