你好,游客 登录 注册 发布搜索
背景:
阅读新闻

DRL之Policy Gradient, Deterministic Policy Gradient与Actor Critic

[日期:2017-05-15] 来源:知乎  作者: [字体: ]

  1 前言

  首先对关注专栏的知友们表示抱歉。很不好意思,在上一篇DRL文章 深度增强学习之Policy Gradient方法1 - 知乎专栏 之后延迟了这么久的时间。中间忙了很多事,也对专栏的定位有一些思考。接下来智能单元专栏会保持更新,但是在写作方向上将会更偏向学术向而非科普向,毕竟涉及了更多的算法细节。专栏也会更多的涉及一些最新paper的解读,及最前沿研究动态的分析。

  今天这篇文章想对DRL的核心思想做一些深入点的解读,也算是对DRL方法的总结。在之前一篇科普文深度增强学习前沿算法思想 - 知乎专栏 中,我已经对DRL目前前沿的几种算法进行了基本的分析,本文则会从Policy Gradient,Deterministic Policy Gradient及Actor Critic几个算法来具体看DRL。

  2 本文涉及的相关文献

  [1] Schulman, John, et al. "High-dimensional continuous control using generalized advantage estimation." arXiv preprint arXiv:1506.02438 (2015).

  [2] Lillicrap, Timothy P., et al. "Continuous control with deep reinforcement learning." arXiv preprint arXiv:1509.02971 (2015).

  [3] Mnih, Volodymyr, et al. "Asynchronous methods for deep reinforcement learning."International Conference on Machine Learning. 2016.

  3 Policy Gradient

  我们已经知道,Policy Gradient的方法的基本思想是通过评价动作action的好坏,来调整该action的出现概率。最基本的Policy Gradient的损失函数Loss就是

  

loss = -log(\pi)*Q

 

  这里先以Q值来指代对动作的评价。由于一般训练中,我们要最小化loss,因此公式取负号。

  那么问题就是Q值是对动作好坏最好的评价吗?

  显然不是。最理想的状态是对于好的动作Q值为正,对于不好的动作Q值为负。而我们一般Q值并没办法完全达到这种理想状态,会有偏差。实际上,这是Policy Gradient最大的问题,我们很难确定一个最合理的评价指标,也因此,Policy Gradient的Q可以有各种形式:

  

上图为文献[1]中的截图,可以看到,我们可以使用reward,使用Q,使用A,使用TD来作为动作的评价指标。

 

  那么这些方法中有什么差别呢?归根到底就是variance和bias的问题。

  用reward来作为动作的评价是最直接的,采用上图第3种做法reward-baseline是很常见的一种做法。这样做bias比较低,但是variance很大,也就是reward值太不稳定,会导致训练不会。

  那么采用Q值会怎样呢?Q值是对reward的期望值,使用Q值variance比较小,bias比较大。一般我们会选择使用A,Advantage。A=Q-V,是一个动作相对当前状态的价值。本质上V可以看做是baseline。对于上图第3种做法,也可以直接用V来作为baseline。但是还是一样的问题,A的variance比较大。为了平衡variance和bias的问题,使用TD会是比较好的做法,既兼顾了实际值reward,又使用了估计值V。在TD中,TD(lambda)平衡不同长度的TD值,会是比较好的做法。也因此,在[1]中提出的general advantage estimation中:

  

A=TD(\lambda) - V

 

  那么在实际使用中,需要根据具体的问题选择不同的方法。有的问题reward很容易得到,有的问题reward非常稀疏。reward越稀疏,也就越需要采用估计值。

  以上就是Policy Gradient的核心做法。那么要说明的一点是Policy Gradient能够处理不可微的问题。以AlphaGo为例,AlphaGo的policy network输出的是softmax概率,我们只能从中选择一个下法,然后得到一个reward。这种情况下reward和policy network之间是不可微的关系,而使用Policy Gradient则没有这个障碍。也因为Policy Gradient的这个特点,目前的很多传统监督学习的问题因为输出都是softmax的离散形式,都可以改造成Policy Gradient的方法来实现,调节得当效果会在监督学习的基础上进一步提升。

  最后一点,policy gradient的loss可以不加log,而直接使用概率,即

loss = -\pi * Q

,加log只是一种非线性的做法。

 

  最后的最后,如果面对的问题能够获取每一个动作的概率及对应的Q值,那么可以采用Dynamic Programming来计算Q值也是Ok的,这样可以实现full backup,会更准确。

  3 Deterministic Policy Gradient

  还有一类应用神经网络的输出是连续的量,比如机器人控制。那么对于连续控制的问题,我们就无法直接使用policy gradient了,因为aciton不是概率,而是一个具体的向量。这个时候可以使用Deterministic Policy Gradient[2]来实现,基本的思想就是Policy Network的目标就是最大化Q值:

  

loss = -Q

 

  就是这么简单。简单之中,这个想法却非常直接。因为我们希望Policy Network越来越好,目标就是希望reward最大化,而reward最大化将会带来Q值最大化。因此,我们让Policy Network的训练目标就是最大化Q值非常合理。那么Q值的计算显然我们还需要构造一个Q Network来实现。这样整个网络就是完全可微的。也就是说Actor是a=A(s),其中A是Actor网络,s是输入状态,a是输出,Critic是Q=C(s,a),其中C是Critic网络。那么Actor网络的损失函数loss=-Q=-C(s,a)。所以我们可以发现,Actor网络使用Critic网络作为损失函数。

  不知道大家有没有发现这和GAN是曲艺同工的?

  4 Actor Critic

  为了实现Policy Gradient,不管我们是计算Q,还是V,都需要一个对应的网络,这就是Critic。换句话讲,我们只有在使用Policy Gradient时完全不使用Q,仅使用reward真实值来评价,才叫做Policy Gradient,要不然Policy Gradient就需要有Q网络或者V网络,就是Actor Critic。

  从Actor Critic的命名我们也可以更好的理解Policy Gradient。Actor就是policy network,用来输出动作,而Critic对应value network,就是评价动作用的,通过Critic来引导Actor的更新。

  Critic网络可以采用各种方法进行训练,核心就是要构造一个Target Q出来,从而使用MLE作为loss来训练。Target Q可以使用Q Learning,SARSA,或者直接使用Reward,采用one step Monte Carlo来做。

  下面我们看一下A3C来更好的理解一下Actor Critic:

  

在A3C中,我们这里不考虑异步的问题,我们可以看到,A3C使用TD方法来计算Q,即上图中的R,使用A=Q-V来作为动作评价指标。而Target V=Q,也因此算法中用 Q-V的平方差MLE作为Value Network的损失函数。

 

  需要注意的是在A3C中,Actor和Critic共用了同一个网络,只有在输出的时候才分开,一个输出actor,一个输出value。

  5 小结

  以上我们对Actor Critic,Policy Gradient及Deterministic Policy Gradient的算法核心做了介绍。大家可以看到,通过选择不同的评价方法,Actor-Critic可以有不同的形式。我们也可以通过改变网络的结构来构造各种形式的Actor-Critic算法从而解决不同的问题。最后,Actor Critic和GAN非常的像,只是GAN的输出更多是连续的,而Actor-Critic的输出更多是离散的。两者的结合或许会创造出一个统一的模式。

收藏 推荐 打印 | 录入:涤生2017 | 阅读:
相关新闻      
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款