当RNN碰上强化学习-为空间建立通用模型

你可能了解强化学习,你也可能了解RNN, 这两个在机器学习的世界里都不算简单的东西在一起能碰出什么火花,我给大家随便聊几句。

/pic/1_tSW2r64cCwnyl4uLZjsLM0ujNAkjhw.png

在讲RNN前我们先来侃侃强化学习, 强化学习越来越受重视,它为什么很重要,用一张图就够了。想像一下我们是人工智能体,我们有强化学习和监督学习可以选择,但干的事情是不一样的。面对一只老虎的时候,如果只有监督学习就会反映出老虎两个字,但如果有强化学习就可以决定逃跑还是战斗,哪一个重要是非常明显的,因为在老虎面前你知道这是老虎是没有意义的,需要决定是不是要逃跑,所以要靠强化学习来决定了你的行为。

从算法上看, 强化学习是一个对未来的优化问题, 其算法的总纲可以归结到下面这张图里面,强化学习有两大门派:一种是动态规划(Dynamic Programming),另一种是策略梯度(Policy Optimization),还用老虎的例子说, 见到老虎估计一个打和不打在20年里的收益函数(比如打死老虎,县衙领赏, 抱得美人得10分vs被打死负10分) 然后推出现在的决定就是动态规划。 凭直觉和既往经验直觉决定跑还是打就是策略梯度法。

动态规划需要通过迭代来学习比较繁琐但是更精确,直接学习法更简单但是容易陷入局部最优,为了优势互补,两种方法相结合就得到Actor-Critic法,一方面直接学习行为,另一方面通过评估函数来最终评价那个行为对整个未来的影响,在反作用于对行为的学习,现在主流的模型都是基于这种方式。

/pic/2_1EW95GicYdicndG2Hr7KoolQX1OFaw.jpg

强化学习优化算法的成功是在Markov决策框架里开始的,只要问题符合这个框架(把过程分解为无数离散的时刻,然后此刻的信息足以决策后面的结果, 而无需历史信息,无论问题多复杂, 都可以分解为状态(state)- 行为(action)- 奖励(reward)- 策略(policy)四要素。状态是每个时刻你拥有的和决策相关的信息总和,行为是你的决定, 奖励是你的此刻收益。而策略就是从状态到行为的对应关系。就拿方格矩阵走迷宫(下图a)的例子说,你的状态就是你的位置,你的行为就是上下左右走,你的奖励是中间的加号。行走的过程每一步都只与上一步相关,此刻拥有绝对信息(位置),因此可以简化为下图b的马尔科夫决策图框架。

这里面只有策略是优化的目标。策略最简单的表格方法就是一个纵轴是状态,横轴是行为的表格,每个格子里是某状态下做出某个行为的概率(下图c)。

如果你用刚提到的动态规划法来做优化,你还需要另一个表格,叫做Q表格, 这个纵轴同样是状态,横轴同样是行为,但是每个对应的格子里的内容是value, 数学上说就是某个状态和行为下未来收益的期望(d), 我们通过学习不停迭代这个表格(e)。 有了Q表格, 你可以通过对随机性偏好的假设很自然的得到刚刚说的策略表格。

/pic/3_IYlIObR2t8xWKooicujPYjkNqCQ5mg.jpg

a/pic/4_mnuvWGYUvGibdBtJUdgEnHXKkRpBuQ.png

b/pic/5_Mx4V29ECGbH3vvJ1Tib6pU3J8uYuRA.png

c/pic/6_qLXmhqGt7O2eRu3gfGtPMWT0JHjvug.png

d/pic/7_TpGpflxiaI39LEibeWHtWYRFEXMDVA.png

Q表格逐步迭代的过程, 先更新最靠近结尾的状态收益,在往起始状态推演, 最终得到每个状态行为下的未来收益。 图中的gamma是贴现率, 贴现率越低,状态间的收益变化越平滑然后深度强化学习从何而来? 现实生活中的状态太多,如围棋有3的361次方个状态,你的表格几乎可以布满银河系。所以你不能用表格法,这就自然的引入了机器学习。 因为机器学习,尤其是神经网络,本质就是函数逼近, 或者某种插值方法。 当表格大到填不完,我们就用一个函数来替代它,然后用神经网络来学习这个函数,这就自然的引入了深度强化学习。通过数据可以模拟函数,有了函数就可以把值函数的问题解决。

DQN深度值函数算法最基本的深度强化学习算法,2015年发表的关于Alpha-Go的文章就是值函数法,策略梯度,蒙卡树,结合了CNN得到的算法。

/pic/8_df4NUe2LfCkHNLXXGUJGDFJTgmOvNw.png

/pic/9_ibhicrsGAQCVGPpREY880th5CpT4Pg.png

1
<pre contenteditable-directive="" mm-paste="" ng-blur="editAreaBlur($event)" ng-click="editAreaClick($event)" ng-keydown="editAreaKeydown($event)" ng-keyup="editAreaKeyup($event)" ng-model="editAreaCtn" style="margin-top: 0px;margin-bottom: 0px;padding: 0px;background-color: rgb(255, 255, 255);max-width: 100%;word-wrap: break-word;color: rgb(51, 51, 51);letter-spacing: 0.544px;white-space: pre-wrap;font family: arial;font-size:15px;line-height:35px;;line-height: 22px;box-sizing: border-box !important;"><img class="" data-ratio="0.10966542750929369" data-s="300,640" data-type="jpeg" data-w="538" onerror="this.src='http://mmbiz.qpic.cn/mmbiz/dcEP2tDMibccdYT8ViaXic1q1ibC3U0Ub0WhaaX0dxl5oRO3YicRx7fSozVkP7Z5UfiaQdwyaxxEM5AZaMAGHjY4yS4Q/640?wx_fmt=jpeg'" src="图片/混沌巡洋舰_2018-08-12_当RNN碰上强化学习-为空间建立通用模型/10_Z5UfiaQdwyaxxEM5AZaMAGHjY4yS4Q.jpeg" style="box-sizing: border-box !important;word-wrap: break-word !important;width: 538px !important;visibility: visible !important;"></img>

然而Alpha-Go再强大也不能解决所有问题,比如星际争霸,因为当下游戏画面当中的信息是不足以进行决策的,针对决策的信息并没有全部在一个画面当中呈现出来,所有就需要使用其它的方法。这也是我们的另一个主角RNN登场的机会。

我们用要一个最微小的例子来说明,还是那个走方格的问题,骷髅就是有危险的意思,我们希望走到有奖励的地方。 我只做一个小的改动将使得之前问题面目全非,之前的马尔科夫决策附加的条件就是当下的状态含有用来决策的所有信息,方格问题里, 这个信息就是位置坐标。而如果我没有位置这个信息, 取之以感知信息, 比如我只能感知我所在方格的周围两个方格有什么(下图中的骷髅或金币)。

注意如果我们处在下图灰色方格的区域(左右各一个),此时相邻的两个方格的情况是完全一致的(白色),也就是说我无法确定我是处于左边还是右边的灰色方格, 这导致无法决策正确的行为(左边和右边的正确决策是相反的! 一个向左一个向右, 但是我无法确定是哪一个!)。

/pic/11_n8BnrLA19hLx0hCoHRbhqA3xWYZpjg.jpg

真实的生物天天生活在非完全信息环境下, 到处都是刚刚图中的灰色方格。 它们还得学到正确的行为, 那么它们是如何解决这个问题呢?

主要有三种方法:一种就是策略梯度的方法,虽然所知状态和信息是不全面的,我们可以利用概率的方法来学习。当不知道该往左走还是该往右走时,随便走出一步,这样有百分之五十的概率得到最后要的奖励(一个驴子在沙漠里, 怎么都要选择一个方向走,不走一定渴死),利用直接学习的策略函数也就是Policy Gradient解决掉这个问题。这个方法大家可以看到效率是比较低的, 如果时间有限那就死了。

另外一种方法就是引入记忆,你有了记忆, 事实上你就可以把一些不同时间点的信息凑成一个整体,你的信息当然比之前多。在上图走方格的例子里如果你知道你上一步是从左边边界来还是从右边边界来问题迎刃而解。 而最后一种就是加入精确的世界模型, 你的信息不全面, 但是我可以用我的大脑给世界建模, 这样一个不完全信息的世界在我脑补下就变成了完整的世界。

引入记忆的方法,就很自然的引入了是RNN,它是类似模仿生物工作记忆的原理,信息放在记忆里面,将其作为决策的依据。

RNN的网络结构和前向神经网络差距并不大,只是多了一个时间转移矩阵,即当下隐藏的状态再到下一步隐藏状态的连接。这个连接实际上是传递当下的信息到下一刻的过程,这个传递过程中包含了记忆,我们可以把过去的信息往将来不停的迭代,于是神经网络细胞当中就含有过去很多时刻的记忆,其实就是生物的Working Memory。LSTM只是在RNN的基础上多了一记忆细胞层,可以把过去的信息和当下的信息隔离开来,过去的信息直接在Cell运行,当下的决策在Hidden State里面运行。加入RNN以后就把DQN变成了DRQN,然后就可以走一些非常复杂的环境。

/pic/12_cOfuoXic0ddW5UfomCU2pHfO1bkgpg.png

RNN, U是隐层连接/pic/13_regGsOGTwSFojNIAtfcPSy2icTVPZQ.png

LSTM: 加入Cell/pic/14_AFsJ8TLI8lNWQze6bM7uOQiaZBkA8w.png

DRQN框架 , RNN网络是大脑,做出的决策影响世界, 世界又给这个大脑以反馈。下图是一个二维的迷宫,只能看到周围格的情况,就是刚刚描述那个问题的拓展版(相当于在沙漠里寻找水源, 你只能看到自己周围有什么,没有其他信息)。 需要我们做的是在很复杂的情况下搜索到目标在哪里,这就是一个导航的问题。左下角的红点就是起始位置,中心的红点是目标,最终学习得到的行为是: agent会直接走到墙上得到自己位置有关的信息, 然后从这里奔向目标,这就模拟了空间搜索的过程,RNN在这个过程里把不同时间点的信息拼接成一个整体。

/pic/15_ffycrxUg2h6TouXtHEpLggNrHTOT9Q.jpg

二维游戏, 输入信息只有相邻格子的状态RNN虽然有这种能力, 但是一旦空间复杂了它还是会蒙蔽, 因为空间是很复杂的,比如一个有很多屋子的宾馆, 这个时候就需要更强大的空间表示能力。这个东西还是可以通过学习诱导, 通常的做法是加入监督学习的成分,比如学习预测你在空间里的什么位置, 这个过程里, 模拟空间的能力会在RNN的动力结构里自动浮现出现。

监督学习信号比较多而且目标明确,它可以预测走到哪里了,距离奖励还有多远,可以说给之前的强化学习添上了翅膀。

/pic/16_Epia7SNkBAuotaGwkpFRhoVvZCUiaw.png

在2017年, 人们使用类似的方法让agent很好的打赢了doom Lample, Guillaume, and Devendra Singh Chaplot. “Playing FPS Games with Deep Reinforcement Learning.” AAAI. 2017.一旦加入监督学习,事实上我们就达到了刚刚说的第三种策略,引入世界模型, 只不过这个过程是一步步的而非一蹴而就。

一篇发表在《Nature》上的论文就把这个东西更加推进了一部。同样是监督学习,但是它在基础学习基础上诱导RNN(lstm)在原基础上形成新的结构,这个东西竟然惊人的和小鼠脑中的栅格细胞相近。这个栅格细胞实际是把空间当作一个很多六边形组成的蜂巢网络来表达,每个细胞对六边形网络的端点位置是敏感的,而不同的细胞对不同空间周期(网格边长)的网格敏感。

这个方法的本质是建立空间的通用模型。 显然你的大脑不会给北京,上海,或者天津建立完全不同和分离的神经表达,必然的有一种空间语言来支撑所有的空间概念,而从一个地方到另一个地方,最底层的这个表达是不变的。这个东西可以看作模型之上之模型,这个东西正是这个栅格细胞。栅格细胞的每个细胞相当于一个不同空间周期的六边形网,通过组合这些六边形网,我们可以很容易的得到对空间相对位置的表达(很像傅里叶变化,每个栅格细胞是傅里叶变换的成分,被下游的位置细胞组合读取)。

有了这个细胞的网络会有更强的在空间当中运行的能力,一个标志性的表现在于可以在复杂的空间当中抄近路。如果路径发生变化(比如一个门堵死了),就会找次优的目标,也就是说有一种动态规划的能力,即具有空间行走的智能。在RNN的基础上加入适当的监督学习,从而产生与生物细胞类似的结构,具有了空间表达能力。

/pic/17_btg7kUKH48ByHCSxbtdGZkNNCIGwtg.png

事实上,我们不满足于上述的结果, 有没有一个方法, 让agent学习得到一个通用的空间表示? 这样生物才能真正学到对一般空间特征的泛华能力。/pic/18_iaXPDAWd6fMAJ6uKRLbg1NsB43q6yw.png

生物对空间的表示, 是通过一个叫grid cell- place cell组合实现的, 这个组合的特点是上游的grid cell 提供一组特定空间频率的细胞, 然后通过一个线性组合(place cell), 我们就可以得到对空间位置的描述。 这类似于一种对空间进行的傅里叶变换。/pic/19_2vGgnAX4bgq2vAXpIlYfpDGWpdYvJA.png

在使用了这种grid的空间表示后,最大的特点是增加了agent的灵活性, agent真正更够进行某种空间规划了最终我们可以这样总结RNN在强化学习的潜力: RNN,作为一个动力学系统, 本身表达了过去,现在和将来的联系, 这可以看作是部分的, 或者全部的世界模型。 而强化学习, 作为一个对未来收益的优化, 可以看作一个序列决策问题, 你对系统的过去现在和将来了解的越透彻,这个决策能力就越强, 因此RNN天生和强化学习有某种契合。 RNN的这个动力系统, 可以说部分的,或者全部的表达了世界模型,因此, 它非但是解决局部马尔科夫问题的利器,更在免模型和有模型的强化学习当中构建了一个桥梁。

相关阅读

铁哥长文:神经导航简介 - 论deepmind最新文章

从Q-learning的小游戏看阿尔法元技术

更深入了解,请阅读的文章如下:

Bakker B. Reinforcement learning with long short-term memory[C]//Advances in neural information processing systems. 2002

最早在强化学习里引入RNN的尝试, 主要是强调RNN可以解POMDP

Hausknecht, Matthew, and Peter Stone. “Deep recurrent q-learning for partially observable mdps.” CoRR, abs/1507.06527 7.1 (2015).

这一篇接着2002的文章, 主要是承接了2015 deepmind 在DQN的突破,强调那些信息并不全面的Atari Game, 可以通过RNN(LSTM)得到性能突破

Mirowski, Piotr, et al. “Learning to navigate in complex environments.” arXiv preprint arXiv:1611.03673 (2016)

导航领域的牛文, 介绍了在RNN(LSTM)下的深度强化学习里如何进一步加入监督学习, 获得性能突破

Wang J X, Kurth-Nelson Z, Tirumala D, et al. Learning to reinforcement learn[J]. arXiv preprint arXiv:1611.05763, 2016.

小众的神文, wang xiao jing 大神介绍了一种基于RNN的强化元学习能力, 一种举一反三的能力。

Banino, Andrea, et al. “Vector-based navigation using grid-like representations in artificial agents.” Nature 557.7705 (2018): 429.

最新的Nature文章, 介绍了通过监督学习引导RNN(LSTM)产生空间栅格细胞的能力

1
<pre contenteditable-directive="" mm-paste="" ng-blur="editAreaBlur($event)" ng-click="editAreaClick($event)" ng-keydown="editAreaKeydown($event)" ng-keyup="editAreaKeyup($event)" ng-model="editAreaCtn" style="margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;word-wrap: break-word;color: rgb(51, 51, 51);letter-spacing: 0.544px;text-align: left;white-space: pre-wrap;font family: arial;background-color: rgb(255, 255, 255);font-size:15px;line-height:35px;;line-height: 22px;box-sizing: border-box !important;"><img class="" data-ratio="0.10966542750929369" data-s="300,640" data-type="jpeg" data-w="538" onerror="this.src='http://mmbiz.qpic.cn/mmbiz/dcEP2tDMibccdYT8ViaXic1q1ibC3U0Ub0WhaaX0dxl5oRO3YicRx7fSozVkP7Z5UfiaQdwyaxxEM5AZaMAGHjY4yS4Q/640?wx_fmt=jpeg'" src="图片/混沌巡洋舰_2018-08-12_当RNN碰上强化学习-为空间建立通用模型/20_Z5UfiaQdwyaxxEM5AZaMAGHjY4yS4Q.jpeg" style="box-sizing: border-box !important;word-wrap: break-word !important;width: 538px !important;visibility: visible !important;"></img><br></br>
1
<pre contenteditable-directive="" mm-paste="" ng-blur="editAreaBlur($event)" ng-click="editAreaClick($event)" ng-keydown="editAreaKeydown($event)" ng-keyup="editAreaKeyup($event)" ng-model="editAreaCtn" style="margin-top: 0px;margin-bottom: 0px;padding: 0px;background-color: rgb(255, 255, 255);max-width: 100%;word-wrap: break-word;color: rgb(51, 51, 51);letter-spacing: 0.544px;white-space: pre-wrap;font family: arial;font-size:15px;line-height:35px;;line-height: 22px;box-sizing: border-box !important;"><img class="" data-ratio="0.665625" data-type="jpeg" data-w="640" onerror="this.src='http://mmbiz.qpic.cn/mmbiz/dcEP2tDMibcd9g9aFjBooVn5U4PP1EDF3ugVJrLlia2ELtxHbXUJs7SUPtRaxmkUBHhx3jLciaHXpx1ABVYwYBu9w/640?wx_fmt=jpeg'" src="图片/混沌巡洋舰_2018-08-12_当RNN碰上强化学习-为空间建立通用模型/21_axmkUBHhx3jLciaHXpx1ABVYwYBu9w.jpeg"></img>
1
<pre contenteditable-directive="" mm-paste="" ng-blur="editAreaBlur($event)" ng-click="editAreaClick($event)" ng-keydown="editAreaKeydown($event)" ng-keyup="editAreaKeyup($event)" ng-model="editAreaCtn" style="margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;word-wrap: break-word;color: rgb(51, 51, 51);letter-spacing: 0.544px;text-align: left;white-space: pre-wrap;font family: arial;background-color: rgb(255, 255, 255);font-size:15px;line-height:35px;;line-height: 22px;box-sizing: border-box !important;"><span style="font-size:16px;line-height:36px;;">作者许铁,微信:ironcruiser </span><br></br><span style="color: rgb(51, 51, 51);">法国</span><strong style="max-width: 100%;color: rgb(51, 51, 51);">巴黎高师</strong><span style="color: rgb(51, 51, 51);">物理硕士 ,</span><strong style="max-width: 100%;color: rgb(51, 51, 51);">以色列理工大学</strong><span style="color: rgb(51, 51, 51);">(以色列85%科技创业人才的摇篮, 计算机科学享誉全球)计算神经科学博士,巡洋舰科技有限公司创始人,   曾在香港浸会大学非线性科学中心工作一年 ,万门童校长好战友。<br></br><br></br></span>

/pic/22_RjdLTN2KH6SKHZqnzyGO5K0G3dNOwg.jpg

1
<pre contenteditable-directive="" mm-paste="" ng-blur="editAreaBlur($event)" ng-click="editAreaClick($event)" ng-keydown="editAreaKeydown($event)" ng-keyup="editAreaKeyup($event)" ng-model="editAreaCtn" style="margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;word-wrap: break-word;color: rgb(51, 51, 51);letter-spacing: 0.544px;text-align: left;white-space: pre-wrap;font family: arial;background-color: rgb(255, 255, 255);font-size:15px;line-height:35px;;line-height: 22px;box-sizing: border-box !important;"><span style="color: rgb(51, 51, 51);"></span><br></br>
1
<pre contenteditable-directive="" mm-paste="" ng-blur="editAreaBlur($event)" ng-click="editAreaClick($event)" ng-keydown="editAreaKeydown($event)" ng-keyup="editAreaKeyup($event)" ng-model="editAreaCtn" style="margin-top: 0px;margin-bottom: 0px;padding: 0px;background-color: rgb(255, 255, 255);max-width: 100%;word-wrap: break-word;color: rgb(51, 51, 51);letter-spacing: 0.544px;white-space: pre-wrap;font family: arial;font-size:15px;line-height:35px;;line-height: 22px;box-sizing: border-box !important;">
1
<pre contenteditable-directive="" mm-paste="" ng-blur="editAreaBlur($event)" ng-click="editAreaClick($event)" ng-keydown="editAreaKeydown($event)" ng-keyup="editAreaKeyup($event)" ng-model="editAreaCtn" style="margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;word-wrap: break-word;color: rgb(51, 51, 51);letter-spacing: 0.544px;text-align: left;white-space: pre-wrap;font family: arial;background-color: rgb(255, 255, 255);font-size:15px;line-height:35px;;line-height: 22px;box-sizing: border-box !important;"><span style="color: rgb(51, 51, 51);">许铁的《机器学习和复杂系统》这本书用物理学视角来看机器学习,目前已经正式上架。同时,许铁已在万门大学已开设机器学习原理和深度学习原理两门在线课程,即将于9月开设强化学习的在线直播课程。感兴趣的可以点击下图的二维码咨询。</span><br></br>
1
<pre contenteditable-directive="" mm-paste="" ng-blur="editAreaBlur($event)" ng-click="editAreaClick($event)" ng-keydown="editAreaKeydown($event)" ng-keyup="editAreaKeyup($event)" ng-model="editAreaCtn" style="margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;word-wrap: break-word;color: rgb(51, 51, 51);letter-spacing: 0.544px;text-align: justify;white-space: pre-wrap;font family: arial;background-color: rgb(255, 255, 255);font-size:15px;line-height:35px;;line-height: 22px;box-sizing: border-box !important;">

/pic/23_zicyJbr7EcCX7bYVV3GKuKXdlFdQqw.jpg

elang2018-09-07 11:32:36

非常感谢!经常能从您的文章中感受到有深度的启示,从算法中发现世界更一般的广泛联系。

作者

谢谢欣赏