摘要

我们提出了一类新的用于强化学习的策略梯度方法,该方法可以在与环境交互进行数据采样和使用随机梯度上升优化一个“替代”目标函数之间进行交替。标准策略梯度方法对每个数据样本执行一个梯度更新,而我们提出了一种新的目标函数,该函数可实现多次的小批量更新。我们称为近端策略优化(PPO)的新方法具有信赖域策略优化(TRPO)的一些优点,但它们实施起来更简单,更通用,并且具有更好的样本复杂性(经验上)。我们的实验在一系列基准任务上测试了PPO,包括模拟机器人运动和Atari游戏,我们证明了PPO的性能优于其他在线策略梯度方法,并且总体上在样本复杂性,简单性和有效期之间取得了良好的平衡。

1.介绍

近年来,已经提出了几种使用神经网络函数近似器进行强化学习的方法。主要有深度Q学习(DQN),“vanilla”策略梯度方法和信赖域/自然策略梯度方法。然而,在开发一种可扩展(适用于大型模型和并行实现),数据高效且健壮(即在无需超调整参数的情况下成功解决各种问题)的方法方面仍有改进的余地。Q-learning(带有函数近似器)在许多简单的问题上失败了,人们对其原因知之甚少,“vanilla”策略梯度的数据效率和健壮性也很差。信赖域策略优化(TRPO)相对复杂,并且对于具有噪声(例如,dropout)或参数共享(在策略和价值函数之间或与辅助任务之间)的网络结构不兼容
  本文旨在通过引入一种仅使用一阶优化即可获得数据效率和TRPO可靠性能的算法,来改善当前的事务状态。我们提出了一种具有裁剪概率率(clipped probability ratios)的新目标函数,该目标函数形成了对策略性能的悲观估计(即下界)。为了优化策略,我们在从策略采样数据和对采样数据执行几个优化时期之间交替进行。
  我们的实验比较了替代目标函数的各种不同版本的性能,发现具有裁剪概率率的版本性能最佳。我们还将PPO与文献中的几种先前算法进行比较。在连续控制任务上,它的性能优于我们所比较的算法。在Atari上,它的性能(在样本复杂性方面)比A2C好得多,并且与ACER类似,尽管它要简单得多。

2.背景:策略优化

2.1 策略梯度方法

策略梯度方法通过计算策略梯度的估计值并将其插入随机梯度上升算法中来工作。最常用的梯度估计器具有以下形式:
g ^ = E ^ [ ∇ θ l o g π θ ( a t ∣ s t ) A ^ t ] (1) \hat g=\hat \mathbb E[\nabla_\theta log~\pi_{\theta}(a_t|s_t)\hat A_t]\tag{1} g^​=E^[∇θ​log πθ​(at​∣st​)A^t​](1)
其中 π θ π_θ πθ​是随机策略,而 A ^ t \hat A_t A^t​是时刻 t t t的优势函数的估计值。在这里,期望 E ^ [ … ] \hat \mathbb E[\dots] E^[…]表示在采用和优化之间交替的算法中,有限样本批次的经验平均值。对构造的目标函数使用自动求导软件进行微分,该目标函数的梯度即是策略梯度估计器;通过微分下式目标函数可获得估计值 g ^ \hat g g^​:
L P G ( θ ) = E ^ t [ l o g π θ ( a t ∣ s t ) A ^ t ] . (2) L^{PG}(\theta)=\hat \mathbb E_t[log~\pi_{\theta}(a_t|s_t)\hat A_t].\tag{2} LPG(θ)=E^t​[log πθ​(at​∣st​)A^t​].(2)
  尽管使用相同的轨迹对该损失 L P G L^{PG} LPG进行多步优化很有吸引力,但是这样做并没有充分的理由,而且从经验上讲,它经常导致破坏性的大型策略更新(请参阅第6.1节;结果未显示,但与“无剪辑或惩罚”设置相似或更差)。

2.2 信赖域方法

在TRPO中,目标函数(“替代”目标函数)在策略更新的步长上受到限制。即:
m a x i m i z e θ E ^ t [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ t ] (3) \mathop{maximize}\limits_{\theta}\quad \hat \mathbb E_t[\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}\hat A_t]\tag{3} θmaximize​E^t​[πθold​​(at​∣st​)πθ​(at​∣st​)​A^t​](3)
s u b j e c t t o E ^ t [ K L [ π θ o l d ( ⋅ ∣ s t ) , π θ ( ⋅ ∣ s t ) ] ] ≤ δ . (4) subject~to\quad\hat \mathbb E_t[KL[\pi_{\theta_{old}}(\cdot|s_t),\pi_{\theta}(\cdot|s_t)]]\le\delta.\tag{4} subject toE^t​[KL[πθold​​(⋅∣st​),πθ​(⋅∣st​)]]≤δ.(4)
此处, θ o l d θ_{old} θold​是更新之前策略参数的向量。在对目标函数进行线性近似并且对约束项进行二次近似之后,可以使用共轭梯度算法有效地解决该问题。
  证明TRPO合理的理论实际上建议使用惩罚项而不是约束项,即解决无约束的优化问题:
m a x i m i z e θ E ^ t [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ t − β K L [ π θ o l d ( ⋅ ∣ s t ) , π θ ( ⋅ ∣ s t ) ] ] (5) \mathop{maximize}\limits_{\theta}~\hat \mathbb E_t[\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}\hat A_t-\beta KL[\pi_{\theta_{old}}(\cdot|s_t),\pi_{\theta}(\cdot|s_t)]]\tag{5} θmaximize​ E^t​[πθold​​(at​∣st​)πθ​(at​∣st​)​A^t​−βKL[πθold​​(⋅∣st​),πθ​(⋅∣st​)]](5)
  对于某些系数 β β β。这是基于这样的事实,即某个替代目标函数(它计算状态上的最大KL而不是其均值)在策略 π π π的性能上形成了一个下界(即一个悲观的界限)。TRPO使用约束项而不是惩罚项,因为很难选择一个在不同问题上甚至在特征随学习过程变化的单个问题内表现良好的 β β β值。因此,为了实现我们的模拟TRPO单调改进的一阶算法的目标,实验表明,仅仅选择固定惩罚系数 β β β并使用SGD优化目标函数(5)是不够的。需要其他修改。

3.裁剪替代目标函数


  令 r t ( θ ) r_t(\theta) rt​(θ)表示概率率 r t ( θ ) = π θ ( a t ∣ s t ) π θ o l d ( a ) ( a t ∣ s t ) r_t(\theta)=\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_)(a_t|s_t)} rt​(θ)=πθold​​(a)​(at​∣st​)πθ​(at​∣st​)​,因此 r ( θ o l d ) = 1 r(\theta_{old})=1 r(θold​)=1。TRPO最大化如下替代目标函数:
L C P I ( θ ) = E ^ t [ π θ ( a t ∣ s t ) π θ o l d ( a ) ( a t ∣ s t ) A ^ t ] = E ^ t [ r t ( θ ) A ^ t ] . (6) L^{CPI}(\theta)=\hat \mathbb E_t[\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_)(a_t|s_t)}\hat A_t]=\hat \mathbb E_t[r_t(\theta)\hat A_t].\tag{6} LCPI(θ)=E^t​[πθold​​(a)​(at​∣st​)πθ​(at​∣st​)​A^t​]=E^t​[rt​(θ)A^t​].(6)
上标 C P I CPI CPI指的是约束策略迭代,其论文中提出了该目标函数。在没有约束项的情况下, L C P I L^{CPI} LCPI的最大化将导致策略更新过大。因此,我们现在考虑如何修改该目标函数,以惩罚 r t ( θ ) r_t(θ) rt​(θ)远离 1 1 1的策略更新
  我们提出的主要目标函数如下:
L C L I P ( θ ) = E ^ t [ m i n ( r t ( θ ) A ^ t , c l i p ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ^ t ) ] (7) L^{CLIP}(\theta)=\hat \mathbb E_t[min(r_t(\theta)\hat A_t,clip(r_t(\theta),1-\epsilon,1+\epsilon)\hat A_t)]\tag{7} LCLIP(θ)=E^t​[min(rt​(θ)A^t​,clip(rt​(θ),1−ϵ,1+ϵ)A^t​)](7)
其中, ϵ \epsilon ϵ是超参数,通常, ϵ = 0.2 \epsilon=0.2 ϵ=0.2。目标函数提出的动机如下:位于 m i n ( ) min() min()中的第一项是 L C P I L^{CPI} LCPI。位于 m i n ( ) min() min()中的第二项, c l i p ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ^ t ) clip(r_t(\theta),1-\epsilon,1+\epsilon)\hat A_t) clip(rt​(θ),1−ϵ,1+ϵ)A^t​),通过裁剪概率率来修改替代目标函数,从而消除了将 r t r_t rt​移到区间 [ 1 − ϵ , 1 + ϵ ] [1-\epsilon,1+\epsilon] [1−ϵ,1+ϵ]之外的动机。最后,我们取裁剪和未裁剪目标函数中的最小值,因此最终的目标函数是在未裁剪目标函数中的一个下界(即悲观界限)。通过这种方案,我们仅在概率率提高目标函数时才忽略概率率的变化,而在概率率使目标函数减少时将其包括在内。注意,在 θ o l d θ_{old} θold​附近(即, r = 1 r=1 r=1)处于一阶时, L C L I P ( θ ) = L C P I ( θ ) L^{CLIP}(θ)= L^{CPI}(θ) LCLIP(θ)=LCPI(θ),但是,当 θ θ θ远离 θ o l d θ_{old} θold​时,它们会变得不同。图1绘制了 L C L I P L^{CLIP} LCLIP中的一个单项(即单个 t t t);注意,根据优势值是正的还是负的,概率率 r r r被 1 + ϵ 1+\epsilon 1+ϵ或 1 − ϵ 1-\epsilon 1−ϵ裁剪。

  图2提供了关于替代目标函数 L C L I P L^{CLIP} LCLIP的另一种直觉来源。它显示了当我们沿着策略更新方向进行插值时,几个目标函数是如何变化的,这是通过对连续控制问题进行近端策略优化(稍后将介绍的算法)获得的。我们可以看到 L C L I P L^{CLIP} LCLIP是 L C P I L^{CPI} LCPI的下界,这是因为策略更新太大而带来的惩罚

4.自适应KL惩罚系数

另外一种能够替代或补充裁剪替代目标函数的方法是使用一个KL散度作为惩罚项,并自适应调整惩罚系数 β β β,以使我们每次策略更新都能达到KL散度的一些目标值 d t a r g d_{targ} dtarg​。在我们的实验中,我们发现KL惩罚项的表现要比裁剪替代目标函数差,但是,由于它是重要的baseline,因此我们在此处进行介绍。
  在此算法的最简单实例中,我们在每次策略更新中执行以下步骤:

  • 使用具有mini-batch的SGD进行若干次迭代,以优化KL惩罚目标函数:
    L K L P E N ( θ ) = E ^ t [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ t − β K L [ π θ ( ⋅ ∣ s t ) , π θ ( ⋅ ∣ s t ) ] ] (8) L^{KLPEN}(\theta)=\hat \mathbb E_t[\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}\hat A_t-\beta KL[\pi_{\theta}(\cdot|s_t),\pi_{\theta}(\cdot|s_t)]]\tag{8} LKLPEN(θ)=E^t​[πθold​​(at​∣st​)πθ​(at​∣st​)​A^t​−βKL[πθ​(⋅∣st​),πθ​(⋅∣st​)]](8)
  • 计算 d = E ^ t [ K L [ π θ ( ⋅ ∣ s t ) , π θ ( ⋅ ∣ s t ) ] ] d=\hat \mathbb E_t[KL[\pi_{\theta}(\cdot|s_t),\pi_{\theta}(\cdot|s_t)]] d=E^t​[KL[πθ​(⋅∣st​),πθ​(⋅∣st​)]]
    -如果 d < d t a r g / 1.5 d<d_{targ}/1.5 d<dtarg​/1.5,则 β ← β / 2 \beta \leftarrow\beta/2 β←β/2
    -如果 d > d t a r g × 1.5 d>d_{targ}\times1.5 d>dtarg​×1.5,则 β ← β × 2 \beta \leftarrow\beta\times2 β←β×2

更新后的 β β β用于下一个策略更新。通过此方案,我们偶尔会看到在策略更新中,KL散度与 d t a r g d_{targ} dtarg​明显不同,但是这种情况很少见, β β β会迅速调整。上面的参数1.5和2是通过试探法选择的,但是算法对其并不十分敏感。 β β β的初始值是另一个超参数,但在实践中并不重要,因为该算法会对其进行快速调整。

5.算法


  通过对传统策略梯度的实现进行较小的更改就可以计算和微分前几部分中的替代损失。对于使用自动微分的实现,只需构造损失函数 L C L I P L^{CLIP} LCLIP或 L K L P E N L^{KLPEN} LKLPEN而不是 L P G L^{PG} LPG,就可以实现该目标的多个随机梯度上升步骤。
  大多数用于减少方差的优势函数估计器技术都使用一个可学习的状态价值函数 V ( s ) V(s) V(s);例如,广义优势估计(GAE)或[Mni+16]中的有限时刻估计。如果使用在策略和价值函数之间共享参数的神经网络体系结构,则必须使用将策略损失和价值损失项组合在一起的损失函数。如过去的工作所建议的,可以通过增加熵值奖赏以确保足够的探索来进一步增强此目标函数。结合这些损失项,我们获得以下目标函数,并在每次迭代时最大化该目标函数:
L t C L I P + V F + S ( θ ) = E ^ t [ L t C L I P ( θ ) − c 1 L t V F ( θ ) + c 2 S [ π θ ] ( s t ) ] , (9) L^{CLIP+VF+S}_{t}(\theta)=\hat \mathbb E_t[L^{CLIP}_t(\theta)-c_1L^{VF}_t(\theta)+c_2S[\pi_{\theta}](s_t)],\tag{9} LtCLIP+VF+S​(θ)=E^t​[LtCLIP​(θ)−c1​LtVF​(θ)+c2​S[πθ​](st​)],(9)
其中, c 1 , c 2 c_1,c_2 c1​,c2​为系数, S S S表示一个熵值奖赏, L t V F L^{VF}_t LtVF​是均方误差损失 ( V θ ( s t ) − V t t a r g ) 2 (V_{\theta}(s_t)-V^{targ}_t)^2 (Vθ​(st​)−Vttarg​)2。
  一种策略梯度实现方式,在[Mni + 16]中流行并且非常适合与循环神经网络一起使用,在 T T T个时刻上运行策略(其中 T T T远小于情节长度),并将收集的样本用于更新。这种方式需要一个不超过时间步长 T T T的优势估计器。[Mni + 16]中使用的估计器为:
A ^ t = − V ( s t ) + r t + γ r t + 1 + ⋯ + γ T − t + 1 r T − 1 + γ T − t V ( s T ) (10) \hat A_t=-V(s_t)+r_t+\gamma r_{t+1}+\cdots+\gamma^{T-t+1}r_{T-1}+\gamma^{T-t}V(s_T)\tag{10} A^t​=−V(st​)+rt​+γrt+1​+⋯+γT−t+1rT−1​+γT−tV(sT​)(10)
其中, t t t表示在给定长度 T T T的轨迹段内, [ 0 , T ] [0,T] [0,T]中的时间索引。泛化此选择,我们可以使用广义优势估计(GAE)的截断形式,当 λ = 1 λ=1 λ=1时,可简化为:
A ^ t = δ t + ( γ λ ) δ t + 1 + ⋯ + ( γ λ ) T − t + 1 δ T − 1 , (11) \hat A_t=\delta_t+(\gamma \lambda)\delta_{t+1}+\cdots+(\gamma \lambda)^{T-t+1}\delta_{T-1},\tag{11} A^t​=δt​+(γλ)δt+1​+⋯+(γλ)T−t+1δT−1​,(11)
w h e r e δ t = r t + γ V ( s t + 1 ) − V ( s t ) (12) where\quad \delta_t=r_t+\gamma V(s_{t+1})-V(s_t)\tag{12} whereδt​=rt​+γV(st+1​)−V(st​)(12)
  算法1显示了使用固定长度轨迹段的近端策略优化(PPO)算法。每次迭代中,N个(并行)actors中的每一个都收集T个时间步长的数据。然后,我们在这些 N T NT NT数据时间步上构建替代损失函数,并使用mini-batch SGD(或通常是为了获得更好的性能的Adam)进行 K K K次迭代。

6.实验

6.1 目标函数的比较


6.2 与其他算法比较

A.超参数设置



Proximal Policy Optimization Algorithms翻译相关推荐

  1. 强化学习——Proximal Policy Optimization Algorithms

    文章目录 前言 为什么需要PPO TRPO PPO 前言 本文对论文<Proximal Policy Optimization Algorithms>进行总结,如有错误,欢迎指出. 为什么 ...

  2. 【文献阅读】Proximal Policy Optimization Algorithms

    Author: John Schulman 原文摘要 我们提出了一种新的强化学习的 策略梯度方法,该方法在 与环境互动中进行采样 和 使用随机梯度提升算法优化"surrogate" ...

  3. Proximal Policy Optimization (PPO) 算法理解:从策略梯度开始

    近端策略优化(PPO)算法是OpenAI在2017提出的一种强化学习算法,被认为是目前强化学习领域的SOTA方法,也是适用性最广的算法之一.本文将从PPO算法的基础入手,理解从传统策略梯度算法(例如R ...

  4. 深度增强学习PPO(Proximal Policy Optimization)算法源码走读

    原文地址:https://blog.csdn.net/jinzhuojun/article/details/80417179 OpenAI出品的baselines项目提供了一系列deep reinfo ...

  5. 强化学习笔记:PPO 【近端策略优化(Proximal Policy Optimization)】

    1 前言 我们回顾一下policy network: 强化学习笔记:Policy-based Approach_UQI-LIUWJ的博客-CSDN博客 它先去跟环境互动,搜集很多的 路径τ.根据它搜集 ...

  6. ChatGPT 使用 强化学习:Proximal Policy Optimization算法(详细图解)

    ChatGPT 使用 强化学习:Proximal Policy Optimization算法 强化学习中的PPO(Proximal Policy Optimization)算法是一种高效的策略优化方法 ...

  7. Proximal Policy Optimization (PPO)详解

    文章目录 On-policy v.s. Off-policy 将On-policy变为Off-policy PPO算法/TRPO算法 PPO2 总结 On-policy v.s. Off-policy ...

  8. Proximal Policy Optimization (PPO)

    1.On-policy v.s. Off-policy On-policy: 学习的智能体和与环境交互的智能体是同一个 Off-policy: 学习的智能体和与环境交互的智能体不是同一个 大白话就是, ...

  9. 李宏毅深度强化学习(国语)课程(2018) 笔记(二)Proximal Policy Optimization(PPO)

    李宏毅深度强化学习(国语)课程(2018)_哔哩哔哩_bilibili on-policy:要learn的agent和环境互动的agent是同一个,即agent一边跟环境互动,一边学习: off-po ...

最新文章

  1. 新记录诞生,腾讯云2分31秒打破ImageNet训练记录
  2. 一位职场老鸟的 10 年复盘,帮你避坑不吃亏!
  3. 浏览器显示XML文档
  4. 组织模式 - Introduction
  5. 将您的基于 Accelerator 的 SAP Commerce Cloud Storefront 迁移到 Spartacus Storefront
  6. 帧中继更具体配置信息
  7. 存储与硬盘挂载 200305
  8. mysql科目成绩百分比_Mysql学习经验总结【2】
  9. [Python] 学习资料汇总
  10. 用友NCCloud 补丁下载/用友ncc 补丁下载/nccloud 补丁下载
  11. 2020 数学建模国赛 B 题参考思路
  12. 【Python】绘制简易世界地图
  13. 我是如何出版一本书的?(2)
  14. 裸机linux分区,裸机装linux系统怎么操作?
  15. SEO优化收徒蜘蛛池是什么
  16. python 写文本文件出现乱码
  17. php怎么添加图书记录,PHP根据ISBN获取图书的方法
  18. layui样式 layui-body 占整个页面
  19. 从0开始创建vue工程化项目~
  20. 阿里内部总结“Flutter进阶笔记”,你收藏好了嘛?

热门文章

  1. python to_excel 时间格式_分别用Excel和python进行日期格式转换成时间戳格式
  2. RemoteViews之RemoteViews的内部机制
  3. ec20 模块移植 linux,移遠EC20 4G模塊Linux驅動移植和測試
  4. Win7计划任务命令
  5. 免费资源-成语答题小程序源码+教程
  6. Flink部署 完整使用 (第三章)
  7. 基于Android P版本PKMS详解二
  8. 《Access 2007开发指南(修订版)》一一2.7 操作查阅向导
  9. 三维建模教程——概念版摩托车
  10. MDIO/MDC接口