• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

PPO算法经典论文阅读

武飞扬头像
赛亚茂
帮助2

PPO算法经典论文阅读

PPO算法是强化学习中的经典算法,其全称为近端策略优化(Proximal Policy Optimization)。

学新通

1.引言

首先在论文的引言部分给出了经典的强化学习算法的不足之处:许多的经典强化学习算法在大型的模型、数据采样效率、鲁棒性(无需手动超参调整)上都有很大的提升空间。Q-Learning算法(包括函数逼近类算法)在许多简单问题上应用存在局限性,例如要满足状态空间与动作空间的离散型要求,并且其理解起来也是一件很困难的事情、而vanilla policy gradient算法的数据效率与鲁棒性较差、置信域优化算法(TRPO)相对来说比较复杂,而且对于包含噪声或参数共享(在策略函数与价值函数之间有其他的辅助任务需求)的网络结构不兼容(比如dropout)。

该论文的主要目的是为了解决上述问题,在TRPO的基础上运用一阶优化提高其数据的使用效率与良好的表现。创新的使用了一种对目标函数使用限幅概率比(clipped probabilty ratios)的方法,对原有策略的表现做出悲观主义的估计(个人理解这里是对原有策略目标函数 J ( θ ) J(\theta) J(θ)的下界做出估计)。为了优化策略 π θ \pi_{\theta} πθ,我们交替从策略中采样数据,并对采样数据执行几个优化阶段。

实验比较了好几个代理者算法,发现其中采用限幅概率比(clipped probabilty ratios)的方法表现效果最佳。相比于之前的一些强化学习算法,PPO在连续控制问题上比之前的算法效果都要好。在Atari游戏中,其表现要显著强于A2C和ACER算法,因为其是更加简单的(从策略的采样复杂度的角度上来说)。

2.背景

2.1 策略梯度方法(Policy Gradient Methods)

策略梯度方法主要通过计算一个estimator( g ^ \hat g g^),并且将其用于随机梯度下降算法中实现策略的梯度上升功能( θ ← θ α g ^ \theta \leftarrow \theta \alpha \hat g θθ αg^)。比较常用的一种estimator如下所示:
g ^ = E ^ t [ ∇ θ log ⁡ π θ ( a t ∣ s t ) A ^ t ] \hat g = \hat E_t[\nabla_{\theta}\log \pi_{\theta}(a_t|s_t)\hat A_t] g^=E^t[θlogπθ(atst)A^t]
其中 π θ \pi_{\theta} πθ是随机策略函数, A ^ t \hat A_t A^t是在第 t t t个步长时的优势函数 A ( s t , a t ) A(s_t,a_t) A(st,at)的估计值。

由之前的知识我们可以知道,这里的 A ^ t \hat A_t A^t如果是用MonteCarlo方法来估计即: A ^ t = G t − v ω ( s t ) \hat A_t = G_t-v_{\omega}(s_t) A^t=Gtvω(st),便是Reinforce with baseline 方法。如果采用 A ^ t = Q π θ ( s t , a t ) − v ω ( s t ) \hat A_t = Q_{\pi_{\theta}}(s_t,a_t)-v_{\omega}(s_t) A^t=Qπθ(st,at)vω(st)来估计,便是A2C方法。

其中: E ^ t [ . . . ] \hat E_t[...] E^t[...]表明采用在一群采样的样本之间采用经验平均值来估计,即: E ^ t [ . . . ] = 1 n ∑ t = 1 n [ . . . ] \hat E_t[...]=\frac{1}{n}\sum_{t=1}^n[...] E^t[...]=n1t=1n[...]。由于可以用带用自动梯度计算的软件对 g ^ \hat g g^进行计算,因此 g ^ \hat g g^可以视为对以下目标进行梯度计算 ∇ θ \nabla_{\theta} θ:
L P G ( θ ) = E ^ t [ log ⁡ π θ ( a t ∣ s t ) A ^ t ] L^{PG}(\theta)=\hat E_t[\log \pi_{\theta}(a_t|s_t)\hat A_t] LPG(θ)=E^t[logπθ(atst)A^t]
尽管上式在用多个轨迹(trajectory)对误差 L P G ( θ ) L^{PG}(\theta) LPG(θ)进行多步的参数更新优化时有一定的优势。但是这么做理由并不充分(原话是doing so is not well-justified我不知道怎么翻译比较合适),并且这常常会导致一个毁灭性的极大范围的策略参数 θ \theta θ的更新问题(个人认为这里想强调的是学习率 α \alpha α不好调,容易造成参数的估计出现问题)。

2.2 置信域方法

在TRPO算法中,目标函数(或者称为代理函数)是一个被要求最大化的目标函数,其被约束在一系列的策略更新的约束下。具体而言该优化问题可以描述如下:
max ⁡ θ E ^ t [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ t ] s . t . E t ^ [ K L [ π θ o l d ( . ∣ s t ) , π θ ( . ∣ s t ) ] ] ≤ δ \max_{\theta}\hat E_{t}[\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}(a_t|s_t)}}\hat A_t]\\s.t.\hat{E_t}[KL[\pi_{\theta_{old}}(.|s_t),\pi_{\theta}(.|s_t)]]\leq \delta θmaxE^t[πθold(atst)πθ(atst)A^t]s.t.Et^[KL[πθold(.∣st),πθ(.∣st)]]δ
其中, θ o l d \theta_{old} θold是在策略函数 π \pi π更新之前的 θ \theta θ,是个向量。该约束问题可以在对目标在 θ o l d \theta_{old} θold进行一阶近似(泰勒一阶展开),在约束处对 θ o l d \theta_{old} θold进行二阶近似(泰勒二阶展开)如下后,利用共轭梯度法求解。
max ⁡ θ g ( θ o l d ) ( θ − θ o l d ) s . t . 1 2 ( θ − θ o l d ) T F ( θ o l d ) ( θ − θ o l d ) ≤ δ \max_{\theta} g(\theta_{old})(\theta-\theta_{old})\\s.t.\frac{1}{2}(\theta-\theta_{old})^TF(\theta_{old})(\theta-\theta_{old})\leq \delta θmaxg(θold)(θθold)s.t.21(θθold)TF(θold)(θθold)δ
其中: F ( θ ) = E s t , a t ∼ π θ [ ∇ θ log ⁡ π ( a t ∣ s t ; θ ) [ ∇ θ log ⁡ π ( a t ∣ s t ; θ ) ] T ] F( \theta )=E_{s_t,a_t\sim \pi_{\theta }}[\nabla_{\theta }\log \pi(a_t|s_t;\theta)[\nabla_{\theta }\log \pi(a_t|s_t;\theta)]^T] F(θ)=Est,atπθ[θlogπ(atst;θ)[θlogπ(atst;θ)]T],而 g ( θ ) = ∇ θ E π ( θ o l d ) [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ t ] g(\theta)=\nabla_ \theta E_{\pi(\theta_{old})}[\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}(a_t|s_t)}}\hat A_t] g(θ)=θEπ(θold)[πθold(atst)πθ(atst)A^t]

事实上,上述的置信域优化问题的求解一般建议采用罚函数法求解,而并不是利用带约束优化问题的常规套路求解。将上述带约束的优化问题转化为如下的无约束优化问题:
max ⁡ θ E ^ t [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ t − β K L [ π θ o l d ( . ∣ s t ) , π θ ( . ∣ s t ) ] ] \max_{\theta}\hat E_{t}[\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}(a_t|s_t)}}\hat A_t-\beta KL[\pi_{\theta_{old}}(.|s_t),\pi_{\theta}(.|s_t)]] θmaxE^t[πθold(atst)πθ(atst)A^tβKL[πθold(.∣st),πθ(.∣st)]]
对于其中的 β \beta β为罚系数。事实上上式中对于 K L KL KL散度实际使用时,用最大散度替代平均散度实现约束效果。而TRPO算法使用时一般用硬约束而非罚函数,这是因为选择 β \beta β时,不同的 β \beta β的选择会产生许多不同的问题。因此为了实现我们一阶优化算法的目标,选择一个固定的惩罚系数 β \beta β用SGD优化上面的罚方程是不现实的(这里主要强调的是调超参 β \beta β的问题)。

3.剪裁代理目标(Clipped Surrogate Objective)

r t ( θ ) = π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) r_t(\theta)=\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)} rt(θ)=πθold(atst)πθ(atst),有 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 t ∣ s t ) A ^ t ] = E ^ t [ r t ( θ ) A ^ t ] L^{CPI}(\theta)=\hat E_t[\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}\hat A_t]=\hat E_t[r_t(\theta)\hat A_t] LCPI(θ)=E^t[πθold(atst)πθ(atst)A^t]=E^t[rt(θ)A^t]
其中CPI指的是保守策略迭代(conservative policy iteration)。如果没有KL散度的约束,最大化 L C P I ( θ ) L^{CPI}(\theta) LCPI(θ)将导致一个大的策略参数的过估计。因此我们考虑修正这个目标,去惩罚比率 r t ( θ ) r_t(\theta) rt(θ)远离1时的情况

我们主要考虑如下所示的最大化目标函数:
L C L I P ( θ ) = E ^ t [ min ⁡ ( r t ( θ ) A ^ t , c l i p ( r t ( θ ) , 1 − ε , 1 ε ) A ^ t ) ] L^{CLIP}(\theta)=\hat E_t[\min(r_t(\theta)\hat A_t,\mathbf{clip}(r_t(\theta),1-\varepsilon,1 \varepsilon)\hat A_t) ] LCLIP(θ)=E^t[min(rt(θ)A^t,clip(rt(θ),1ε,1 ε)A^t)]
而其中 ε \varepsilon ε是一个待调的超参,一般可以设为 ε = 0.2 \varepsilon = 0.2 ε=0.2,上式的第一个最小项是 L C P I ( θ ) L^{CPI}(\theta) LCPI(θ)。第二个最小项是 c l i p ( r t ( θ ) , 1 − ε , 1 ε ) A ^ t ) \mathbf{clip}(r_t(\theta),1-\varepsilon,1 \varepsilon)\hat A_t) clip(rt(θ),1ε,1 ε)A^t),通过切片比率修正了代理函数:
c l i p ( r t ( θ ) , 1 − ε , 1 ε ) = { 1 − ε , r t ( θ ) ≤ 1 − ε r t ( θ ) , 1 − ε ≤ r t ( θ ) ≤ 1 ε 1 ε , r t ( θ ) ≥ 1 ε \mathbf{clip}(r_t(\theta),1-\varepsilon,1 \varepsilon)=\begin{cases}1- \varepsilon,r_t(\theta)\leq 1- \varepsilon\\ r_t(\theta)\quad,1- \varepsilon\leq r_t(\theta)\leq 1 \varepsilon\\1 \varepsilon ,r_t(\theta)\geq1 \varepsilon\end{cases} clip(rt(θ),1ε,1 ε)= 1ε,rt(θ)1εrt(θ),1εrt(θ)1 ε1 ε,rt(θ)1 ε
A ^ t \hat A_t A^t取不同的符号时,其 L C L I P ( θ ) L^{CLIP}(\theta) LCLIP(θ) r r r的关系如下图所示:

学新通

个人理解:当 A ^ t ≥ 0 \hat A_t\geq 0 A^t0时,为了达到目标 max ⁡ L C L I P ( θ ) \max L^{CLIP}(\theta) maxLCLIP(θ),限制 r t ( θ ) r_t(\theta) rt(θ)只在小于 1 ε 1 \varepsilon 1 ε时有增大趋势。而当 r t ( θ ) r_t(\theta) rt(θ)过大即 r t ( θ ) ≥ 1 ε r_t(\theta)\geq 1 \varepsilon rt(θ)1 ε时,限制其 L C L I P ( θ ) L^{CLIP}(\theta) LCLIP(θ)的继续增大。这样对于那些使得 r t ( θ ) r_t(\theta) rt(θ)过大的 θ \theta θ,其目标函数 L C L I P ( θ ) L^{CLIP}(\theta) LCLIP(θ)不会更大,也就不在 θ \theta θ的搜索的考虑范围之内。因此采用搜索算法搜索 θ \theta θ时不容易搜索到使得 r t ( θ ) r_t(\theta) rt(θ)过大的 θ \theta θ。达到在尽可能置信域内搜索 θ \theta θ的效果。当$\hat A_t\leq 0 $时,同理依然如此。

对比不同方法在连续控制问题中的调整参数 θ \theta θ对散度 K L ( θ , θ o l d ) KL(\theta,\theta_{old}) KL(θ,θold)的影响效果如下图所示:

学新通

该图可以看出在初始参数 θ o l d \theta_{old} θold的一次PPO算法迭代之后, K L ( π θ , π θ o l d ) KL(\pi_{\theta},\pi_{\theta_{old}}) KL(πθ,πθold)几乎最大值才是0.02。这充分护住了 θ \theta θ θ o l d \theta_{old} θold的置信域之内。该图来自于 Hopper-v1问题,超参数如下:

学新通

4.自适应罚函数系数方法

前面讲到采用罚函数法进行参数更新时,主要是罚函数系数 β \beta β的选取比较困难。而现在一种克服方法是自适应调整系数 β \beta β

其优化目标如下:
max ⁡ L K L P E N ( θ ) = E t ^ [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ t − β K L [ π θ o l d ( . ∣ s t ) , π θ ( . ∣ s t ) ] ] \max L^{KLPEN}(\theta)=\hat{E_t}[\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}(a_t|s_t)}}\hat A_t-\beta KL [\pi_{\theta_{old}}(.|s_t),\pi_{\theta}(.|s_t)]] maxLKLPEN(θ)=Et^[πθold(atst)πθ(atst)A^tβKL[πθold(.∣st),πθ(.∣st)]]
计算 d = E ^ t [ K L [ π θ o l d ( . ∣ s t ) , π θ ( . ∣ s t ) ] ] d=\hat E_t[KL [\pi_{\theta_{old}}(.|s_t),\pi_{\theta}(.|s_t)]] d=E^t[KL[πθold(.∣st),πθ(.∣st)]],当 d ≤ d t a r g 1.5 d\leq \frac{d_{targ}}{1.5} d1.5dtarg, β ← β 2 \beta \leftarrow \frac{\beta}{2} β2β;当 d ≥ 1.5 d t a r g d\geq 1.5d_{targ} d1.5dtarg, β ← 2 β \beta \leftarrow 2\beta β2β。值得一提的是 β \beta β的初值以及参数1.5和2对算法本身并不敏感。这是因为算法会在使用中自动判断并且调整参数。

5.算法部分

学新通
在网上找了一个比较详细的伪代码图:
学新通

算法中优势函数的计算如下(具体算法过程不过多描述请参考原论文):

学新通

6.实验部分

不过多描述,就给张图:
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgcjbga
系列文章
更多 icon
同类精品
更多 icon
继续加载