深度强化学习实验室
来源:https://zhuanlan.zhihu.com/p/267524544
作者:脆皮咕(S.Q.Yang)
编辑:DeepRL
最近做分层强化学习的survey,系统地看了相关的经典论文,有老有新,将所看文章做个总结,由于做的项目涉及到很多分层相关,可能会长期研究这方面的内容,后续会不定期更新相关论文。其实有些论文读完也是云里雾里,包含了很多我的个人理解,会有一些错误和纰漏,希望各位不吝赐教,共同交流学习。
分层强化算是强化学习领域比较流行的研究方向,每年顶会论文中都有一定比例的分层论文。分层主要解决的是稀疏reward的问题,实际的强化问题往往reward很稀疏,再加上庞大的状态空间和动作空间组合,导致直接硬训往往训不出来,遇到头铁的agent更是如此。我们人类在解决一个复杂问题时,往往会将其分解为若干个容易解决的子问题,分而治之,分层的思想正是来源于此。个人理解目前分层的解决手段大体分两种,一种是基于目标的(goal-reach),主要做法是选取一定的goal,使agent向着这些goal训练,可以预见这种方法的难点就是如何选取合适的goal;另一种方式是多级控制(multi-level control),做法是抽象出不同级别的控制层,上层控制下层,这些抽象层在不同的文章中可能叫法不同,如常见的option、skill、macro action等,这种方式换一种说法也可以叫做时序抽象(temporal abstraction)
包含:Feudal、HAM、MAXQ、Options、Option-Critic、A2OC、H-DRL、h-DQN、FuN、UVFA、HER、HAC、HIRO、Skill Chaining、Information-Constrained Primitives、DIAYN、DADS
1、Feudal
Feudal Reinforcement Learning
比较古老的一篇论文,正如其名字所述,思想来源于封建等级制度,将控制层次分为三个等级,当前层为manager,当前层的上一层为super-manager,当前层的下一层为sub-manager,属于典型的multi-level control。不同层次的控制遵循两个原则:(1)reward hiding,即只要满足manager即奖励,不论是否满足super-manager,通俗地说就是你只需要满足你的直属上级;(2)information hiding,即sub-manager无需知道super-manager给manager定的目标,以及super-manager无需知道manager怎么做的,通俗地说就是底下干活的不用知道大领导和小领导之间的那些事,以及领导不管你咋干的只要干好就行,嗯,这可太封建官僚了,正如其名。
论文中给出的是迷宫导航问题,由于文章是92年发的,DRL还远远不成熟,因此都是使用Q-learning表格型解法来做,不同的是算Q的时候要以上级控制器的指令和下级控制器所处的位置为输入,体现层次关系。这篇文章的意义在于提出了多层次任务划分的思想,为以后的分层研究奠定了基础。
2、HAM
Reinforcement Learning with Hierarchies of Machines
HAM的意思是分层抽象机,核心思想是通过先验知识设计状态机,降低MDP复杂度,再求解简化MDP的最优策略,也是典型的multi-level control。这里引入了状态机的几种状态:(1)Action state: 与环境交互;(2)Call state: 调用其他状态机(与option类似);(3)Choice state: 非确定地选择当前状态机的下一状态(需要学习的部分);(4)Stop state: 终止当前状态机,返回到调用的地方。具体的学习算法也是Q-learning,不同的是将环境状态和状态机状态增广为新的状态空间,来学习使用当前状态机的哪种做法可以获得更好的reward。
本文的局限就是需要人工设计状态机,而这需要大量的先验领域知识,导致状态机设计十分复杂困难,在面对复杂问题时更是如此。其次本文的算法具有自上而下的call-and-return特点,即调用完一个状态机后就返回调用点,再继续后续的工作。
3、MAXQ
Hierarchical Reinforcement Learning with the MAXQ Value Function Decomposition
本文的思想是对任务进行值函数分解,分解为多个子任务,每个子任务对应一个MDP。QMIX是对不同agent的Q进行分解,本文是对不同子任务进行Q分解,属于multi-level control。算法公式就是值函数的贝尔曼方程,一层一层向下分解就能写成所有子任务值的迭代和形式,可以把选取某个子任务看成传统的选择与环境互动的动作。优化方法和一般的Q-learning是一样的。
本文的局限是如何分解任务也是需要下一番功夫的,问题越难越不好分解,同时,本文的方法也具有call-and-return特点。
4、Options
Between MDPs and semi-MDPs:A framework for temporal abstraction in reinforcement learning
本文是Sutton在1999年发表的,本文的最大贡献就是提出了option的概念,并将temporal abstraction的思想和MDP与SMDP相结合,目前option是分层领域最主流的方法之一,十分值得阅读原文。这里不做具体的分析了,可以结合后面option-critic那篇文章的阅读笔记看。option相关的方法也属于multi-level control。
5、Option-Critic
The Option-Critic Architecture
本文将option的概念和AC框架相结合,使option方法应用于HRL成为可能,文中严格推导了相关的策略梯度定理,十分推荐仔细阅读并跟着原文推一遍,对理解MDP有很大帮助。下面是之前发的本文的读后笔记。https://zhuanlan.zhihu.com/p/217811126
6、A2OC
When Waiting is not an Option : Learning Options with a Deliberation Cost
这是option-critic的作者在之后又发的一篇option相关文章,主要思想是认为option的频繁切换会影响运行效果和效率,于是在option-critic的中断函数的策略更新中增加一个惩罚值,适当地降低option的切换频率。这个结论其实在option-critic的实验部分就已经提到了,理解上也很直观,很显然,然而经过一番包装也成了一篇改进文章。文中吃豆人实验的效果非常好,可以看出加了惩罚后,agent只在适当的拐弯处才切换option。
7、H-DRL
A Deep Hierarchical Approach to Lifelong Learning in Minecraft
本文以Minecraft作为实验环境,主打终身学习和策略蒸馏,因为Minecraft里有很多开放式的任务,十分适合skill相关的学习任务。文中提出了一种Deep skill network,就是一个能应对不同skill或task的综合网络,给出了两种实现形式,一种是针对每种skill或task,单独训练各自的DQN网络,用哪个就调哪个;另一种是几种skill或task共用一部分神经网络的隐层,再各自引出不同的输出头,通过策略蒸馏的方式使这个综合的大网络能更有普适性且易于部署使用。当然本算法不只支持skill的调用,也同时支持直接使用原始的action,不同的是调原始action的时候,只和环境互动一个step,调skill的时候会根据相应skill的需要和环境连续互动n个step。
本文的分层结构属于multi-level control,创新在将分层和策略蒸馏、终身学习等概念相结合,局限是其中某些skill可能需要预训练。
8、h-DQN
Hierarchical Deep Reinforcement Learning : Integrating Temporal Abstraction andIntrinsic Motivation
Montezuma's Revenge应该是atari小游戏中最臭名昭著的了,在原始的DQNpaper中这个游戏在DQN下完全训不出来,得分为0,可见目前的强化学习在面对这种复杂的非反应式的闯关游戏时还是捉襟见肘,本文主要针对这个游戏环境做了相关的工作。本文将分层的层次划分为meta controller和controller,meta controller负责给出一个要达到的目标,接受的是环境反馈的稀疏的extrinsic reward,controller负责目标的具体实现,接受自定义的稠密的intrinsic reward。既然有目标,那么首要的问题就是如何选取目标,本文的做法是选取游戏画面中某些重要物体的图像作为目标,随state一起传入神经网络,当然这些目标图像都是人工选择好的。这也是本文的局限,就是针对Montezuma's Revenge这个环境做了不少工程化工作,很难有推广意义。
本文以某些goal为训练目标,因此属于goal-reach的范畴。
9、FuN
FeUdal Networks for Hierarchical Reinforcement Learning
之前介绍过Feudal,本文就是将Feudal的思想DRL化。将层次结构分为manager和worker,通过前面这些文章的总结,可以知道上层的控制器有两种控制选择:一种是选择不同的下层控制器来执行,比如option就是这种做法;另一种就是选取合适的goal来让下层控制器实现,上面的h-DQN就是这种。本文的做法是第二种,但创新在这个goal是自动生成的。文中将神经网络的隐层state作为goal,赋予这个隐变量的语义就是当前state在低维空间中所要改变的方向。worker的reward就顺理成章地变为前后两个step下state向量的变化方向与这个象征正确变化方向的goal的余弦相似度。
本文创新在goal实现了自动选取并赋予了很合理的语义解释。这里有一篇很好的分析可以一看。https://zhuanlan.zhihu.com/p/46928498
10、UVFA
Universal Value Function Approximators
本文提出了一种统一的值函数,在原始的值函数
、
基础上增加了goal作为输入变成
,这样值函数就变成在某一状态(或状态动作)某一目标下的价值。将给定状态和目标映射成对应的状态目标值的方法是,分别将状态和目标过自己的神经网络,拟合出对应的隐变量,然后将两个隐变量通过某种方式结合成一个标量就产生了对应的值,文中采用的方法是向量内积。在拟合指定状态和目标的隐变量时需要使用监督学习的方法,因此必然需要label,文中使用一种Hord of demons的方式可以产生不同目标对应的状态目标值,然后通过低秩分解的方式将其分解为状态对应的隐变量和目标对应的隐变量,于是label就有了。因此,整个UVFA的算法流程就是,通过某种方法获取各个状态目标对应的价值,然后通过低秩分解将这个值拆解为状态对应的部分和目标对应的部分作为label,再利用监督学习学习状态和目标对应隐变量的函数拟合,这样以后就可以通过任意状态和目标直接拟合出对应的隐变量,最后通过向量内积整合成一个状态目标值,起到泛化作用。
本文提出的统一值函数概念具有迁移意义,同时属于goal-reach范畴,但局限是文中提到比较困难的仍是goal如何选取,但本文并不打算讨论这个问题,因为本文的重点是提供这种考虑目标在内的广义值函数的概念,于是只是简单地选择某些state作为goal,可见goal如何合理选取将是这类分层问题的最大困难。
11、HER
Hindsight Experience Replay
这一篇是建立在UVFA基础上的,hindsight是事后诸葛亮的意思,点明了本文算法的核心思想。本文解决的是reward稀疏和goal选取困难的问题,方法另辟蹊径,读完让人眼前一亮。由于reward稀疏,必然会导致很多条完整的transition都无法达到预设的goal,于是产生了很多失败的transition,虽然没法用于预设goal的训练,但我们可以对于每一条transition都去计算一下假如换做其他目标的话,该transition会变成什么样。
举例来说,假如有一条transition,其最后一个step并没有达到预设的goal,那么这一步将不会获得正的reward或者获得负的reward,但如果把goal改为已经达到的这个最后一步的state,那么这一步将获得正的reward或0reward,不止这一步,整条transition的goal都应修改为这个state,这就是hindsight的含义,通俗地说就是“既然无法达到那个目标,那就把已经达到的当作目标吧”。这么做合理的原因就在于,不管goal设置的是什么,都不会影响系统动力学,在相同的state下采取相同的action会达到相同的next state,因此你可以将这条已经产生的轨迹的goal重设为任何值。通过这种方式,在保留失败transition的基础上,样本池里的样本数量相对于以往会得到相应的扩充。
文中共提出了4种goal的重新选取方法:(1)每次只选择这一条轨迹的最后一个状态对应的目标作为新目标;(2)每次随机随机选择k个在这个轨迹上并且在这个transition之后的状态作为新目标;(3)每次选择k个在这个轨迹上的状态作为新目标;(4)每次在所有出现过的状态里面选择k个状态作为新目标(不同episode)。每种选择方法造成的样本扩展倍数不同,文中表示(2)的效果最好。
由于继承自UVFA,因此本文的方法属于goal-reach范畴,可以有效解决reward稀疏的问题,但是goal仍为一般的state,存在一定的局限性,不过这篇文章的点子还是让我感到很新奇。
12、HAC
Learning Multi-Level Hierachies with Hindsight
这一篇继承自HER,HRL中一般分多个层次进行控制,上下层同时训练的时候会出现non-stationary的问题,也就是下层的policy改变时会影响上层的transition,因此可能原来能达到某个goal,但现在达不到了,对学习造成很大影响。本文提出的做法是,假设下层的policy已经是最优,就不会因为下层policy的变化而影响上层,那么如何使还没有达到最优的下层policy看上去最优呢?通过HER来实现。
本文提出三种transition:(1)hindsight action transition,对于非最低层来说action就是选goal,或者说是选state,因此action space就是state space,如果上层设定的goal下层没达到,那就将已达到的state作为goal,相当于对上层的action做了hindsight,这样基于下层已经最优的假象进行上层的训练,从而暂时忽略掉下层policy的变化,这部分是对action的调整;(2)hindsigh

2050

被折叠的 条评论
为什么被折叠?



