
引言
近年来,基于神经网络的强化学习方法取得了显著进展,但在可扩展性、数据效率和鲁棒性上仍有提升空间。Q-learning 在简单问题上表现不佳,传统策略梯度方法数据效率低且不稳定,而信任区域策略优化(TRPO)虽然效果好,但实现复杂且不兼容某些架构。
本文介绍了一种新的策略优化算法——近端策略优化(PPO)。它旨在保持 TRPO 的数据效率和可靠性的同时,简化实现过程,并在样本复杂度上表现更好。PPO 通过交替采样数据和优化代理目标函数来提高策略的效率和可靠性。
核心方法
策略梯度与信任区域
策略梯度方法通过计算策略梯度的估计值并使用随机梯度上升算法进行优化。公式如下:
$$ g = \hat{E}t [\nabla\theta \log \pi_\theta(a_t|s_t) \hat{A}_t] $$
其中,$\pi_\theta$ 是随机策略,$\hat{A}_t$ 是优势函数的估计值。
TRPO 通过最大化代理目标函数并受策略更新大小的限制来实现。其约束条件涉及 KL 散度:
$$ \max_\theta \hat{E}t [\frac{\pi\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)} \hat{A}_t] $$
受限于:
$$ \hat{E}t [KL[\pi{\theta_{old}}(\cdot|s_t), \pi_\theta(\cdot|s_t)]] \le \delta $$
PPO 的代理目标
PPO 提出了一个新的代理目标,通过裁剪概率比来形成对策略性能的悲观估计。公式如下:
$$ L^{CLIP}(\theta) = \hat{E}_t [\min(r_t(\theta)\hat{A}_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon)\hat{A}_t)] $$
其中,$r_t(\theta)$ 是概率比,$\epsilon$ 是超参数(通常设为 0.2)。裁剪的目的是防止策略更新过大,从而避免破坏性变化。最小值内的第一项是原始目标,第二项通过裁剪概率比消除了使 $r_t$ 移动到区间之外的动机。最终目标是未剪辑目标的下界。
自适应 KL 惩罚系数
另一种方法是使用 KL 惩罚项,并自适应地调整惩罚系数以保持目标 KL 散度值。具体步骤包括:
- 使用若干小批量 SGD 优化 KL 惩罚目标。
- 计算 KL 散度 $d$。
- 根据 $d$ 与目标值 $d_{target}$ 的关系调整惩罚系数 $\beta$。
实验表明,裁剪替代目标的表现优于 KL 惩罚方法,但后者仍是一个重要的基线。
算法实现
PPO 算法通过在固定长度的轨迹段上运行策略并收集数据,然后对这些数据进行多轮小批量 SGD 优化来实现。具体流程如下:
- 每个演员运行策略 $\pi_{\theta_{old}}$ 在环境中 $T$ 个时间步。
- 计算优势估计 $\hat{A}^1, \dots, \hat{A}^T$。
- 对代理损失进行 $K$ 轮小批量 SGD 优化。
- 更新旧策略参数 $\theta_{old}$ 为新策略参数 $\theta$。
结合价值函数误差项和熵奖励,我们得到以下目标,每次迭代都(大致)最大化:
$$ L^{CLIP+VF+S}(\theta) = \hat{E}_t [L_t^{CLIP}(\theta) - c_1 L_t^{VF}(\theta) + c_2 S\pi_\theta] $$
其中 $c_1, c_2$ 是系数,$S$ 表示熵奖励,$L_t^{VF}$ 是平方误差损失。
实验设计
连续控制任务
在连续控制任务中,使用 OpenAI Gym 中的 7 个模拟机器人任务进行训练,每个任务进行一百万个时间步长的训练。使用全连接的多层感知机(MLP)作为策略网络,输出高斯分布的均值和可变标准差。
结果显示,PPO 的裁剪代理目标表现最佳,平均标准化得分为 0.82,优于无裁剪或惩罚的目标。在大多数环境中,PPO 优于 TRPO、CEM、A2C 等算法。

