Proximal Policy Optimization Algorithms
文章标题:近端策略优化算法
作者/机构:John Schulman, Filip Wolski, Prafulla Dhariwal, Alec Radford, Oleg Klimov (OpenAI)
A1 主要贡献
核心问题:现有的主流强化学习方法存在各自的缺陷。深度Q学习(Deep Q-learning)在许多简单问题上会失败;“香草”策略梯度方法(vanilla policy gradient)数据效率和鲁棒性差;信任区域策略优化(TRPO)相对复杂,且与包含噪声(如dropout)或参数共享(策略与价值函数之间,或与辅助任务之间)的架构不兼容。因此,领域内需要一种可扩展、数据高效且鲁棒的算法。
研究目标:本文旨在提出一种新的算法,该算法能在保持TRPO的数据效率和可靠性能的同时,仅使用一阶优化方法,从而简化实现并扩大适用范围。
创新点:
1. 提出近端策略优化(PPO)算法:这是一种新的策略梯度方法家族,它在与环境交互采样数据和使用随机梯度上升优化“代理”目标函数之间交替进行。
2. 提出一种新颖的裁剪代理目标函数(Clipped Surrogate Objective):该目标函数通过裁剪概率比率,形成对策略性能的悲观估计(即下界),从而约束策略更新的幅度,避免了过大的、破坏性的更新。这一设计使得算法可以在每个数据样本上进行多轮(multiple epochs)的小批量(minibatch)更新,提高了样本利用率。
3. 在性能、简单性和通用性之间取得平衡:PPO在实现上远比TRPO简单,并且兼容更广泛的网络架构(如参数共享、dropout)。实验表明,PPO在连续控制任务上超越了其他在线策略梯度方法,在雅达利游戏(Atari)上取得了与ACER相近但实现更简单的性能,整体上在样本复杂度、简单性和实际运行时间之间取得了良好的平衡。
A3 背景知识
2.1 策略梯度方法
策略梯度估计器形式。策略梯度方法通过计算策略梯度的估计值,并将其用于随机梯度上升算法。最常用的梯度估计器形式如下:
其中,$\pi_{\theta}$ 是一个随机策略,$A_t$ 是在时间步t的优势函数估计器。这里的期望$\hat{E}_t[. . .]$表示在一个有限样本批次上的经验平均,该算法在采样和优化之间交替进行。
目标函数形式。使用自动微分软件的实现通过构建一个目标函数,其梯度即为策略梯度估计器$\hat{g}$。该估计器通过对以下目标函数进行微分得到:
尽管使用同一段轨迹对该损失函数$L^{PG}$进行多步优化很有吸引力,但这样做并没有充分的理论依据,并且根据经验,这通常会导致破坏性的大策略更新(如6.1节所示;结果未展示,但与“无裁剪或惩罚”设置相似或更差)。
2.2 信任区域方法
TRPO的带约束优化问题。在TRPO【索引10,Trust region policy optimization,2015,CoRR】中,目标函数(“代理”目标)在策略更新大小的约束下被最大化。具体形式如下:
其中,KL散度为:
这里,$\theta_{old}$是更新前的策略参数向量。通过对目标进行线性近似和对约束进行二次近似后,可以使用共轭梯度算法高效地近似求解该问题。
TRPO的罚函数形式与挑战。支撑TRPO的理论实际上建议使用惩罚项代替约束,即解决以下无约束优化问题:
对于某个系数$\beta$。这是因为某个代理目标(它计算的是状态上的最大KL散度而非平均值)构成了策略$\pi$性能的一个下界(即悲观界限)。TRPO之所以使用硬约束而不是惩罚,是因为很难选择一个单一的$\beta$值在不同问题上都表现良好——甚至在同一问题中,随着学习的进行,特性也会发生变化。因此,为了实现一个能够模拟TRPO单调改进的一阶算法,实验表明,仅仅选择一个固定的惩罚系数$\beta$并用SGD优化带惩罚的目标函数(公式5)是不够的;需要进行额外的修改。
A2 方法细节
3 裁剪代理目标函数
概率比率与TRPO代理目标。我们定义概率比率$r_t(\theta) = \frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}$,因此有$r(\theta_{old}) = 1$。TRPO最大化一个“代理”目标:
上标CPI指保守策略迭代(conservative policy iteration)【索引5,Approximately optimal approximate reinforcement learning,2002,ICML】,该目标函数在此文中被提出。如果没有约束,最大化$L^{CPI}$将导致过大的策略更新;因此,我们现在考虑如何修改目标函数,以惩罚那些使$r_t(\theta)$偏离1的策略变化。
PPO裁剪代理目标函数。我们提出的主要目标函数如下:
其中$\epsilon$是一个超参数,例如$\epsilon = 0.2$。该目标函数的动机如下:min函数内的第一项是$L^{CPI}$。第二项$clip(r_t(\theta), 1 - \epsilon, 1 + \epsilon) \hat{A}_t$通过裁剪概率比率来修改代理目标,这消除了将$r_t$移出区间$[1 - \epsilon, 1 + \epsilon]$的动机。最后,我们取裁剪后和未裁剪目标的最小值,因此最终目标是未裁剪目标的一个下界(即悲观界限)。通过这种方案,我们只在概率比率的变化会使目标改善时忽略它,而在它会使目标变差时将其包括进来。值得注意的是,$L^{CLIP}(\theta)$在$\theta_{old}$附近(即$r=1$处)与$L^{CPI}(\theta)$一阶近似相等,但当$\theta$远离$\theta_{old}$时,它们变得不同。
裁剪目标的图示化解释。图1绘制了$L^{CLIP}$中的单个项(即单个时间步t);注意,概率比率r根据优势是正还是负,被裁剪在$1-\epsilon$或$1+\epsilon$。
图1:代理函数$L^{CLIP}$中单个项(即单个时间步)作为概率比率r的函数的示意图,分别对应正优势(左)和负优势(右)。每个图上的红圈表示优化的起点,即r=1。注意,$L^{CLIP}$是许多这样的项的总和。
裁剪目标的下界特性。图2为代理目标$L^{CLIP}$提供了另一种直观理解。它展示了在一个连续控制问题上,当我们沿着通过近端策略优化(我们即将介绍的算法)获得的策略更新方向进行插值时,几个目标函数的变化情况。我们可以看到$L^{CLIP}$是$L^{CPI}$的一个下界,并对过大的策略更新施加了惩罚。
图2:代理目标函数,在我们于初始策略参数$\theta_{old}$和更新后的策略参数之间进行插值时的变化。更新后的策略与初始策略的KL散度约为0.02,这是$L^{CLIP}$达到最大值的点。该图对应于在Hopper-v1问题上的第一次策略更新,使用了6.1节中提供的超参数。
4 自适应KL惩罚系数
自适应KL惩罚作为替代方案。另一种方法是使用对KL散度的惩罚,并自适应地调整惩罚系数,以便在每次策略更新中达到某个目标KL散度值$d_{targ}$。该方法可以作为裁剪代理目标的替代方案,或与其结合使用。在我们的实验中,我们发现KL惩罚的表现不如裁剪代理目标,但我们将其包含在此,因为它是一个重要的基线。
自适应KL惩罚算法步骤。在这种算法的最简单实现中,我们在每次策略更新中执行以下步骤:
1. 使用多轮小批量SGD,优化KL惩罚目标:
2. 计算$d = \hat{E}_t[KL[\pi_{\theta_{old}}(\cdot | s_t), \pi_{\theta}(\cdot | s_t)]]$。
3. 如果$d < d_{targ} / 1.5$,则$\beta \leftarrow \beta / 2$。
4. 如果$d > d_{targ} \times 1.5$,则$\beta \leftarrow \beta \times 2$。
自适应KL惩罚的鲁棒性。更新后的$\beta$用于下一次策略更新。使用这种方案,我们偶尔会看到KL散度与$d_{targ}$显著不同的策略更新,但这种情况很少见,并且$\beta$会迅速调整。上述参数1.5和2是凭经验选择的,但算法对它们不敏感。$\beta$的初始值是另一个超参数,但在实践中并不重要,因为算法会迅速调整它。
5 算法
PPO的实现。前几节中的代理损失函数可以通过对典型的策略梯度实现进行微小更改来计算和微分。对于使用自动微分的实现,只需构建损失函数$L^{CLIP}$或$L^{KLPEN}$来代替$L^{PG}$,并对该目标执行多步随机梯度上升。
结合价值函数和熵奖励的目标函数。大多数用于计算方差缩减的优势函数估计器的技术都利用了一个学习到的状态价值函数$V(s)$;例如,泛化优势估计(generalized advantage estimation)【索引9,High-dimensional continuous control using generalized advantage estimation,2015,arXiv】或在【索引8,Asynchronous methods for deep reinforcement learning,2016,arXiv】中的有限视界估计器。如果使用在策略和价值函数之间共享参数的神经网络架构,我们必须使用一个结合了策略代理损失和价值函数误差项的损失函数。这个目标可以通过增加一个熵奖励来进一步增强,以确保充分的探索,正如过去的工作【索引14,Simple statistical gradient-following algorithms for connectionist reinforcement learning,1992,Machine learning】;【索引8,Asynchronous methods for deep reinforcement learning,2016,arXiv】所建议的。结合这些项,我们得到以下目标,它在每次迭代中被(近似地)最大化:
其中$c_1, c_2$是系数,S表示熵奖励,$L_t^{VF}$是平方误差损失$(V_{\theta}(s_t) - V_t^{targ})^2$。
固定长度轨迹的实现方式。一种策略梯度的实现方式,在【索引8,Asynchronous methods for deep reinforcement learning,2016,arXiv】中被推广,并且非常适合与循环神经网络一起使用,即运行策略T个时间步(其中T远小于回合长度),并使用收集到的样本进行更新。这种方式需要一个不向前看超过时间步T的优势估计器。【索引8,Asynchronous methods for deep reinforcement learning,2016,arXiv】使用的估计器是:
其中t指定了在给定长度为T的轨迹段内的时间索引[0, T]。
截断的泛化优势估计(GAE)。作为对上述选择的推广,我们可以使用一个截断版本的泛化优势估计,当$\lambda = 1$时,它会简化为公式(10):
PPO算法伪代码。下面展示了一个使用固定长度轨迹段的近端策略优化(PPO)算法。在每次迭代中,N个(并行的)执行者各自收集T个时间步的数据。然后我们在这些NT个时间步的数据上构建代理损失,并用小批量SGD(或通常为了更好的性能,使用Adam【索引6,Adam: A method for stochastic optimization,2014,arXiv】)对其进行K个周期的优化。
算法1:PPO,Actor-Critic风格
A4 实验环境
-
数据集/任务:
- 连续控制(代理目标比较): 7个基于MuJoCo物理引擎的模拟机器人任务,均在OpenAI Gym中实现,训练100万个时间步。
- 连续控制(人形机器人展示): 3个高维3D人形机器人控制任务(RoboschoolHumanoid, RoboschoolHumanoidFlagrun, RoboschoolHumanoidFlagrunHarder),涉及奔跑、转向、摔倒后起身等复杂动作。
- 离散控制(Atari): 49个雅达利(Atari)游戏,来自Arcade Learning Environment (ALE)基准测试。
-
模型架构:
- 连续控制: 一个全连接的多层感知机(MLP),包含两个64单元的隐藏层,使用tanh非线性激活函数。策略网络输出高斯分布的均值,标准差是可学习的变量。策略和价值函数不共享参数。
- Atari: 与【索引8,Asynchronous methods for deep reinforcement learning,2016,arXiv】中使用的策略网络架构相同。
-
硬件配置: 论文未明确说明具体的硬件配置(如GPU型号/数量,CPU型号等)。
-
软件配置:
- 环境: OpenAI Gym【索引2,OpenAI Gym,2016,arXiv】,MuJoCo【索引12,MuJoCo: A physics engine for model-based control,2012,IROS】物理引擎,Roboschool,Arcade Learning Environment (ALE)【索引1,The arcade learning environment: An evaluation platform for general agents,2015,IJCAI】。
- 优化器: Adam【索引6,Adam: A method for stochastic optimization,2014,arXiv】。
- 实现细节: PPO的实现基于一个典型的策略梯度代码库,并进行了少量修改。实验中对比的算法(如TRPO, A2C等)都使用了经过调优的实现。
A4 实验结果
实验一:代理目标的比较
- 实验内容:在7个连续控制任务上,比较了PPO的裁剪代理目标($L^{CLIP}$)与几种变体:无裁剪或惩罚、仅裁剪、固定KL惩罚和自适应KL惩罚。
- 实验结果:如表1所示,采用裁剪代理目标($L^{CLIP}$)且$\epsilon = 0.2$的设置取得了最佳的平均归一化分数。不带任何裁剪或惩罚的变体表现最差,甚至得分低于初始随机策略。自适应KL惩罚是次优选择,但性能显著低于裁剪方案。
- 分析结论:本文提出的裁剪代理目标是所测试的变体中最有效和最稳健的。
实验二:在连续控制领域与其他算法的比较
- 实验内容:将PPO(使用裁剪代理目标,$\epsilon = 0.2$)与TRPO、CEM、带自适应步长的vanilla PG、A2C以及带信任区域的A2C进行了比较。
- 实验结果:图3的学习曲线显示,PPO在几乎所有连续控制环境中的性能都优于其他对比方法。
- 分析结论:PPO在连续控制任务上优于现有技术水平的算法。
实验三:在连续控制领域的案例展示:人形机器人跑动与转向
- 实验内容:为了展示PPO在高维连续控制问题上的性能,在3D人形机器人任务上进行了训练。
- 实验结果:图4的学习曲线表明PPO在这些复杂任务上能够成功学习。图5展示了学习到的策略能够控制机器人在目标位置变化时奔跑和转向。同时期的工作【索引4,Emergence of Locomotion Behaviours in Rich Environments,2017,arXiv】也使用了PPO的自适应KL变体来学习3D机器人的移动策略。
- 分析结论:PPO能够有效地扩展到复杂的高维连续控制问题。
实验四:在Atari领域与其他算法的比较
- 实验内容:在Atari游戏基准上,将PPO与经过精心调优的A2C和ACER实现进行了比较。
- 实验结果:表2展示了基于两个评分指标(整个训练期间的平均奖励和最后100个回合的平均奖励),各算法“获胜”的游戏数量。PPO在两种指标下获胜的游戏数量都最多。附录B中的图6和表6提供了更详细的结果。PPO在样本复杂度上显著优于A2C,性能与ACER相当,但实现上简单得多。
- 分析结论:PPO在离散动作空间的Atari游戏中同样非常有效,展现了比A2C更好的样本效率,并达到了与更复杂的ACER相当的性能。
A5 结论
本文介绍了近端策略优化(PPO),这是一系列使用多轮随机梯度上升来执行每次策略更新的策略优化方法。这些方法具备信任区域方法的稳定性和可靠性,但实现起来简单得多,仅需对vanilla策略梯度实现进行几行代码的修改。PPO的适用性更广(例如,可用于策略和价值函数共享架构的情况),并且整体性能更优。
A6 附录
A 超参数
Mujoco 1M 时间步基准测试的PPO超参数。表3提供了用于Mujoco一百万时间步基准测试的PPO超参数。
Roboschool 实验的PPO超参数。表4提供了用于Roboschool实验的PPO超参数。Adam步长根据KL散度的目标值进行了调整。
Atari 实验的PPO超参数。表5提供了在Atari实验中使用的PPO超参数。α在学习过程中从1线性退火到0。
B 更多Atari游戏的性能
更多Atari游戏的性能。此处包含了PPO与A2C在更广泛的49个Atari游戏集合上的比较。
学习曲线比较。图6展示了每个算法在三个随机种子下的学习曲线。
最终得分比较。表6显示了在4000万游戏帧(1000万时间步)后,PPO和A2C在Atari游戏上的平均最终得分(最后100个回合)。
方法细节中的引用汇总
-
引用[5]:S. Kakade and J. Langford. “Approximately optimal approximate reinforcement learning”. In: ICML. Vol. 2. 2002, pp. 267–274.
- 引用位置: 第3节,第1段。
- 引用内容: 论文在此处引入了TRPO使用的代理目标函数$L^{CPI}$,并注明该目标最初是在这篇文献(保守策略迭代,Conservative Policy Iteration)中提出的。
-
引用[9]:J. Schulman, P. Moritz, S. Levine, M. Jordan, and P. Abbeel. “High-dimensional continuous control using generalized advantage estimation”. In: arXiv preprint arXiv:1506.02438 (2015).
- 引用位置: 第5节,第2段。
- 引用内容: 在讨论如何计算方差缩减的优势函数时,引用了该文献提出的泛化优势估计(Generalized Advantage Estimation, GAE)作为一种有效的技术。
-
引用[8]:V. Mnih, A. P. Badia, M. Mirza, A. Graves, T. P. Lillicrap, T. Harley, D. Silver, and K. Kavukcuoglu. “Asynchronous methods for deep reinforcement learning”. In: arXiv preprint arXiv:1602.01783 (2016).
- 引用位置: 第5节,第2、3段。
- 引用内容: 第一次引用是为了说明有限视界优势估计器是另一种常用的技术。第二次引用是在讨论增加熵奖励以促进探索时,将其作为先前的相关工作。第三次引用是介绍一种适用于RNN的、基于固定长度轨迹段的策略梯度实现风格,指出这种风格由该文献推广。
-
引用[14]:R. J. Williams. “Simple statistical gradient-following algorithms for connectionist reinforcement learning”. In: Machine learning 8.3-4 (1992), pp. 229–256.
- 引用位置: 第5节,第2段。
- 引用内容: 在讨论通过增加熵奖励来确保充分探索时,引用了这篇早期工作作为提出该思想的文献之一。
-
引用[6]:D. Kingma and J. Ba. “Adam: A method for stochastic optimization”. In: arXiv preprint arXiv:1412.6980 (2014).
- 引用位置: 第5节,算法伪代码描述段落。
- 引用内容: 在描述PPO算法的优化步骤时,提到除了使用小批量SGD外,通常使用Adam优化器可以获得更好的性能,并引用了Adam的原始论文。
💬 评论讨论
欢迎在这里分享您的想法和见解!