1. 课程导入

自动驾驶系统要在真实道路上持续做出加速、制动、转向等决策,而真实世界又充满长尾风险:突然横穿的行人、被遮挡的车辆、湿滑路面、传感器误检。传统规则控制可解释、可验证,却难以应对复杂交互;端到端强化学习(RL)善于在交互中学习最优策略,却可能为了追求回报而突破安全边界。本课程的核心命题,就是让强化学习在“会学习”的同时“守规矩”——用约束控制为学习过程套上安全护栏。

本课程的学习目标可以概括为三条主线:会建模(把驾驶决策写成马尔可夫决策过程与约束优化问题)、会求解(掌握安全强化学习与约束控制算法)、会落地(在仿真与实车平台上完成训练、验证与部署)。

一、核心概念:从 MDP 到 CMDP

强化学习的基本建模工具是马尔可夫决策过程(MDP),用五元组 (S, A, P, R, γ) 描述状态、动作、转移、奖励与折扣因子。智能体通过最大化累计回报学习策略 π(a|s)。但驾驶任务中,很多要求不是“奖励越高越好”,而是“绝对不能违反”,例如不碰撞、不越线、横向加速度不超过舒适阈值。这类要求更适合写成约束,于是引入约束马尔可夫决策过程(CMDP):在 MDP 基础上增加代价函数 C 与约束上限 d,目标变为在满足 J_C(π) ≤ d 的前提下最大化 J_R(π)。

与之配套的关键概念包括:安全集与不变集(策略作用下状态始终留在安全区域内)、控制屏障函数(CBF,把安全约束转化为对控制量的实时约束)、拉格朗日乘子法(把约束优化转为带惩罚的无约束问题)、以及安全层/安全过滤器(在 RL 输出动作后做最小修正)。理解这些概念之间的关系,是后续所有算法学习的基础。

自动驾驶安全强化学习与约束控制 · 知识框架 环境与感知 状态 s:位置/速度/障碍 不确定性:噪声/遮挡 问题建模 MDP / CMDP 奖励 R 与代价 C 安全 RL 算法 PPO-Lag / CPO / SAC 安全探索与回放 约束控制 CBF / MPC 安全过滤器 训练闭环:策略 π → 动作 a → 环境 → 回报/代价 → 更新 约束违反触发安全层介入,保证训练与部署过程不越界 工程实践路线 1. 仿真环境 CARLA / SUMO 2. 训练与调参 奖励/约束权重 3. 安全验证 边界/对抗场景 4. 部署 实车/影子模式

二、方法流程:安全 RL 的典型训练链路

一个可落地的安全强化学习流程通常包含六个环节,缺一不可:

  1. 场景与状态设计:确定自车状态、障碍物表示、道路几何与感知不确定性建模方式。
  2. 奖励与代价设计:奖励刻画通行效率与舒适性,代价刻画碰撞、越界、超速等硬约束。
  3. 约束形式化:把“不碰撞”写成 J_C ≤ d,或写成 CBF 约束 ḣ(s) + αh(s) ≥ 0。
  4. 策略学习:使用 PPO-Lagrangian、CPO、SAC 等算法在约束下优化策略。
  5. 安全层介入:对 RL 输出动作做投影或二次规划修正,保证每一步动作可行。
  6. 验证与迭代:在边界场景、对抗扰动下评估约束违反率,再回到训练调参。

其中第 3 步和第 5 步是本课程区别于普通强化学习课程的关键。约束不是训练结束后再检查的“事后指标”,而应贯穿训练与部署全过程。

三、案例场景:十字路口左转的约束冲突

考虑无保护左转场景:自车需要在对向直行车流中寻找间隙通过。若只优化通行时间,RL 可能学会“抢行”,在仿真中回报很高,但一旦对向车辆加速,就会发生碰撞。引入约束后,问题变为:在保证与对向车辆最小安全距离不小于 3 米、横向加速度不超过 2 m/s² 的前提下,最小化通过时间。

# 约束型奖励配置示例(伪代码)
reward = w1 * progress + w2 * comfort - w3 * jerk
cost   = w4 * collision_risk + w5 * lane_invasion
constraint = {"collision": 0.0, "lane_invasion": 0.0}
# 训练目标:max E[reward]  s.t.  E[cost] <= d

这个例子说明:安全 RL 不是简单地“加惩罚项”,而是要在优化目标中显式区分“可权衡的奖励”和“不可突破的约束”。

四、常见误区与复盘

误区 表现 纠正思路
把安全当成大惩罚 碰撞惩罚调得很大,但策略仍偶尔越界 改用 CMDP 约束或 CBF 安全层,保证硬约束
只在仿真中验证 仿真零碰撞,实车出现危险接管 加入域随机化与对抗场景,做影子模式验证
忽视感知不确定性 策略对噪声敏感,误检导致急刹 在状态中加入不确定性估计,训练鲁棒策略
约束权重一次定死 训练早期过保守,后期又过激进 采用拉格朗日乘子自适应调整约束权重
学习建议:每学完一个算法,都问自己三个问题——它的约束是怎么表达的?它的安全保证是概率性的还是确定性的?它在什么场景下会失效?带着这三个问题推进,才能把“安全”从口号变成工程能力。
本课程后续会涉及大量数学推导与代码实践,建议先补齐概率论、最优化与 Python 编程基础;遇到公式不要跳过,先理解其物理含义,再回到驾驶场景中验证。

总结来看,本课程的知识框架可以概括为“一条主线、两个支柱、三层落地”:以 CMDP 建模为主线,以安全强化学习算法和约束控制方法为两个支柱,在仿真、验证、部署三个层面完成工程闭环。掌握这一框架,后续每一章都将在这个坐标系中找到自己的位置。