Axi's Blog

Back

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

本内容暂时为 PPT 转述,后续会进行修编

第 14 讲:置信域策略优化 (TRPO)#

一、回顾策略梯度 (Review Policy Gradient)#

  • 基本设定 (Page 3)
    • 基于策略的强化学习使用参数化的策略 π(as;θ)\pi(a|s; \theta)
    • 目标函数通常是最大化期望回报,例如初始状态的价值 J(θ)=ES[Vπ(S)]J(\theta) = \mathbb{E}_{S}[V_{\pi}(S)],其中 Vπ(s)=EAπ[Qπ(s,A)]=aπ(as;θ)Qπ(s,a)V_{\pi}(s) = \mathbb{E}_{A \sim \pi}[Q_{\pi}(s, A)] = \sum_a \pi(a|s; \theta) Q_{\pi}(s, a)
  • 优化方法 (Page 4)
    • 标准的策略梯度方法使用梯度上升来优化参数 θ\thetaθt+1θt+αθJ(θt)\theta_{t+1} \leftarrow \theta_t + \alpha \nabla_{\theta} J(\theta_t)
    • 需要计算目标函数 J(θ)J(\theta) 关于参数 θ\theta 的梯度 θJ(θ)\nabla_{\theta} J(\theta)
  • 目标函数推导 (Page 5)
    • 通过引入旧策略 πold=π(;θold)\pi_{old} = \pi(\cdot|\cdot; \theta_{old}) 和重要性采样,可以将目标函数 J(θ)J(\theta) 表示为在旧策略下采样计算的期望: J(θ)=ESρold,Aπold[π(AS;θ)π(AS;θold)Qπ(S,A)]J(\theta) = \mathbb{E}_{S \sim \rho_{old}, A \sim \pi_{old}} \left[ \frac{\pi(A|S; \theta)}{\pi(A|S; \theta_{old})} Q_{\pi}(S, A) \right] (这里的 QπQ_{\pi} 仍然是新策略 π\pi 下的 Q 值,ρold\rho_{old} 是旧策略下的状态访问分布)。这个形式启发了后续 TRPO 中替代目标函数的构造。
  • REINFORCE 算法回顾 (Page 6)
    • 蒙特卡洛策略梯度算法,更新规则为: θθ+αθlogπθ(atst)Gt\theta \leftarrow \theta + \alpha \nabla_{\theta} \log \pi_{\theta}(a_t|s_t) G_t
    • 使用完整的回报 GtG_t 作为 Qπ(st,at)Q_{\pi}(s_t, a_t) 的无偏估计。
  • 策略梯度的问题 (Page 7)
    • 步长 α\alpha 的选择非常困难
      • 步长过大:可能导致策略更新过猛,新的策略性能急剧下降(“学崩了”),使得后续采集到的数据质量变差,陷入恶性循环。
      • 步长过小:学习速度非常缓慢。
    • 核心挑战:如何保证策略更新是稳定的,最好是单调改进的(即每次更新后策略性能不下降)?

二、数值优化基础 (Numerical Optimization Basics)#

  • 梯度上升 (Gradient Ascent) (Page 8)
    • 优化问题:θ=argmaxθJ(θ)\theta^* = \arg\max_{\theta} J(\theta)
    • 迭代步骤:
      1. 在当前点 θold\theta_{old} 计算梯度 g=θJ(θ)θoldg = \nabla_{\theta} J(\theta)|_{\theta_{old}}
      2. 沿梯度方向更新:θnewθold+αg\theta_{new} \leftarrow \theta_{old} + \alpha g
  • 随机梯度上升 (Stochastic Gradient Ascent) (Page 9)
    • J(θ)J(\theta) 是期望形式时,例如 J(θ)=ES[V(S;θ)]J(\theta) = \mathbb{E}_{S}[V(S; \theta)]
    • 迭代步骤:
      1. 采样一个数据点 ss(或其他随机性来源)。
      2. 计算目标函数关于该样本的梯度估计 g=θV(s;θ)θoldg = \nabla_{\theta} V(s; \theta)|_{\theta_{old}}
      3. 更新:θnewθold+αg\theta_{new} \leftarrow \theta_{old} + \alpha g
  • 置信域方法 (Trust Region Methods) (Page 10-18)
    • 动机:克服梯度上升对步长敏感的问题,提供更稳健的优化步骤。
    • 核心思想:在当前参数 θold\theta_{old} 附近定义一个置信域 (Trust Region) N(θold)\mathcal{N}(\theta_{old}),在这个区域内,我们相信一个简化的替代模型 (Surrogate Model) L(θθold)L(\theta | \theta_{old}) 能较好地近似原始目标函数 J(θ)J(\theta)。然后,我们在这个置信域内寻找使替代模型 LL 最大化的 θnew\theta_{new}
    • 置信域定义 (Page 10):通常是一个以 θold\theta_{old} 为中心的区域,大小由 Δ\Deltaδ\delta 控制。
      • 基于参数空间距离:例如,N(θold)={θθθold2Δ}\mathcal{N}(\theta_{old}) = \{\theta | ||\theta - \theta_{old}||_2 \le \Delta\}
      • 基于分布距离(用于策略优化):例如,N(θold)={θDˉKL(πoldπθ)δ}\mathcal{N}(\theta_{old}) = \{\theta | \bar{D}_{KL}(\pi_{old} || \pi_{\theta}) \le \delta\},其中 DˉKL\bar{D}_{KL} 是平均 KL 散度。
    • 置信域算法步骤 (Page 11, 22)
      1. 近似 (Approximation):在当前点 θold\theta_{old},构造一个在置信域 N(θold)\mathcal{N}(\theta_{old}) 内近似 J(θ)J(\theta) 的替代函数 L(θθold)L(\theta | \theta_{old})。(通常是 J(θ)J(\theta)θold\theta_{old} 处的一阶或二阶泰勒展开)。
      2. 最大化 (Maximization):在置信域 N(θold)\mathcal{N}(\theta_{old}) 内部求解优化问题: θnewargmaxθN(θold)L(θθold)\theta_{new} \leftarrow \arg\max_{\theta \in \mathcal{N}(\theta_{old})} L(\theta | \theta_{old})
    • 图示 (Page 12-18):形象地展示了用简单的替代函数 L(θ)L(\theta)(如线性或抛物线)在置信域(圆圈或椭圆)内近似复杂的真实目标函数 J(θ)J(\theta),并在置信域内找到 L(θ)L(\theta) 的最优点作为下一步更新 θnew\theta_{new}

三、TRPO 算法 (Trust Region Policy Optimization)#

  • 动机 (Page 19):将置信域思想应用于策略梯度优化,以解决步长选择困难和更新不稳定的问题。目标是找到一种方法,能在保证策略性能不下降(或有界下降)的前提下,最大化策略的改进。
  • TRPO 优化问题 (Page 19, 21)
    • TRPO 不直接最大化 J(θ)J(\theta),而是最大化一个替代目标函数 (Surrogate Objective) Lπold(πθ)\mathcal{L}_{\pi_{old}}(\pi_{\theta}),该函数衡量了新策略 πθ\pi_{\theta} 相对于旧策略 πold=πθold\pi_{old} = \pi_{\theta_{old}} 的预期性能提升(通常用优势函数表示)。
    • 同时,施加一个约束,限制新旧策略之间的差异,确保更新步长不会太大,从而保证替代目标的近似有效性。这个差异通常用平均 KL 散度来衡量。
    • 优化问题公式maxθLθold(θ)=Esρθold,aπθold[πθ(as)πθold(as)Aθold(s,a)]\max_{\theta} \quad \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] subject toDˉKL(θoldθ)=Esρθold[DKL(πθold(s)πθ(s))]δ\text{subject to} \quad \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
      • Lθold(θ)\mathcal{L}_{\theta_{old}}(\theta) 是替代目标函数,代表预期优势。
      • Aθold(s,a)A_{\theta_{old}}(s, a) 是旧策略下的优势函数估计。
      • DˉKL(θoldθ)\bar{D}_{KL}(\theta_{old} || \theta) 是新旧策略在旧策略访问过的状态上的平均 KL 散度。
      • δ\delta 是置信域大小(KL 散度上限)。
  • 理论基础 (单调改进保证) (Page 20, 28)
    • 理论表明,新策略的真实性能 J(πθ)J(\pi_{\theta}) 的下界与替代目标 L\mathcal{L} 和最大 KL 散度 DKLmaxD_{KL}^{max} 相关: J(πθ)Lπold(πθ)CDKLmax(πoldπθ)J(\pi_{\theta}) \ge \mathcal{L}_{\pi_{old}}(\pi_{\theta}) - C \cdot D_{KL}^{max}(\pi_{old} || \pi_{\theta}) 其中 CC 是一个依赖于 γ\gamma 和最大优势值的常数。
    • 这意味着,如果能优化一个稍微悲观的目标 Lπold(πθ)CDKLmax(πoldπθ)\mathcal{L}_{\pi_{old}}(\pi_{\theta}) - C \cdot D_{KL}^{max}(\pi_{old} || \pi_{\theta})(如 Page 29 算法所示),就能保证 J(πθ)J(\pi_{\theta}) 单调不减。
    • TRPO 使用平均 KL 散度作为约束,这是一个更易于处理的近似,虽然失去了严格的单调改进保证,但在实践中效果良好。
  • TRPO 的实际实现 (近似求解) (Page 22-27)
    • 直接求解带 KL 约束的优化问题很困难。TRPO 采用以下近似步骤:
      1. 替代目标和 KL 散度的采样估计 (Page 23-24)
        • 使用从 πold\pi_{old} 采样得到的轨迹数据 (si,ai,ri,)(s_i, a_i, r_i, \dots)
        • 估计优势函数 A^iAθold(si,ai)\hat{A}_i \approx A_{\theta_{old}}(s_i, a_i)(例如,使用 GAE 或 MC return - baseline)。
        • 构造替代目标的样本估计:L~(θθold)=1ni=1nπ(aisi;θ)π(aisi;θold)A^i\tilde{L}(\theta | \theta_{old}) = \frac{1}{n} \sum_{i=1}^n \frac{\pi(a_i|s_i; \theta)}{\pi(a_i|s_i; \theta_{old})} \hat{A}_i
        • 构造 KL 散度约束的样本估计:1ni=1nDKL[π(si;θold)π(si;θ)]δ\frac{1}{n} \sum_{i=1}^n D_{KL}[\pi(\cdot|s_i; \theta_{old}) || \pi(\cdot|s_i; \theta)] \le \delta
      2. 使用泰勒展开近似优化问题 (Page 25)
        • 将替代目标在 θold\theta_{old} 附近做一阶泰勒展开(线性近似): L~(θθold)L~(θoldθold)+gT(θθold)\tilde{L}(\theta | \theta_{old}) \approx \tilde{L}(\theta_{old} | \theta_{old}) + g^T (\theta - \theta_{old}),其中 g=θL~(θθold)θoldg = \nabla_{\theta} \tilde{L}(\theta | \theta_{old})|_{\theta_{old}} 是策略梯度估计。
        • 将 KL 散度约束在 θold\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}),其中 HH 是 KL 散度关于 θ\theta 的 Hessian 矩阵,也称为费雪信息矩阵 (Fisher Information Matrix, FIM),通常用样本估计 H^\hat{H}
        • 近似优化问题变为: maxθgT(θθold)\max_{\theta} \quad g^T (\theta - \theta_{old}) subject to12(θθold)TH^(θθold)δ\text{subject to} \quad \frac{1}{2} (\theta - \theta_{old})^T \hat{H} (\theta - \theta_{old}) \le \delta
      3. 求解近似问题 (Page 26)
        • 上述二次约束的线性最大化问题的解具有形式 θθoldH^1g\theta - \theta_{old} \propto \hat{H}^{-1} g。这个方向 H^1g\hat{H}^{-1} g 被称为自然梯度 (Natural Gradient) 方向。
        • 共轭梯度法 (Conjugate Gradient, CG):TRPO 使用 CG 算法来高效地计算(或近似计算)更新方向 x^=H^1g\hat{x} = \hat{H}^{-1} g,而不需要显式地计算和存储 Hessian 逆 H^1\hat{H}^{-1}。CG 只需要能够计算 Hessian 乘以一个向量的乘积 (H^v\hat{H}v) 即可。
        • 步长计算与线搜索 (Line Search):计算出方向 x^\hat{x} 后,需要确定步长。理论上的最优步长(恰好满足二次约束)是 2δx^TH^x^\sqrt{\frac{2\delta}{\hat{x}^T \hat{H} \hat{x}}}。TRPO 将这个理论步长乘以方向 x^\hat{x} 得到提议的更新步 Δθ=2δx^TH^x^x^\Delta \theta = \sqrt{\frac{2\delta}{\hat{x}^T \hat{H} \hat{x}}} \hat{x}。然后,通过回溯线搜索 (Backtracking Line Search),从这个提议步长开始,逐步缩小步长(例如乘以一个系数 αj,j=0,1,,K\alpha^j, j=0, 1, \dots, K),直到找到一个实际满足原始 KL 约束(用样本估计)并且能够提升原始替代目标 L~\tilde{L}(非线性化的)的步长。
  • TRPO 算法伪代码 (Page 27 - Algorithm 1)
    Algorithm 1 Trust Region Policy Optimization
    1: 输入: 初始策略参数 theta_0, 初始价值函数参数 phi_0
    2: 超参数: KL 散度限制 delta, 回溯系数 alpha in (0, 1), 最大回溯步数 K
    3: for k = 0, 1, 2, ... do
    4:   根据当前策略 pi_k = pi(theta_k) 在环境中收集轨迹集合 D_k = {tau_i}
    5:   计算每个时间步的回报估计 R_hat_t (例如,折扣回报)
    6:   使用当前价值函数 V_{phi_k} 估计优势函数 A_hat_t
    7:   计算策略梯度估计:
           g_hat_k = average_{D_k, t} [nabla_theta log pi_theta(a_t|s_t)|_{theta_k} * A_hat_t]
    8:   使用共轭梯度算法计算近似的自然梯度方向 x_hat_k ≈ H_hat_k^{-1} g_hat_k
         (通过求解 H_hat_k x = g_hat_k,其中 H_hat_k 是 FIM 的估计)
    9:   通过回溯线搜索计算策略更新:
           theta_{k+1} = theta_k + alpha^j * sqrt(2*delta / (x_hat_k^T * H_hat_k * x_hat_k)) * x_hat_k
         其中 j in {0, 1, ..., K} 是使得 theta_{k+1} 满足 KL 约束 (样本均值)
         并且 L_{theta_k}(theta_{k+1}) >= L_{theta_k}(theta_k) (=0) 的最小整数。
    10:  通过回归拟合更新价值函数参数 phi_{k+1}: (最小化 V_phi(s_t) 和 R_hat_t 之间的均方误差)
           phi_{k+1} = argmin_phi average_{D_k, t} [(V_phi(s_t) - R_hat_t)^2]
    11: end for
    plaintext

四、小结与讨论 (Summary and Discussion)#

  • 策略梯度 vs TRPO (Page 30)
    • 都是基于策略的 RL 方法,优化目标相同(最大化 J(θ)J(\theta))。
    • 策略梯度使用简单的梯度上升,对步长敏感。
    • TRPO 使用置信域方法,通过 KL 散度约束策略更新的大小,实现更稳定、更可靠的策略改进。
  • TRPO 总结 (Page 31)
    • 一种通过重复近似目标函数和在置信域内最大化该近似来求解优化问题的算法。
    • TRPO 是用于策略优化的置信域方法,优化替代目标,受 KL 散度约束。
  • TRPO 的不足 (Page 32)
    • 复杂性:算法涉及二阶优化(FIM/Hessian)、共轭梯度、线搜索等,实现和计算相对复杂。
    • 近似误差:使用了泰勒展开等近似,可能引入误差。
    • 对某些网络结构不兼容:难以应用于包含 Dropout 或参数共享(策略和价值网络之间)的架构。
  • 后续发展:PPO (Page 32)
    • 近端策略优化 (Proximal Policy Optimization, PPO) 是 TRPO 的一个流行替代品。
    • PPO 旨在获得 TRPO 的稳定性和可靠性优势,但实现更简单(通常是基于一阶优化)。
    • PPO 常用的方法包括:
      • Clipped Surrogate Objective:修改替代目标函数,限制新旧策略概率比率的变化范围,从而间接限制策略更新幅度。
      • KL Penalty:将 KL 散度作为一个惩罚项加入目标函数,而不是作为硬约束。
    • PPO 在实践中表现出色,成为许多应用的基准算法。
RL 学习笔记(12):置信域策略优化
https://axi404.top/blog/rl-note-12
Author 阿汐
Published at April 19, 2025
Comment seems to stuck. Try to refresh?✨