Proximal Policy Optimization Algorithms

Proximal Policy Optimization Algorithms

    • Abstract
    • Introduction
    • Background
        • Policy Gradient Methods
        • Trust Region Methods
        • Clipped Surrogate Objective
        • Adaptive KL Penalty Cofficient
        • PPO Algorithm

openAI

Abstract

我们为强化学习提出了一种新的基于策略梯度(PG,Policy Gradient)的方法。该方法通过与环境相互作用来交替采样数据,同时使用随机梯度上升来优化一个替代的目标函数。虽然标准的策略梯度更新方法对每个采样数据执行一次梯度更新,但我们提出了一个新的目标函数,该目标函数是在multiple epoches上进行minibatch更新。

我们提出的新方法:近端策略优化PPO(proximal policy optimization),它有信赖域策略优化TRPO(trust region policy optimization)的部分优点,相比而言, 它比TRPO更通用,更容易实现,具有更好的采样复杂度(emperically)。

Introduction

本文试图寻找一种算法,在仅仅使用一阶优化的时候,该算法能够拥有TRPO的数据效率和可靠性,我们提出了一个新的目标函数,该目标函数有截断的概率比,而截断的概率比一般会造成对性能比较悲观的估计,即估计出性能下届。为了优化这个策略,我们在从策略中采样的数据进行选择,然后在采样的数据进行几个epoch的优化。
该算法在连续控制任务上表现很好。

Background

Policy Gradient Methods

策略梯度PG算法的工作原理是计算策略的估计量,并将其插入到随机梯度上升算法中。常用的梯度估计有以下形式

g ^ = E ^ t [ ∇ θ log ⁡ π θ ( a t ∣ s t ) A ^ t ] \hat{g}=\hat{\mathbb{E}}_{t}\left[\nabla_{\theta} \log \pi_{\theta}\left(a_{t} | s_{t}\right) \hat{A}_{t}\right] g^=E^t[θlogπθ(atst)A^t]

其中:
π θ \pi_{\theta} πθ是一个随机策略
A t {A}_{t} At t t t时刻的优势函数的估计器
E ^ t [ … ] \hat{\mathbb{E}}_{t}[\ldots] E^t[]是期望,表示采样值有限batch的平均经验值

该算法在抽样和优化之间及交替使用。
该算法是通过构造一个目标函数并使用自动微分软件的实现的,
该目标函数的梯度是策略梯度估计量;
该估计量 g ^ \hat{g} g^是通过对目标进行微分得到的。

L P G ( θ ) = E ^ t [ log ⁡ π θ ( a t ∣ s t ) A ^ t ] L^{P G}(\theta)=\hat{\mathbb{E}}_{t}\left[\log \pi_{\theta}\left(a_{t} | s_{t}\right) \hat{A}_{t}\right] LPG(θ)=E^t[logπθ(atst)A^t]
虽然人们推荐使用相同的轨迹对loss L P G L^{P G} LPG进行多步优化,但这并没有证明是合理的,而且从经验上讲,这会导致破坏性的大规模策略更新。

Trust Region Methods

在TRPO,在策略更新大小时服从约束条件来最大化目标函数。
maximize ⁡ θ E ^ t [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ t ] \underset{\theta}{\operatorname{maximize}} \quad \hat{\mathbb{E}}_{t}\left[\frac{\pi_{\theta}\left(a_{t} | s_{t}\right)}{\pi_{\theta_{\mathrm{old}}}\left(a_{t} | s_{t}\right)} \hat{A}_{t}\right] θmaximizeE^t[πθold(atst)πθ(atst)A^t]

s u b j e c t t o E ^ t [ KL ⁡ [ π θ  old  ( ⋅ ∣ s t ) , π θ ( ⋅ ∣ s t ) ] ] ≤ δ subject to \quad \hat{\mathbb{E}}_{t}\left[\operatorname{KL}\left[\pi_{\theta_{\text { old }}}\left(\cdot | s_{t}\right), \pi_{\theta}\left(\cdot | s_{t}\right)\right]\right] \leq \delta subjecttoE^t[KL[πθ old (st),πθ(st)]]δ

其中, θ o l d \theta_{old} θold是更新前的策略的参数向量。在对目标函数机型线性逼近和对约束进行二逼近后,利用共轭梯度算法可以有效的近似求解该问题。
证明TRPO的理论实际上建议使用惩罚而不是约束,即解决无约束优化问题。

maximize ⁡ θ E ^ t [ π θ ( a t ∣ s t ) π θ  old  ( a t ∣ s t ) A ^ t − β KL ⁡ [ π θ  old  ( ⋅ ∣ s t ) , π θ ( ⋅ ∣ s t ) ] ] \underset{\theta}{\operatorname{maximize}} \hat{\mathbb{E}}_{t}\left[\frac{\pi_{\theta}\left(a_{t} | s_{t}\right)}{\pi_{\theta_{\text { old }}}\left(a_{t} | s_{t}\right)} \hat{A}_{t}-\beta \operatorname{KL}\left[\pi_{\theta_{\text { old }}}\left(\cdot | s_{t}\right), \pi_{\theta}\left(\cdot | s_{t}\right)\right]\right] θmaximizeE^t[πθ old (atst)πθ(atst)A^tβKL[πθ old (st),πθ(st)]]

其中, β \beta β表示惩罚的系数。在策略 π \pi π的性能上,这遵循了一个事实,即一个确定的替代目标函数(它计算状态的最大 K L KL KL而不是均值)形成一个更低的下界。TRPO使用一个硬约束而不是惩罚,因为很难选择一个在不同问题上或甚至在单个问题中表现良好的值,在这个问题中,特性随学习过程而变化。因此,为了实现一阶算法模拟TRPO的单调改进,实验表明,仅仅选择一个固定的惩罚系数并用SGD优化惩罚目标方程是不够的,需要进行额外的修改.

Clipped Surrogate Objective

r t ( θ ) r_{t}(\theta) rt(θ)表示新旧策略动作该利率比
r t ( θ ) = π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) r_{t}(\theta)=\frac{\pi_{\theta}\left(a_{t} | s_{t}\right)}{\pi_{\theta_{\mathrm{old}}\left(a_{t} | s_{t}\right)}} rt(θ)=πθold(atst)πθ(atst)
因此, r ( θ o l d ) = 1 r\left(\theta_{\mathrm{old}}\right)=1 r(θold)=1

TRPO 是最大化替代目标函数
L C P I ( θ ) = E ^ t [ π θ ( a t ∣ s t ) π θ  old  ( a t ∣ s t ) A ^ t ] = E ^ t [ r t ( θ ) A ^ t ] L^{C P I}(\theta)=\hat{\mathbb{E}}_{t}\left[\frac{\pi_{\theta}\left(a_{t} | s_{t}\right)}{\pi_{\theta_{\text { old }}}\left(a_{t} | s_{t}\right)} \hat{A}_{t}\right]=\hat{\mathbb{E}}_{t}\left[r_{t}(\theta) \hat{A}_{t}\right] LCPI(θ)=E^t[πθ old (atst)πθ(atst)A^t]=E^t[rt(θ)A^t]

上标 C P I CPI CPI代表连续的策略迭代
在目标函数中移除了约束项, L C P I L^{C P I} LCPI将会导致策略更新过度,因此,我们现在考虑如何修改目标函数来惩罚策略的变化,其中,策略的目标是从 r t ( θ ) r_{t}(\theta) rt(θ)来远离1.

修改后的目标函数如下所示:
L C L I P ( θ ) = E ^ t [ min ⁡ ( r t ( θ ) A ^ t , clip ⁡ ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ^ t ) ] L^{C L I P}(\theta)=\hat{\mathbb{E}}_{t}\left[\min \left(r_{t}(\theta) \hat{A}_{t}, \operatorname{clip}\left(r_{t}(\theta), 1-\epsilon, 1+\epsilon\right) \hat{A}_{t}\right)\right] LCLIP(θ)=E^t[min(rt(θ)A^t,clip(rt(θ),1ϵ,1+ϵ)A^t)]
其中:
ϵ \epsilon ϵ, epsilon,是超参数,一般取值为0.2

目标函数修改的出发点:
min的第一项是 L C L I P L^{C L I P} LCLIP
min的第二项是 clip ⁡ ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ^ t ) \operatorname{clip}\left(r_{t}(\theta), 1-\epsilon, 1+\epsilon\right) \hat{A}_{t} ) clip(rt(θ),1ϵ,1+ϵ)A^t),即通过截断概率比来修改代理函数, 这保证了 r t r_{t} rt始终处于区间 [ 1 − ϵ , 1 + ϵ ] [1-\epsilon, 1+\epsilon] [1ϵ,1+ϵ]内。
最后,我们取截断的和未截断的目标函数,因此最终的目标函数是未截断目标函数的下界。在这个方案中,只有当概率比的变化会使目标改善时,我们才忽略概率比的变化,当概率比的变化会使目标恶化时,我们才将概率比包括在内。

Adaptive KL Penalty Cofficient

另一种方法,这可以作为截断代理目标的代替方法,是对KL divergence进行惩罚,调整惩罚系数这样可以实现一些每次策略更新时KLdivergence的目标值。在我们的实验中,我们发现,KL惩罚的表现不如截断代理目标,然鹅我们这里介绍它是因为它是一个非常重要的基础。

在最简单的算法例程中,我们在每次策略更新运行下列步骤:

使用几个时期的最小批SGD优化KL惩罚目标
L K L P E N ( θ ) = E ^ t [ π θ ( a t ∣ s t ) π θ  old  ( a t ∣ s t ) A ^ t − β KL ⁡ [ π θ  old  ( ⋅ ∣ s t ) , π θ ( ⋅ ∣ s t ) ] ] L^{K L P E N}(\theta)=\hat{\mathbb{E}}_{t}\left[\frac{\pi_{\theta}\left(a_{t} | s_{t}\right)}{\pi_{\theta_{\text { old }}\left(a_{t} | s_{t}\right)}} \hat{A}_{t}-\beta \operatorname{KL}\left[\pi_{\theta_{\text { old }}}\left(\cdot | s_{t}\right), \pi_{\theta}\left(\cdot | s_{t}\right)\right]\right] LKLPEN(θ)=E^t[πθ old (atst)πθ(atst)A^tβKL[πθ old (st),πθ(st)]]

计算 d = E ^ t [ K L [ π θ  old  ( ⋅ ∣ s t ) , π θ ( ⋅ ∣ s t ) ] ] ∣ d=\hat{\mathbb{E}}_{t}\left[\mathrm{KL}\left[\pi_{\theta_{\text { old }}}\left(\cdot | s_{t}\right), \pi_{\theta}\left(\cdot | s_{t}\right)\right]\right] | d=E^t[KL[πθ old (st),πθ(st)]]
d < d  targ  / 1.5 , β ← β / 2 d > d  targ  × 1.5 , β ← β × 2 \begin{array}{l}{d<d_{\text { targ }} / 1.5, \beta \leftarrow \beta / 2} \\ {d>d_{\text { targ }} \times 1.5, \beta \leftarrow \beta \times 2}\end{array} d<d targ /1.5,ββ/2d>d targ ×1.5,ββ×2

被更新的用来下次的策略更新。用这个方案,我们偶尔会看到策略更新到KL divergence 和d非常非常不一样的地方,然鹅,这些情况是罕见的,会很快调整。参数1.5和2是通过试验得到的,但是该算法对此并不敏感。的初始值是另一个超参数,但是在实践中并不重要因为算法会很快对他进行调整。

PPO Algorithm

你可能感兴趣的:(PPO,RL)