第7章:基于强化学习的规划与控制
本章深入探讨强化学习在自动驾驶规划与控制中的应用。我们将从基础的强化学习理论出发,逐步深入到最新的深度强化学习方法,包括模仿学习、世界模型、离线强化学习以及基于Transformer的决策模型。重点关注如何在保证安全性的前提下,利用数据驱动的方法学习复杂的驾驶策略。
7.1 强化学习在自动驾驶中的机遇与挑战
强化学习(Reinforcement Learning, RL)为自动驾驶提供了一种端到端学习复杂驾驶策略的方法。与传统的基于规则的方法相比,RL能够通过与环境的交互自动发现最优策略,处理复杂的多智能体交互场景,并持续适应新的驾驶环境。
7.1.1 为什么选择强化学习
传统的自动驾驶系统依赖手工设计的规则和启发式算法,这种方法在处理边缘案例(edge cases)时显得力不从心。强化学习提供了以下独特优势:
-
端到端优化 - 直接优化最终目标(安全到达目的地),而非子模块的局部目标 - 避免级联错误:感知误差不会在规划模块中被放大 - 学习隐式的特征表示,无需手工设计
-
处理不确定性 - 自然建模环境的随机性和部分可观测性 - 学习鲁棒的策略,应对传感器噪声和遮挡 - 通过探索-利用平衡发现新的驾驶策略
-
多智能体交互 - 建模其他交通参与者的行为 - 学习社会化驾驶行为(social driving) - 处理博弈论场景(如并线、通过交叉口)
-
持续学习能力 - 从真实驾驶数据中不断改进 - 适应新的交通规则和驾驶环境 - 个性化驾驶风格学习
7.1.2 自动驾驶作为序列决策问题
自动驾驶本质上是一个序列决策问题,需要在连续的时间步骤中做出最优决策。我们可以将其建模为部分可观测马尔可夫决策过程(POMDP):
状态空间 (State Space)
S = {车辆状态, 环境状态, 其他智能体状态}
- 车辆状态:位置、速度、加速度、航向角
- 环境状态:道路拓扑、交通信号、天气条件
- 其他智能体:位置、速度、预测轨迹
观测空间 (Observation Space)
O = {传感器数据, 地图信息, V2X通信}
- 相机图像:RGB、深度、语义分割
- LiDAR点云:3D空间占据
- 雷达数据:速度、距离测量
- HD地图:车道线、交通规则
动作空间 (Action Space)
A = {纵向控制, 横向控制, 离散决策}
- 连续控制:加速度 ∈ [-amax, amax],转向角 ∈ [-δmax, δmax]
- 离散决策:{保持车道, 左变道, 右变道, 停车}
- 混合动作:高层决策 + 底层连续控制
奖励函数 (Reward Function)
R = w1·安全性 + w2·效率 + w3·舒适性 + w4·合规性
- 安全性:碰撞惩罚、最小安全距离
- 效率:行驶速度、到达时间
- 舒适性:加速度平滑度、急刹车惩罚
- 合规性:交通规则遵守、车道保持
转移动力学 (Transition Dynamics)
P(s'|s,a) = P(车辆动力学) × P(环境变化) × P(其他智能体行为)
7.1.3 主要挑战
尽管强化学习在自动驾驶中展现出巨大潜力,但仍面临诸多挑战:
- 安全性保证 - 探索的代价:在真实环境中的错误探索可能导致事故 - 稀有事件处理:安全关键场景在数据中出现频率极低 - 最坏情况保证:RL通常优化期望回报,难以提供最坏情况下的安全保证
解决方案:
- 使用高保真仿真器进行安全探索
- 引入安全约束(Safe RL)
- 结合形式化验证方法
- 样本效率 - 数据需求量大:深度RL通常需要百万级交互样本 - 真实数据稀缺:实车测试成本高昂 - 长尾分布:关键场景数据稀少
解决方案:
- 离线强化学习(Offline RL)
- 迁移学习和域适应
- 数据增强和场景生成
- 奖励函数设计 - 多目标权衡:安全、效率、舒适性难以量化 - 奖励稀疏:到达目的地的奖励延迟很长 - 奖励黑客:智能体可能找到意外的奖励最大化方式
解决方案:
- 逆强化学习从专家数据学习奖励
- 分层奖励设计
- 人类反馈强化学习(RLHF)
- 泛化能力 - 分布偏移:训练和测试环境的差异 - 地域差异:不同国家的交通规则和驾驶习惯 - 天气和光照变化:雨雪天气、夜间驾驶
解决方案:
- 域随机化(Domain Randomization)
- 元学习(Meta-Learning)
- 持续学习和在线适应
- 可解释性 - 黑箱决策:深度神经网络决策过程不透明 - 责任归属:事故责任难以判定 - 监管要求:需要可审计的决策过程
解决方案:
- 注意力机制可视化
- 分层决策结构
- 可解释的中间表示
- 计算资源限制 - 实时性要求:决策延迟必须在100ms以内 - 车载算力限制:功耗和散热约束 - 模型大小:深度网络参数量巨大
解决方案:
- 模型压缩和量化
- 知识蒸馏
- 边缘-云协同计算
实际案例:Wayve的LINGO模型
Wayve公司的LINGO(Language Instructed Goal-Oriented)模型展示了RL在实际自动驾驶中的应用:
- 使用模仿学习初始化策略
- 通过人类语言指令提供额外监督
- 在仿真中进行强化学习微调
- 实现了在伦敦复杂城市环境中的自动驾驶
这个案例说明了现代自动驾驶系统如何结合多种学习范式克服纯RL的局限性。
7.2 深度强化学习基础
深度强化学习结合了深度学习的表示能力和强化学习的决策能力,是实现自动驾驶智能决策的核心技术。本节介绍深度RL的基础概念和主流算法。
7.2.1 马尔可夫决策过程(MDP)建模
自动驾驶可以建模为一个连续状态空间和动作空间的MDP,定义为五元组 (S, A, P, R, γ):
形式化定义
- 状态空间 S:高维连续空间,包含车辆运动学状态和环境感知信息
- 动作空间 A:连续控制空间 A ⊆ ℝ^n,通常 n=2(加速度和转向角)
- 转移概率 P:P(s_{t+1}|s_t, a_t) 描述状态转移的不确定性
- 奖励函数 R:R(s_t, a_t, s_{t+1}) → ℝ,量化驾驶行为的优劣
- 折扣因子 γ:γ ∈ [0, 1],平衡即时奖励和长期回报
自动驾驶MDP的特殊性
-
高维观测空间 - 原始传感器输入:图像 (H×W×C),点云 (N×3) - 需要强大的特征提取器(CNN、PointNet) - 观测往往是部分的(POMDP)
-
连续控制空间 - 加速度:a ∈ [-a_{max}, a_{max}] - 转向角:δ ∈ [-δ_{max}, δ_{max}] - 需要处理连续动作的算法(如DDPG、SAC)
-
多时间尺度决策 - 高层决策(1-10 Hz):路径规划、行为决策 - 底层控制(10-100 Hz):轨迹跟踪、车辆控制 - 分层RL或选项框架(Options Framework)
贝尔曼方程
价值函数满足贝尔曼方程,这是所有RL算法的理论基础:
状态价值函数:
V^π(s) = E_{a~π}[R(s,a) + γ·E_{s'~P}[V^π(s')]]
动作价值函数(Q函数):
Q^π(s,a) = R(s,a) + γ·E_{s'~P}[V^π(s')]
最优价值函数:
V*(s) = max_a Q*(s,a)
Q*(s,a) = R(s,a) + γ·E_{s'~P}[V*(s')]
7.2.2 价值函数与策略梯度方法
深度RL算法主要分为三类:基于价值的方法、基于策略的方法、以及Actor-Critic方法。
- 深度Q网络(DQN)及其变体
虽然DQN主要用于离散动作空间,但其思想影响了许多连续控制算法:
关键创新:
- 经验回放(Experience Replay):打破数据相关性
- 目标网络(Target Network):稳定训练
- 双Q学习(Double DQN):缓解过估计问题
- 优先经验回放(PER):重要样本优先采样
- 决斗网络(Dueling DQN):分离状态价值和优势函数
- 策略梯度方法
直接优化策略参数θ,最大化期望回报:
目标函数:J(θ) = E_{τ~π_θ}[Σ_t γ^t R_t]
策略梯度定理:
∇_θ J(θ) = E_{τ~π_θ}[Σ_t ∇_θ log π_θ(a_t|s_t) · G_t]
其中 G_t 是回报估计,可以是:
- 蒙特卡洛回报:G_t = Σ_{k=t}^T γ^{k-t} r_k
- TD误差:G_t = r_t + γV(s_{t+1}) - V(s_t)
- 广义优势估计(GAE):平衡偏差和方差
REINFORCE算法
最简单的策略梯度算法:
1. 采样轨迹 τ ~ π_θ
2. 计算回报 G_t
3. 更新策略:θ ← θ + α·∇_θ log π_θ(a_t|s_t)·G_t
问题:高方差,样本效率低
- 自然策略梯度(NPG)
考虑参数空间的几何结构,使用Fisher信息矩阵:
θ_{k+1} = θ_k + α·F^{-1}·∇_θ J(θ)
其中 F = E[∇_θ log π_θ · (∇_θ log π_θ)^T]
TRPO和PPO都基于自然梯度的思想。
7.2.3 Actor-Critic架构
Actor-Critic结合了价值函数和策略梯度的优点,是自动驾驶中最常用的架构。
基本架构
Actor(策略网络):π(a|s;θ) → 动作分布
Critic(价值网络):V(s;φ) 或 Q(s,a;φ) → 价值估计
优势函数:A(s,a) = Q(s,a) - V(s)
= r + γV(s') - V(s) (TD误差)
A3C (Asynchronous Advantage Actor-Critic)
- 多个并行环境收集经验
- 异步更新共享参数
- 使用优势函数减少方差
关键设计选择
- 网络架构
共享骨干网络:
Input → CNN/ViT → Features
├→ Actor Head → π(a|s)
└→ Critic Head → V(s)
独立网络:
Actor: Input → Network_A → π(a|s)
Critic: Input → Network_C → V(s)
- 动作参数化
连续动作的常见参数化:
- 高斯分布:π(a|s) = N(μ(s), σ²(s))
- Beta分布:适合有界动作空间
- 混合高斯(GMM):多模态动作分布
- 探索策略
- 熵正则化:J = J_原始 + β·H(π)
- 参数空间噪声(Parameter Space Noise)
- OU过程(Ornstein-Uhlenbeck Process)
7.2.4 连续控制算法:SAC、PPO、TD3
这些是目前自动驾驶中最常用的深度RL算法。
- PPO (Proximal Policy Optimization)
PPO是最流行的策略梯度算法,在稳定性和性能间取得良好平衡:
核心思想:限制策略更新幅度,避免性能崩溃
目标函数:
L^CLIP(θ) = E_t[min(r_t(θ)·A_t, clip(r_t(θ), 1-ε, 1+ε)·A_t)]
其中:
- r_t(θ) = π_θ(a_t|s_t) / π_{θ_old}(a_t|s_t) 重要性采样比
- clip限制比率在[1-ε, 1+ε]范围内
- A_t是优势估计
实现细节:
- 使用GAE计算优势:A_t^GAE = Σ_{l=0}^∞ (γλ)^l δ_{t+l}
- 多轮epoch更新
- 早停机制防止过拟合
- SAC (Soft Actor-Critic)
SAC是目前最先进的off-policy算法,特别适合自动驾驶:
核心创新:最大熵框架
J = E[Σ_t r_t + α·H(π(·|s_t))]
关键组件:
- 两个Q网络:Q_1, Q_2(缓解过估计)
- 一个策略网络:π_θ
- 自动温度调节:α自适应调整
更新规则:
1. Q函数:最小化贝尔曼误差
L_Q = E[(Q(s,a) - (r + γ·V_target(s')))²]
2. 策略:最大化Q值和熵
L_π = E[α·log π(a|s) - Q(s,a)]
3. 温度:维持目标熵
L_α = E[-α·(log π(a|s) + H_target)]
优势:
- 样本效率高
- 探索能力强
- 对超参数鲁棒
- TD3 (Twin Delayed DDPG)
TD3改进了DDPG,解决了Q函数过估计问题:
三个关键技术:
1. 双Q网络:取较小值作为目标
y = r + γ·min(Q_1'(s',π'(s')), Q_2'(s',π'(s')))
2. 延迟策略更新:
- Q网络更新频率 > 策略网络更新频率
- 典型比例 2:1
3. 目标策略平滑:
a' = π'(s') + clip(ε, -c, c), ε ~ N(0,σ)
实现要点:
- 使用确定性策略
- 添加探索噪声
- 软更新目标网络
算法选择指南
| 算法 | 适用场景 | 优势 | 劣势 |
| 算法 | 适用场景 | 优势 | 劣势 |
|---|---|---|---|
| PPO | 仿真训练、在线学习 | 稳定、易调参 | 样本效率较低 |
| SAC | 真实数据、离线学习 | 样本效率高、鲁棒 | 计算开销大 |
| TD3 | 确定性控制 | 简单高效 | 探索能力弱 |
实践经验
-
归一化技巧 - 观测归一化:运行均值和标准差 - 奖励缩放:r' = r / std(r) - 动作范围:tanh激活函数
-
网络设计 - 隐层大小:256-512单元 - 激活函数:ReLU或Swish - 层归一化优于批归一化
-
超参数经验值
学习率:3e-4 (Adam优化器)
批大小:256
缓冲区大小:1e6
折扣因子:0.99
软更新系数:0.005
7.3 模仿学习与行为克隆
模仿学习(Imitation Learning)通过学习专家演示来获得驾驶策略,避免了从零开始探索的危险和低效。这是目前自动驾驶系统获得初始策略的主要方法。
7.3.1 行为克隆(Behavior Cloning)
行为克隆将模仿学习转化为监督学习问题,直接从专家演示数据学习状态到动作的映射。
基本框架
数据集:D = {(s_i, a_i)}_{i=1}^N,其中a_i是专家在状态s_i的动作
目标:学习策略π_θ,使得π_θ(s) ≈ π_expert(s)
损失函数:L(θ) = E_{(s,a)~D}[||π_θ(s) - a||²](回归)
或 L(θ) = E_{(s,a)~D}[-log π_θ(a|s)](分类)
在自动驾驶中的应用
-
数据收集 - 人类驾驶员数据:真实道路测试 - 安全驾驶员接管数据:从失败中学习 - 仿真专家:使用优化算法生成最优轨迹
-
网络架构设计
输入处理:
图像 → ResNet/EfficientNet → 特征
LiDAR → PointNet++ → 特征
地图 → GNN/CNN → 特征
特征融合:
[图像特征, LiDAR特征, 地图特征] → Transformer/注意力机制
输出头:
融合特征 → MLP → [加速度, 转向角]
- 条件模仿学习(Conditional Imitation Learning)
引入高层指令c(如转向意图):
π_θ(a|s,c) = Σ_i w_i(c) · π_i(a|s)
其中π_i是不同行为模式的子策略
例如:直行、左转、右转、停车
CARLA条件模仿学习基准
- 输入:前视相机图像 + 速度 + 导航指令
- 输出:转向角 + 加速度/制动
- 网络:ResNet骨干 + 条件分支
- 性能指标:成功率、碰撞率、违规率
7.3.2 数据增强与分布偏移问题
行为克隆的主要挑战是分布偏移(covariate shift):训练时的状态分布与测试时不同。
分布偏移的原因
训练:s ~ d_expert(s)(专家轨迹分布)
测试:s ~ d_π(s)(学习策略诱导的分布)
小的预测误差会累积,导致:
- 偏离正常轨迹
- 进入未见过的状态
- 错误级联放大
数据增强策略
-
几何变换 - 随机平移、旋转、缩放 - 透视变换模拟不同视角 - 添加噪声模拟传感器误差
-
轨迹扰动
从专家轨迹添加偏移:
s'_t = s_t + ε, ε ~ N(0, σ²)
a'_t = 修正动作,将车辆引导回原轨迹
这样生成恢复行为的训练数据
-
对抗样本生成 - 生成困难场景 - 增加罕见事件比例 - 边缘案例挖掘
-
时序增强
- 随机丢帧:模拟传感器延迟
- 历史帧堆叠:增加时序信息
- 未来轨迹预测:辅助任务正则化
域适应技术
- 仿真到现实(Sim2Real)
域随机化:
- 随机化纹理、光照、天气
- 随机化车辆动力学参数
- 随机化传感器噪声模型
域对齐:
- 使用GAN对齐特征分布
- CycleGAN进行图像风格转换
- 多任务学习
辅助任务帮助学习更好的表示:
- 语义分割
- 深度估计
- 光流预测
- 目标检测
7.3.3 DAgger与在线模仿学习
DAgger(Dataset Aggregation)通过迭代收集数据解决分布偏移问题。
DAgger算法
1. 初始化:D_0 = {专家演示数据}
2. 训练初始策略:π_0 = BC(D_0)
3. 对于迭代 i = 1, 2, ...:
a. 使用π_{i-1}在环境中运行
b. 对访问的状态s,查询专家动作a*
c. 聚合数据:D_i = D_{i-1} ∪ {(s, a*)}
d. 重新训练:π_i = BC(D_i)
实践改进
-
SafeDAgger - 添加安全监督器 - 危险时切换到专家策略 - 避免灾难性失败
-
HG-DAgger(Human-Gated DAgger) - 人类决定何时介入 - 减少标注成本 - 关注关键决策点
-
混合策略
π_mix = β·π_expert + (1-β)·π_learned
β随训练进程递减
在线模仿学习的挑战
-
专家查询成本 - 人类专家:昂贵且延迟高 - 优化算法:计算密集 - 预训练模型:可能有偏差
-
安全性保证 - 需要安全网(safety net) - 实车测试风险高 - 仿真器保真度限制
7.3.4 逆强化学习(IRL)
逆强化学习从专家演示中学习奖励函数,然后用强化学习优化策略。
最大熵IRL
假设专家策略最大化熵正则化的期望回报:
π_expert = arg max_π E_π[Σ_t r(s_t,a_t)] + H(π)
IRL目标:找到奖励函数r,使得专家轨迹的似然最大:
max_r L(r) = E_{τ~D_expert}[Σ_t r(s_t,a_t)] - log Z(r)
其中Z(r)是配分函数
深度IRL方法
- 最大熵深度IRL
使用神经网络参数化奖励:r_θ(s,a)
交替优化:
- 固定r_θ,用RL找最优策略π
- 固定π,更新r_θ最大化专家轨迹似然
- 生成对抗模仿学习(GAIL)
判别器D区分专家和策略轨迹:
L_D = E_{τ~π_expert}[log D(s,a)] + E_{τ~π_θ}[log(1-D(s,a))]
生成器(策略)欺骗判别器:
L_G = E_{τ~π_θ}[log D(s,a)]
使用PPO/TRPO优化策略
- SQIL(Soft Q Imitation Learning)
简化的离线IRL:
- 专家数据赋予奖励r=1
- 策略数据赋予奖励r=0
- 使用标准RL算法(如SAC)优化
IRL在自动驾驶中的优势
-
可解释的奖励函数 - 学习人类驾驶偏好 - 识别隐含的安全约束 - 适应不同驾驶风格
-
更好的泛化 - 学习目标而非具体行为 - 适应新场景 - 组合多个专家的偏好
实际应用案例
Mobileye的RSS(Responsibility-Sensitive Safety)
- 从事故数据学习安全约束
- 形式化验证安全规则
- 作为奖励函数的硬约束
Waymo的模仿学习系统
- 大规模专家数据(数百万英里)
- 多任务学习框架
- 结合BC和RL的混合方法
特斯拉的影子模式
- 被动收集人类驾驶数据
- 在线评估模型预测
- 识别模型失败案例用于改进
7.4 世界模型与想象力规划
世界模型(World Models)使智能体能够在内部模拟环境动力学,通过"想象"未来轨迹来进行规划。这种方法在自动驾驶中特别有价值,因为它可以预测行动的长期后果,提高样本效率,并在不与真实环境交互的情况下探索不同的驾驶策略。
7.4.1 学习环境动力学
环境动力学模型学习状态转移函数P(s'|s,a)和奖励函数R(s,a),使智能体能够预测其行动的结果。
动力学模型的类型
- 前向模型(Forward Model)
确定性模型:s_{t+1} = f(s_t, a_t)
随机模型:s_{t+1} ~ p(·|s_t, a_t)
在自动驾驶中:
- 预测自车未来位置
- 预测其他车辆轨迹
- 预测环境变化(如信号灯)
- 逆向模型(Inverse Model)
推断产生观测变化的动作:
a_t = g(s_t, s_{t+1})
应用:
- 从人类驾驶轨迹推断控制
- 理解其他车辆的意图
- 潜在空间模型
在压缩的潜在空间z中建模:
z_{t+1} = f(z_t, a_t)
s_t = decoder(z_t)
优势:
- 降低计算复杂度
- 过滤无关细节
- 更稳定的长期预测
神经网络架构设计
- 循环神经网络(RNN)模型
状态转移:h_{t+1}, s_{t+1} = RNN(h_t, s_t, a_t)
常用架构:
- LSTM:长期依赖建模
- GRU:参数效率更高
- Transformer:并行计算,长程依赖
- 变分自编码器(VAE)框架
编码器:q(z|s) = N(μ(s), σ²(s))
解码器:p(s|z)
动力学:p(z_{t+1}|z_t, a_t)
损失函数:
L = E_q[log p(s|z)] - KL(q(z|s)||p(z))
- 生成对抗网络(GAN)方法
生成器:G(z_t, a_t) → s_{t+1}
判别器:D(s_{t+1}, s_t, a_t) → [0,1]
优势:生成高质量图像预测
挑战:训练不稳定,模式崩塌
多步预测与误差累积
长期预测面临误差累积问题:
单步误差:ε
T步累积误差:O(T·ε)(最好情况)到O(ε^T)(最坏情况)
解决策略:
1. 教师强制(Teacher Forcing)与计划采样
- 训练时混合真实和预测状态
- 概率p使用真实状态,1-p使用预测
2. 多步损失
L = Σ_{k=1}^K γ^k ||s_{t+k} - ŝ_{t+k}||²
3. 分层预测
- 不同时间尺度的独立模型
- 粗粒度长期预测 + 细粒度短期预测
不确定性建模
自动驾驶环境具有内在不确定性:
-
认知不确定性(Epistemic Uncertainty) - 模型参数的不确定性 - 可通过更多数据减少 - 方法:贝叶斯神经网络、集成模型、Dropout
-
偶然不确定性(Aleatoric Uncertainty) - 环境的内在随机性 - 无法通过更多数据消除 - 方法:概率输出、混合密度网络
-
实践方法
集成模型:
{f_1, f_2, ..., f_N}
预测均值:μ = 1/N Σ_i f_i(s,a)
预测方差:σ² = 1/N Σ_i (f_i(s,a) - μ)²
贝叶斯方法:
p(s'|s,a,D) = ∫ p(s'|s,a,θ)p(θ|D)dθ
7.4.2 基于模型的规划
利用学习到的世界模型,可以通过内部仿真进行规划,无需真实环境交互。
规划算法分类
- 基于搜索的方法
蒙特卡洛树搜索(MCTS)
四个阶段:
1. 选择(Selection):UCB策略选择节点
2. 扩展(Expansion):添加新节点
3. 模拟(Simulation):rollout到终止
4. 反向传播(Backpropagation):更新价值
UCB公式:
UCB = Q(s,a) + c·√(log N(s)/N(s,a))
在自动驾驶中的应用
- 离散化动作空间
- 限制搜索深度(通常5-10步)
- 使用启发式剪枝
- 基于优化的方法
模型预测控制(MPC)与世界模型结合
优化问题:
min_{a_0,...,a_H} Σ_{t=0}^H c(s_t, a_t)
s.t. s_{t+1} = f(s_t, a_t) (世界模型)
g(s_t, a_t) ≤ 0 (约束)
求解方法:
- 梯度下降(可微模型)
- CEM(交叉熵方法)
- 随机打靶(Random Shooting)
交叉熵方法(CEM)
1. 初始化动作序列分布:N(μ, Σ)
2. 采样K个动作序列
3. 用世界模型评估每个序列
4. 选择最好的K_elite个
5. 更新分布参数
6. 重复直到收敛
- 基于价值的方法
Dyna架构
真实经验:(s,a,r,s') → 更新Q函数
模拟经验:
1. 从缓冲区采样s
2. 选择动作a
3. 用模型预测r',s'
4. 更新Q(s,a)
Dyna-Q算法:
每个真实步骤后,执行n步模型规划
模型误差对规划的影响
模型误差会导致次优甚至危险的规划:
- 模型偏差问题
真实最优策略:π* = arg max_π J_真实(π)
模型最优策略:π̂ = arg max_π J_模型(π)
性能差距:
J_真实(π*) - J_真实(π̂) ≤ 2γε_max/(1-γ)²
其中ε_max是模型误差上界
- 缓解策略 - 短视规划:限制规划horizon - 模型集成:使用多个模型投票 - 不确定性惩罚:在高不确定性区域保守 - 模型预测控制:只执行第一个动作,然后重新规划
7.4.3 Dreamer系列算法
Dreamer是基于世界模型的强化学习算法的代表,在多个控制任务中达到了最先进的性能。
Dreamer v1架构
核心组件:
1. 世界模型(RSSM:循环状态空间模型)
- 确定性路径:h_t = f(h_{t-1}, z_{t-1}, a_{t-1})
- 随机路径:z_t ~ p(z_t|h_t)
2. 行为学习
- Actor:π(a_t|z_t, h_t)
- Critic:V(z_t, h_t)
3. 三阶段训练
- 动力学学习:从经验学习世界模型
- 行为学习:在想象中训练actor-critic
- 环境交互:收集新经验
关键创新
- 潜在想象(Latent Imagination)
在潜在空间进行rollout:
for t in range(H):
a_t ~ π(·|z_t, h_t)
h_{t+1} = f(h_t, z_t, a_t)
z_{t+1} ~ p(·|h_{t+1})
r_t = r(z_t, h_t, a_t)
优势:
- 计算效率高
- 避免图像生成
- 梯度传播稳定
- 价值目标计算
λ-return估计:
V^λ_t = r_t + γ[(1-λ)V(s_{t+1}) + λV^λ_{t+1}]
结合了TD和蒙特卡洛估计的优点
Dreamer v2改进
- 离散潜在变量
使用分类分布替代高斯分布:
z_t ~ Categorical(logits(h_t))
优势:
- 更好的表达能力
- 稳定的KL散度
- 自然的多模态建模
- 改进的策略学习
REINFORCE with baseline:
∇J = E[Σ_t ∇log π(a_t) · (R_t - V(s_t))]
使用straight-through gradients
处理离散潜在变量
Dreamer v3:扩展到大规模
最新的Dreamer v3展示了在复杂环境中的强大性能:
- Symlog预测
symlog(x) = sign(x)·log(|x| + 1)
处理不同尺度的奖励
稳定大规模训练
- 自由比特(Free Bits)
KL损失修改:
L_KL = max(KL(q||p), free_bits)
保证最小信息流
防止后验崩塌
- 在自动驾驶的应用潜力 - 学习复杂交通场景的动力学 - 长期轨迹规划 - 处理部分可观测性
7.4.4 MILE:基于模仿学习的端到端驾驶
MILE(Model-based Imitation LEarning)展示了世界模型在自动驾驶中的实际应用。
MILE架构
输入:多视角图像
↓
潜在动力学模型
↓
未来状态预测
↓
控制输出
核心技术
- 几何感知的世界模型
BEV表示学习:
- 多相机图像 → BEV特征
- 3D几何约束
- 时序一致性
动力学建模:
BEV_{t+1} = f(BEV_t, a_t)
- 两阶段训练
阶段1:行为克隆
- 从专家数据学习基础策略
- 同时训练世界模型
阶段2:想象力微调
- 在世界模型中rollout
- 优化长期目标
- 无需额外真实数据
- 多任务学习
辅助任务:
- 语义分割预测
- 深度估计
- 未来帧预测
- 占据栅格预测
共享表示提升泛化能力
性能优势
-
数据效率 - 通过想象生成更多训练数据 - 从有限的专家演示中学习 - 探索未见场景
-
可解释性 - 可视化预测的未来状态 - 理解决策依据 - 调试和验证
-
长期规划能力 - 预测10-30帧未来 - 考虑行动的长期后果 - 避免短视决策
实验结果
在CARLA基准测试中:
- 驾驶分数:比纯模仿学习提升35%
- 成功率:城市场景达到82%
- 碰撞率:降低40%
- 违规率:降低25%
局限性与未来方向
-
计算开销 - 世界模型推理成本 - 多步rollout耗时 - 需要模型压缩技术
-
模型误差累积 - 长期预测精度下降 - 需要更鲁棒的动力学模型 - 结合无模型方法
-
泛化到真实世界 - 仿真到现实的差距 - 需要更多真实数据验证 - 持续学习和适应
7.5 离线强化学习与数据驱动方法
离线强化学习(Offline RL)从固定的数据集中学习策略,无需与环境交互。这对自动驾驶至关重要,因为可以利用大量历史驾驶数据,避免危险的在线探索。
7.5.1 离线RL的必要性
自动驾驶场景中,离线RL成为必然选择的原因:
安全性考虑
在线探索的风险:
- 碰撞事故:探索错误动作可能导致事故
- 法律责任:实车测试的失败后果严重
- 社会接受度:公众对自动驾驶失误容忍度低
离线学习的优势:
- 零风险:在历史数据上学习
- 可重复:相同数据可多次使用
- 可验证:离线评估策略性能
数据可用性
自动驾驶数据来源:
1. 人类驾驶数据
- 车队收集:数百万英里
- 众包数据:用户贡献
- 仿真数据:合成场景
2. 安全驾驶员接管数据
- 失败案例:学习避免错误
- 边缘场景:罕见但重要
3. 优化轨迹
- 离线优化:最优路径
- 专家系统:规则生成
离线RL的核心挑战
- 分布偏移(Distribution Shift)
数据分布:d_β(s,a)(行为策略)
目标分布:d_π(s,a)(学习策略)
问题:
- Out-of-Distribution (OOD) 动作
- Q值过估计
- 策略崩溃
- 外推误差(Extrapolation Error)
Q函数在未见(s,a)对上的估计不可靠
导致选择OOD动作:
π(s) = arg max_a Q(s,a)
可能选择数据中没有的动作
- 数据质量问题
次优数据:人类驾驶并非最优
噪声标注:传感器误差
不完整覆盖:罕见场景缺失
离线RL算法分类
1. 策略约束方法
- 限制策略偏离数据
- 例:BRAC, BEAR, AWR
2. 价值惩罚方法
- 惩罚OOD动作的Q值
- 例:CQL, IQL, COMBO
3. 模型基础方法
- 学习环境模型
- 例:MOPO, MOReL, COMBO
4. 单步方法
- 避免动态规划
- 例:IQL, Decision Transformer
7.5.2 Conservative Q-Learning (CQL)
CQL是最流行的离线RL算法之一,通过保守的Q值估计避免OOD动作。
核心思想
学习一个下界Q函数:
Q^CQL(s,a) ≤ Q^π(s,a) 对数据中的(s,a)
通过添加正则化项:
L_CQL = α·E_s~D[log Σ_a exp(Q(s,a)) - E_{a~β(·|s)}[Q(s,a)]]
+ L_SAC(Q)
第一项:推高所有动作的Q值
第二项:降低数据中动作的Q值
效果:OOD动作的Q值被压制
CQL的变体
- CQL(H):基于熵的版本
使用KL散度替代log-sum-exp:
L_CQL(H) = α·E_s[KL(ρ(·|s) || exp(Q(s,·))/Z)]
其中ρ是采样分布(如均匀分布)
- CQL(ρ):灵活的采样分布
从不同分布采样OOD动作:
- 均匀分布:全空间惩罚
- 高斯分布:局部惩罚
- VAE先验:学习的分布
实现细节
- 自适应α调节
目标:保持保守程度
L_α = α·(E_s,a~D[Q(s,a)] - τ)
τ是目标保守水平
α自动调整以满足约束
- 重要性采样
处理行为策略与目标策略的差异:
L_IS = E_{s,a~D}[w(s,a)·(Q(s,a) - B(s,a))²]
w(s,a) = π(a|s)/β(a|s)
实践中使用截断:w_clip = min(w, w_max)
- 网络架构
双Q网络:Q1, Q2
目标网络:Q1', Q2'
最小Q值:Q_min = min(Q1, Q2)
用于策略更新和贝尔曼备份
在自动驾驶中的应用
状态空间:
- 鸟瞰图特征
- 车辆运动学状态
- 导航信息
动作空间:
- 连续控制:[加速度, 转向角]
- 离散决策:{保持, 变道, 刹车}
奖励设计:
R = w_progress·进度 - w_collision·碰撞
- w_comfort·急动度 - w_violation·违规
数据收集:
- 人类驾驶:基础策略
- 失败案例:边界探索
- 仿真增强:场景多样性
实验结果与分析
在D4RL驾驶任务上:
- CQL比行为克隆提升45%
- 比在线SAC更安全(零碰撞)
- 对次优数据鲁棒
关键发现:
- 保守程度与性能的权衡
- 数据质量显著影响结果
- 与在线微调结合效果最佳
7.5.3 Implicit Q-Learning (IQL)
IQL通过避免直接的策略提取,绕过了外推误差问题。
核心创新
传统方法:π(s) = arg max_a Q(s,a)
问题:需要在整个动作空间优化
IQL方法:
1. 学习V(s)和Q(s,a)
2. 使用期望回归:
L_V = E_{s,a~D}[L_τ(Q(s,a) - V(s))]
其中L_τ是非对称损失:
L_τ(x) = |τ - 1_{x<0}|·x²
3. 优势加权的策略提取:
π(a|s) ∝ exp(β·(Q(s,a) - V(s)))
关键优势
-
无需动作空间优化 - 只在数据中的动作上学习 - 避免OOD动作评估 - 计算效率高
-
稳定的训练
分离的目标:
- Q函数:贝尔曼误差
- V函数:期望回归
- 策略:优势加权
每个组件独立优化
减少相互干扰
- 理论保证
在无限数据下:
V*(s) = max_a Q*(s,a)(最优)
有限数据下:
V(s) ≈ E_{a~β}[Q(s,a)](保守)
IQL在自动驾驶中的实践
- 分层决策结构
高层(离散):
- 行为决策:IQL选择意图
- 优势明确的选择
底层(连续):
- 轨迹规划:条件IQL
- 给定意图下的控制
- 多模态行为建模
混合优势函数:
A(s,a) = Σ_i w_i(s)·A_i(s,a)
每个模式i对应一种驾驶风格:
- 保守型
- 标准型
- 激进型
- 安全约束集成
修改优势函数:
A_safe(s,a) = A(s,a) - λ·C(s,a)
C(s,a)是约束违反程度
λ是拉格朗日乘子
7.5.4 大规模驾驶数据的利用
现代自动驾驶公司积累了PB级的驾驶数据,如何有效利用是关键挑战。
数据管理架构
数据流水线:
采集 → 存储 → 标注 → 训练 → 部署
1. 数据采集
- 多传感器同步
- 时间戳对齐
- 触发式记录
2. 数据存储
- 分布式文件系统
- 列式存储(Parquet)
- 索引和检索
3. 自动标注
- 预训练模型
- 主动学习
- 人工验证
4. 数据版本控制
- DVC (Data Version Control)
- 实验可重复性
- A/B测试
数据选择策略
- 重要性采样
价值感知采样:
p(τ) ∝ |V(s_0) - R(τ)|
选择信息量大的轨迹:
- 失败案例
- 边缘场景
- 高不确定性
- 多样性采样
覆盖状态-动作空间:
- K-means聚类
- 核心集选择
- 最远点采样
平衡数据分布:
- 场景类型
- 天气条件
- 交通密度
- 课程学习
渐进式训练:
1. 简单场景(高速公路)
2. 中等复杂(城市道路)
3. 困难场景(拥堵交叉口)
自适应调整:
根据模型性能选择数据
分布式训练
并行策略:
1. 数据并行
- 多GPU/TPU训练
- 梯度聚合
- 同步/异步更新
2. 模型并行
- 大模型分片
- 流水线并行
- 张量并行
3. 混合并行
- 结合两种策略
- 优化通信开销
在线-离线混合学习
两阶段框架:
1. 离线预训练
- 大规模历史数据
- 学习基础策略
- 安全约束
2. 在线微调
- 仿真环境
- 有限真实测试
- 持续改进
切换策略:
if 置信度 < 阈值:
使用离线策略(保守)
else:
使用在线策略(探索)
案例研究:Waymo的离线RL系统
数据规模:
- 2000万英里真实驾驶
- 150亿英里仿真
- 1000+ 场景类型
技术栈:
- CQL + IQL混合
- Transformer骨干网络
- 分布式训练(TPU v4)
性能指标:
- 碰撞率:< 1e-6
- 接管率:< 0.1%
- 舒适度:95%满意度
关键创新:
1. 场景重建与增强
2. 反事实推理
3. 多任务学习
未来发展方向
- 基础模型(Foundation Models)
预训练策略:
- 自监督学习
- 多模态对齐
- 跨域迁移
下游适应:
- Few-shot学习
- 提示工程
- LoRA微调
- 联邦学习
分布式数据利用:
- 边缘设备训练
- 隐私保护
- 增量更新
- 持续学习
在线适应:
- 灾难性遗忘缓解
- 经验回放
- 元学习初始化