PPO(openai)介绍

Reading time ~1 minute

openai在《Proximal Policy Optimization Algorithms》提出了PPO。我们来看下:

摘要

我们提出了一个在RL中关于policy gradient方法的一个新家族,它可以在以下两者间做交替:通过与enviroment进行交互的方式sampling data,以及使用SGA(随机梯度上升)来最优化一个目标函数。标准的policy gradient方法会在每个data sample上执行一个梯度更新(gradient update),我们提出了一个新的目标函数,它可以允许多个关于minibatch updates的epochs。新的方法,我们称之为proximal policy optimization(PPO),它具有一些TRPO的优点,但更易于实际,更通用,并且具有更好的抽样复杂度(经验上)。我们的实验在许多benchmark任务上测试了PPO,包括仿真机器人运动(simulated robotic locomotion)和Atari游戏,我们展示了PPO的效果要好于其它online policy gradient方法,整体会在样本复杂度、简洁性和Wall-time上达到一个较好的平衡。

1.介绍

2.背景: Policy Optimization

2.1 Policy Gradient方法

Policy Gradient方法通过计算一个关于policy gradient的estimator,并将它插入到一个SGA(随机梯度上升)算法上。最常用的gradient estimator具有以下形式:

…(1)

其中:

  • 是一个stochastic policy
  • 是一个在timestep t时advatage function的estimator
  • 期望表示在一个会在sampling和optimization间做交替的算法中,一个有限batch的样本上的经验平均(empirical average)。

那些使用自动微分软件(automatic differentiation software)的实现,通过构建一个目标函数:它的梯度是policy gradient estimator,estimator 通过对以下的目标函数进行微分得到:

…(2)

在该loss 上使用相同的trajectory执行多个step的optimization时,这样做并不是空穴来风,经验上它通常会导致具有破坏性的大梯度更新(见6.1节)

2.2 Trust Region方法

在TRPO中,目标函数(”surrogate” objective)会服从在policy update的size上的一个constraint的方式最大化。特别的:

服从:

…(4)

此处,是在更新之前policy参数的向量。在对目标函数做一个线性近似、并且对constraint做一个二次方近似后,该问题可以使用共轭梯度算法(conjugate gradient)有效地被近似求解。

TRPO的理论证明建议我们使用一个正则项(penalty)来替代constraint,比如,对一些系数求解以下没有constraint的最优化问题:

…(5)

这遵循以下事实:一个固定的surrogate objective(它会计算在states上的最大KL)会形成在policy 一个下界(例如:一个pessimistic bound)。TRPO会使用一个hard constraint,而非一个penalty,因为它很难选择单个值在多个不同问题(或者甚至在单个问题中,其中特征会随学习过程发生变化)上效果好。因而,为了达到我们关于一阶算法的目标(模仿TRPO的单调提升),实验展示了,它不足以简单选择一个固定的penalty系数,并使用SGD对等式(5)的penalized objective进行最优化;需要额外的修改。

3.对Surrogate Objective进行裁减(Clip)

假设表示概率比值,因而。TRPO会最大化一个”surrogate”目标函数:

…(6)

上标CPI指的是保守策略迭代(conservative policy iteration)[KL02],其中该objective是被提出的。没有constraint后,对最大化将会导致一个过大的policy update;因而,我们现在会考虑如何去修改该objective,来惩罚将远离1的那些policy的变更

我们提出的主要的objective如下:

…(7)

其中epsilon是一个超参数,比如。该objective的动机如下。min中的第一项是。第二项 ,通过将概率进行clipping来修改surrogate objective,它会移除这样的动机:将移出区间外。最终,我们采用clipped和unclipped objective的最小值,因此,最终的objective是在unclipped objective上的一个下界(例如:一个pessimistic bound)。有了这个scheme,当对该objective做出提升时,我们只能忽略在概率上的变更,如果包含它会使得objective更糟糕。注意:对应围绕(比如:r=1)的一阶,然而,当远移时他们变得不同。图1画出了在上的单个项(比如:单个t);注意,概率 r是在或者上做裁减取决于advantage是正或负。

图1: 画出了surrogate function 的某一项(比如:单个timestep),作为概率比值r的一个函数,对于正的advantages(左)和负的advantages(右)。每个polit上的红色部分展示了optimization的起点(比如:r=1)。注意:会对所有这些项进行求和

图2: surrogate objectives,因为我们会在初始policy参数间插入,updated policy参数,我们会在PPO的一次迭代后计算。updated policy具有与intial policy相差0.02的KL divergence,这一点上是最大的。。。

图2提供了另一个关于surrogate objective 的来源。它展示了一些objectives是如何随着我们沿policy update的方向(通过PPO在一个continuous control问题上)变化的。我们可以看到,是在上的一个下界,它带有一个penalty,会对过大的policy update进行惩罚

4.Adaptive KL Penalty系数

另一种方法可以被做为是clipped surrogate objective的一个替代选择,这种方法为:在KL divergence上使用一个penalty,并对该penalty系数自适应(adapt)以便在每次policy update时能完成达到KL divergence 的一些target value。在我们的实验中,我们发现,KL penalty比clipped surrogate objective的效果要差,然而,我们在这里仍会包含它,因为它是一个很重要的baseline

在该算法是最简单实现中,我们会在每次policy update时执行以下steps:

  • 1.使用一些minibatch SGD的epochs,来优化KL-penalized objective:
  • 计算
    • if
    • if

更新后的被用于下一次policy update。有了该scheme,我们会偶尔看到那些KL divergence与存在很大差异的policy updates,然而,这很少见,因为会很快进行调整。上述关于参数1.5和2的选择是启发式的,但算法对它们非常不敏感。的初始值是另一个超参数,但实际上不是很重要,因为该算法会很快对它进行调整。

5.算法

前一节的surrogate losses可以被计算,并使用一个关于典型的policy gradient实现上一个很小变更的版本进行微分。对于使用自动微分的实现,一个简单的构建loss 来替代,会在该objective上执行多个SGA steps。

大多数用于计算variance-reduced advantage-function的estimators会使用一个学到的state-value function;例如,generalized advantage estimation[Sch+15a],或者finite-horizon estimators[Mni+16]。如果要使用一个在policy function和value function间共享参数的神经网络架构,我们必须使用这样一个loss function:它可以结合policy surrogate和一个value function error项。该objective可以进一步通过添加一个entropy bonus进行扩展来确保足够的探索(exploration),正如[Wil92, Mni+16]所建议的。通过组合这些项,我们可以获取以下的objective,它可以近似最大化每个迭代:

….(9)

其中:

  • 是系数
  • S表示一个entropy bonus
  • 是一个squared-error loss:

在[Mni+16]中普及的一种policy gradient实现,很适合使用RNN,可以为T timesteps运行policy(其中:T要比episode length要小很多),并使用收集到的样本进行一个upate。该种实现需要一个advantage estimator(它不会看到超过timestep T后的)。[Mni+16]中所使用的该estimator为:

…(10)

其中:t指的是time index ,在一个长度为T的trajectory segment内。

我们可以使用一个truncated版本的generalized advantage estimation对该方式进行泛化,当时即可以化简为等式(10):

….(11)(12)

使用固定长度的trajectory segments的一个PPO算法,如下所示。每个迭代中,(并行的)N个actors中的每个都会收集T timesteps的数据。接着,我们会在这些NT timesteps的数据上构建surrogate loss,并在K个epochs上使用minibatch SGD(或者,Adam)来进行optimize。

算法1

6.实验

参考

youtube MMoE排序系统

# 介绍youtube在2019公布了它的MMoE多目标排序系统《Recommending What Video to Watch Next: A Multitask Ranking System》。# 摘要在本paper中,我们介绍了一个大规模多目标排序系统,用于在工业界...… Continue reading

BERT4Rec介绍

Published on July 28, 2019

youtube推荐强化学习介绍

Published on June 20, 2019