查看原文
其他

【源头活水】BeBold:一种新的强化学习探索准则

“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

来源:知乎—田渊栋
地址:https://zhuanlan.zhihu.com/p/337759337
这次我们介绍一下今年的另一个比较有趣的工作。这个工作是Facebook AI Research和UC Berkeley合作,由BAIR Open Research Commons支持(Announcing the BAIR Open Research Commons)。
arxiv:https://arxiv.org/abs/2012.08621

3分钟视频

本文英文版:https://twitter.com/tydsh/status/1337097359864385536

01

引言
在一个新环境中进行积极探索(exploration)以获取外部奖励(extrinsic rewards),是强化学习中智能体的基本目标。如果环境比较复杂,需要智能体分步完成任务,并且每一步还没有中间奖励的情况下,问题就变得非常困难。
我这里举个例子,比如说下面这个任务,智能体需要先漫游环境,去左上角的房间找到钥匙,取钥匙,去右边房间开门,然后进入获得外部奖励。除了最后一步之外,中间的任何一个步骤是没有外部奖励的。
在这种情况下,如何为智能体设计源于自身的无监督内驱动力(或者说内部奖励intrinsic rewards),使得智能体能进行有效探索,并以最快速度获得外部奖励,是一个强化学习的热点研究问题。注意这里我们不能为某个环境设计基于特定语义的奖励(比如说看到红钥匙就取),而是要设计一个普适准则,在不知道环境语义的情况下,智能地适应各种环境。也即是说,不管是红钥匙有用还是绿方块有用,它都能以很快速度学得有用的策略,获取奖励。

02

实验效果
这次我们提出了一种新的强化学习探索准则,叫作BeBold。BeBold的方法极其简单,实验结果也非常好:
其一,BeBold解决(solve)了12个MiniGrid里面最有挑战性的任务,大幅超越了过去的一些方案,包括像RIDE和AMIGO这样比较复杂的方案,比如说显式学习策略的内部表示,或者自适应课程学习。在一些困难任务上,BeBold一枝独秀,在其它方法完全无法找到环境之中的外生奖励的时候,它却能够找到。注意像MiniGrid里面的任务是过程生成的(procedurally generated),也就是说在训练和测试中,每次智能体遇到的新环境都会不一样(比如说红钥匙换成蓝钥匙,钥匙、门,障碍物,宝箱的位置也会有变化),只是任务的高层语义相同(比如说都是搬开障碍物,拿钥匙开门)。
其二,BeBold在最新的NetHack环境中的6个任务中也获得了SoTA的结果。NetHack是80年代的一款字符界面Roguelike游戏,玩家需要在地牢里探索找到食物,杀死怪物,完成任务。每次玩家进入一个新游戏,地牢迷宫的形状也都是自动生成的,这让智能体无法通过简单的机械记忆来作弊。
其三,BeBold也在强化学习探索的标准任务MonteZuma's Revengue上进行了测试,效果相当不错,在500M的环境步数下达到了12000分。不仅如此,BeBold还直接以游戏图片为输入,没有使用任何游戏的领域知识(比如说像Uber AI的Go-Explore那样进行图片减采样,或是手工设计很多参数)。


03

准则设计
那么BeBold是怎么做到这些效果的呢。我们先看它极其简单的内部奖励生成准则:
很简单,给定一条智能体走过的路径,估计各状态  的访问次数  ,然后把它们的倒数相减,再做一个ReLU截断,就是BeBold。那为什么它叫这个名字呢?
BeBold全名Exploration Beyond the Boundary of Explored Regions,即是说不仅希望像Count-based或者是RND那样去探索那些访问次数  较少的状态,更希望能探索在充分访问区域与未充分访问区域交邻的边界,如下图所示:
一开始智能体在左边房间的随机探索让左边房间的访问次数  都比较大,而正因为是随机探索,正好撞上右边房间入口的概率并不大,  也会小很多。这样按照BeBold的定义,就会在右边房间的入口处产生一个很高的内部奖励,鼓励智能体学习相应策略以更多次到达这个入口。而智能体一旦学会了这个策略,到达右边房间入口的概率自然就会跟着变大,BeBold所产生的内部奖励就会减小,智能体就已经学会了从左边房间到右边房间的操作,可以继续其下一步的探索了。
在具体实现的时候,为了避免智能体在内部奖励最高的边界处来回游走,我们另加了一个每局访问数(episodic visitation count)的限制,让每局每个状态最多能拿到一次奖励。
最后,如果在一个环境中状态数目非常多,无法用一张表来存放,我们当然会使用神经网络来估算状态数。这里用的是Random Network Distillation(RND)的方法,用一个预测网络(predictor network)去拟合另一个固定的随机神经目标网络(random fixed target network)的输出。一个状态  被访问的次数越多,则预测网络和目标网络的差值就越小。用两者的差值,就可以反向估计出一个状态的访问次数  
我们对构成BeBold的每个部分都做了ablation study。从下图中可以看到,ReLU截断,每局访问数的限制,及访问数倒数的差,这些部分都是不可或缺的:

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看



分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存