Sources
下一步我们讲这个值函数分析。我们的MDP是我们的一个模型,它里面最关键的点是在于一个tradition和一个维多方式。如果在没有模型情况下,我们往往说的是一方面这个是没有的,另一方面我们可以直接通过任何一个SA的结果去做观测。我们在无模拟情况学当中,其实主要是想克服这样一个问题。 Tradition dynamics他是不知道的。所以我们是希望产生出来的相应的data能够去直接的最终得到一个好的盘子。而这个过程的话,其实我们经过策略提升定理。大家应该知道说,首先我们需要去找到一个策略提升点。这个评审的话,我觉得你需要知道是一个管理方式。有了这样一个管理方式之后,怎样去做一个策略提升,就能够去迭代一个更好的策略。所以说我们上节课其实更多的是estimation,如何去估计出现更好的方式。 第一部分,其实我们涉及到是使用摩托卡罗的方法去做出一个材料。第一类就是说是estimate这个pie在一个状态S上的一个state very,另外一个当然也就是这个action的主动式。我们往往会省略掉对于state的说法,其实是state action的方式。我们说action deal方式,肯定是建立在stg给定的S的这样一个。 如果是做MC的话,那我们其实可以是建立在这个。比如说我们去采样N条轨迹,或者说采样一堆轨迹,然后计算这个时候我们的仪器可以是多少。它可以是经过S之后的这么一条轨迹,我们会去通过reward衰减的方式去计算它的相应的GT。GT也就是return的具体的取值。但是全在水当中使用这种NC的方法,使用这种采样,然后再平均的方法,使我们有一个经验平均去拟合,去渐渐的去推进他的这样一个期望值。所以我们并没有讲QSA的的一个其实也是一样的。只要对于任何一个SA之后,我们去数它的这样一个GT的值,也可以对于QSA本身去做出一个好引子。 这一块的话我们其实前面小部分时间还是在讲持续差分的这样一个学习的。因为MC其实是一种基本的方法,它有一个核心的问题在于说它对环境的采样其实是需要一是比较多的数量。因为我们最后去使其实是使用大数定律的方法来精准的去估计这样一个期望值。如果说我们采用的数据比较少的话,这种估计其实往往会存在着极大的人。所以在这个时候,我们可以考虑说,是不是可以损失掉一部分的ice来去换得barriers的极大降低? 你去考虑说在强化学习当中经常会使用的这种。比如说你的动态规划当中去使用的是这个贝尔曼迭代式。它的一个关键点在于说,我们一步之后去看到的return和我这一步看的return中间其实是可以有一个reword。再加上干了后面的return,在这样一个也在试。所以在这种情况下,我们其实可以将未来的estimation,比如说加一这样一个状态来写过value方式之后,去更新我对于当前ST的value function的estimation。你这样一个过程我们就叫做持续差分学习,也叫做both strapping的方法。它是一种自助的一种方法。因为我对于未来的一个guess,对未来的一个estimation,再加上一步的信息量,就可以去对于当前的estimation做出一个分析,这个是一个非常好的一个优势。 另外一点,我们看到这个公式,其实如果是TD的话,就是一步的VI方式。而加上干嘛乘上这个AFT加一这样一个更新的。当然这个更新我在这边用波浪号的形式去写它的。其实这是一种与当前一条数据去做相关的更新。而且我会带上一个R相当于就是说我对于这个目标而言的话,我往这个目标去走一个阿尔法的这样一个步长即可。具体的更新方式的话,大家可以看到是目标减去当前的更新这样一个差值,再乘以阿尔法,再加到原来的这样一个estimation当中去。 于是在这个时候大家可以看到,我其实只用到了怎样的数据?SA然后是R这样SP上这种方式,我其实就已经可以去,甚至这个时候的A其实都是不用去管它的。我就可以通过这种一步的transition数据,带上它的具体得到的review方式。那是因为V的每个entry ST上面的这样一个取值,以至于在这个时候我们可以发现说,我们可以从这个完整的片段data当中去做相应的学习。MC当中你一定得走到terminal state episode结束,咱才可以去算的所谓的T而现在不一样,我们只需要一步出来就行了。接下来后续的部分,我们直接拿V去作为目标值,加上一步的这个reward去更新当前的guess就可以了。这样会有一个好处,就是我可以去从不完整的片段当中进行学习。 这个不完整片段大家不要小看它它其实是一个极大的优势。如果说是使用的摩尔卡洛的方法,你固然很多产香水都是基于当前策略培养出来的这是一件很好的事情。但是其实我们在现实当中,很多时候可能会一个片段,他前后的这种决策的策略本身就已经不一样了。 我举个简单的例子,在瑞金医院会有一个代谢数字门诊上,比如宁光院士牵头做的那怎么做呢?其实很简单,一次就病人来看病的时候,他进去之前会首先做一次代谢组学的一个检测,检测出大概在两本主代谢组学的一个指标。比如说你的餐后血糖是多少,你的血脂是多少。做了这个检测之后,毫无疑问医生就会根据这个检测给你开药。开完药之后,过了之后你再过来检查。在这个时候你会发现变了一点点,对不对?你你你也许真了一点点等等。 那毫无疑问你再次过来去做了一定treatment或者随访之后,你会发现说再过来的时候,给你做treatment的医生已经换成另外一个医,这很正常。因为你不一定是专门去约这一个专家,对不对?所以在这个时候他对于你的treatment的decision team,它就已经变掉了,他跟以前不一样。所以说怎么从一个一个的碎片当中去做相应的学习呢?大家可以发现state其实就是这个病人初期检查的这样一个。然后action是什么呢?就是说这个医生最后给你开的treatment s Price是什么呢?就之后你再回来做访谈回访的时候,你获得的经济指标是怎样? 接下来下一个片段可能是三个月之后发生的事情,这个时候医生肯定也不一样。这个时候你会发现说我能不能可能是从一个不完整进行学习,这是非常关键的,如果说你要让整条拆潜水,你等等都不要知的,几乎在任何一个医院是不可能发生的事情。另外一点,蒙特卡洛和实际差分的话,它其实都会有一个相应的目标。相同的目标就是从同样的当前的这个派下去完成PS或者QPSA的这么一个具体的学习。 如果说对于我们学习的过程当中,我们派去发生转变的话,那么MC首先你需要去做的一件事情就是我们上节课学到的这个opt samples这种方式进行重新采样,或者说对于每个你看到的轨迹数据去做出一个加权。在这个时候你会发现,如果说对于一整条轨迹去同时做出加权的话,我的策略一旦在每一步上都会有概率上的变化的话。那么这个加权之后的位置相乘起来,它的variance是非常大的对整体差距而言的话,即使要多加权,你的每一步加权其实它的变化其实也是非常小。 这个其实是能够看到MC和TD之间的这样一些优劣性,简单举一个他们learning behavior上的一个区别,这是一个driving home开着车回他的例子。他的状态其实是可以分为这么以下几个状态。开车回家,离开公司已经知道了经过多少时间,这个其实是一个observation。对于当前这个状态,我可以去估计我接下来还需要花多少时间才能到家。这两个数字一加也就是说我们对于这个driver,他可以去estimate他从此离开了回到家的总时间。你是在每一个位置知道之前发生多少分钟,对于当前的状态去估计未来可能还有多少分钟才可以到家。 这里面大家可以看到,其实有一个关键点就在于他开始驾车的时候天开始下雨。在这个时候已经过去五分钟了,天开始下雨,它其实之前没有估计到的,所以说它的总时间是5加35分钟等于40分钟,在这个时候达到了一个比较高的峰值。过去的话,他开车离开高速公路之后,他觉得开的比较快,于是他剩下的时间是15分钟。这样20加15等于35,他又降低了他的总时间的估计。最后在老口的这个街道上,跟在一辆卡车后面走,他又提升了一下他对于运动时间的这样一个估计,变又变回40分钟。最后是快到家门口的时候是到43。整个这个过程大家可以看到中间有一个折返,也就是在他下高速的时候,他认为他开的比较快。 所以整体的估计从35分钟下降到了30分钟。但是总目标其实是大家也知道43整条起来带出来的总用时就是43。所以说在任何时候估计的时候,我们都可以将总统的目标时间估为43分钟。于是在这个时候整个MC而言的话,它的目标值就是朝着总目标的这个return去去走的。在每一个步骤的时间点上,它的目标都是回归到43这样一个目标值。 而对于temple difference的话,你大家可以看到,我永远是按照当前的一个观测以及下来一步的估计去更新当前这一步的估。所以说在这个时候大家可以发现,由于我之后会我在这个位置这两个状态下会有一个折返。所以说首先对于状态二而言,它会首先去沿着状态三去更新。因为状态三它在这个位置它只有35,也就是在这个时候状态2它其实是40的时候,它会有些下降。但是状态三的话,它毫无疑问它是被后面的状态所影响。所以说它也是顺着后面的这些状态的提升而提升自己。最终这个状态二其实是会先下降,然后再提升,像这个甩皮鞭一样甩到43这个位置,这中间的话会有上下的起伏。而这种所谓的上下起伏,其实就是由于model的BIOS所带来的这样一个learning的过程。Model BIOS因为你的gas,你的目标值本来就是错的,所以说会带来你学习的过程当中整个是出错的这种情况。 而对于MC而言的话,由于你的目标值就是直接从数据来的,而且这个数据是由important sampling采样出来的,是完全没有的。所以说你可以直接去s estate。在这种情况下的话,我们就没有任何的8S当然这个问题我们还是会说这个是没有bias它带来的好处。但是它的various其实比较大的话,会使得我们每次学习的目标都会有所区别,这个区别量还比较大,这使得MC其实很多时候我们在强化学习使用的时候,往往是建立在我们会有一个模拟环境,并且可以快速采样的这种情况。比如说在阿尔法go当中,我们会使用一只NC的方法去估计任何一个棋盘位置。黑白方的这样一个胜率。你只需要去follow最快速的这个线性分类器所实现的走棋策略,你就可以很快的模拟1000盘棋,模拟完1000盘棋就去判断黑白子的胜率,就可以去使用这个数据对于当前的这个状态做出一个价值的评估。这是MC的方法。 那T1的方法的话,由于我背后去带上了一个其实是dator,就是这样一个value function。所以说这value方式我可以设计的比较复杂,所以说使得我的更新一我只使用一部数据。第二点的话,我对于目标值而言的话,至少various会比较低。因为我只有一部的dyna x并不是多部的,所以说我的varies会低。目标的这个imation它带来的in bias,这是可以理解的。于是在这个时候我们可以总结一下MC和TD两种functions estimation的方法,它之间有什么区别,有什么优缺点而言的话,他是可以在知道最后结果之前就进行学习,这是一个非常大的优势。这从functionality的角度上来讲,他能够做到MC他做不到的事情,这是非常棒的一件事情。 但这一页主要是讲的是轨迹的完整性。但是实际差分的话,它其实会带来相应的8S而MC的方法的话,它其实在没有58S的情况下,它其实往往会带来更大的virus。所以说其实一方面我们根据我们的环境本身可以去做出一个方法上的选择。如果说你的环境所带来的various其实是极低的,就完全可以去用MC的方法去做。比如说你的环境本来是deterministic,而且你的policy本身也是比较deterministic。在这种情况下我们就可以去通过采样方法去做相关的。这个我们其实也叫planning。 我们看到了接下来轨迹会长什么样。比如说在机器人这个领域的话,我们做这种采样再加上估计的方法就会比较快。原因是因为在物理引擎当中,很多transition它都是固定的,我们没有那么大的ARS。在这种情况下MC的方法就往往能取得不错的效果,对吧?而对于离散的这个data情况下的话,它往往它的transition都是sarcastic,policy也应该是sarcastic。在这种情况下我们去做一个MC的估计它多步它积累的dynamics就会很高。那这个时候我们可能就没有办法去承担它这么大的various带来的后果。它简单的来讲的话,ED其实是head off了这样一个bias和variance。 但是TD本身的话它有个极大的优势,就是它可以从没有结束的轨迹的数据当中直接进行学习。这个是NC它没有办法进行比拟的。所以说generally来讲的话,TD的方法使用的往往会更多一些,因为它有NC它解决不了的问题的functionality。并且对于两者之间可以做trade off的时候,那么两者它都可以去集中进来来解决问题。 我可以简单举这样一个例子,ABCDE5个这样一个chain状的这么一个state。左边其实是一个terminal state,拿零的reward,右边是拿一的另外一个terminal state。如果说我们在这上面去做出相关的随机游走的话,那么我们可以看到它相关的value function应该其实对于真实的迭代之后,是这么一条直线。 刚开始的时候我们是可以去有一个全零的这么一个estimation,所以说我们可以看到,如果是MC的方法的话,对于policy去做出一个估计的话,它其实下降的幅度其实是比较浅的。并且在earning rate比较大的时候,我可以看到它的震荡其实是很明显的。这个原因主要在于它的VS其实是比较大的。但对于他difference而言,大家可以看到它的下降速度其实很快的。原因是因为我是通过time difference这种一步一步的方法去直接做的。它的好处就好像是sarcastic grade decent一样,我是不用过完整个batch之后再去算一个grade,而是说是我每一步SARS prime这样一个transition,我觉得可以去计算相应的grade,所以它速度确实更快一点。 另外一点就是说我们可以发现它有一个整个loss先下去,后来又慢慢长起来的这样一个过程。这件事情其实在MC当中其实是不太可能会发生的事情。因为MC整体而言,他做的事情就是去从大量数据当中求average,所以说这个过程它最多会导致震荡,不太会导致整体趋势先下去后往上涨这样趋势。但是temporal difference learning的话,它的目标值其实就是会变的,整个目标值会变。所以说这个loss它其实是一步时去查分的loss rooming square error,而不是MC当中的ruin square err rosa。这个其实是对于整整个GT和它自己的estimation之间的区别。而这一步上大家可以看到是两个V之间相减得到的区别,于是它就有可能是客观的并且错误的估计了这个loss function。现在下降的比较厉害,后续的再慢慢的提升上去,这就是由于model 3造成的一个结果。 最后我们图示一下这几种方法的一个关系。这个NC的方法,人工智能当中其实做搜索的时候,我们会有一个回溯,叫做反传的这么一个概念。这样一个概念也就是说用未来的信息回溯回到当前的这个信息之上,去做出对于当前信息估计的一个更新。 而MC而言的话,其实就是一个像深度优先搜索的这么一个概念。我先搜到了具体的每条pass的最低点,最后面的terminal state。看到了整条轨迹的故事之后,我再去将这个信息aggregate回到原来的信息上去。这个aggregation function其实也就是去计算它的这么一个return,基于这个return本身和当前这个节点上的VST去做出一个guidance,去做出一个学习。而temple difference learning其实走一步就可以了。 我走到下面这一层的ST加一之后,我对于ST加一就马上可以去做出一个value function的估计。基于这个新的估计加上一步得到reward,我就可以已经去对当前这一步VST去做出相关的更新。所以大家可以看到在这个时候所用到的信息量其实只有一部stay trade。而更多的这种估计的大部分其实来自于我当前的value方式,对于下一个状态已有的估计是怎样的。 而对于动态规划而言,它更像是一个广度优先搜索的方法。我们网上做动态规划的时候,都会和广度优先搜索绑在一起。它的做法就是下一层我所有可能去访问到的所有节点的概率值,以及访问的过程当中我一步得到了reward。加上这部state它的value unction要求,期望我们才能够去全面的做出来这样一个动态规划的更新公式。这个时候就往往需要知道整个environment model是长什么样的,才能够去求得所谓的这个期望值。 而对于前两者而言的话,无论是你是伸缩到底,还是说只伸缩一步,其实只需要让我这个环境采样一条分支就可以了。在这个时候使用的相当于是海盗这条分支,它的概率正比于整个环境。我对于走这条分支的这样一个具体的,我要去求期望的这么一个概率。所以这两者之间其实是一个直接去算平均和去采样去算平均之间的一个关系。 于是接下来我们可以再去谈一谈这个多部的实力差分学习之前的话我们主要谈的是一步的。一步的情况下,我们只看到了一步的transition和一步的reward。我们显然对于time limit比较有有在存在的情况下,我们也可以去跳过,其实是可以去跳过多步的预测的这个部分,直接进入模型的控制。 如果说是我们是拥有一个比较好的一个horizon的话,我们其实是可以去考虑说去综合一下我看七部的直接的reward,再去T步之外或者N步之外去看VN加1VST加N的这么一个value function,去做出一个trade off。因为大家可以知道说,我如果一次更新当中看到了多部reward,其实我们其实是可以去获得更多的信息量的。但如果说我看到多部reward之后,其实也会。带来很大的variance的话,我们不能看很长的轨迹的reward的话,那么我们可以选择去使用value function。所以在这里的G括号N它的意思就是说我其实看N部的reward,从RT到RTN减一总共是N步的reward。我们可以看到接下来的这一步的state就是ST加N了。我们再去使用伽马N次方乘上VST加N去估计未来的这么一个价值就可以了。这个我们可以后面再去稍微再讲一讲TD lambda具体的这个工作。 在这里的estimation就是value estimation这个部分我们就会先涉及到。这里包括的就是说大家可以看到我们整个去学习强化学习值函数估计的多种方法。最上Y轴其实是一个叫做full backup和sample back up。Full back up的意思就是说我完全知道整个环境的这样一个概率,我们去做的时候是expectation的bank up。而下面的话就完全是使用的是sample sampling的方法去采样数据,更加贴近于我们的model free的方法上面,更加贴近于model base e的这种方法,横坐标其实是我们后续可能会讲的。 对于yellow book ups我其实更多的只采用一步的temper difference就可以去做出学习。而对于更deep的backup PS的话,它深度其实深到底的话其实就是纯MC了。如果说它是只是一步的话,其实是time一步的叫TD zero。而上面的这个lambda我们后面可以看到,它其实是一个综合多步的这么一个综合器。如果说我又是采用的很深,又是fully使用的环境的back up的话,其实就是这个叫做exhaustive的search,包括蒙特卡罗树搜索这样的方法。我们也会在后面的类似于规划当中这一节中给大家去做相应的设计。 总结一下值函数这一节上节课就讲了。其实更关注的其实是模型的强化学习在黑盒环境下如何进行使用,如何更好的去得到我们相应的策略。值函数估计它是一个必不可少的一个环节,就是说我们首先需要去找到我们相应的价值函数,然后我们才能够去找到策略提升点。找到策略提升点的时候,我们才会对我们策略进行新的一个更新,朝着这个提升的方向进行更新。所以说的话,我们估计值函数本身其实非常重要的那我们有两类最主要的方法。第一类方法就是蒙特卡罗方法,直接通过采样的平均值去估计我们对于这个策略当前的value的一个值。另外一方面就是通过自助法boost dripping的方法,通过一步的观测再加上下一步的一个猜测,去更新对于当前这一步的价值的一个估计。 这两种方法的话它的劣势总体而言的话,temple difference方法会高优于MC的方法。一点原因是因为它有MC完全无法解决的场景。那就是当我的环境其实是没有终结的情况下,我可以通过片段学习的方法来直接更新我的策略,更新我的价值函数。而MC方必须要等到这个状态结束,整个环境结束,他才能够去做相关的更新,这是两者之间的一个区别。从模型本身的behavior的角度上来讲的话,TD它是降低了various。而MC的优势是virus很高,它没有bias,这是它的一个优势。
Podcast Editor
Podcast.json
Preview
Audio
