Sources
上节课我们最后讲到了说如果我们的模型本身不是那么容易学的特别准的,或者说是它不是那么简单的。比如说格子世界这种其实几乎给你了的模型,我们好像是需要通过interaction data,通过experience data去build一个newer network。然后这个news network definite它会有一些inaccuracy的问题。 那我们怎么去使用的模型?首先第一点就是说我们对于一个模型,如果overall我们就直接去评估它所谓的accuracy或者inaccuracy,这其实是不合理的。原因是因为一个模型它真正意义上来讲,我们可以认为它是一个什么?是一个stay transition的model。假如说我们不管real function transition这个model,它其实是一个dyna system。 我们对它进行一个评判,很显然是得首先给一个policy。在交互的这个过程当中,我们对于下一步state去做一个预测,这才会带来所谓的inaccuracy统计的基础。而不同的policy它可能就有不同的一个交互的一个结果。比如有的policy他可能就原地不动,那肯定不只需要是针对于某一些state,它的accuracy最高就行,但这个model可能很显然是不能用的,因为它只是对于原地不动的policy,它可能会预测的比较准一点。 所以说这里的问题就更像是我们之前算PPU那种方法去计算出两个policy,它在遭遇到相应的state之上,它会碰到怎样的一个care divergence。而在我们这边可能会是说质量model或者是真的model和我们学的model。他们在遭遇到当前的SA payer之后,对于下一个s prime的一个分布,它可能会带来怎样的一个变化。大概这几个问题的话,我们可以先去看接下来这几个部分的工作。 第一个工作我们就叫做shooting message,就叫做我们也经常会提到一个词叫random shooting。他意思很简单,就是说我们如果build这个model之后,我们可以直接的闭着眼睛和一个sequence of action去做交互。比如说在这里我们给定了S0之后,我们直接就做出一个action sequence。大家可以看到我直接sample action sequence的意思就是说我在每一个time step take哪个action,其实跟当前time step具体的state没有关系。直接take这个action sequence顺序执行下来。于是我们就可以得到跟这个model交互,就可以得到一系列的这样一个派加水data。 在加水data当中大家可以注意,除了action s0以及所有的action,它是真实的,也就是提前定好的,中间的所有的输出都是由这个模型输出的。比如说reward,比如说next state都是由这个模型输出的。基于这个模型输出的state,这个action这个policy已经定好了,就take这个action IE,比如说再得到e hat。所以说我们在hat的都是模型输出的,你可以认为是simulated data。 那么有了这个tragedy之后,我们能做什么呢?我们其实就可以基于这个state这data去计算一个SA pair他之后能够获得怎样的奖励值。所以这里大家可以注意,我们其实是可以在一个SA之后去sample一系列的sequence。对于一个一系列sequence之后,我们可以计算这个sequence它给我们带来的return是多少。最终我们由于在当前S状态,我们可以对于缩短SA都去计算这样一个q hat,都可以去和model进行交互,sample出相关的专家来去计算所谓的这样一个estimated return,那我们就可以去选择在当前S这个状态带来q hat SA最大的那个A来take,也就是所谓的这样一个MPC在model predict control。 也就是说什么叫model predict control呢?在控制当中我们是build了一个mode。这个mode有了之后我们其实是对于每一个可信任的action,可选择的action,往后去采样大量的sga data,然后去得到计算得到它最后的结果的价值,然后去选择价值最高的那条轨迹的第一个action to take。这样就是model predictive control。这样的方法其实我们就会问说,这个action sequencing应该如何进行选择或者生成呢?一个最简单的方法就是random shooting,叫做随机的去采样action sequence。得到这个之后,我们可以发现说之前的这个框架完全可以跑,就是methods完全可以跑,完全可以去得到一个最好A对吧?这个它计算下来的也最好的A它的好处很显然,就是implementation非常的简单,我甚至action sequence可以提前采样。 好,第二点就是说我的computation burden其实是不是很大的,因为它压根没有gradient计算,我们就直接基于action去做了planning,得到结果之后选择最好的action,这个过程当中没有任何britton。第三点就是说我们其实并没有去specify所谓的task horizon,我们就是跑到最终的结束。但是这个最终结束本身它就像是一个reinforce算法一样,它得要求我们的这个episode拥有结束的这样一个限制。它的坏处很显然,high variance. 因为我们每次去跑任何一个random shooting的action,它肯定会是得到的return。最终我们选择出一个最高return的一个action。即使我们多做几篇average,这个vis也一样会比较高。 一个简单的也是非常粗暴的一种一个refinement,一个更新的方式,叫做cross entrepreneur CEM。他做法比较简单,也就是我们叫action。因为我们这边其实做的action都是跟state没有关系的。我们只overall去看一下这个action,它更容易是一个好action还是一个坏action。也就是说它只要yellow一个比较高的return,或者一个比较高的reward,我们就把这个action放到一个池子当中去,叫做highly word action。把剩下的action放到更大的池子render action当中。我们每次采样的时候,其实就尽量的去采higher wall的这个池子的action就可以了。 作为shooting的action sequence ts这个方法它非常简单。但是毫无疑问它能够比random shooting带来更好的一个performance。但是它的variance大家可以看就更大了。一方面当然我的reward比较高,对这种random shooting的message它的varies就会更高。另一方面,当我们去选择这类的action,它也有可能是在这个sequence之下,它其实并不一定是一个很好的action。由此带来不确定性,这是之前的一些工作,从18年开始,伯克利团队就提出了一个工作,一直沿用至今,叫pets。这个工作的意思它是四个字母,前面两个字母叫problems on sea bee。What on semble model后TS的tragic example。 什么意思呢?就是在我们的模型,其实它所谓的uncertainty其实有两部分。这两部分其实在机器学习当中,我们在做泛化性的时候,它也有这两部分的一个error。第一个err或者叫做pyto mic。 And认知的不确定性。它的意思是说我们如果在一些数据的区域当中没怎么见到这个区域。比如说大家可以看到这部分,这是两撮数据。很显然这波数据和这撮数据它其实见到的数据已经很大了。这些region当中,这region以外的部分,比如这里中间和右边,我们压根没怎么见到数据。我们模型去拟合到数据之后,在这些位置去做泛化,它的这个不确定性叫做on epidemic uncertainty。因为没见过这类数据,其实我们几乎完全依赖于model本身的inducted vice,再在out of data distribution上去做泛化。比如大家可以看到这里我的model如果是一个像什么正弦曲线这种model,那那他在数据之外去做反化的话,那就只能按照这个形状去做反华。 如果我的model能是一些什么多项式等等的话,那么一般来说最远处的地方它就是往一个方向在走等等,它都是在数据分布以外的地方,根据模型本身的inductive VS再去泛化。这个问题就是认知不确定性问题。还有另外一类不确定的,大家可以看到它叫做allier thorium in uncertainty。它的意思是说数据分布里面它本来就是不确定性的。比如说在这里大家可以看到这个数据在这个位置,它的上下跌宕的本来就很大,起伏的就是很大,它就是不确定的。它的ground truth在这个位置上就是sarcastic,那么它就本身就是需要被建模的。所以说我们一般来说去minimize这个epidemic on thirty,我们往往会使用的是这个model的ensemble去做相关的操作,使得不同的模型在out of data distribution的位置,它的个性化的泛化,尽量的去除掉减少的。 另外一方面就是说some of what on sub of dynamic model,dynamic mode是什么?每次sample的时候它有它自己的recasting。我们需要保持这个模型的随机性,去构建这个theodoric uncertainty。本来你是看到了再多数据它就分布不一样的,就是一个比较宽的分布。如果说我们都是拿模型函数去构建,是一个函数去构建,那么我们永远没有办法去model这种electoral uncertainty,所以说其实这个pace工作就很简单了,它其实是将多个高斯过程去做出一个三这高斯的过程其实是这样子,每一次我们是基于之前的SA pair去产生一个新的高斯的命和covers matrix。基于这个min和conference matrix去sample下一个状态s Price,这个基于上面一个SA到下一个s prime的这么一个缪和sigma的映射,它是一个高斯它是一个神经网络就可以了。 我们有K套神经网络可以就是K个高斯过程去做一个ensemble。这个ensemble的方法是什么呢?就是说我们是不断的各自去学K套高斯过程的参数。然后每次在采样的时候,我们只拿一套采样,一个一条线可以这样不断的去往后去走就可以了。当然还有一类的方法,我每一步我都是可以去重新去sample一个高,然后再去采样,这样做的一条小吊水当中,它就有多个高斯过程都被使用了。它可能你说这样的好处在于是说我们可以去更好的去model。比如超越一个高斯过程,它本身的建模的一个upper bound一个capacity的upper bound。 有了这件事情之后,有了这个planning的基础能力之后,我们怎么做呢?其实也就是我们有多个高斯过程。在这个高斯过程当中,我们不断的去往后推,也一步找到这条轨迹最大的return的那个轨迹,去take这条轨迹的第一个action,就像什么beam search这样去做的。往后去搜几层,发现说在这几层之下有一个action最好我们take就结束,我们又走到新一步,又往我去搜几层。大家可以看到这里其实有一种方法,大家可以看到有各种各样的分支。其实就他选择了不同的轨迹采样,说不同轨迹在这部分轨迹当中选择了return最高那个轨迹的第一步action往前就走了一步,接下来再去采样。所以说就会有这样一些不断的往外去发散的,但是发散的距离也不是特别长的这样一个。你可以说它是树枝,也可以说它像鱼骨头这样一种数据结构。 所以说pace其实比较简单,它就是说无论通过CEM的方法去采用action sequence,我是每次去通过采样出的这个高线去计算它相关的一个action sequence的一个value。我们再去采样最好的action,把deliver到environment当中去,这样不断去进行就可以了。但是在这之前我们得需要去训练一个probabilistic ensemble的DNA ics model,even一个dataset去训练好它就可以。这样的一个工作,其实大家可以想象它是非常简单的。它甚至都没有一个policy。其实就是不断的去做action的采样,通过planning的方法去选择一个比较好的action。至少在那会儿,2018年new urbs,大家可以看到model free的方法,包括PPU soft act critic DDPG这些方法它都已经出来了。Pass方法的话,它其实在这些performance上,这些环境的performance上,它仍然能够较为明显的超越这些所谓的好的model free的方法。 我要clean一点,就是说大家可以看到这些环境都是什么环境?都是自由度不算很高的,七个自由度左右的这种连续的较为确定性环境。这样的话它的高斯过程的构建其实是比较简单的。那个环境本身是这个determined environment,就是确定性的下一个prime given上一个SA下一个SR其实是一个函数确定的。但是你要去学它,我们会可以说还是需要这个不确定性的高层去替代了它。如果你就用一个函数,你很有可能会遭遇比较大的compound问题,因为你的输出就是一个值,而这个值它它但凡超过了自己的这个可信任区域,下一次输入它就马上就会发生掉。所以说即使是确定性环境,我们也不妨使用do casted model去拟合它,去采样出额外的数据。 好,那么有了这样一个RS和pets本身的一个基础之后,一年以后的neuropace还是这个伯克利团队,当时和Peter a bill他们一起联手,搞了一篇非常重要的model base的工作。所以那个时候森林那边其实是刚刚这里他提到了一个好的一个skin,叫做branch rollout。什么叫做branch的roll out?它的意思是说我们有没有可能真实的历史数据当中去选择一个分类点。选择了分类点之后,从这里点开始出发,接下来我们就使用的是模型和策略的交互。 Branch out to得到了一个新的旁枝。这个旁枝它得到的数据相当于是原始的骨干上的数据的一个数据增强,就增广了一些新的数据,对于我们的模型使用一个model free的方法对我们的policy进行更新,就在这个时候会问说如果盘子的长度等于一,其实是什么?其实就是我们熟知的da算法,单打算法当中,它所有的基于simulated data都是q planning q planning只弱一步,直走下一步s prime,于是我基于这个四元组,我就直接学习一下就结束了。但是我们可以考虑是说我们这个模型它如果学的好的话,是不是可以多往前走几步。因为你只走一步有什么样的后果呢?咱只往原来的真实数据,往往前的旁枝走一点点,相当于他只发展出了一点点的新数据,因为原始数据是这一只,你直接去使用原始数据训练的就model free RL。 但是我们用model之后,我们又往旁边去走一点点,但是走多少呢?你如果只走一步q planning,一般来说还是靠谱的。但是是不是data efficiency就没有那么高了,就跟model free差不多呢?因为你只走了一步,你没有在这个空间当中做更加好的数据的利用。 关于论文的名字也叫做to trust your model。什么时候你应该相信你的model?他回答这样一个问题是当我们相信我们的model的时候,其实说白了这个K值大家可以去推的比较大。比如十,你往前走十步。因为我们相信我们的model,我们敢往前走20步。如果我们不相信我们的model,我甚至K等于0,就相当于我根本就不用我的模,那么这件事情该怎么去衡量它呢?这样的分析其实在model y enforcement in当中其实是比较重要的。我简要给大家去诠释一下它的分析过程,以及最后得到的一个结论。 在强化学当中,其实我们经常会做这样的分析,去build一些policy和policy之间,model和model之间的一些distribution之间的距离。因为policy本身是sarcastic,model也是sarcastic,所以说我们往往会build一些使用一些distribution之间的metric distance metric去衡量policy和policy model和model distance在这里有一个非常棒的一个选择,叫做total variation distance,就DTV total variation distance它的这个写法就是它其实也是去衡量两个分布。比如说一般是这样写的,两个分布之间的instance,它的写法一般是这样子的。 这样写的一个得到一个结论是什么呢?比如说两个分布,如果这两个分布老死不相往来,差距几乎就support。其实都是完全destroy的话,你会看到左边这样一个积分积过来,它就是把P先记一下分,因为Q全等于0,再把Q记一下分,这个时候P全等于0,这样子做就是等于2。那前面除以2,那么total variation distance就等于一。很显然当这两个分布比较接近的时候,次去积分的时候,这两个地方相减的位置还是比较的接近的话,那么我们积出来的东西不是特别大?那么当P等于Q的时候,total是distance就等于0。 为什么我们会喜欢这个DTV的metric?可能原因是因为DTV的metric它满足三角不等式,什么叫三角不等式?我假如说有PQ假如说还有一个distribution叫R那么一定有这么一个性质出现。ETVP和Q是小于等于DTVT和R加上DTVQ和R的有三角功能是存在的的话,咱就可以去推很多放松的定理,这是total variation distance的作用。 另外还有一个部分就是说total variation distance它严格意义上来讲小于等于KL divergence两个distribution。它的TDV就是total version,就是小于KLD的k divergence distance。那么KL divergence就经常被使用在一些我要采样数据,我要去做分类这样一些连接点上。所以说这个数学工具又会被经常TTV放缩完用三角不等式,放缩完再去用killed divergence一套,那就有可能会有推出一些我们想要的一些结论。 我们在这边,其实给大家看到有一个叫做ap one派pad,我们叫做policy shift。意思是说我们当前policy正在学的policy派和收集数据当前这一轮数据背后产生的policy派叫派D他们之间的这样一个在S值上取max的total ation distance是多少?这是第一个。因为我们取max主要原因就在于我们其实是希望把棒子全部都套进去。如果你取名或者取expectation,他就可能有的放松就不够套住,这个不等式当然就会导致这个结果,就你放的太太松。那么EM是啥意思?就是说在model层面上,基于data connected policy两个model遭遇到的state action的pair,它接下来去预测接下来的state和reward,它的total variation distance和真实的model之间的距离。第三个叫extern m prime,也就是说在当前的policy的基础之上,data的基础知识这两者之间的ETV its distance total variation distance是多少? 有了这几个值之后,其实有一个最简单的推导,这个不是特别难。如果大家去参与论文的附录的话,其实推导不难。也就是说我们有这样一个磅的存在了。这个棒是什么?大家可以看一下。 这个叫做真实的policy的value值,就是eta pi我们用它来表示这个policy和环境交互产生的return的期望,就是真实的policy的value。这个ita branch它的意思是什么呢?我如果是在我们刚刚说的branch roll out的这个数据训练之下,我得到了policy,我得到了这样一个evaluation of policy的价值,它和真实的这个eta派之间的bound是多少呢?就是二倍RMX后面这一项的话其实当然是直接推出来的结论。伽马就是我们的MDP当中的这个discounted factor推出来结论是什么呢?大家可以看到,如果说epson派本身大,那么这个bound当然就大。 这个bound大其实不是一件好事情。这个差距值越大,它代表着你在branch route的这个基础之上,它的discrepancy可能会很大。那么你在这个branch route下去优化你的policy,优化了很多价值之后,由于这个棒子大,它最终的结果不一定提升的。因为这个后面里面的东西太大了的话,也就是他们俩之间差距值可以是很大。那你再优化一个差距值很大,没有怎么耦合在一起的变量的其中一个。另外一个可能根本就不动,最好的结果就是这个中括号里面的东西为零。那么优化做优化branch child。价值就等于优化原始policy价值。 我们来看一下,在这个时候你会发现什么呢?因为伽马是0到1的,随着K面其实这一项是变小的,这两项加在一起是变小,因为是伽马K次方,那么伽马K次方K变大,那它就变小对吧?但是右边这一项K随着K变大,它是直线上升的。所以说在有的时候大家可以判断得到一个结论,在这个epson MI和ipsn派的T比较大的追求梯度比较大的基础之上,你会发现得到的结论是必须得是这个梯度值比较小。如果这个梯度值比较大,这个模块要最小化的话,可以直接等于0。就中括号里面的这个部分当中,如果对K求导等于0,让结果发现optio k就等于零的话,那就说明压根别用了,别用你的模型。因为你K等于0,你但凡brand child出来一步你也是没用的。 这个为什么是这样子做的?原因是因为它做了一个简单的放缩,因为这在这个时候IP m prime它其实算不出来。因为它需要就像PPO1样,他需要使用新的policy去sample data。那新的policy刚刚才建立起来,还没有sample data,所以说它只是使用data connecting policy。第三步data,它就会有这样一个一步的向泰勒逼近的这样一个式子,就导出了这个IP m就是说我们的模型的区分度变化速率和这个policy shift变化速率之间的racial。 那么这个得到结论是什么呢?这个一旦是比较小k optio k大于0,我们来看一下什么时候option这个对手会比较小。刚刚我们其实也展示了一些像hopper就是单独跳,或者是Walker to d这种走路的Walker。在这种情况下大家可以看到这个racial就小到大概十的4次方,负4次方到负2次方之间,这个ratio其实足够小。足够小之后我们导出了K值,它就不一定是零了,就可能是1234 50等等。 在这个时候你会发现说,我们就回到了这样一个问题。When to trust your model? 其实就是说在model当中,before learning的时候,1 policy在不断的shift,在不断的变化。2 model产生的这个l turn也和他之前的connecting model变化。在这个时候这个变化率决定了我们到底要不要使用我们的model base reinforce。于是在这个时候他可以看到,如果这个变化率比较小,它意味着什么?意味着policy变化的很快,model变化的很慢。 那什么时候会发生这种情况呢?其实很多简单机器人场景就会发生这种情况。一,我们的环境本身其实是一些物理的结构,其实比较好预测。第二,我们在这个环境当中,我们比较efficiently去改变我们的策略。 是的,我们这一项d policy和offer分支。第一d model它就会变化的,相比之下就会小很多。在这种情况下,我们就可以去trust我们的model,这是他的一些reMarks。 这就很简单,我们拿数据训练了model。基于model我们去调出了一个最好的case step role。基于我们采样出的新的这个叫做simulated data,和我们的real data一起去训练了我们的policy。这个policy训练的时候可以用任何一个model free reinforce learning的算法,PPOCC等等,它都可以去相应的训练。最终他也是在这样的一些environment下去做相应的测试。这些测试当中其实基本上我们都能够去clean说这些环境当中它的这个ratio。刚刚我们说的这个d ipsa派分之d ipsa m的这个racing是非常低的。这样的模型我们就会认为它是trustful。 那什么样的模型其实我们就不太认为它能够trustful呢?其实我们也尝试过很多别的模型。一般来说环境是离散的模型都有点难。你比如说有些些游戏它环境就是离散的,一些格子或者是说一些action本身policy也是离散的。它只要稍微差一点点,比如说有3%的这种差距,比如说用环境是离散的,那么next state distribution它就是一个多这种distribution,每一个strip tion当中的这个就是柱状图的distribution,这个柱状图我们做过一些简单的MDP操作,但凡差了0.03,比如说我们接下来有五个state,那平均下来每个state 20%左右。当然state有个高的,有个state低。 我们后来会发现一个这样的一个MDP,但凡你的估计差了0.03%,就0.03的这个差距。比如说0.53,你估成了0.50了。Next state distribution就这个东西,它是一个柱状图,这个柱状图它其实是个百分比数,是3%的差距。后来你导出的performance policy就已经大变样了。 这件事情我们当时觉得很神奇,就是这么一点点的error就会导致很大的。现在出了policy的差距,就会发现说在这种情况下,我们可以用这个理论来看的话,我的这个racial其实蛮大的。导致我就压根不应该使用我们的data去不要任何的data。是吧rod还不如out,这是一些基本的一些指导方针。 大家也就看到这个MBP其实是在诸多的算法当中是一个比较简单,但是特别好用的算法。我们的团队很快的就重复出了一样的效果。它就是能够像一枝独秀一样,这种超过大量的model free方法,以及早期的一点点的一些model base的方法,这个还是很容易重复出来的。于是我们当时团队也是开始去研究MDPMDPO这一类的一些方法。这里面背后的研究工作不只是MBQ这一篇工作,还有一些别的像sale boy的工作。 我们的一个基本逻辑就是说我们去优化,我们去imagination这个连接policy value description cy和sample efficiency之间的一个性的关系。一个policy value discrepancy也就是这个discription cy大家可以看到在model当中他估计的当前的policy的value和在现实环境当中的policy value之间的这个value discrepancy。如果这个discription越低,就说明我们可以多去使用我们的model。那我们可以多去使用我们的model,我们就其实意味着带来更高的sample efficiency。大家可以看到这就是所谓的policy value discrepancy,吧? 这两者这个discription cy bound它代表什么呢?代表着说我只要在我的模拟环境当中去提升我的policy的这个值差距超过了C那我在真实环境当中policy的价值肯定提升。于是这个C这个棒子越紧,就说明我越容易在我的环境去完成我策略价值的提升。提升完了之后,我就在现实当中就有相应的提升,原因是因为我的绑的很紧。 是一个简单的一个逻辑。第一个工作是双向模型,建立在MBPO这样一个模型之上,我们去做额外的一些讨论。第一个是说我们的模型一般都是往时间以后的方向去推,就是往未来去推。当前正在state 0,然后我们去往S一去推,往S2去推,然后产生相应的数据,使用这些数据再去选我们的策略。但是大家可以发现,因为我们的模型有error,所以说一般来说每一步它都会产生相应的一个error。这些error会额外的积累在一起。最终在开埠以后,你会发现这个state离真实的state差距已经很远了,我们叫做only area复合误差。 这个复合误差它很显然是根据你推演的长度时间、长度步数来来不断的累积的。每一步它往往累积到的这个error都差不多都在一个数量级。但是我累积多了,我的error就会整个起来。就是这里你大概可以有一个简单的示意图。如果我都是往后去做推演,那么每一次我都是不断的在前一步的error的基础之上,进一步的累积我的误差。但是如果我的model是不断的可以往时间以后的方向去推演,以及往时间前序的方向去做推演,站在了一个真实的state基础之上,这个过程叫branch roll out,对吧? 往时间以后方向去推。如果说我还要往时间以前方向去做推演,假如说这里省略号就是直线的话,大家可以看到这边一共推荐了四步,12344步。它其实不断的积累它的cumulative reward,不断积累error。这边的四步是往后推演两步,往前推演两步。显然它积累的compound area就要小一些。原因是因为它每一步都距离原来的真实的这个branch out的点很近,对吧? 那么这件事情我们可以怎么去justify它的真实性呢?我们其实就build了一个双向的dynamics model。你就可以往后去推,往时间接下来未来的方向去推演,基于当前的policy take action,然后去预测下一个s prime以及在下一个s plan或者当前的s plan,我去往前去推,一是找到了一个A二是找之前是哪个S过来的。通过这种方式,我们去build了另外一个双向的一个dynamic model。使用我们的chat c data就可以去做到这一点。因为全家瑞代都会告诉你了之后,那么你往前去预测和往后去预测其实是一样的。 当然还有一个点就是说我们如果是基于当前的policy是给定的,那么S到A的预测就不需要做了。因为我们在当前就有有这个policy,我们只需要去预测是SA到s prime的映射就可以了,但是如果是我们要做后向推演,基于一个S我要去猜到底是哪个action过来的,我得去学一个policy。这个policy就是说这个学习方法,我们就用下一节课我们会讲的模仿学习的方式去把这个policy给恢复出来。基于s Price和这一步的A之后,我们再用反向的dynamics去把当前的S给预测出来就可以了。 有了这两种方法之后,我们额外还有两个细节,一个就是说我们采样的state作为branch roll out起点的state。它可以是价值比较高的state。原因是因为以前的话,我们只往时间以后的方向去做推演的话,那么它从它的初始状态S稍微弱一点,稍微价值低一点没有关系。他好比说我开局比较差也很正常。但是如果说我是要往之前的方向去推演,也就是说我要知道这个state是怎么过来,怎么得到的。 那么我们的起点状态就最好是比较好的状态,为什么呢?因为起点状态比较好,我们就更多的去学习说我要我可以如何去行走,以达到这样一个比较好起点好的状态。以后我们用它的时候就会去走到一些更加好的一些中间的状态。所以说我们的sample sample起点的时候是一个soft max over它的VS的这样一个简单的一个做法。另外还有一个就是使用MPC使得这个shooting算法,使得它能够sample得到一个比较好的action,能够使得它到了比较高的return。 这个b by directed model business policy optimization算法,它是学习了一个模型,学习完模型之后,采样的时候采价值比较高的branch alt然后去做双向的模型的rots。得到了双向的全加水之后,将这些全接水一起放到这个d of model的新的数据集当中,和d of environment这样一个environment产生的真实数据集混在一起,去训练一个model free的policy,然后将这个policy再进一步的去和环境进行采样,得到下一轮的环境的模型的一个训练数据。我们也推了相应的bond其实就是described cy bound。 大家可以看到如果说是单向的话,那么robot length就是会被做成是总的K1加K2。假如说是往时间以前的方向去推,就是时间以前的方向去推K一步,时间以后的方向去推K2步和往时间以后的方向去推K1加K二步。这个单向rot我们可以看到这band,一个band是K1加K2的,因为他就往他的推演的length是K1加K2。还有另外一个是时间以后的方向去推K2步,时间以前的方向去推K一步,结果我们得到的棒是K1和K2的max操作加上max k1K2肯定是小于K1加K2的。所以说棒上面这个棒会更紧,这个棒会更紧的意义就代表就是说这个棒的更紧,我们就更容易的在模拟环境当中去提升policy,以于提升真实policy的价值,那么就更加可以信赖于我们的模拟环境。最终BMPO和这个MPO也就或者MBPO它们之间的对比。 我们也可以看到从sample efficiency上的角度上来讲,它基本上节省了20%到40%左右的sample efficiency。也就是说提升了sample efficiency 20%到40%。少用了相应的数据,达到了相同的performance。以及我们也去通过S和s prime 4核和RS hat预测的s hat的这样一个二范式的average的去衡量了model之间的component era。我们可以看到length,当role length比较长的时候,即使这种倒立摆的这样一个简单的环境也会产生极大的compound era。但是基于这个双向模型,它产生的compound error,基本上是模型产生compound error rollins的两倍,才会达到同样的compound area。这样的话它也就证明了是说我们这个方向的模型,它产生数据带来的compound era会更小,以至于能够以更好的sample efficiency提升模型policy的性能。 有了这样一个基本的架构性型的思路以外,我们更多的去考虑机器学习的一个perspective。也就是说一个模型在被训练的时候,它使用到的数据的数据分布和这个模型在被使用的时候它遭遇的数据分布之间,它其实往往会有区别。我们这边MBRL的就是一个很典型的问题。你在训练的时候,你是上一轮的策略招呼出的experience data用来训练我们的模型。但是这个模型但凡被使用的时候,是在下一轮和新的策略在做imagination的时候再去做交互。于是在这个时候你会发现说进行训练的时候的输入数据SA pair的分布和模型在被使用的时候做rollout使用做planning的时候使用的SA pair分布式。截然不同的这种分布会导致说你模型其实就是逊片了。训片之后你在模型再去使用它做做roll out的时候,你就更容易带来更大的upon the arrow的问题吧? 那么这样的问题会怎么去解决呢?过去其实会有一些解决的一些方案。比如说去使用不同的architectures,或者是损失函数,或者是说比如说我build一些多步的损失函数。一步我们有名MSE,我们还可以build一个K步的MSC,就往多多往后三或K步。然后在K步之后我们看state的MSE等等。这些方法都是一些我们去尽量的拉近模型之间的距离。但是并并不没有直接去解决我们让模型的输入和输出之间分布要拉近的这样一个问题。所以说我们简单去做了一个简单的一个理论上的一个分析。 我们的环境真实的环境使用的是transition的这个T作为transition的我们的model是TA hat occupant's measure,我们都比较熟悉的state a visit to,就是occur的一个分布。我们会有一个integral IPM,就是说我们会有一个衡量两个分布之间的这样一个距离的metric,叫做IPM。这个metric经常我们会使用的还有一些WE distance,MMD就maximum description,这样一些使用到translating的一些task。经常会使用这个IPM error作为两个分布之间的一个distance metric。 我们简要推导出了这样一个bond,这个bound也是value之间的description。Cy bond就是说在真实环境当中这个策略的价值和在模型环境当中这个策略的价值,他们之间有这样右边这个棒的存在。对,第一个棒子是叫做exploit in battery。它的意思是说我们是希望能够去得到的,是我们尽量的让这个policy的shift能够稍微降低一些,这样的话我们的bond就会更松一点。如果说我们的音乐exploit这个模型,导致policy之间的距离差距太远,那这个bound就很松了。 第二个棒子,其实做distribution distance bound,他的意思是说我们在派D就data connecting policy之下数据的分布和在当前数据分布派之下数据分布以及当前policy派在model的环境下数据分布之间的distance要小。上一页这个思路其实是在说我们的这个model必须得把它的价值得尽量的往上去提。右边这个其实是在说我们model的learning要尽量的和真实的环境,它的下一个SP要尽量接近,这是model这个基本的model base 2L下一次莱登其实就在告诉大家说OK policy也变化不要太大二就是说我们的distance变化不要太大。如果你distance变化大了,那么这bug就很大。而原来的这个MBRL只关心这两步,一学model 2学policy。所以说大家可以看到这两额外的这两步其实会导致我们为什么有的时候model s2会训练无效。 我们借助domain adaptation领域当中的这样一个非常重要的dis this的不等式,可以去借把它给放到我们的学习环境当中去。如果我们学习这个机器学习,最后结论我们讲我们讲了一些多min adaptation的工作。也就是说在target domain一个error,这个H就是一个hypotheses在target面上的一个error。它等于是在source说明上的这个error加上两倍乘上KWE distance of这两个domain之间的数据的WEE distance,再加上一个constant,就是说这个K是什么呢?是我们的整个hypos is space,它是K力皮孜的。比如说我们的所有的模型的梯度的二范式最大值不要超过K第一个限制。第二个限制就是说有这种限制之下,这两个数据之间的第一点维持距离它有一个距离,这个其实也是可以理解的,因为我们斜率是K2个分布之间维持距离是WE distance。那么他们的bound generational error的bound也可以被他们所绑的住。所以说我们也就是使用了这个维持距离。 对于我们的模型在sort storing就是训练的时候和storing它在使用的时候的输入去做出了一个WE distance的拉近,使这个模型它在训练和测试的时候和使用的时候的数据分布尽量的接近。最终这样一个compound era,它就可以这样下来,能够去取得一个更好的一个performance的效果。这节课先讲到这里。
Podcast Editor
Podcast.json
Preview
Audio
