该系列主要是听李宏毅老师的《深度强化学习》过程中记下的一些听课心得,除了李宏毅老师的强化学习课程之外,为保证内容的完整性,我还参考了一些其他的课程,包括周博磊老师的《强化学习纲要》、李科浇老师的《百度强化学习》以及多个强化学习的经典资料作为补充。
笔记【4】到笔记【11】为李宏毅《深度强化学习》的部分;
笔记 【1】和笔记 【2】根据《强化学习纲要》整理而来;
笔记 【3】 和笔记 【12】根据《百度强化学习》 整理而来。
其实在强化学习的过程中,很多情况下,环境中的reward会非常稀疏,比如训练机械臂去拿杯子,偌大的空间中,单靠机械臂随机探索的话,光触碰到杯子已经是难事,更不要说把它拿起来。也就是说,在这个环境中,agent能够得到奖励的机会其实是非常少的。
如果环境中的reward非常sparse,对于强化学习中的agent而言,学习就会变得非常困难,但是人类是可以在非常 sparse 的 reward 上面去学习,说明还是有办法解决——我们可以通过三个方向来解决 sparse reward 的问题。
Reward shaping的意思是说环境有一个固定的reward,它是真正的reward,但是为了让agent学出来的结果是我们要的样子,我们刻意地设计了一些 reward来引导我们的agent。比如小孩子写作业就能考高分(环境固定的reward),玩耍则不会考高分,但是小孩子本身经验不足,自己并不能预见考高分这一后续奖励,所以为了引导小孩子去写作业而不是选择玩耍,大人可以在小孩子选择写作业时奖励给他棒棒糖(人为设计的reward),从而引导他选择正确的动作。
那么哪些reward是可以作为人为设计的reward加进来的呢?curiosity driven reward就是一种常见的Reward Shaping。
在curiosity driven的这种技术里面,你会加上一个新的reward function。这个新的reward function 叫做ICM(intrinsic curiosity module),它就是要给机器加上好奇心。ICM 会输入3个东西,它会输入state s1、action a1和 state s2。根据s1、a1、s2,它会输出另外一个reward:ri。对machine来说,total reward 并不是只有r而已,还有ri。它不是只有把所有的 r 都加起来,它还把所有ri加起来当作total reward。所以,它在跟环境互动的时候,它不是只希望r越大越好,它还同时希望ri越大越好,它希望从 ICM 的 module 里面得到的 reward 越大越好。ICM 就代表了一种 curiosity。
一种广义的用在RL的训练agent的方法,其在input训练数据的时候,采取由易到难的顺序进行input。就好比说,假设你今天要教一个小朋友微积分,他做错就打他一巴掌,这样他永远都不会做对,因为太难了。你要先教他九九乘法,然后才教他微积分。所以 curriculum learning 的意思就是在教机器的时候,从简单的题目教到难的题目,也就是设计它的学习过程。这个方法在ML和DL中都会普遍使用。
再举个例子,把蓝色的板子穿过柱子,怎么让机器一直从简单学到难呢?
- 如第一张图所示,也许一开始机器初始的时候,它的板子就已经在柱子上了。这个时候,机器要做的事情只有把蓝色的板子压下去,就结束了。这比较简单,它应该很快就学的会。它只有往上跟往下这两个选择嘛,往下就得到 reward,就结束了,他也不知道学的是什么。
- 如第二张图所示,把板子挪高一点,所以它有时候会很笨的往上拉,然后把板子拿出来了。如果它学得会压板子的话,那么也比较有机会学得会拿板子。假设它现在可以学到,只要板子接近柱子,它就可以把这个板子压下去的话。接下来,你再让它学更 general的case。
- 如第三张图所示,一开始,让板子离柱子远一点。然后,板子放到柱子上面的时候,它就会知道把板子压下去,这个就是 curriculum learning 的概念。当然 curriculum learning 有点ad hoc(特别),就是需要人去为机器设计它的课程。
相较于上面的curriculum learning,Reverse Curriculum Generation是为更general的方法。其从最终最理想的state(我们称之为gold state)开始,依次去寻找距离gold state最近的state作为想让agent达到的阶段性的“理想”的state,当然我们应该在此过程中有意的去掉一些极端的case(太简单、太难的case)。综上,reverse curriculum learning 是从 gold state 去反推,就是说你原来的目标是长这个样子,我们从我们的目标去反推,所以这个叫做 reverse curriculum learning。
(3)分层强化学习(hierarchical reinforcement learning,HRL)
将一个大型的task,横向或者纵向的拆解成多个agen去执行。其中,有一些agent负责比较high level的东西,比如负责制定目标,然后它制定完目标以后,再分配给其他的agent来执行完成。
举个例子,假设校长、教授和研究生通通都是 agent。校长要教授发期刊,但其实教授自己也是不做实验的。所以,教授也只能够叫下面的研究生做实验。所以教授就提出愿景,就做出实验的规划,然后研究生才是真的去执行这个实验的人。然后,真的把实验做出来,最后大家就可以得到reward。