其他分享
首页 > 其他分享> > Data-Efficient Hierarchical Reinforcement Learning

Data-Efficient Hierarchical Reinforcement Learning

作者:互联网


发表时间:2018(NIPS 2018)
文章要点:这篇文章提出了一个分层强化的算法HIRO: Hierarchical Reinforcement learning with Off-policy correction。主要的点在于不用人工设计具体的上层goal,同时用off-policy的方式提高样本效率。
具体的,通常的分层强化需要人为确定上层输出什么goal,然后下层通过训练去实现这个goal。这篇文章的上层策略的输出直接定义为状态空间,也就是说,上层策略每隔c个step就输出一个状态,这个状态就是goal,下层的目标就是去接近这个状态。这个goal的状态可以用policy直接给出,也可以用一个transition function来给出。

同时设置一个下层的reward function,下层的目标就是最大化这个reward。而上层的reward就是环境给的这c个step的reward,然后上层的目标就是最大化这个环境给的reward。

因为作者做的是robotics的任务,所以上层的动作空间也就是goal其实就是要去哪里,也就是整个任务的状态空间了,所以相当于上层的动作空间就确定了。然后上层给出一个goal之后,作者用一个transition function还实时输出每一步的goal

相当于说,除了goal,我还可以告诉下层policy每一步走了之后,离goal还有多远。然后下层reward function也是根据这个思路设计的

这样的话,下层的reward其实就是dense的了,即使整个任务的reward是sparse的,也不影响。上层的训练样本就是从下层的一段轨迹的样本中

合成一个transition样本

然后上下层的训练就套TD3算法就完了。
这里还有一个需要注意的是Off-Policy Corrections。因为buffer里存的都是之前的下层policy的动作序列以及对应的上层输出的goal,而每次更新policy之后,样本里面的goal和动作序列就对不上了,所以需要修正一下。作者的做法就是重新给一个更靠谱的goal来使得这段动作可以最大化到达这个新goal的概率

具体的做法就是,采样一些新的goal,然后直接用新的下层policy跑一下,哪个概率大,就换成哪个goal。

总结:感觉是make sense的。不过这个上层的goal就是状态空间,那么就需要状态空间是给定的,而且可以直接采样,这在robotics里面是行得通的,但是如果是Atari这种,状态空间太大,而且很多都是无效信息的,那采样一个goal估计不容易work。同理,下层的reward也是比较state的差异来算的,估计还是在robotics上面更work。
疑问:感觉每次更新都要重新relabel,这个计算量不小啊,估计这也是为啥每次就选10个candidates吧?

标签:下层,goal,状态,Efficient,Hierarchical,policy,reward,Data,上层
来源: https://www.cnblogs.com/initial-h/p/16328839.html