RL-03-10-算法-TRPO

← 上级:RL-03.算法分类与选型 · 前置:RL-03-09-算法-Actor-Critic · 后续:RL-03-11-算法-PPO

信任域策略优化(Trust Region Policy Optimization,TRPO)(Schulman et al., 2015)在 策略梯度Actor-Critic 基础上,用 KL 散度硬约束限制每次策略更新幅度,从理论上保证单调改进(在近似条件下)。PPO 可看作 TRPO 的一阶简化版

段末注释:信任域策略优化(Trust Region Policy Optimization,TRPO)通过约束新旧策略的 KL 散度,在「信任域」内最大化替代目标;后文沿用 TRPO


一、为何需要信任域

纯策略梯度(如 REINFORCE、A2C)用固定学习率更新 $\theta$,容易出现:

现象 原因
策略崩溃 一步更新过大,$\pi_\theta$ 偏离数据采集分布
性能震荡 优势估计噪声 + 大步长
不可逆退化 On-Policy 数据无法「回放」补救

思路:只在「离旧策略 $\pi_{\theta_{old}}$ 足够近」的区域内优化,超出信任域则缩小步长。


二、替代目标(Surrogate Objective)

定义概率比:

$$
r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}
$$

约束策略目标(Constrained Policy Improvement,与 PPO 的 $L^{CPI}$ 同源):

$$
\max_\theta ; \mathbb{E}t \left[ r_t(\theta) \hat{A}t \right]
\quad \text{s.t.} \quad
\bar{D}
{\mathrm{KL}}\left(\pi
{\theta_{old}} | \pi_\theta\right) \leq \delta
$$

符号 含义
$\hat{A}_t$ 优势估计(TD 残差或 GAE
$\bar{D}_{\mathrm{KL}}$ 平均 KL 散度:$\mathbb{E}t\left[\mathrm{KL}(\pi{\theta_{old}}(\cdot
$\delta$ 信任域半径,典型 $0.01 \sim 0.05$

直觉:在旧策略收集的数据上,提高「优势为正」动作的概率,但不允许新策略与旧策略差太远。


三、TRPO 优化步骤(概要)

TRPO 将上述约束问题近似为二次规划,核心步骤:

  1. 收集 Rollout:用 $\pi_{\theta_{old}}$ 采样轨迹(同 PPO,见 Rollout Buffer
  2. 算优势 $\hat{A}_t$(常用 GAE)
  3. 算替代目标梯度 $g = \nabla_\theta \mathbb{E}[r_t(\theta)\hat{A}t]|{\theta_{old}}$
  4. 算 Fisher 信息矩阵 $F = \nabla^2_\theta \bar{D}{\mathrm{KL}}|{\theta_{old}}$(或用 Hessian-向量积估计)
  5. 共轭梯度(Conjugate Gradient)求搜索方向 $x \approx F^{-1} g$
  6. 线搜索:缩放步长使 KL 约束满足且 surrogate 上升

自然策略梯度方向 $F^{-1}g$ 在参数空间度量下更合理——大曲率方向步子小,平坦方向步子大。


四、单调改进(理论梗概)

在策略可微、优势估计无偏等假设下,TRPO 保证:

$$
J(\theta) \geq J(\theta_{old}) - C \cdot \epsilon
$$

其中 $\epsilon$ 与 KL 约束 $\delta$ 及价值函数近似误差相关。实际中 Critic 误差、函数逼近仍会破坏严格单调性,但较裸 PG 稳定得多。


五、与 PPO 对比

TRPO PPO
约束方式 KL 硬约束 + 二阶近似 Clip 软约束,一阶 SGD
实现 共轭梯度 + 线搜索,复杂 标准 mini-batch 多 epoch,简单
计算 需 Hessian-向量积 与 A2C 同级
稳定性 理论保证强 工程上同样鲁棒
生态 研究/教学 SB3、CleanRL 默认

PPO 的 clip 目标:

$$
L^{CLIP} = \mathbb{E}\left[ \min\left( r_t \hat{A}_t, ; \mathrm{clip}(r_t, 1-\epsilon, 1+\epsilon) \hat{A}_t \right) \right]
$$

可理解为 TRPO 信任域思想的实用近似——详见 RL-03-11-算法-PPO 第一节。


六、伪代码(概念级)

1
2
3
4
5
6
7
8
9
10
11
# 每轮迭代
traj = collect_rollout(pi_old, T=2048)
advantages = gae(traj, V, gamma, lam)
g = surrogate_gradient(pi_old, traj, advantages)

def Fvp(v):
return fisher_vector_product(kl_divergence, pi_old, v)

step_dir = conjugate_gradient(Fvp, g)
# 线搜索:找最大 alpha 使 KL <= delta 且 surrogate 提升
theta = line_search(theta_old, step_dir, max_kl=delta)

开源参考:OpenAI Spinning Up TRPO、旧版 baselines 实现。


七、超参与实践

超参 典型值 说明
$\delta$(max KL) 0.01 信任域大小
CG 迭代次数 10 ~ 20 共轭梯度
CG 阻尼 0.1 数值稳定
GAE $\lambda$ 0.95 同 PPO
Rollout 长度 2048 同 PPO

何时仍读 TRPO:理解 PPO clip 的来历、分析 On-Policy 稳定性的理论工具;新项目默认用 PPO/SAC,除非有明确理由上 TRPO。


八、在算法谱系中的位置

1
2
3
4
5
REINFORCE → Actor-Critic (A2C)
↓ + KL 信任域 + 自然梯度
TRPO
↓ 去掉二阶,改用 Clip
PPO ← 工程默认
算法 信任域 优化阶数
A2C 一阶
TRPO KL 约束 一阶 + 二阶近似
PPO Clip 近似 一阶

九、小结

  • TRPO = Surrogate 目标 + KL 信任域 + 自然梯度(共轭梯度求解)
  • 理论上是 PPO 的「严格版前辈」;工程上 PPO 更常用
  • 上一篇:Actor-Critic · 下一篇:PPO
-------------本文结束感谢您的阅读-------------