2. 强化学习基础
在自动驾驶连续控制任务中,PPO 与 SAC 之所以能够学习到平滑的转向、油门和制动策略,前提是先把驾驶问题抽象成强化学习可以处理的标准形式。这个标准形式就是马尔可夫决策过程(MDP)。本节围绕 MDP 的五个核心要素展开:状态、动作、奖励、折扣因子、值函数与策略梯度,并说明它们在自动驾驶场景中的具体含义。
一、马尔可夫决策过程:把驾驶问题数学化
MDP 用一个五元组描述序贯决策问题:(S, A, P, R, γ)。其中 S 是状态空间,A 是动作空间,P 是状态转移概率,R 是奖励函数,γ 是折扣因子。智能体在时刻 t 观察到状态 st,选择动作 at,环境返回奖励 rt 并转移到下一状态 st+1。这个过程不断循环,形成一条轨迹。
“马尔可夫”意味着:下一状态只取决于当前状态和当前动作,与更早的历史无关。在自动驾驶中,这要求状态设计必须包含足够的信息,例如自车速度、加速度、航向角、与前车距离、相对速度、车道线曲率等。如果状态遗漏了关键历史信息,策略就可能做出错误判断。
二、状态空间与动作空间:连续控制的输入输出
状态空间是智能体对环境的观测描述。在自动驾驶中,状态通常分为三类:自车状态(速度、加速度、横摆角速度)、环境状态(车道曲率、道路边界、交通灯)、交互状态(前车距离、相对速度、旁车位置)。状态设计要满足马尔可夫性,同时避免维度爆炸。
动作空间分为离散和连续两类。自动驾驶的底层控制通常是连续的:转向角、油门开度、制动压力都是连续值。PPO 和 SAC 正是为连续动作空间设计的算法。动作空间需要设定合理的上下限,例如转向角限制在 [-0.5, 0.5] rad,油门限制在 [0, 1],否则策略可能输出危险动作。
# 典型自动驾驶连续动作空间定义
action_space = {
"steering": [-0.5, 0.5], # 前轮转角,单位 rad
"throttle": [0.0, 1.0], # 油门开度
"brake": [0.0, 1.0] # 制动压力归一化值
}
# 动作维度 = 3,属于连续控制问题
三、奖励函数与折扣因子:定义“什么是好驾驶”
奖励函数是强化学习中最关键、也最难设计的部分。它直接决定策略学到的行为。自动驾驶奖励通常由多项组成:跟踪误差惩罚(偏离车道中心)、速度奖励(接近期望速度)、舒适性惩罚(加速度、 jerk 过大)、安全惩罚(碰撞、越界)。这些项需要加权求和,权重决定了策略的偏好。
折扣因子 γ ∈ [0,1) 衡量未来奖励的重要性。γ 越接近 1,智能体越重视长期回报;γ 越小,越短视。自动驾驶中通常取 0.95~0.99,因为安全决策往往需要预见未来数秒的后果。γ 过小会导致策略只顾眼前,忽略潜在碰撞风险。
| 要素 | 自动驾驶中的含义 | 典型取值/示例 |
|---|---|---|
| 状态 s | 自车+环境+交互观测 | 速度、距离、曲率、相对速度 |
| 动作 a | 连续底层控制量 | 转向角、油门、制动 |
| 奖励 r | 驾驶质量与安全评分 | 跟踪误差、碰撞惩罚、舒适度 |
| 折扣 γ | 未来奖励权重 | 0.95~0.99 |
| 策略 π | 状态到动作的映射 | 神经网络输出均值与方差 |
四、值函数与策略梯度:从评估到改进
值函数用于评估策略的好坏。状态值函数 Vπ(s) 表示从状态 s 出发,按策略 π 行动能获得的期望折扣回报;动作值函数 Qπ(s,a) 表示在状态 s 执行动作 a 后的期望回报。优势函数 Aπ(s,a)=Qπ(s,a)−Vπ(s) 衡量某个动作比平均水平好多少,是 PPO 的核心。
策略梯度方法直接对策略参数 θ 求梯度,目标是最大化期望回报 J(θ)。其基本形式为:梯度等于优势函数乘以策略对数概率的梯度。PPO 在此基础上引入重要性采样和裁剪,限制新旧策略差异,保证训练稳定。SAC 则属于最大熵方法,在回报中加入熵项鼓励探索。
# 策略梯度核心思想(伪代码)
for each episode:
collect trajectory {s, a, r, s'} using π_θ
compute advantage A(s, a)
loss = -E[ log π_θ(a|s) * A(s, a) ]
θ ← θ - lr * ∇loss
# PPO 额外加入 ratio 裁剪,SAC 额外加入熵正则
五、案例:车道保持中的 MDP 建模
以车道保持为例:状态取横向偏差 e、航向偏差 θ、速度 v;动作取前轮转角 δ;奖励设为 r = −(w1e² + w2θ² + w3δ²)。折扣因子取 0.98。智能体通过 PPO 学习策略,使车辆在保持车道中心的同时转向平顺。若奖励中缺少 δ² 项,策略可能学会频繁抖动方向盘;若 γ 过小,车辆可能为了短期跟踪而忽略前方弯道。
六、常见误区与复盘
- 状态不满足马尔可夫性:只给当前距离不给相对速度,策略无法判断碰撞趋势。
- 奖励权重失衡:安全惩罚过小,策略会冒险贴近前车;舒适惩罚过大,策略变得过于保守。
- 折扣因子设置随意:γ=0.9 在高速场景可能过短视,γ=0.999 又可能使值函数方差过大。
- 混淆值函数与策略:值函数只评估,不直接输出动作;策略才是最终控制器。
- 忽略动作边界:连续动作未裁剪,可能导致转向角超出车辆物理极限。
理解这些基础概念后,PPO 和 SAC 的算法细节才有落脚点。后续章节将在此基础上展开网络结构、训练流程与工程调参。