NEVER GIVE UP: LEARNING DIRECTED EXPLORATION STRATEGIES


发表时间:2020(ICLR 2020)
文章要点:这篇文章的思路是运用distributed RL的形式,基于intrinsic reward,并行多个agent,将exploration策略和exploitation策略分开单独训练,这样可以设置一族探索程度不同的exploration策略,从而提高探索效率。这里的intrinsic reward分为per-episode和life-long。Episodic novelty就是鼓励agent在一个episode里访问新的状态,而lifelong novelty鼓励agent访问整个训练过程中遇到的新状态。这里的意思相当于说,如果在episode 1,agent访问过某个状态了,对于episode 2来说,episodic novelty还是会认为这个状态是个新状态,依然会鼓励agent访问这个状态。而lifelong novelty会认为这个状态之前已经来过了,就没有那么新了,这个novelty就会相应衰减(Episodic novelty encourages an agent to periodically revisit familiar (but potentially not fully explored) states over several episodes, but not within the same episode. Life-long novelty gradually down-modulates states that become progressively more familiar across many episodes.)。这样就相当于说这个intrinsic reward的设计结合了短期的novelty和长期的novelty。这里的episodic novelty通过把一个episode的状态存下来,然后比较相似度的方式实现的,lifelong novelty 就用的RND(Random Network Distillation)做的。
具体的,有一个episodic memory用来存每个episode的状态,这个episodic memory每次新的episode开始的时候都会清空,相当于只会存当前episode的状态。然后每次有新的状态进来,都会和已经存了的状态来算个距离比较大小,然后计算一个reward,距离越大,reward就越大。具体计算方式为

这里f是一个embedding network,把状态x映射成一个p维向量,n就是计算这个状态被访问了多少次,这里是通过K-nearest neighbors的方式来算的pseudo-counts,函数K定义为

这里d就是欧氏距离,\(d_m\)是之前算出来的距离的滑动平均,相当于归一化一下。
有了episodic novelty,剩下的就是lifelong novelty,文章直接用的RND。RND的主要思路就是随机初始化一个网络作为target network,然后训练一个predictor network来预测状态转移,使得predictor network的预测接近target network

然后lifelong novelty就定义为

这里\(\mu,\sigma\)分别是误差的均值和标准差。最后episodic 和lifelong乘起来作为最终的intrinsic reward

这里L=5是一个截断的阈值。最终给到agent的reward就是extrinsic和intrinsic reward加权

因为作者是用并行的方式来增加探索,所以Q网络的输入还加入了加权的参数

通过设计一族不同的\(\beta\)来进行不同程度探索的reward的计算。\(\beta=0\)就表示没有探索reward。
总结:主要思路就是用多个不同的探索策略还进行探索,用并行的方式执行。最后文章说跑了35 billion frames,这简直太夸张了,一般实验室没法做。从实验结果看,对\(\beta\)的选择很敏感。和R2D2比的时候,好像有的效果还变差了,作者解释原因可能是intrinsic reward可能影响了representation的学习,从而影响了exploitation策略的提升。
疑问:感觉调参不容易啊,reward的量级,探索的权重设置等等。里面其实还有一些参数,感觉真搞起来不是那么容易设的。

posted @ 2022-05-08 23:59  initial_h  阅读(221)  评论(0编辑  收藏  举报