Sources

之前的这个popular enforce learning,我们再次简要的复习一下。在tabulate enforcement ning的情况之下,我们基本上就是在更改我们价值函数。因为这个entry它其实可以直接一个价值进行更新。基于这个entry更新之后,我们policy往往就是一个greedy或者epson greedy。对于当前这一行,我们的所有的entry值去做出一个选择就可以了。 而对于我们的当前的这个上节课我们讲的逼近式的这种近似函数的话,我们更多的是使用对于它的参数进行更新的一个方法。那正是因为对于参数可以进行更新,所以说我们才更多的对于policy进行一个直接的学习。比如说用reinforce这种方法一起学习。当然基本上很少见到我们在tabular reinforce的情况下,还直接对于我们的policy去做学习。因为你改policy的一个entry往往就是你得改另外一个entry,因为你得Normalize,对吧?而我们的参数本身你改了就改了,那么它还是Normalize,这就是他们之间的一个核心的区别。 深度强化学习,其实也就是参数化的强化学习的模块,把它走到了深度神经网络这个级别。它真正被发扬光大的时候,是europe 2013年的deeper learning workshop上的一篇论文。我们也后面会大家展示这个论文。 它背后的一个逻辑就是说,如果我们直接去使用深度神经网络去拟合,比如说我们的价值函数,或者是去拟合我们的策略函数。这背后会带来什么样的一些新的挑战?为什么以前没解决?当然我们自然要说你2012年才真正的解决了深度神经网络作用,有监督学习的任务,对吧?在移民经济上去取得了真正有价值的一个效果,对吧?那当一年以后,也就只是留给了强化学习研究了一年的时间,将它成功地应用在了这个强化学习的任务上。 深度学习本身它其实是一个端到端的,可以直接输入原始图片、像素、原始语音、声纹数据的这种直接学习出数据,有效保证最终去完成label prediction的框架。去年我们给大家去讲的时候,我们如果说希望能够build一个model去预测所谓的X的label?其实我们这背后最关键的点在什么地方呢?其实是去学习一个好的five function of x因为这个five function of x其实我们对最终可以把它这个类label预测的问题变成是一个线性回归的问题,或者变成是一个线性分类问题。关键是你的这个five function,five of x你能学的有多好。 基于这个five function本身的话,我们其实可以非常简单的去计算任何一个XIXJ2个数据之间的一个similarity。这个我们叫做kernel function。这kero unction一旦被定义好,我其实可以不定义find function。我也能够去直接去计算一个新的data它的label是多少。这个其实是基于广义的线性回归,或者是基于SVM那套方法去定义的。所以说在那个时候,当然很多人都会热衷于去design,要么去design file function,它其实相当于是做特征的工程。 我们对于任何一个数据去抽出一个新的、好的、坏的一个表示,要么我们用internal trick直接去定义internal function,我们绕开five function的,比如说SAM当中最火的rbf function,我们其实不用定义任何的five function,因为真正要继续定义的话,它是一个无穷维的向量。而我们只需要直接去定义4和XJ它们俩相减,然后take一个阿尔范式,再开一个高斯,得到他们的这样一个lito,或者说得到他们一个similar。基于这个similarity,我们就可以去非常方便的去处理一些比如说像双螺旋数据的分类问题,这样一些非常复杂的问题。 这是定义internal function。但是在这之前我们都是没有办法直接去学这个所谓课程方向,或者直接去学这个表征函数的原因就在于这个甚至被人定义为是不可学的一部分,它应该是由human design。但是在深度强化学习背后的这个深度学习理论当中,我们这个five function它严格意义上就是被学出来的。就神经网络的前N减一层,它就是five function。最后那一层就是一个线性回归或者线性分类。所以说使得我们的find function变成是一个可学的一个过程,使得它完全解锁掉了我们去design future representation的这个模块,这个困难点,这种强化学习是一样的。 以前大家都可以去专门去设计一些好的标志,让我们的智能体能更好的去work。现在的话我们就可以直接让他去输入一些原始的像素,原始的改表征,最终能够去take一个action。当我们实验室来讲,以前的话大家去做一些机器人导航啥的。你先要搞点雷达星星图之后,你再去做一个战略slam。最后你可能再去做一个轨迹的规划,然后你再去做动作。对,现在基本上直接一个微信language model直接一上,或者说一个CNN直接上,直接出我的相应的动作方向就可以了,这就是这个时代下,大家可能会去整个工作的范式发生一个转变。 其实在这之前我们已经讲过了,这个我们就快速跳过。基于强化学习本身,它可以最开始的一个demo就是在这个UCL David siri给大家去展示这个。等下一个方块打到上面去了,他只需要去take的是这个游戏的连续四帧的无效像素。 这件事情还是刚开始的时候是非常impressive的。为了去解决这个问题,它其实是动用了一个多层的神经网络架构。由于是q function,它其实是输入当前图片,对于图片去做统一的感知信号的处理。然后再对于每个action去直接突出对应的USA的这个值是多少。如果你有18个action,你其实是可以吐出18个,相应的价值是多少。然后你再take一个max操作,去选择价值最高的应该是去take。 所以说我们可以不定会去想说,深度学习和强化学习结合在一起会发生什么?大学习大家已经了解了,深度学习结合到强化学习当中可以发生什么?其实答案很简单,我们列了一些相关的一些局部的结果。什么价值函数和策略现在都变成深度的神经网络,对于非常高维的参数空间难以去稳定的训练,容易过拟合到局部数据,以至于需要大量的常diverse的一些数据的采样,也就背后需要更高的算力。以及我们对于收集经验的环境部分和训练神经网络的部分,CPUGPU资源的一个平衡等等。 其实从原理上来讲的话,它的核心的难点就是深度学习本身。对于神经网络而言,它算是一个黑盒学习,它有它的不确定性,还有他的uncertainty。对于强化学习而言,他还有他在DNA ics transition这边这一层的uncertainty,也就是什么意思呢? 对于深度神经网络而言,我去训练一下,我去对于我的参数本身去take一个gradient。如果我的这个部分当中,它其实相当于是我的一些数据XY,但是就这一部分上面它仍然是一个黑盒的话,那么它会带来一定的不确定性。因为我可能会绕开一些local minimum take不规整之后,结果发现我的损失函数涨了十倍等等。这是完全有可能发生的事情。 这是深度学习当中的一个黑盒。DL的一个difficulty。但是reinforce learning这边的话,大家也知道,我们刚刚其实上面才写了这个difficulty是什么?其实是在一个当前policy的基础之上,也就是这个肉派西塔的这个基础之上。比如说我们在的是当前的这个policy,它的一个gradient,这里面可以发现说黑盒在哪儿呢?黑盒在这儿,就是说我们对于policy本身去做了一定程度的修改之后,它的occupants mr虽然是一一对应的,但是咱是的,你其实不知道说我沿这个方向take great完了之后我策略改了,那我带来的新的数据分布到底会怎样发展,更何况我这部brilliant,我这policy本身它的模块还是深度学习的模块。所以这两者一叠,它其实就会产生第二层的不确定性。 Deep learning当中第一层不确定性,低层的混沌是来自于神经网络的黑核心。强化学习和深度学习结合,当然就继承了深度学习的黑盒的不确定性。但是强化学习当中还有动态环境的混沌黑核心,如果混沌黑核心能解决,那提问题也就解决了。第三层还有一层叫多智能体。强化学习还有博弈当中的一个求纳什均衡的不确定性,你不知道你会走到哪个纳什均衡,可能是很差纳什均衡,这是第三层迭代。 所以说为什么我们是当中的march agent reinforcement learning组是发配的最慢的组合。就是因为它有三层不确定性,最后其实很难去搞定的,它很难去甚至重复出实验结果的,这个里面会需要有大量的调优,做engineering以及做math,这其实是非常大挑。原来一个方向。我们就来看一下说这些方向的这些小问题,包括这背后的双层的这种不确定性黑核心其实促进者深度强化学习本身它需要有系统性的创新。我们今天其实学到的就是基于价值方法的深度强化学习。后续的关于基于策略本身的一些深度强化学习的方法的话,可能会介入放在下一节课我们再来去讨论。 第一个就是说这个基于价值函数的深度强化学习方法,就是DQNDPQ network。这个大家应该已经有所学习了,在前面的一些章节当中我们也有所讲解。这边我们会较快的速度来对他进行一个讲解。首先第一点,为什么我们选择q learning?原因是因为q learning这个方法的话,它不像萨塔方法,它是一个off policy方法off policy方法它就允许我们的数据分布可以有一定程度的脱离于我们当前策略已有的分布,这是一个非常重要的一个点。 如果说我当前是在学习飒飒当中的q function。但是我这个采样出来的数据,它只是一部分数据。比如说我当前agent它走在了这个教室的采样,出了一个mini bash的data。那这个data按照SATA的做法,就直接进入参数神经网络当中,对一个Q方式进行一个更新。 大家要知道Q方式一旦被更新,就是Q方程的参数一旦被更新,那么全局的QSA就都被更新,对不对?它不是一般的以前的那种撒法,你更新这几个entry就结束了,其他H不变,你没走到的SA pair不会影响。现在你改变了参数之后,全局的Q都会更新。所以在这个时候你会发现说我采用的data如果是on policy的方法,我就得采全局对它,我尽量多的彩对它,采完之后咱才能进行更新。这样子又会使得说我们需要对于环境做出了充分探索之后,我的这个算法才能进行更新的那这个时候你会发现说就会碰到一些很难去实现的困难。 但对于q functions而言的话,没关系,我只需要维持一个data replay buff。Er从data buffer当中我采用出的数据我都可以去做q learning。这样就更加适合deep learning的这种。我我我采样出一个数据组成一个back,我在进行一个训练这样一个训练范式。所以说在这个时候我们可以看到,就关于上节课我们讲到的关于比如说价值函数的近似逼近算法当中。比如说我们是学习q function的话,那我们其实采样出一个四元组,再通过这样一个minimize EDL的形式对于Q方式进行更新。那这个时候对于目标Q派SA这个位置去作为一个你和他的点。在这个时候它其实如果只用的是reward加上下一步,然后再对action a pre进行求导,求求max的这个操作q function它其实是不带梯度的。 大家在实现的过程中,如果你手写一个QQ learning或DQN的算法。现在大家都在玩这个自动求导的这种包,对吧?你会发现这里面一定要stop brilliant。如果说没有stop的,你的这个实现是是肯定是有问题的,它不一定能够训练得到正确的结果。原因是因为我他这边就只想要一个价值的替换,而并不是我真正的也给你打开我更新我参数的梯度入口,这个是需要注意的点。于是在这个时候我们已经拥有了一个可以去训练,比如浅层模型的q learning framework work上节课讲。我们现在如果cute network变得很深,我们能做些什么事呢?我们就需要从深度学习的learning behavior这个角度去理解,否则的话也不可能最终还是由这些强化学习的专家团队,最终还是由他们来搞出来这样一个deep reinforce learning的这个方法了。 这里面的核心的要点就在于是说,如果说我局部采样出来的数据不满足相关的一个全稳定的分布,那么我的神经网络就特别容易去拟合到我刚刚采样出这部分数据当中去ent它在和environment交互的时候,它的采样从来不是均匀的overall的分布。如果大家会发现,如果我是much learning的方法,我就是一个SA或者是一个XY player。我从overall的data distribution当中直接采XY pair,这个没有问题,它就是均匀的采样,根据follow这个数据分布均匀的。但长方形不是你的trajectory data,你很有可能就是这条trade,这个时候你played的tragedy都在一定的某一个局部范围之内,你用这部分的data马上进行学习。那不好意思,这个就参数拟合到这个局部上的数据的signal上去了,那其他位置就发散掉了,这是一个非常严重的问题。 所以说有两个核心的解决的部分,一经验回放,咱用一个repay buff er以某种strategic的方法从repay buff当中抽数据出来。不要让他专门在一个batch当中,在局部的数据上去做拟合。第二,我们要使用一个双网络结构,一个叫做evaluation network,一个叫target network。去使得我们刚刚的两部分当中有一个网络它是一直不变的。只有等到另外一个参数网络被更新的差不多的时候,才整体的去替换我们作为目标的那个,就是这样一个区别。 第一点,经验回放本身我们之前其实也在planning的那个环节其实也讲过。经验回放这边只是将其中的一些经验回放的一些知识拿过来去使用。它的一个关键点就在于说,我们有没有可能去让我们的每次训练的q networks这个数据本身能够较为好的去覆盖掉我们的整个经验采样要只拿局部的经验去学我的参数。因为我学完参数之后,我全局的这个风险都会发生改变。所以最简方法很简单,就是我build了一个data reply buffer。这个repay buff可以大一点,每次从这个reply buffer中uniformally的去采用K条数据组成一个mini batch,训练我的Q方向。这最简单的方法,因为我有了replay buffer。 我们每次在做采样的时候,还是可以去构建出一些优先经验回放的一些strategy。这个当然是可以去额外去做它的。比如说我们去用TDL的方法去计算出一些相关的一个priority的值,就TDL方法去计算。最后我们再通过一些重要性采样的方法,我们按照这个优先经验采样的方法去采样出相关的数据。 但是我们的目标是什么呢?我们目标其实是希望它是以uniform的这种数据采样的形式,从data rebid 8法当中去采样得到的。大家一定要注意之间的核心区别。我们再说一遍,我们的目标是build了一个data play ffr,从data prefer当中去采样出部分数据,组成一个mini batch去更新我的q function,这是我的目标。但是我每次去采样的时候,我肯定会碰到一些没有用的data。我们有没有可能去采样出一些对我们的学习很有帮助的data,但是最终又等价于我每次uniform的去从repay 8分去采样出来。 答案是可以的。我们是使用了important sampling的方法去采样。所以说我们虽然是average去做一些采样,但是我们可以去有针对性的以某些prioritize的方法去采样出一些学习率比较高的一些males。再去使用button sampling方法,让它回归那个uniform sampling的采样的一个效果。 他可能会说这两者到底有什么区别?区别其实非常大。比如说我们如果看到了一个data带来的gradient这个监督信号,但是这个data本身它比如说它是很难被踩到的。但是我这个great他就得要看到这才行,他才会走这一步的更新。这个更新我可以用important something racial方法把它给降采样,把它的rate降低。但是我仍然有沿着这个方向的规定被踩到了,这极其重要。如果说我踩不到它,我就uniform sample去踩,我踩1万个关系可能也猜不到这个位置的话,那我的学习就完全没有这个方向,这样它的效果就会非常差。 这个点其实是一个大家要去理解这个有的数据你就得把它塞到minibus里面去。虽然这个数据踩到它的概率应该是很低的,但是我也得把它塞进去。我可以塞进去之后我去酱它的weight,但是我也得把它塞进去,这个是一个非常重要的一个点。最后你这个经验回望的这个alva我就会比较复杂,我就不念了。 其实也就是我对于每个sample去计算它的school。基于private school我们去做一些auto 3的采样,将一些private school比较高的采样进来。但是我要去做important sample的一个恢复,使得它最终相当于等价于uniform的从我的data replay buff当中去采是我的数据,这是第一点。 第二点,我们需要去build一个叫做target network,就是说做target value的那个network。这个我们刚刚其实已经给大家去讲了,我们有一套参数它是被封住不变的。因为它需要去以stop gradient的形式去专门去填,就标价值。我可以拿MC的方法去填,也可以拿PD的方法去填。但是如果我这边一个mini bike,我跟是我当前参数,我这边作为目标值不要更新的原因,是因为我一个mini bash,其实根本就没有去经历覆盖掉整个data space的训练数据。我是不能去更新我的目标价值,否则你马上就偏了,马上BIOS非常大。 所以在这个时候我们可以看到有两套参数,一套叫Q西塔减,一套叫Q西塔。每隔一定的步数为Q西塔减,被QCR所覆盖,对吧?在这个时候我们就可以认为QCR已经更新了,这个已经比较stable了。那么就它的目标的network被当前的评估network或者是当前学习network所覆盖就可以了。 所以说我们的流程当然很简单,有一个data的一个policy,它可以以当前q function的IP ready的形式去做探索与利用。的baLance采样出相应的data放到data replay buffer中去,data play ffr其实大家会问说它到底是不是一个无限大的一个池子呢?当然是可以不是无限的,它可能是有限大的池子,比如说十的6次方,十的7次方,你超过这个池子之后就把老数据直接往前就走了,这是完全可以,所以它才叫做缓冲池。每次我们从这个缓冲池当中去采样,配一个相应的状态动作的pair。其实pair的话我们就去更新我们相应的网络。在这个时候,我们是每一次才会对于我们的target network和目标network去做出一个参数的值拷贝。在这C4之内,我们只更新当前正在学习的这个network,有的人叫做in network,有的人叫做learning network,都可以通过这种方式我们就稳定化了。Lazed整个q learning当中的,尤其是对于目标值的一个点。 为什么我们要这么做呢?原因是因为你再去算策略提升点的时候,其实应该是一个基于一个比较稳定的一个目标network去选择。如果你刚刚更新了一部分的参数,用一部分数据更新了,相当于这个区域当中的参数。其实你是把全局参数都更新了,那再用它去做比直接evaluate你的策略提升点是非常不靠谱的。这个时候你的策略提升点就event是错的。 那么接下来你会再去更新你的参数策略Q方程的参数也就是更新了你接下来的策略又会发生更大的错误。在这种情况下就没有办法进行有效的学习。所以这个时候大家可以注意,就是说我们在design第一个深度强化学习方法这个DQN的时候,其实大家可以反过来看,也就是这些要去注意的principle。但你会发现说,正是因为你要知道它更新的过程当中有这样一些learning behavior,你才会去design它相关的一些方案来去解决它。所以本身而言,我们还是得首先成为强化学习的专家,然后你才能够成为深度强化学习专家。如果你光是深度学习专家,你是没有办法去理解或者说深刻的去理解不强化学习当中强化学习这个部分,为什么这里就不work了,为什么这里就过拟合等等。 中他design出来的这篇paper,后来是2013年eur yp s的deep learning workshop上第一次发出来。接下来受到了nature的邀请,在2015年的时候正式发表在nature这个杂志之上。这篇paper的话现在也是非常高的引用量,对吧?因为它是第一次将深度强化学deeper enforcement learning这个词放在了paper当中,把它明确的提了出来。后来在2 0118年2017年左右,那会儿的new york s上,其实就已经是deep inform arn这个词是成为第一个热点词,不是别的一些deep learning的一些词。当然现在的话可能变成了一些像生成式AI等等这方面的一些词,当然还有各有各的小小的发展浪潮。 在阿塔瑞这样的实验结果当中,其实我们可以看到他已经获得了一个在很早的这QN版本当中,就应该获得了一个超越人。在3分之2的游戏上能够去获得一个超越人类玩家水平的一个school,对吧?他其实当你仔细去看的话,其实会发现什么呢?就是什么kimbo x这些break out就给他们打砖块,这些变靠反应的这些control的一些游戏,它会非常厉害。 但稍微statistical的一点,尤其是什么蒙特祖玛的复仇这种游戏,如果大家看过了,就不同的房间进去要去拿钥匙,要去跳跃,跨越一些障碍物,跨越一些对手。然后拿完钥匙之后再去开别的门,再去拿别的东西,这个就很难。你可以看到他当时的performance 0 0%就完全没有办法去跟,相当于它等于random play score。你可以看到这个算法,decline score减去random play score,除以一个分母,它只不过等于0。就是它跟random play school其实没有区别。其实是一个很大的游戏。但后来的话建立了一些环境模型之后,这个小学就起来了,能够在摩特祖玛复仇这样一类的任务上能够去超越人类玩家,这个是后话。 在这个时候,我们就又要去讨论一些别的点了。DQN当中其实有一个很关键的点,它其实继承于q learning的问题,这个问题其实非常关键。如果不是玩强化学习的研究者,他其实看不出来这个问题。 其实我们之前讲这个问题的时候,讲q learning的时候,其实大家可能也没有仔细去看。当时我们写函数的就有这样一个公式出来了。就是说我们站在当前的s prime这个位置上,我们要选择哪一个动作去take?我们要选择on policy动作去take。比如说follow当前的policy,我站在s prime这个位置上,我只要follow当前policy,我就不用做input sample。因为我要学习当前的QSC。 如果我站在了一个SA而S2的这样一个data之上,这是完全跟环境有关的。我站在SA作为起点,环境给了我reward和s prime,跟我当前测试没有半毛钱关系。我所以说不用做import 3,这非常好。但是如果是要做基于Q的TD learning的时候,我不得不在这个位置恢复出一个AA prime出来。于是我们当时的做法就是大家可以看到我在这个位置带入了一个a max of q data pre的这么一个a pre。然后我再把这个a pre带到了QQCT pre里。 也许你们会觉得说这个写法可能有点奇怪。N max q的A拿到A之后,你把A带到Q里面去。这里面其实带来了一个叫做过高估计,英文叫over estimation的问题。 你的q function如果不准,你就有可能有的action。过高估计的q election过低估计的Q但是你最后选择的时候又是按照这个Q方向去选A的,所以你很有可能会选择出来一些被过高估计计的action。也就是说一个人他同时又是运动员又是裁判,他就有可能做出完全偏袒于他自己的错误价值估计的这么一些选择。所以说我们经常会说你的这个裁判和运动员是不能之间要有任何的关联的,否则你的这个游戏肯定是不公平的那但是q learning当中,他一直就是这个问题。在深度强化学习之前就有这样一个问题。所以说大家可以看到这个所谓的double q learning,就解决这个问题。2010年这个paper提出来,2010这个paper提出来的时候,深度强化学习包括深度学习都还没火。所以说这是一个早期需要去做的事情。 但是在这个DQN当中,这个问题将会被发扬光大,将会被放大。原因就在什么地方?因为我的q function它本身其实现在是神经网络去实现的,它的有一些over estimation是非常恐怖的存在。比如在比如举个例子,大家可以看到如果有一些action有些问题,它可能action的数量是2一直到20次方有十个任务。对于每个任务而言,我们去看它的所谓的Q的一个over estimation的情况。 你会发现说当我的action变的space变得更多的时候,我最后挑出来的这个它的over estimation程度是非常高的那那很显然,因为你每一个action都有可能被over estimate。那么我现在action很多,我挑出来那个max操作,那它over emission程度就会更大。所以说这个其实是一个很本质的一个问题。 比如说我们简单举一个例子,在这个时候它会有什么呢?就会有一个相应的。比如说我们有一个目标的Q会对于采样出一些data之后,我可以去拟合相关的q function,我拟合这个q function,但是我拟合完了之后,我对于每个q function我去比如说每条线是什么呢?这个大家可能要理他,画法是要稍微特别一点。横坐标是状态,一条线是对于当前状态这个action的一个Q值,一条线是一个action q值。横坐标的状态一条线是一个action在多个状态下的Q值。好,那么每个状态下的action的q function就是看这个状态之下,比如说这个状态下它的有几条线,就是几个action,哪个条线的更高就是哪个action更高。 那这个时候你会发现说我的action如果越来越多的话,我特别容易去和处理非常高的一些值。因为它有可能是out of distribution或者说局部over fitting,导致在外面做出了胡乱的繁华。在这种情况下我的Q值就可能会非常高。那就特别容易在这些state身上去选择一个被错误的过高估计了的action去take。如果说这个action特别多,那就基本上你每次都可以去选择过高估计的action。这就会带来你q learning学习失败的一个问题。 解决这个问题非常简单,叫doud QN就是说我拿两套Q方式去建立它,一个q function做裁判,一个q function做运动员,运动员去take action做选择。而judge它其实是做出一个evaluation。对于你选运动员选择出的action,我们再去拿另外一套参数专门去evaluate q把这个裁判最后给出来的这个Q把它拿过来去构建出一个label y然后再去通过TDL的形式去训练我们的q function就可以了。所以在这里大家可以发现,这个其实就是一个非常简单的直接的一个方法。按两套参数,这两个参数独立的,然后我再去训练一个DQN就可以了。我们有的时候你只要发现了问题的本质,你通过直接对于这个问题本质去做出一个架构上的构建,它就能够去比较好的去解决它。 所以说在这个时候大家可以看到基于double和DQN当中,我们对于一些value function estimation,你会发现说DQN它其实经常会过高的估计,相比于真正的这条线。而对于double DQN而言,它其实更加围绕在比较oracle的比较真实的这条线上,所以说它会更加的真实一些,现在double DQN本身的其实已经基本上就是一个defauts的一个implementation,放在了我们的基于深度的这种Q学习当中去。使它的performance也基本上是一个一致性的,会比DQN要更好的一个点。 大家可以看到DQN背面的这俩框是double DQN的performance基本上都会比中间它的展示要更高一些,其实也很能理解对不对?因为你毕竟直接解决了over estimation这个问题。当然你带来了翻倍的参数量是一个它需要付出的代价。但是。我们本质上解决了一些over estimation的问题,这使得我们的QN本身能够work。其实这一点大家一定要注意。 为什么后来变我们讲到act critic就没有这个问题?因为action的这个本来就是两条参数,一个参数专门用于评估,另外一个参数专门用来选择动作。一分不是你你的目标就一个就是TDL降低。所以说这个network它又来做评估,又来做action,它就容易变成拥有这样一个问题。这个其实就是基于价值的函数,基于价值方法,它其实背后一些最本质的一些缺陷。 最后我们基于advances方式来谈一个架构的设计。架构本身层面上我们还没有谈任何它的一些implementation。就是说这个神经网络的结构上没有去谈。 大家可以发现什么呢?就是我如果说要去学一个QS,如果他好啊,我这个QAC不好学的,为什么呢?因为我如果只见到了一部分的SA pair,一小部分SA pair,对于没见到SA pair,我要让他拟合的好,这事情没有那么容易,这是一件比较难的事情。但是如果说我要见到很多SA pair,要覆盖面要全,那就说明我的policy本身得非常的有探索性,这其实之间是有矛盾的那这件事情怎么做呢?就是我们刚刚其实讲到advantages activity当中的advantage function一样,我们可以去构建一个advantage function,尤其是我们刚刚讲的是QSA这样一个advances function。那构建完了之后,我们就可以去做一些事情。我们具体的构建就是说其实是当前的某一个advances function,它的q function可以被用一些advances unction减去一些82 function,就是一些音乐方台阶function给它去实现掉。 最理解就是Q减V的形式去设计我的a function。但是这个a function咱有一些特别大的好处是什么?就是说我可以在一边专门去设计v function。就是对于当前的S进来,我这边有个VS直接可以输出VS本身另外一条支路。 我可以对于每一个action去给出ASA这样一个a function,这两者一加变成到q function,用这个方式去实现它这个方向有什么好处呢?其实大家可以发现我对于QSA本身而言,它对于任何的action a要去做出一个好的估计,它得依赖于我对于SA本身的表征,要学习的更好。但是如果我是让它变成是BS加上ASA的话,对于某些A我见的很少。我就让我的ASH rege往里走就行,让他回归VS就行。但是对于Q方式而言,它不一定回归VS,它有可能就发散掉了。这之间就是一个非常核心的,从网络设计结构上我能够去做出牺牲的一个点。 这个paper的话,这个是获得了icml 2016年的best paper word。当时我们看这个paper时候觉得说这也能获best paper word。后来你会发现说其实它背后也是有它一定的对于强化学习的数据的原理有一个相应的理解所在。并且的话它确实也是深入到了各个强化学习的实践当中去,取得了sorter performance。后来再投配方的时候,才取得了这么好的一个审稿的效果。

Podcast Editor
Podcast.json
Preview
Audio