找回密码
 立即注册
查看: 267|回复: 0

OpenAI默认算法-PPO:近端策略优化算法

[复制链接]
发表于 2023-3-1 11:57 | 显示全部楼层 |阅读模式
论文:Proximal Policy Optimization Algorithms
小虎AI珏爷:强化学习- Reinforce 蒙特卡罗策略梯度
论文提出了一种用于强化学习的新的策略梯度方法,该方法在通过与环境交互来采样数据和使用随机梯度上升来优化目标函数之间交替。鉴于标准策略梯度方法对每个数据样本执行一次梯度更新,论文提出了一种新的目标函数,该函数支持多个epochs的小批量更新。论文称之为近端策略优化(PPO)的新方法具有信任区域策略优化(TRPO)的一些好处,但它们更易于实现,更通用,并且具有更好的样本复杂性(经验)。论文的实验在一系列基准任务上测试了PPO,包括模拟机器人移动和玩Atari游戏,表明PPO优于其他在线策略梯度方法,并且总体上在样本复杂性、简单性和实际时间之间取得了有利的平衡。
1 介绍

近年来,已经提出了几种不同的方法来使用神经网络函数逼近器进行强化学习。主要竞争者是deep Q-learning[Mni+15]、“vanilla”策略梯度方法[Mni+16]和信任区域/自然策略梯度方法[Sch+15b]。然而,在开发一种可扩展(适用于大型模型和并行实现)、数据高效和鲁棒的方法方面,仍有改进的空间。
Q-learning(使用函数逼近)在许多简单问题上都失败了,而且人们对其了解甚少,一般的策略梯度方法具有较差的数据效率和鲁棒性;信任区域策略优化(TRPO)相对复杂,并且与包括噪声(例如丢失)或参数共享(在策略和值函数之间,或与辅助任务之间)的架构不兼容。
2 背景:策略优化

2.1 策略梯度方法

策略梯度方法通过计算策略梯度的估计量并将其插入随机梯度上升算法来工作。最常用的梯度估计器具有以下形式,
\hat{g}=\hat{\mathbb{E}}_t\left[\nabla_\theta \log \pi_\theta\left(a_t \mid s_t\right) \hat{A}_t\right] \\ \tag{1} 其中, \pi_\theta 是随机策略,而 \color{red}{\hat{A}_t} 是时间步t处优势函数的估计量。这里,期望值 \hat{\mathbb{E}}_t[\ldots] 表示在采样和优化之间交替的算法中有限批次样本的经验平均值
策略梯度估计器目标函数使用自动微分计算梯度。
L^{P G}(\theta)=\hat{\mathbb{E}}_t\left[\log \pi_\theta\left(a_t \mid s_t\right) \hat{A}_t\right] \\ \tag{2}虽然使用相同的轨迹对该损失 L^{P G} 执行多个优化步骤很有吸引力,但这样做并不合理,而且根据经验,这通常会导致破坏性的大规模策略更新 。
2.2 信任区域方法

在TRPO[Sch+15b]中,目标函数(“surrogate”目标)在策略更新大小的约束下最大化。
\underset{\theta}{\operatorname{maximize}} \quad \hat{\mathbb{E}}_t\left[\frac{\pi_\theta\left(a_t \mid s_t\right)}{\pi_{\theta_{\text {old }}}\left(a_t \mid s_t\right)} \hat{A}_t\right] \\ \tag{3} \text { subject to } \quad \hat{\mathbb{E}}_t\left[\color{red}{\operatorname{KL}}\left[\pi_{\theta_{\text {old }}}\left(\cdot \mid s_t\right), \pi_\theta\left(\cdot \mid s_t\right)\right]\right] \leq \delta \\ \tag{4}其中, \theta_{\text {old }} 是更新之前的策略参数向量。在对目标进行线性近似对约束进行二次近似之后,可以使用共轭梯度算法来有效地近似解决这个问题。
证明TRPO的理论实际上建议使用惩罚代替约束,即解决无约束优化问题
\underset{\theta}{\operatorname{maximize}} \hat{\mathbb{E}}_t\left[\frac{\pi_\theta\left(a_t \mid s_t\right)}{\pi_{\theta_{\text {old }}}\left(a_t \mid s_t\right)} \hat{A}_t-\beta \operatorname{KL}\left[\pi_{\theta_{\text {old }}}\left(\cdot \mid s_t\right), \pi_\theta\left(\cdot \mid s_t\right)\right]\right] \\ \tag{5}对于某些系数 \beta 。这是由于某个替代目标(计算状态上的最大KL而不是平均值)形成了策略 \pi 性能的下界(即悲观界)。 TRPO使用硬约束而不是惩罚,因为很难选择一个在不同问题中或甚至在单个问题中表现良好的 \beta 值,其中特征在学习过程中发生变化。因此,为了实现模拟TRPO单调改进的一阶算法的目标,实验表明,仅选择固定惩罚系数 \beta 并使用SGD优化惩罚目标方程(5)是不够的;需要额外的修改。
3 简化代理目标

设 r_t(\theta) 表示概率比 r_t(\theta)=\frac{\pi_\theta\left(a_t \mid s_t\right)}{\pi_{\theta_{\text {old }}}\left(a_t \mid s_t\right)} ,所以 r\left(\theta_{\text {old }}\right)=1 。TRPO最大化“surrogate”目标,
L^{C P I}(\theta)=\hat{\mathbb{E}}_t\left[\frac{\pi_\theta\left(a_t \mid s_t\right)}{\pi_{\theta_{\text {old }}}\left(a_t \mid s_t\right)} \hat{A}_t\right]=\hat{\mathbb{E}}_t\left[r_t(\theta) \hat{A}_t\right] \\ \tag{6}上标CPI指的是保守策略迭代。 如果没有约束, L^{C P I} 的最大化将导致过大的策略更新。
论文提出的主要目标如下:
L^{C L I P}(\theta)=\hat{\mathbb{E}}_t\left[\color{green}{\min }\left(r_t(\theta) \hat{A}_t, \color{red}{\operatorname{clip}}\left(r_t(\theta), 1-\epsilon, 1+\epsilon\right) \hat{A}_t\right)\right] \\ \tag{7} 其中epsilon是超参数,例如 \epsilon=0.2 。这一目标的动机如下。第一项是 L^{C P I} 。第二项 \left.\operatorname{clip}\left(r_t(\theta), 1-\epsilon, 1+\epsilon\right) \hat{A}_t\right) 通过截断概率比来修改替代目标,这消除了将 r_t 移动到区间 [1-\epsilon, 1+\epsilon] 之外的激励。最后,取裁剪目标和未裁剪目标的最小值,因此最终目标是未裁剪目标上的下限(即悲观界)。在这个方案中,只在概率比的变化会使目标得到改善时忽略它,而当概率比的改变会使目标变得更糟时,将其包括在内。注意, L^{C L I P}(\theta)=L^{C P I}(\theta) 在 \theta_{\text {old }} 附近达到一阶(即,其中r=1),然而,随着θ远离 \theta_{\text {old }} ,它们变得不同。图1描绘了 L^{C L I P} 中的单个项(即单个t);注意,概率比r被限制在 1-\epsilon 或 1+\epsilon ,这取决于优势是正还是负。



图1:正优势(左)和负优势(右)的替代函数LCLIP的一个项(即,单个时间步)作为概率比r的函数的曲线图。每个图上的红色圆圈显示优化的起点,即r=1。

图2提供了关于替代目标LCLIP的另一个直觉来源。它显示了当沿着策略更新方向进行插值时,几个目标是如何变化的,这是通过对连续控制问题的近端策略优化获得的。可以看到, L^{C L I P} 是 L^{C P I} 的下限,因为策略更新过大而受到惩罚。


图2:替代目标,当在初始策略参数 \theta_{\text {old }} 和更新的策略参数之间进行插值时,在一次PPO迭代后计算更新的策略。更新后的策略与初始策略的KL偏差约为0.02,这是 L^{C L I P} 最大的点。该图对应于使用第6.1节中提供的超参数对Hopper-v1问题进行的第一次策略更新。
4 自适应KL惩罚系数

另一种方法,可以作为裁剪替代目标的替代方案,或者除此之外,是对KL偏差使用惩罚,并调整惩罚系数,以便在每次策略更新时都达到KL偏差的目标值。在论文的实验中,发现KL惩罚的表现比缩减的替代目标更差,然而,论文将其包括在这里,因为这是一个重要的基线。
在该算法的最简单实例化中,在每次策略更新中执行以下步骤:
使用几个epochs的小批量SGD,优化KL惩罚目标,
L^{K L P E N}(\theta)=\hat{\mathbb{E}}_t\left[\frac{\pi_\theta\left(a_t \mid s_t\right)}{\pi_{\theta_{\text {old }}}\left(a_t \mid s_t\right)} \hat{A}_t-\beta \mathrm{KL}\left[\pi_{\theta_{\text {old }}}\left(\cdot \mid s_t\right), \pi_\theta\left(\cdot \mid s_t\right)\right]\right] \\ \tag{8} 计算 d=\hat{\mathbb{E}}_t\left[\mathrm{KL}\left[\pi_{\theta_{\text {old }}}\left(\cdot \mid s_t\right), \pi_\theta\left(\cdot \mid s_t\right)\right]\right] ,
  \begin{align} &- If d<d_{\operatorname{targ}} / 1.5, \beta \leftarrow \beta / 2 \\ &- If d>d_{\operatorname{targ}} \times 1.5, \beta \leftarrow \beta \times 2 \\ \end{align} \\  
更新的β用于下一次策略更新。使用此方案,偶尔会看到策略更新,其中KL差异与 d_{\text {targ }} 显著不同,然而,这是罕见的,并且β会迅速调整。
5 算法

可以通过对典型策略梯度实施的微小更改来计算和区分前几节中的替代损失。对于使用自动差分的实现,只需构造损失 L^{C L I P} 或 L^{K L P E N} 而不是 L^{P G} ,并在此目标上执行多个随机梯度上升步骤。
大多数用于计算方差减少优势函数估计的技术使用学习状态值函数 V(s) 。如果使用在策略和值函数之间共享参数的神经网络架构,必须使用结合了策略代理和值函数错误项的损失函数。通过增加熵加成来确保充分的探索,可以进一步增强这一目标。结合这些术语,获得了以下目标,即每次迭代(近似)最大化:
L_t^{C L I P+V F+S}(\theta)=\hat{\mathbb{E}}_t\left[L_t^{C L I P}(\theta)-c_1 L_t^{V F}(\theta)+c_2 S\left[\pi_\theta\right]\left(s_t\right)\right] \\ \tag{9} 其中c1,c2是系数,S表示熵加成, L_t^{V F} 是平方误差损失 \left(V_\theta\left(s_t\right)-V_t^{\mathrm{targ}}\right)^2 。
一种策略梯度实现方式在[Mni+16]中得到推广,非常适合与递归神经网络一起使用,它在T个时间步长(其中T远小于集长度)运行策略,并使用收集的样本进行更新。这种风格需要一个不超过时间步T的优势估计器。[Mni+16]使用的估计器为,
\hat{A}_t=-V\left(s_t\right)+r_t+\gamma r_{t+1}+\cdots+\gamma^{T-t+1} r_{T-1}+\gamma^{T-t} V\left(s_T\right) \\ \tag{10}其中t指定给定长度t轨迹段内[0,T]中的时间索引。 推广这一选择,可以使用广义优势估计的截断版本,当λ=1时,其简化为方程:
\hat{A}_t=\delta_t+(\gamma \lambda) \delta_{t+1}+\cdots+\cdots+(\gamma \lambda)^{T-t+1} \delta_{T-1} \\ \tag{11}\text { where } \quad \delta_t=r_t+\gamma V\left(s_{t+1}\right)-V\left(s_t\right) \\ \tag{12} 使用固定长度轨迹段的近端策略优化(PPO)算法如下所示。每次迭代,N个(并行)参与者中的每一个都收集T个时间步的数据。然后,在这N个T个时间步长的数据上构造代理损失,并使用小批量SGD(或通常为了更好的性能,Adam[KB14])对K个时间段进行优化。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-6-24 09:09 , Processed in 0.092614 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表