原文地址:http://www.jb51.cc/article/p-ymjhzpzs-boa.html
一、背景
深度学习的兴起让增强学习这个古老的机器学习分支迎来一轮复兴。它们的结合领域-深度增强学习(Deep reinforcement learning,DRL)随着在一系列极具挑战的控制实验场景及其它跨领域的成功应用,现在已是各大顶级AI会议的热门topic之一。之前两篇杂文《深度增强学习(DRL)漫谈 - 从DQN到AlphaGo》和《深度增强学习(DRL)漫谈 - 从AC(Actor-Critic)到A3C(Asynchronous Advantage Actor-Critic)》 瞎侃了一些当前流行的DRL方法(主要由DeepMind主导)。这篇文章再来聊一下另一个相对独立的方法分支(主要由OpenAI主导)。近年来,学界开始将优化方法中的信赖域(Trust region)方法引入增强学习,并在各种实验场景中取得了良好的效果。其中典型的有TPRO和受其影响衍生出的一系列前沿算法,如PPO,Trust-PCL,ACER等。其中PPO已成为OpenAI的默认增强学习算法。
这里准备聊一下它们的前生今世。信赖域系增强学习方法,顾名思义,来源于优化论中的信赖域方法和机器学习中增强学习的结合。那咱们先话分两头聊下这两部分,先从信赖域方法开始。在Jorge Nocedal和Stephen J. Wright的《Numerical Optimization》一书的第2.2节介绍了解优化问题的两种策略-line search和trust region。本质上它们的作用都是在优化迭代过程中从当前点找寻下一点。它们的最大区别是先确定步长还是先确定方向。Line search方法先确定方向再确定步长。而trust region方法则先把搜索范围缩小到一个小的范围,小到能够用另一个函数(Model function)去近似目标函数(Objective function),然后通过优化这个model function来得到参数更新的方向及步长。在该书的第三和第四章分别着力介绍了line search和trust region方法,感兴趣可以进一步了解。
另一头我们从增强学习中的策略梯度(Policy gradient,PG)方法说起。PG方法是RL中非常重要而又历史悠久的一类方法。早在1992年Ronald J. Williams提出的REINFORCE算法就是PG的雏形。它的基本思想是考虑由参数
此后,Kakade在2001年的论文《Natural Policy Gradient》将自然梯度引入增强学习中的PG方法。策略参数的更新方向就变为自然梯度。Peters等人在2005年的论文《Natural Actor-Critic》中讨论了它与AC框架的结合。之后在论文《Reinforcement Learning of Motor Skills with Policy Gradients》中对这些工作有些总结。
有了这些背景知识后,下面从几篇经典论文中一窥其发展历程。这些方法之间关系大体如下:
二、相关论文选读
《Trust Region Policy Optimization》 Schulman,J.,Levine,S.,Moritz,P.,Jordan,M. I. & Abbeel,P. 2015
这篇论文中提出了经典的TRPO方法。Trust region policy optimization(TRPO)是一种用于优化策略且保证策略单调改进的迭代方法。该方法主要解决的问题是使得策略更新后目标函数单调非减,更具体地,就是要选择合适的步长。因为如果该条件不能保证,训练过程中策略很容易会变得更差,甚至最后无法收敛。随着DRL的兴起,现在普遍用深度神经网络来表示策略。这样,策略的更新就更容易受到bad update的影响,单调非减的约束就显得尤为重要。
Kakade在2002年的论文《Approximately Optimal Approximate Reinforcement Learning》中提出了conservative policy iteration(CPI)方法,该方法在一定的前提下(restart distribution和approximate greedy policy)能找到近似的最优策略。定义策略性能(Policy performance)为期望累计折扣回报,记为
其中
实际中,直接优化这个代理函数会导致步长非常小,TRPO的做法是用前后策略的KL散度的约束(即trust region constraint)
整个算法的流程有3步:首先使用single-path或vine采样得到一系列状态-动作对和蒙特卡洛(Monte-Carlo,MC)法估计的Q函数值。然后通过对这些样本求平均得到优化问题中目标和约束的估计。最后,近似解决该约束优化问题,文中采用的是conjugate gradient(CG)法加上line search的做法。至此,优化问题可写为:
为了计算参数更新方向,先对约束中的KL散度作二次近似
《Proximal Policy Optimization Algorithms》 Schulman,Wolski,F.,Dhariwal,Radford,A. & Klimov,O. 2017
PG方法的缺点是数据效率和鲁棒性不好。同时TRPO方法又比较复杂,且不兼容dropout(在深度神经网络训练过程中按照一定概率对网络单元进行丢弃)和参数共享(策略和值函数间)。这篇论文提出了PPO算法,它是对TRPO算法的改进,更易于实现,且数据效率更高。TRPO方法中通过使用约束而非惩罚项来保证策略更新的稳定性,主要原因是作为惩罚项的话会引入权重因子,而这个参数难以调节。TRPO中为了解优化问题,先线性近似目标函数,二阶近似约束,最后通过conjugate gradient算法和line search求解。而这篇文章尝试通过一阶优化的方法来解。与TRPO中用约束来限制策略更新幅度不同,PPO中采用了惩罚项,或者说正则项的做法。文中提出了基于clipped probability ratio的目标函数。首先定义probability ratio
其中
另外一种目标函数是采用自适用的KL惩罚项系数,虽然实验中效果不及上面clipping目标函数。它的目标函数为:
当策略更新前后KL散度小于预定值时,惩罚项系数
其中的
《Emergence of Locomotion BehavIoUrs in Rich Environments》 Heess,N. et al. 2017
DeepMind在该论文中提出了分布式的PPO算法(DPPO)。如它的名字,它是对上面PPO算法的改进。很多的RL算法假设有well-defined的回报函数。但在很多场景中,尤其是连续动作空间控制问题中,这个假设并不成立。本文讨论的一个重点就是如何只利用简单的回报函数,通过丰富多变的环境来学习到稳定的行为。为了达到这个目的,需要改善增强学习算法的伸缩性。
我们知道,PG方法的缺点是variance高,且对超参数敏感。解决方法之一就是上面提到的trust region约束,TRPO就是基于该基本思想。PPO将trust region约束实现为正则项。而在DPPO算法中,数据的收集和梯度的计算被分布到多个worker中,思想类似于A3C算法。原始的PPO算法通过完整的回报和估计策略优势。而为了便于使用batch update的RNN,这里使用了K-step returns来估计策略优势。DPPO算法分为两部分-chief和worker。worker部分在每次迭代中依次做M步策略参数和B步值函数参数的更新。chief部分从worker收集梯度,收集指定个数后,将它们的均值更新到总的参数。对于每个worker,每轮迭代中按当前策略执行T步,然后把它们按K个数据一份分好,对于每K步样本,估计优势函数,然后分别通过梯度
《High-Dimensional Continuous Control Using Generalized Advantage Estimation》 Schulman,P. 2016
PG方法中经常会采用神经网络作为非线性函数逼近器。但有两个问题:一是需要大量的样本;二是在数据并不稳定的情况下策略无法稳定更新。第一个问题可以用优势函数的指数加权估计(Exponentially-weighted estimator)解决。第二个问题可以用对策略和值函数(用神经网络表示)的trust region优化来解决。
PG是估计参数化概率策略的经典方法。PG方法中的每次更新应该提高那些能够好于平均的动作的概率,同时减少差于平均动作的概率。但是其variance很高,因此AC算法通过使用值函数代替经验回报(Empirical return)以引入bias为代价降低variance。但事实上bias有时往往更加有害。这篇论文主要讨论在控制bias的前提下大大减少variance。以
其中选择优势函数
这里把discounted MDP中的折扣因子
这里的策略和值函数都是采用神经网络表示。和TRPO方法类似,这里也用了trust region方法。不同的是它除了用于策略更新,还用于值函数估计。
《Sample Efficient Actor-Critic with Experience Replay》 Wang,Z. et al. 2017
之前很多RL方法的成功需要大量模拟,也就是说它们是样本利用率不高。像DQN这样的基于值函数估计方法在这方面会好些,但DQN有自己的缺点,如不能用于连续动作空间。另外PG方法中经典的A3C算法也有样本利用率低的问题。因此,这篇文章的目标就是要设计稳定的数据效率高的AC方法并能应用于连续和离散的动作空间。本文引入了Actor critic with experience replay(ACER)算法,它和DQN的性能差不多,且比A3C在Atari实验场景中和连续控制领域的数据效率好很多。ACER算法引入很多创新点,如truncated importance sampling with bias correction,stochastic dueling network architectures和efficient trust region policy optimization。这里主要看下它对TRPO的改进。
TRPO算法中采用了conjugate gradient方法求解,会有很多Fisher-vector乘积运算。因此在大规模问题中计算量十分大。与TRPO方法通过约束条件限制策略更新,ACER算法中维护average policy network用于表示过往策略的滑动平均,并保持策略更新不偏离这个均值。这个average policy network用
注意该约束为线性,因此整个问题可转为二次规划问题,有解析解:
直观上,这个解表示在约束满足的情况下,则解即为
《Constrained Policy Optimization》 Achiam,Held,D.,Tamar,A. & Abbeel,P. 2017
有些场景下,我们需要限定约束防止灾难性后果。比如工业机器人或者飞行器控制,如果不加限制可能会导致经济损失甚至有安全隐患。文章提出Constrained Policy Optimization(CPO)方法,是一种可以保证在每一次迭代中满足约束的通用策略搜索算法。
基于CMDP(constrained Markov decision process)模型。该模型引入一组代价函数
具体地,选定
当参数空间维度很大时,上式的计算量非常大。把目标函数和代价约束通过线性近似,KL散度约束通过泰勒二阶展开近似后,可得:
该问题为凸优化,可通过对偶问题解决。先构造更易解的对偶问题,它是有解析解的(附录定理 2)。解完对偶问题,即可根据对偶问题的解构造原问题的解。但由于近似误差,可能解并不能满足约束了,因此,还需要进行回溯线搜索(Backtracking linesearch)保证满足约束。
《Bridging the Gap Between Value and Policy Based Reinforcement Learning》 Nachum,O.,Norouzi,M.,Xu,K. & Schuurmans,D. 2017
这篇论文中提出了Path Consistency Learning (PCL)算法。我们知道,最初RL算法分value-based和policy-based两大类。policy-based方法最大的缺点是效率低。另外策略梯度通过rollout来估计的话会导致variance很大。为了解决这个问题,AC算法通过值函数估计来替代rollout估计,以引入bias为代价减小了variance。尽管如此,如果这个值函数估计是on-policy的话仍然会面临样本数据效率的问题(因为要么用on-policy数据,要么更新足够慢以防止bias)。而off-policy算法(如Q-learning)现实使用中需要花很大力气进行超参数调节才能稳定。为了结合on-policy训练的无偏性和稳定性,和off-policy的数据效率,off-policy AC方法出现了,但它仍没有解决在有函数近似(Function approximation)下的off-policy学习的一些理论问题。在这个背景下,这篇文章研究了熵正则化下策略优化和softmax value consistency的关系,提出了一种稳定的off-policy学习方法。
首先假设策略是以神经网络定义的分布
其中
文中定理1给出了对于任意状态和动作的时域一致性属性(temporal consistency property)。它可以被推广到多步情况下(即文中推论 2):
即对于给定状态动作序列下的时域一致性。基于此,PCL的目标是对于给定子轨迹(Sub-trajectory),上式中等式左边和右边之差尽可以接近于0。设
其中
如果将soft consistency error用Q函数来表示的话,
它将策略和值函数结合成一个模型,然后只要通过梯度更新一个参数
《Trust-PCL: An Off-Policy Trust Region Method for Continuous Control》 Nachum,D. 2017
TRPO为代表的trust region系方法一个缺点是需要大量和环境的交互。Google Brain提出的Trust-PCL是一种off-policy trust region算法,是对上面的PCL算法的改进。它既保证了优化的稳定性又充分利用了off-policy数据提高了样本效率。现有的off-policy方法(包括DDPG)虽提高了数据效率,但是代价是优化的稳定性。另外DDPG高度依赖于超参数选择和初始化。另一方面,为了提高稳定性和policy-based RL方法的收敛速度,Kadade基于Amari的工作提出了natural policy gradient算法,继而Schulman根据该工作提出了TRPO。但它的缺点是无法利用off-policy数据。一个自然的想法就是结合这两者的优点,兼具trust region policy-based方法的稳定性,和好的样本数据效率。
多数的policy-based方法(如REINFORCE算法)的基本思想是先参数化策略然后最大化期望回报
其中的折扣相对熵有递归定义:
注意目标函数中熵正则化与约束中的相对熵信赖域的区别。前者可以鼓励exploration,而后者可以提高稳定性,加快训练速度。通过引入拉格朗日乘子,可以将上面的约束问题转为非约束问题
类似地,定义一致性误差(Consistency error)
Trust-PCL比TRPO算法更加易于实现,它只需要简单的梯度下降。同时实验中发现Trust-PCL在一些控制任务中在平均回报和样本效率上优于TRPO。
《Scalable trust-region method for deep reinforcement learning using Kronecker-factored approximation》 Wu,Y.,Mansimov,E.,Liao,Grosse,R. & Ba,J. 2017
最近提出的Kronecker-factored方法可用于近似曲率矩阵。这篇文章扩展了natural policy gradient框架,利用Kronecker-factored approximate curvature(K-FAC)方法优化AC方法中的actor和critic,即策略和值函数的估计,提出了Actor Critic using Kronecker-Factored Trust Region(ACKTR)方法。
前面提到自然梯度可以用于提高样本利用率。但计算自然梯度需要计算FIM的转置,这是计算量非常大的操作。TRPO中使用conjugate gradient descent替代FIM的存储和求逆操作,只需要求FIM和向量的积。但它需要在每次参数更新时迭代求解。这阻碍了TRPO应用在大规模问题中。James Martens和Roger Grosse在论文《Optimizing Neural Networks with Kronecker-factored Approximate Curvature》中提出了神经网络中的自然梯度近似方法K-FAC(Kronecker-factored Approximate Curvature),它可以显著减少计算量。ACKTR算法将之应用到AC算法的actor和critic中。实际中,ACKTR每步更新的计算量只比基于随机梯度下降(Stochastic gradient descent,SGD)方法高10%~25%,同时实验结果表明ACKTR在Atari和MuJoCo场景中性能比A2C和TRPO好得多。
三、算法参考实现
- OpenAI baselines:OpenAI的一些增强学习算法实现。包括A2C,ACKTR,DDPG,DQN,PPO和TRPO。
- TensorFlow Research Models:实现了REINFORCE,TRPO,PCL,Unified PCL等算法。
- rllab:论文《Benchmarking Deep Reinforcement Learning for Continuous Control》中涉及到的算法实现。包括REINFORCE,TNPG,RWR,REPS,CEM,CMA-ES和DDPG。
- TensorFlow Agents :实现了BatchPPO算法。它是PPO算法的优化。
- modular_rl: John Schulman的一些算法实现,包括TRPO,PPO,CEM。
- Tensorflow-RL:基于TensorFlow实现的A3C,PGQ,DQN+CTS 和CEM算法。
- openai/imitation:生成对抗模仿学习的实现代码,包含了TRPO算法。