Axi's Blog

Back

RL 学习笔记(12):置信域策略优化Blur image

本博客基于西安交通大学强化学习课程 PPT 改编,历经 Gemini 以及本人总结以及整理形成。

策略梯度方法的挑战#

策略梯度 (Policy Gradient, PG) 方法直接优化参数化的策略 πθ(as)\pi_\theta(a|s),通过梯度上升 θθ+αθJ(θ)\theta \leftarrow \theta + \alpha \nabla_\theta J(\theta) 来最大化期望回报 J(θ)J(\theta)。虽然 PG 方法有其优势(如处理连续动作空间),但它面临一个核心挑战:

  • 对步长 α\alpha 的敏感性
    • 步长过大:一次更新可能导致策略性能急剧下降(“学崩了”),难以恢复。这是因为梯度只提供了局部改进方向,步子迈太大可能会远离最优点,甚至进入性能更差的区域。
    • 步长过小:学习过程会非常缓慢。

理想情况下,我们希望每次策略更新都能保证性能单调不减 (Monotonic Improvement),或者至少是稳定、可靠的改进。标准策略梯度无法提供这样的保证。

置信域优化方法 (Trust Region Methods) - 概念#

置信域方法是数值优化中的一类技术,旨在提供比简单梯度上升/下降更稳健的更新步骤。

  • 核心思想
    1. 在当前参数点 θold\theta_{old} 附近定义一个置信域 (Trust Region) N(θold)\mathcal{N}(\theta_{old})。在这个区域内,我们相信一个简化的替代模型 (Surrogate Model) L(θθold)L(\theta | \theta_{old}) 能够很好地近似原始目标函数 J(θ)J(\theta)
    2. 我们不在整个参数空间寻找 J(θ)J(\theta) 的最优点,而是在这个置信域内部寻找使替代模型 LL 最优的参数点 θnew\theta_{new}θnewargmaxθN(θold)L(θθold)\theta_{new} \leftarrow \arg\max_{\theta \in \mathcal{N}(\theta_{old})} L(\theta | \theta_{old})
  • 置信域的定义:通常是一个以 θold\theta_{old} 为中心的区域。对于策略优化,这个“区域”通常不是根据参数 θ\theta 的欧氏距离来定义,而是根据策略本身的差异来定义,例如使用平均 KL 散度 (Average Kullback–Leibler Divergence)N(θold)={θDˉKL(πθoldπθ)δ}\mathcal{N}(\theta_{old}) = \{\theta | \bar{D}_{KL}(\pi_{\theta_{old}} || \pi_{\theta}) \le \delta \} 其中 δ\delta 控制了置信域的大小(即允许新旧策略有多大的差异)。

置信域策略优化 (TRPO) 算法#

TRPO 将置信域思想应用于策略优化,旨在实现稳定且可靠的策略改进。

  • TRPO 优化目标

    • TRPO 最大化一个替代目标函数 (Surrogate Objective) Lθold(θ)\mathcal{L}_{\theta_{old}}(\theta),该函数衡量了新策略 πθ\pi_{\theta} 相对于旧策略 πθold\pi_{\theta_{old}} 的预期性能提升(通常用优势函数 AθoldA_{\theta_{old}}重要性采样比率表示): Lθold(θ)=Esρθold,aπθold[πθ(as)πθold(as)Aθold(s,a)]\mathcal{L}_{\theta_{old}}(\theta) = \mathbb{E}_{s \sim \rho_{\theta_{old}}, a \sim \pi_{\theta_{old}}} \left[ \frac{\pi_{\theta}(a|s)}{\pi_{\theta_{old}}(a|s)} A_{\theta_{old}}(s, a) \right]
    • 同时,施加一个置信域约束,限制新旧策略之间的平均 KL 散度: DˉKL(θoldθ)=Esρθold[DKL(πθold(s)πθ(s))]δ\bar{D}_{KL}(\theta_{old} || \theta) = \mathbb{E}_{s \sim \rho_{\theta_{old}}} [D_{KL}(\pi_{\theta_{old}}(\cdot|s) || \pi_{\theta}(\cdot|s))] \le \delta
  • 理论保证 (近似单调改进)

    • 理论分析表明,新策略的真实性能 J(θ)J(\theta) 的提升量有一个下界,这个下界与替代目标 L\mathcal{L} 的提升量以及新旧策略之间的最大 KL 散度 DKLmaxD_{KL}^{max} 相关。
    • 这启发我们:如果能优化替代目标 L\mathcal{L},同时严格控制策略变化(限制 KL 散度),就有望保证策略性能不下降。TRPO 使用平均 KL 散度作为约束,这是一个实践中更易于处理的近似,虽然失去了严格的理论保证,但效果通常很好。
  • TRPO 的实际实现:近似求解 直接求解上述带 KL 约束的优化问题很困难。TRPO 采用以下步骤进行近似求解:

    1. 采样与估计:使用从当前策略 πθold\pi_{\theta_{old}} 采样得到的轨迹数据,计算:
      • 优势函数估计 A^tAθold(st,at)\hat{A}_t \approx A_{\theta_{old}}(s_t, a_t)(例如,使用 GAE - Generalized Advantage Estimation)。
      • 替代目标 Lθold(θ)\mathcal{L}_{\theta_{old}}(\theta) 的样本估计。
      • KL 散度约束 DˉKL(θoldθ)\bar{D}_{KL}(\theta_{old} || \theta) 的样本估计。
    2. 泰勒展开近似:在当前参数 θold\theta_{old} 附近:
      • 线性化目标Lθold(θ)Lθold(θold)+gT(θθold)\mathcal{L}_{\theta_{old}}(\theta) \approx \mathcal{L}_{\theta_{old}}(\theta_{old}) + g^T (\theta - \theta_{old}),其中 g=θLθold(θ)θoldg = \nabla_\theta \mathcal{L}_{\theta_{old}}(\theta)|_{\theta_{old}} 是策略梯度估计。
      • 二次近似约束DˉKL(θoldθ)12(θθold)TH(θθold)\bar{D}_{KL}(\theta_{old} || \theta) \approx \frac{1}{2} (\theta - \theta_{old})^T H (\theta - \theta_{old}),其中 H=θ2DˉKL(θoldθ)θoldH = \nabla_\theta^2 \bar{D}_{KL}(\theta_{old} || \theta)|_{\theta_{old}} 是平均 KL 散度关于 θ\theta 的 Hessian 矩阵,也称为费雪信息矩阵 (Fisher Information Matrix, FIM),通常也需要通过样本来估计 H^\hat{H}
    3. 求解近似优化问题:问题变为求解: maxΔθgTΔθsubject to12ΔθTH^Δθδ\max_{\Delta \theta} \quad g^T \Delta \theta \quad \text{subject to} \quad \frac{1}{2} \Delta \theta^T \hat{H} \Delta \theta \le \delta 其中 Δθ=θθold\Delta \theta = \theta - \theta_{old}
      • 更新方向 (自然梯度):该问题的解的方向是 ΔθH^1g\Delta \theta \propto \hat{H}^{-1} g,这被称为自然梯度 (Natural Gradient) 方向。相比普通梯度 gg,自然梯度考虑了参数空间对策略分布变化的曲率影响 (由 FIM H^\hat{H} 描述),通常是更有效的优化方向。
      • 共轭梯度法 (Conjugate Gradient, CG):TRPO 使用 CG 算法来高效地近似求解线性方程组 H^x=g\hat{H} x = g 以获得更新方向 xH^1gx \approx \hat{H}^{-1} g避免了显式计算和存储 Hessian 逆 H^1\hat{H}^{-1}(这在大规模神经网络中是不可行的)。CG 只需要计算 Hessian 向量积 (Hessian-vector product, H^v\hat{H}v) 的能力。
      • 步长计算 (线搜索):计算出方向 xx 后,需要确定步长大小。首先计算一个理论上的最大步长 s=2δxTH^xs = \sqrt{\frac{2\delta}{x^T \hat{H} x}},得到提议的参数更新 Δθprop=sx\Delta \theta_{prop} = s \cdot x。然后,使用回溯线搜索 (Backtracking Line Search),从 Δθprop\Delta \theta_{prop} 开始,不断缩小步长(例如 αjΔθprop,j=0,1,\alpha^j \Delta \theta_{prop}, j=0,1,\dots),直到找到第一个满足原始 KL 约束 (样本均值) 且能提升原始替代目标 L\mathcal{L} (样本均值) 的实际参数更新 Δθ\Delta \theta
  • 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 散度约束来限制策略更新的步长,避免了标准策略梯度对学习率 α\alpha 的极端敏感性,实现了更稳定、更可靠的策略改进。

  • TRPO 优势:提供了(近似的)单调改进保证,使其在许多任务上表现稳健。

  • TRPO 不足

    • 实现复杂:涉及计算 FIM 向量积、共轭梯度求解、回溯线搜索等,实现和调试相对困难。
    • 计算开销:相比一阶方法,计算量更大。
    • 兼容性问题:难以直接应用于某些网络架构(如包含 Dropout 或 Actor-Critic 间参数共享)。
  • 后续发展:近端策略优化 (PPO)

    • PPO (Proximal Policy Optimization) 旨在简化 TRPO,保留其稳定性和可靠性优势,但使用一阶优化方法。
    • PPO 通过修改替代目标函数(例如,使用裁剪 (Clipping) 来限制新旧策略概率比率)或将 KL 散度作为惩罚项加入目标函数,来间接限制策略更新的幅度。
    • PPO 实现更简单,效果通常与 TRPO 相当甚至更好,已成为当前策略优化算法中的主流选择之一。

结论:TRPO 是一种基于置信域方法的重要的策略优化算法,它通过 KL 散度约束保证了策略更新的稳定性。虽然实现复杂,但其核心思想(限制策略变化以保证改进)对后续算法(如 PPO)产生了深远影响。

RL 学习笔记(12):置信域策略优化
https://axi404.top/blog/rl-note-12
Author 阿汐
Published at April 19, 2025
Comment seems to stuck. Try to refresh?✨