Reinforcement Learning 学习笔记(三)DQN

来源:互联网 发布:手机淘宝怎么没有社区 编辑:程序博客网 时间:2024/06/06 01:20

        上回讲到Q-learning的不便之处在于那张Q表有时候会过于庞大,使得存储与搜索都成为一件耗费巨大的事情。

        为了改进这一缺陷,我们不妨思考一下维护这张Q表的目的是什么?

        归根结底我们是需要一个指引,即对当前状态下的种种行为进行打分的函数,只是在Q-learning中这种函数被以一一对应的方式给出了,这确实是一种极其占用内存的方法试想如果我们将 y = x 这样一个函数用(0,0),(1,1),(2,2)……这样的表格保存,也将是一件极其庞大的工作。

        那么这种从状态、行为空间映射到分数空间的函数除了通过表格存储更新外还有什么好的方法呢?深度学习火起来之后研究人员第一时间想到通过神经网络来产生这一函数,在传统深度学习方法中,神经网络主要在起着“拟合”的作用,即去学习expert的工作方法,拟合expert。然而在深度强化学习中,并没有一个expert去让网络拟合,那么网络通过什么来学习呢?

        reward!又回到那个多次提到的话题,强化学习的根本驱动力是reward!因此reward在一个强化学习模型中起到了举足轻重的作用,设计出一个好的reward是一件困难的事情。(因此有学者提出“逆强化学习”,通过输入专家的示教动作来学习出什么是好的reward,再用这个reward去做强化学习。)

        那么DQN是怎样将Deep这个关键点插入Q-learning中去的呢?

        与Q-learning相比,DQN主要的变动在于两个地方:

             1、搜索方式发生了改变,原先是在Q表中搜索,如今通过在网络中寻找最大值。

             2、更新方法发生了细微改变,原先的Q是从Q表中得到,现在的Q是神经网络的输出。

         除了这两点,在DQN的基本框架上,经过一代代的优化,还做了几点改进:

              1、不再采用单步学习这样低效的方式,而是通过建立记忆库对之前保存的经历进行批量抽取,大大加快学习效率。

              2、在更新时计算现实的Q网络如果采用和估计的网络完全一样的参数,可能会造成结果的摇摆不定,即稳定性不足,为了改进该点,我们设计了一个如同temp的东西来每隔一段时间来存储一下Q-Network,之后的一段时间内就一直采用之前存储的那个版本来进行计算Q显示,然后每隔一定的轮次对这个temp类似物进行刷新,这个方法被称为“fixed Q-target”


         那么我们回头看一看引入“深度”之后什么变了,什么没有变?

         最为引人注目的地方自然在于估计Q值的方式完全变了,从一张笨重的大表变成了一个小巧的网络。大大减轻了存储与搜索的代价。

         但同时我们也应该意识到,其实变化并没有那么大,核心的思想依然没有变——立足当下估计未来,到了未来评估当下,在用两者的误差推动网络的更新。开始时对未来有一个预期打分Q1,等真正到了未来,改得到的已经得到了,前途也看得更清晰一些,于是对自己又有了一个打分Q2,这两个分数的误差决定了模型的更新方向。

        这里必须着重注解的一点在于reward和value(Q),reward是人工设定的一个好坏标准,每走一步都会获得一个reward,而value则是真正指导agent选择action的标准,有他的原因是人工设计的reward是对每一步来讲的,很难在很久以前就考虑到未来的成功,例如对于走迷宫游戏,人工设定的reward通常是走出迷宫的那一个点为1,其他点为0,那么在广大的迷宫内部reward统统为零,是无法对agent的行动给出很好的指引的,但value不同,因为从倒数第二步到最后一步时初始估计与后来达成中出现了一个reward=1,因此倒数第二步会在一定程度上提高分值,久而久之这种提高就会传播到整个迷宫空间,因此value(Q)是可以对agent起到指导效果的。

阅读全文
0 0
原创粉丝点击