

本博客基于西安交通大学强化学习课程 PPT 改编,历经 Gemini 以及本人总结以及整理形成。
策略梯度方法的挑战#
策略梯度 (Policy Gradient, PG) 方法直接优化参数化的策略 ,通过梯度上升 来最大化期望回报 。虽然 PG 方法有其优势(如处理连续动作空间),但它面临一个核心挑战:
- 对步长 的敏感性:
- 步长过大:一次更新可能导致策略性能急剧下降(“学崩了”),难以恢复。这是因为梯度只提供了局部改进方向,步子迈太大可能会远离最优点,甚至进入性能更差的区域。
- 步长过小:学习过程会非常缓慢。
理想情况下,我们希望每次策略更新都能保证性能单调不减 (Monotonic Improvement),或者至少是稳定、可靠的改进。标准策略梯度无法提供这样的保证。
置信域优化方法 (Trust Region Methods) - 概念#
置信域方法是数值优化中的一类技术,旨在提供比简单梯度上升/下降更稳健的更新步骤。
- 核心思想:
- 在当前参数点 附近定义一个置信域 (Trust Region) 。在这个区域内,我们相信一个简化的替代模型 (Surrogate Model) 能够很好地近似原始目标函数 。
- 我们不在整个参数空间寻找 的最优点,而是在这个置信域内部寻找使替代模型 最优的参数点 。
- 置信域的定义:通常是一个以 为中心的区域。对于策略优化,这个“区域”通常不是根据参数 的欧氏距离来定义,而是根据策略本身的差异来定义,例如使用平均 KL 散度 (Average Kullback–Leibler Divergence): 其中 控制了置信域的大小(即允许新旧策略有多大的差异)。
置信域策略优化 (TRPO) 算法#
TRPO 将置信域思想应用于策略优化,旨在实现稳定且可靠的策略改进。
-
TRPO 优化目标:
- TRPO 最大化一个替代目标函数 (Surrogate Objective) ,该函数衡量了新策略 相对于旧策略 的预期性能提升(通常用优势函数 和重要性采样比率表示):
- 同时,施加一个置信域约束,限制新旧策略之间的平均 KL 散度:
-
理论保证 (近似单调改进):
- 理论分析表明,新策略的真实性能 的提升量有一个下界,这个下界与替代目标 的提升量以及新旧策略之间的最大 KL 散度 相关。
- 这启发我们:如果能优化替代目标 ,同时严格控制策略变化(限制 KL 散度),就有望保证策略性能不下降。TRPO 使用平均 KL 散度作为约束,这是一个实践中更易于处理的近似,虽然失去了严格的理论保证,但效果通常很好。
-
TRPO 的实际实现:近似求解 直接求解上述带 KL 约束的优化问题很困难。TRPO 采用以下步骤进行近似求解:
- 采样与估计:使用从当前策略 采样得到的轨迹数据,计算:
- 优势函数估计 (例如,使用 GAE - Generalized Advantage Estimation)。
- 替代目标 的样本估计。
- KL 散度约束 的样本估计。
- 泰勒展开近似:在当前参数 附近:
- 线性化目标:,其中 是策略梯度估计。
- 二次近似约束:,其中 是平均 KL 散度关于 的 Hessian 矩阵,也称为费雪信息矩阵 (Fisher Information Matrix, FIM),通常也需要通过样本来估计 。
- 求解近似优化问题:问题变为求解:
其中 。
- 更新方向 (自然梯度):该问题的解的方向是 ,这被称为自然梯度 (Natural Gradient) 方向。相比普通梯度 ,自然梯度考虑了参数空间对策略分布变化的曲率影响 (由 FIM 描述),通常是更有效的优化方向。
- 共轭梯度法 (Conjugate Gradient, CG):TRPO 使用 CG 算法来高效地近似求解线性方程组 以获得更新方向 ,避免了显式计算和存储 Hessian 逆 (这在大规模神经网络中是不可行的)。CG 只需要计算 Hessian 向量积 (Hessian-vector product, ) 的能力。
- 步长计算 (线搜索):计算出方向 后,需要确定步长大小。首先计算一个理论上的最大步长 ,得到提议的参数更新 。然后,使用回溯线搜索 (Backtracking Line Search),从 开始,不断缩小步长(例如 ),直到找到第一个满足原始 KL 约束 (样本均值) 且能提升原始替代目标 (样本均值) 的实际参数更新 。
- 采样与估计:使用从当前策略 采样得到的轨迹数据,计算:
-
TRPO 算法概要:
算法参数: 初始策略参数 θ₀, KL 散度限制 δ, 回溯系数 α ∈ (0, 1), 最大回溯步数 K
(通常还需要一个价值函数 V_ϕ 来估计优势)
循环 k = 0, 1, 2, ... :
1. // 数据收集
根据当前策略 π_k = π(·|·; θ_k) 收集一批轨迹数据 D_k
2. // 优势估计
对 D_k 中的每个时间步 t, 计算优势估计 Â_t (例如使用 GAE)
3. // 计算策略梯度估计 g
g ← average_{D_k, t} [∇_θ log π_θ(a_t|s_t)|_{θ_k} * Â_t]
4. // 计算自然梯度方向 x (近似 H⁻¹g)
使用共轭梯度法 (CG) 近似求解 Hx = g, 得到解 x (H 是 FIM 的估计)
5. // 计算提议步长 s 和参数更新 Δθ_prop
s ← sqrt(2δ / (xᵀHx))
Δθ_prop ← s * x
6. // 回溯线搜索确定实际步长
对于 j = 0, 1, ..., K:
θ_new ← θ_k + α^j * Δθ_prop
如果 KL(π_k || π_new) ≤ δ 并且 L_k(θ_new) ≥ L_k(θ_k) (=0): // 检查约束和目标改进
θ_{k+1} ← θ_new
跳出线搜索循环
(如果线搜索失败,通常保持 θ_{k+1} = θ_k)
7. // (可选但常用) 更新价值函数 V_ϕ (例如,通过回归拟合 MC 回报)
plaintext讨论与总结#
-
TRPO vs 策略梯度:TRPO 通过引入 KL 散度约束来限制策略更新的步长,避免了标准策略梯度对学习率 的极端敏感性,实现了更稳定、更可靠的策略改进。
-
TRPO 优势:提供了(近似的)单调改进保证,使其在许多任务上表现稳健。
-
TRPO 不足:
- 实现复杂:涉及计算 FIM 向量积、共轭梯度求解、回溯线搜索等,实现和调试相对困难。
- 计算开销:相比一阶方法,计算量更大。
- 兼容性问题:难以直接应用于某些网络架构(如包含 Dropout 或 Actor-Critic 间参数共享)。
-
后续发展:近端策略优化 (PPO):
- PPO (Proximal Policy Optimization) 旨在简化 TRPO,保留其稳定性和可靠性优势,但使用一阶优化方法。
- PPO 通过修改替代目标函数(例如,使用裁剪 (Clipping) 来限制新旧策略概率比率)或将 KL 散度作为惩罚项加入目标函数,来间接限制策略更新的幅度。
- PPO 实现更简单,效果通常与 TRPO 相当甚至更好,已成为当前策略优化算法中的主流选择之一。
结论:TRPO 是一种基于置信域方法的重要的策略优化算法,它通过 KL 散度约束保证了策略更新的稳定性。虽然实现复杂,但其核心思想(限制策略变化以保证改进)对后续算法(如 PPO)产生了深远影响。