Sources
上节课我们讲model base的reform learning,还有最后一小部分的内容给大家去稍微提一提。然后这节课我们主题是讲模仿学习learning。首先我们还是回顾一下上节课讲到的最后一个部分。其实模仿其实最关注的点在于说我的model学习完了之后,它和真实世界的这个environment model environment本身它其实是有gap的这gap其实会带来一个非常严重的问题,就是我用这个model,这个假的model它可以累积一些误差。那你这个的误差,就会逐步的去累积。随着我往后去推演分布的时候,随着这个N变大,相应的这个error就会越来越?所以说我们以前算戴AQ的时候,往往大家会使用说只使用rollout t等于一,row out步数等于一的这种setting?原因就在于我roll out的一步,一般来说大家还是接受它的几乎没有的这种error。但是roll的K步它每步累积误差变大,它其实非常严重的问题。 为什么我们的model rol的K步之后它就不行了?一方面就在于说model本身capacity可能会有问题。另外一方面其实也就是一个非常本质底层的机器学习问题。这个模型在训练的时候,他看到的数据的分布和它在使用的时候看到的数据分布是不一致的。那么在这个时候model actually它是BIOS的,你多步之后它肯定就累积的误差就会越来越大。显然这个模型工作在自己其实没有见过的数据分布之上,那它就不免会不断的犯错。 其实大家可以注意很多模型在训练的时候和把它拿来做工作的时候,都是不一样的数据分布。以前的机器学习课上我也跟大家讲过,现在的推荐系统,它其实关注的它的训练数据都是在展示过的推荐的上。然后用户有没有直接去点击它。通过这个方式他去判断说我在展示的数据分布之上去选择哪些数据是被点的数据。但是他真正的在使用推荐系统模型的时候,则是在全量的数据上他去做prediction,最后可能只筛出来5%不到的候选人。Item被展示出来,对吧?所以说他的工作的时候,碰到数据分布和他在训练的时候看到的水分布布是截然不同的这其实就是一个非常典型的训练和使用的时候8S不同的问题。 严格意义上来讲,可以被看成是两个domain的问题,一个是source domain,一个是target domain。我们可以去拿一些doma或者是transfer learning的相关的方法去研究它。所以说其实之前会有一个比较关注的工作。因为这个结论的话,它其实也是获得了越来越多的section,是怎么做的呢?其实是有两个域,一个可以认为是两个distribution,一个是mus一个是mut。 Distribution的意思就是说我其实是在source domain上它的这个data之间的distribution。所以说两个distribution之间咱是可以去优先tric。比如说WE moving 2 distance,使得我们去衡量两个distribution之间的距离。那么在这两个距离之下会有一个什么样的结论呢?就是说我们如果是有一个hypotheses的整体的set,它是k lip s字的意思,就是说对于每一个hypos函数,它最大的梯度的模长是小于等于K的,或者说就等于K也可以。其实告诉了我们函数本身它可以变化的幅度有多大。 有了这样之后,我们其实可以去做这么一个结论,在某一个source domine上,我们看到了某一个hypotheses,它的error是ipsn。这个s of h显示它在一个target表面上T上面epsilon t of h的时候,它其实可以被这两项给绑住。主要是三项,第三项是constant。那么这两项帮助是什么呢?一个是在sw上本身的arr加上,那加上接下来这一项就有意思了,是两个domain之间的WE distance再乘上二倍的KK大家也知道是黑里希兹,它表达了一个什么事情呢?就是说这俩分布之间,它的这个moving earth的distance是这个WE那么我乘上2K之后,我其实放的住了这两个模型也好,这两个posses这high posses在两个distribution上面的这个error之间的距离,这个是一个比较有意思的点。 如果说我有两个分布,它其实distance比较大的话,那么其实我在第一个分布上看到它特别work。比如说amazon arrow的值比较小,并没有意味着说它在第二个分布上,它的iphone error会很小。但如果这两者分布之间,它如果存在着非常一致性,比如说我们可以去学一些隐层的表征,使得这两个分布虽然raw data上分布上它其实变化很挺大。但是在隐层表征上面它的分布其实很接近的话,那我们其实可以去拉近这两个分布之间performance的一个gap。 有了这样一个假设之后,其实可以去推得一个这样一个结论。结论就是说我们所有A其实是在我们的model之上,environment model上面去做,就像simulator上我去evaluate policy performance,于是就会有这么几项出现。之前也讲过,第一项就我在这个environment model里面我的performance。第二项的话指的是model learning本身,说我是希望我们的model和我的真实的环境之间的这个tell divergence能够尽量的降低。那么第四项是什么呢?第三项是说我们不要让我们的policy的shift太大。这是一个与我们强化学习当中经常会碰到的一个现象。就是说我们不想让我们的policy距离我data connecting police太远,policy optimization就是在干这件事情。 最后这一项还是挺有意思的,就是说我们看到的就policy,看到的data distribution,而且是看到的是occupy the mayor这类的distribution。他们之间distance不要太大,这个distance就直接是用WE distance去去实现。因为它是一个我们刚刚提到是一个PM metric。 这时候我们就可以去搭建一个框架去environment在训练的时候和在做roll out,在做模拟的时候能看到的数据分布尽量的接近。所以说一个非常简单的一个训练框架。也就是说在模型他在训练的时候,一方面他是去预测,比如说next state去这样去预测它。 但是另外一方面,我们在做model adaptation的时候,就model要去做doma adaptation的时候,我们额外的一个损失函数就是这个model。它在使用他在去去evaluate,他再去encode我们的来自于真实世界的state和action,和来自于他自己之前吐出来的大家瑞dia当中的state action,这也会是他自己工作的一部分。他们的distribution之间的这个WE business要尽量接近,就是说minimize它的一个w distance的loss function指的是模型在训练时候,它其实有两部分的loss。一部分是predict next to next date,另外一个是使得我真实数据和我的做row out的数据从隐层上他们要尽量的被拉近,最终我们的模型就可以deploy下去了。因为既然有拉近的这样一个actually的损失,那它其实会使得我们模型在工作数据上的这个损失值算这个数据分布会比较接近是吧?由此这个叫做adaptation augmented mode model policy ization这个工作就出来了。 其实最简单的一个点就是在这第五点上,我增加了一个使用model本身产生出的simulated data和agent本身和环境交互处的experience real data。他们之间在model顶层上形成的分布,咱需要对它进行一个拉近,以此来训练我们的model。这样子的话我们的model在做root的时候,它的数据分布就会好一些。它的compound error,因为它见到的数据的隐层分布都会和real date接近一些,那么它的compound error会更小一些。 所以说一方面,我们可以去和一些model with force learning的一些space one去做对比么。AMPO这个工作的话,它能够会带来更好的sample efficiency,达到同样的performance的使用到的数据量是baseline的,可以优化一部分的samples。另外一方面就是说我们其实也可以直接去看它积累的compound era。对于role al length上来讲的话,相比于之前我们提到伯克利的这篇NBPO非常经典的工作。那么AMPO它能够去更好的去控制序列roll out的时候,它的compound era,也就会使得说它能够更进更多的使用它竟然没有那么大的error,能能更多的使用它,那就说明我们的sample efficiency能够更好的起。 最后还会有没有在MBPU当中的一个使用,这个我们简单的给大家去提一下,因为MBPU这个方法的话,或者说是model base arrow这个方法,它其实有很多条工序。我们学习当前的agent,然后agent和environment进行交互。Environment在学一个model,experience在model,model再去做roll out,然后使用相应的数据进一步的对agent进行一个更新。 这边有很多需要去调的一些问题。比如说我们要多frequently去做policy training这个real data去和我们和environment去做interaction的时候,需要使用交互出多少real da才能够baLance更好的baLance performance和sample efficiency。当我要学model的时候,可以说是多么frequently去训练我的model。以及我model做rot的时候,我raw length,我多likely to trust our model,这个需要做raw length要多长。 最后我现在有一些simulation data,还有一些experience data,real data, 他们两者之间的配比,以什么样的racial配比过来再进一步的去训练我们的policy。通过也简单的推导会发现说这个data。配比的racial其实在model base RO里面其实是一个很关键的一个点。这个点其实我们自己当时也会在想这个问题。当我在做model base reinforce morning的时候,随着我的训练数据越来越多,另外一方面我训练的模型也会越来越准。现在问题来,如果我的横坐标是策略他训练的轮数,请问你会觉得随着训练轮数的增加,我们倒是我们在这一步上配比real data和配比fake data,就是simulation data这个配比我们叫做假如说real data ratio叫做就是real data除以所有的data混在一起的data。因为这一步它其实是会把real data的数据和roll out出来的simulated data数据一起进入到一个model free的training framework work当中。 阿辉想象一下,如果说横坐标是我是随着时间往后推,我训练的人数越来越多,纵坐标是我要用到的real data ratio,到底应该是哪个更多一点?因为你越往后走,走的越来越准,大家会想象说是这个racial是增大还是降低呢?我model越来越准,我是不靠他的,还是多依赖一下我这个model。 我们一开始的想法是你的model竟然越学越准,你收集到的real的越来越多,可能想象很显然你后面会越来越依赖你的模型,你甚至是完全依赖于你的模型。结果答案正好相反,暗示real data aco要降低你的model based policy。Immigration会越来越好,为什么呢?其实从另外一个角度来讲,你你你的模型既然越来越准,那么你的real date是不是也越来越多呢?你越来越多,你是不是就没有缺失你相应的数据呢?那你当然是不是也就可以拿一个off policy的model free的方法就直接上了呢?我们后来发现说这个其实是有点反常识的。最终结果是real data ratio是随着训练的推进反而是提升的,越来越多的会使用real data ratio,尽管我们的模型越来越准。 既然如此,我们这个就是使用了一个auto scheduling的一个framework,你也可以认为它是一个auto ML的frame。比如说我们在外层会有一个hyper的一个MDP hyper controller。Hyper MDP的意思就是说,我如果是将整个训练流程看成是一个MDP的,不是这里面的那个跟agent真正交互的那个环境是MDP的。正在训练的过程当中,你给他去调各种各样的配比,给他去调各种各样超参,最后它的performance在变化,这个是一个MDP的问题。最后这个hyper controller它可以去调整的是一些training,一些rollout train model,train做roll out train policy之间的一些scheduling的一些超参数。最后的performance我们再以reward的形式回到这个type controller这边。中间这个部分就是正常的一个隔杯调整的model base的policy optimization framework。 最后的结论,其实我们会发现说各种各样的因子其实会比较重要。包括我们刚刚其实提到了这一轮上我要使用多少real data的ration。一方面在推推班子的时候,你会发现这一项会比较的有用,具体的细节我们就不提了,这边是real data的ratio,其实是比较有用的点。 首先第一点就是这个framing work下使用到的这个优化policy方法。它是比如说一个soft extra critic的方法。这个方法我们之前没有讲,但是它其实是一个off policy的方法。 第二点就是说我们确实走到最后一个点上之后,其实我觉得还是data它处处处在一个比较丰富的状态,确实不太需要model再去做增长。而你刚刚在最开始的时候,environment其实真是它比较少。我拿model的role data去弥补一下它的这个volume。其实虽然它不是很准,但是在一些大方向上,可能它还是会能够引导我的策略走到一个不错的位置。具体最后要精细化处理的时候,其实他还不是特别的关注model本身,他能够额外给他,比如说再产生10%、20%的数据。而是在那个时候会很关注data的quality。所以说有可能就在这种情况下,我们其实能够解释说为什么最后railway ratio它会下降,或者说real ratio其实会提高。 这边其实给大家去展示了一下training percent,training进程的percentage就是横坐标,纵坐标是多个curve,是多个environment下去使用的这个方法。然后纵坐标是ratio,大家可以看到其实还是基本上是在往上涨的。有一些个别的environment是渐渐的下跌的,我们只能是说它是皆可。因为你到底是看model看的多,还是看real data。当你比较多的时候你可以看它,其实可能会跟environment本身会有相应的关系。所以说与其你自己去猜,不如我们直接训练一个meta的去去对它进行一个相应的控制。比如说这个model pinning frequency,其实你会发现说不是你根据你定性的分析的话,你会发现说并不是万物皆可准的。对于某些environment,结果train frequency就是越来越降低的。对于有的environment而言的话,它的training frequency就是可以上升再收敛以及role length s。 Role length s其实也是一个很关键的点。以前大家会比如说MBPU当中就是直接使用有的K就直接是输入这个training process,它K就是一致的。比如K的A5。其实真实的情况是确实是随着你的moto训练的越来越准。你可以越来越依赖于这个mod,它其实可以更好的去使用这个roll length。但是从另外一方面来讲,你竟然会越来越依赖这个model,那说明你这个model很准,确实相应的real data也会变多。 如果是这样结合在一起的话,给人一种感觉就是说我可能会在一些缺失的部分,比较缺失的部分,我可能会依赖于我model去做较长一点的root但是其实overall来讲的话,我的data会越来越多。所以说我的real data将会全部使用进来。所以说overall我的这个real racial仍然是一个可能会增加的这样一个过程。 那有没有对数据增广的采样点做question?我们其实想过做了缺口的方法,但是当时是没有取得一个很直接的效果。但是现在的话两年过去了,retrial的技术又发展,那会儿的学生已经毕业了,我们还是可以再去尝试一下新的这种检索增强方法。其实现在我们的一些强化学习组,尤其是机器人组的人正在做这个课题。当你碰到了out of distribution的场景的情况下,你又没有办法使用这些增强的一些历史上的数据,再使用model,或者再使用一些额外的方法。比如说直接放回simulator里面去,再去得到一些额外的数据增广,再去让policy在这个维度上,在这个区域里面能够变得更好。 你刚开始的时候,可以先去训练一个model,对吧?这个model其实它分为feature spector或者encoder和decoder。但这个没有关系,其实就是model前几层后几层,我们只是选择其中有一层,在这个位置我们可以去做domain apt怎么做呢?其实也就是纯copy过来。在这边的话,我们其实就initial来自两个encoder,只不过这两个encoder当中的右边这一项,它其实是可以被训练的,算是推网络。但是右边这个推荐它就可以被turn。 在这个时候,对于每一个minimum,我可以去让我的model rollout的部分,the data和real data各自过两边的网络。因为一般来说我要拉近两个分布之间的隐层,都是通过我们。因为deep per里面都肯定是在mini base这个级别来做这个事。所以说我们在mini base的这个基础之上,其实是可以比较方便的去计算两堆数据之间的WE distance。这个其实是可导的。计算出来之后,我们就可以等于右边这一层这一支去做training。做完之后,我再用这边这只去initialize下一阶段的一个model的training。那这个时候又会去下去,是下一个state预测的一个损失项。 我们可以看一下这个流程,一般来说会有第三个流程是learn这个model,第四个流程是用这个model去做robot。第五个流程是将real data,就是experience data和real tried data,在于是放回到model里面去做model adaptation的那一部分。所以说确实是三号会有一个损失项,五号也会有一个损失项,但是他们输入的数据还是不太一样。 G士顿有的时候会说teacher,比如说他看到的数据会多一点,或者说他们和student其实是一样的数据,只是说teacher他的监督信号会强一点,再让teacher去监督student。但是我们这边,其实它是什么呢?一边是real dat另外一边是generally都是fake data,或者说是roll out data。而且他是在一个batch之上拿一个loss。如果是teacher student的话,是一个data instance,他可以拿一个loss,他这边是一起的,因为他一起才能算一个WE此外如果我这边还有一个词没有解释,那就是MMDX min distancing。 它可以定义一系列的kernel方式。比如说20个rbf高斯核函数,220个BF函数的话,它区别就在于那个高线的那个standard division。它可以在20个数值上去取,取完之后,其实说白了就是我我我其实会有20个metric,然后再去衡量这20个metric下,这两撮distribution下,他们的distance最大的那个是多少。这个被证明是比较好的一个。一般来说说做都没有做做traffic arrow都会去使用它。 对WE distance其实也是一样,它也会有一个在k lips的限制之下去找一个最好的script,or那么MMB也是一样的,我找一个最好的matic来分隔这两个分布之间得到最大的距离。对,都会有这样一种有点对抗的这种方式在里面。这一支其实我们做的会。就是model base r在几年前做的会比较多一点。其实我们在这支上其实没有讲的,可能会是阿尔法go阿尔法a zero这这支下来的方法这支下来的方法其实本身它不算是model enforce。你只要知道下期的规则,比如我落完这个子之后会吃掉对手哪几个子。 这个dynamic被知道之后,其实阿尔法狗zero其实一直在做这些相应的事情。只不过大家不认为它是model base 2U,原因是因为你是知道了整个棋盘的规则的。一般来说大家做model base 2U是但这个dynamic是比较复杂的,以至于我们是需要学这个model的。所以在这之前其实没有做这个事情,直到他们这个团队提了new zero这个框架。也就是说在阿尔法zero已经发表了之后,过了一段时间,提了new zero这个框架。New zero这个框架它的意思就是说我连annamite就下完棋,霍子之后要吃掉对方,哪个子被围住就没有了,或者说我下象棋或者下这个兽棋怎么谁吃谁啊,就这个事情都可以不用知道知知道对eventually的这个输赢,他就可以去做这样一件事情,还是蛮神奇的。 那么他怎么做的呢?其实就是将中间的这个状态,它其实把它变成是一个数状态。但是这个中间这个状态它并不是一个具体的棋盘的位置,而是说是一个被一个叫做H的encoder encode下来的一个状态。那么在这个情况之下,它仍然可以去做蒙特卡洛树搜索,如果说我不是一个棋盘状态,我就是一个中间encode进来的状态。包括后面这个google后面提到的一系列dreamer的方法,我应该下来也会有也会是将中间状态离散化之后,它就可以变成节点。之后在这边它可以去基于当前的离散的对于这个状态的认知学习。 到了representation,咱可以通同时去预测两部分内容。两部分内容其实大家如果直接去看会觉得很神奇。但现在在大语言模型时代下,其实经常会干这个事。就是我一套transformers,一套GPT架构上面出两头。一个头是比如说去去去做一些value的estimation估计好不好的事情。另外一套一个头直接出action或者出next token。所以在这里大家可以看到阿尔法zero其实已经干了这事儿。 就是说我一套神经网络进入一个state之后,我出两套东西。第一套东西是对于当前state的value,也就是V排S,我只需要去和我最终的结果去做一个偶合,我的VPS和我最后的输赢能够回归,这是第一种。第二个就是说我们会还会出一个policy,这个policy是什么呢?我基于当前的这个state直接出一个action distribution对吧?所以说P这边其实它其实等于什么?其实是派OS的形式,直接出了一个对于polar,对于action选择的distribution。 但是还有一项,大家可以看到这一项是什么意思?就是说派这一项啥意思,我这边可能用这个词,因为它还有个pad这边我干脆换成缪好了。这是参数化模型直接吐出的action distribution,它吐出它非常简单,因为我都不用做任何planning,我就直接吐出来它。 但是还有一个派,这个派是真正的MCTS之后的派,什么意思呢?就是说比如说我站在当年state CTS是一个非常empirical le的搜索框架。但是它的一个好处在于他每次去选择分类节点的时候,选择我要走哪个点的时候,是完全是基于当前的叶子节点的。我们叫做upper confidence bound就去选择。以至于他可以去选择值得探索的以及值命值比较高的这些叶子点去走走到开到一定的这个叶子节点,开的比较多之后,它就会打开,它再往下去打开,并且它还可以去roll out到最后,去拿到最后的正负项。最后我在back up回去得到每一个叶子节点当前的一个Q值。 最后我会发现什么呢?我只要在这边做roll out的时候,我总会逝去数。我接下来,但是S这个位置到底是在这边去走,还是在这边去走?这边每一层其实是多个action。最后得到了一个结论是这里的派是这样过来的,就是说你在做MCTS做完之后,站在S这个位置,我要去选择action的时候,我们走的这个往上面去做sampling的时候,这个A到底是选哪条路走的比较多。这个得到结论就是比如说在往这边走了100次,往这边走了80次,那么这边就是180除以180分之100,这边是180分之80。 这个方式其实是什么?我们在做planning的时候,最终选择说我们应该基于planning的技术。我们看到了后面之后,我们最后选择了在当前这个位置应该走哪一边。于是在这个时候大家可以看到我们的阿尔zero的训练范式就很简单了。一是基于当前VS去拟合一个value。另外一个只是说基于当前的我们直接吐出来的p distribution去拟合MCTS。占了很多遍之后得到的内部。这样子做的其实就是我自己做planning之后蒸馏给我自己,把结果蒸馏给我自己,让我以参数化的形式直接给出多步以后的预测。 这个事情我们以前做阿尔法zero时候,你至少还得知道游戏的规则。但现在的话不用了,你直接基于这个state隐层的state。也就是说我们observation肯定是可以有的。下期这个observation有的。我们学一个encoder过来,encoder之上再去做这个MCTS,他一样可以去做。最后效果会发现说会超过这个阿尔法zero,使得它或者是超过human experts。 接下来的话这支团队的话就开始去做dreamer这方面的工作。因为其实像围棋这样的一种棋盘类游戏,基本上就solve掉了。而且是以一种完全不需要游戏规则,不需要human的data的形式整个solve掉了。接下来就进入到了这视频游戏的这种阶段。其实我们自己也经常会去考虑说,是不是我们是以视觉的方式在infer接下来会发生什么事情。你如果把一个球抛起来,你会自己去infer的时候,它怎么会掉下来弹一下等等,你都会去有这种想象。 其实为什么叫dreamer?其实imagination这个词也是因为我们会对于这个数据本身去做一些想象。所以后来的话可以看到这个sora发布之后,大家会觉得它是一个word model。因为它可以去做比较好的imagination。 Dreamer它其实是一支V1、V2、V3的工作。我们这边简要提一下它的V3最新版本的这个工作其实是什么?就是当前我有data之后,我这个data是以一个比如说简单机械臂现在看到的,或者是video game现在看到的video的一帧进来医生进来之后,我们其实会有一个销量。其实你看他他后来证明了就是empirically证明了这个latent的这个variable最好是离散的,如果是连续的话,它其实效果没有离散的好。我认为其实这个点可能还是他成功的一个要点,尽管他没有在paper当中写的非常清楚。因为也许是离散的这个数据更适合往后去做一些planning,或者说做一些轨迹上的一个推演。 如果是纯连续的话,其实还是会容易出现相应的问题。像比如说现在的s former,它可以去做比较长序列的一个generation。但是它也需要把所有的数据离散化成token去做这样一件事情。所以一方面就我们会有一个encoder,将现在的video data去encode成离散空间。会有个decode,希望能够尽量的把这个离散空间的信息使用起来,能够解码回原来的这样一个视频帧。另外一方面,也就是说我其实是可以使用这个离散空间当中的这个space,再加上action去预测接下来的states。这样其实是一个尽量好的多的大渠道了。 我们脱离尾流本身其实可以看到它背后的本质。比如说物品之间的关系,它们相互之间交互的dynamic等等。把encode在这个过程当中加码和解码的这个过程,其实是剥离于或者是更加lower level的,在于中间的隐层的这样一个推演过程。 除了这个word model学习,另外一部分就是act critic。这个model可以infer,可以去roll out出来一些新的data,它在和active结合在一起出相关的value的头和出这个policy的头给出来之后,我们就可以在这上面去进一步的去优化我们的actual performance。所以说最后就现在的model base 2O当中,比如说玩一些像mycroft这样一些游戏当中的sota就是主流。Sota jm v3是1个它可以达到一个非常高的一个水准。 但其实大家可以想象,我本来就是玩游戏,对吧?我为什么还要再去做这种imagination呢?按理说我应该是我我想怎么采数据,可以在怎么数据。也许是在learn到了这个model本身之后,才其实才learn到了游戏背后真正的dynamic结构,才会让我们的策略更好的去take action,而不是一直在那瞎猜,瞎蒙蒙到一个好记忆下来。不是这样子,像这个minecraft里面的那些科技树的点亮,其实是一个很复杂的过程。是基于有这种model的这种rl它其实还是被证明说是能够最有效的提升sample efficiency一种solution。 所以说现在的话我觉得moto CRO1方面是我们是希望尽量好的借助于内有监督学习这样的方法。它是一个更好的inductive vice去把我们的dynamics学好。而相比于reinforcement learning这种induct vice and area的这种indebted,它有个好处是我是直接在优化我策略的performance。但是坏处就是我因为是需要对于我的策略交互处的data是没有办法predict的,所以说它往往会耗费更大量的。 Sample efficiency第一,但是你策略学习的loss是OK的,是一个正确的loss。所以在这之间的话,我们会有一个baLance。你可以用权宜之计先学一个model,这个model simple efficiency很高,但是它不是直接作用于你的policy的性能。那接下来你在使用你的model去帮助你的策略进行学习,使得它往正确的loss方向去走。但是同时又节约了大量的real data的sample efficient sample complexity。所以这是一个当前我们做model base 2L的一个基本套路。 此外就是说除了我们要去learn到一个model以外,其实还有大量的业务上的工作。比如说无人驾驶当中,我们可能会直接去build的一个simulator。只是说它当中的一些参数由我们的这个贝塔直接去fit,这是完全有可能的。当我们fit到了一个非常棒的一个无人驾驶或者交通的simulator之后,我可以在里面去做额外的一些事情。比如说我去训练一些社会车辆的策略,我去训练一些非常保守的车辆的一些驾驶规则,以及我可以去调整城市当中的一些交通灯,调整潮汐车道的时间点等等。它可以让我们的这个街道变得更加的流畅等等。 会构建一个全程的交通的模拟环境。这个模拟环境是直接ln出来的。基于这个模拟环境,它可以直接去调每一个路口,无锡市每一个路口,它的每一一个相位的时间长短。这个呢因为它是主要是learn这个model。 最后我们简要总结一下model base reinforce learning主要讲的是黑盒模型。黑盒模型的好处在于你不用管这模型怎么建立的,它就是纯黑盒的方式去建立。中间就算有离散化也没有关系。因为咱根本不关注它的梯度,但是连续白盒模型就得关注它的梯度。使用黑盒模型主要使用的是它roll out出来data,你可以认为它是一个无限的data产生器,使得我们不用再跟real environment去做额外的交互,吧?这样使得我们可以去尽量降低我们对于real da的dependence。 相比于我们自己,我们人类自己学习,就好比说我们学了一个word model,也就是你的一个像是世界观一样的东西。你会去根据当前的决策去判断说未来会发生什么事情。你会想到这些相对应的data,最后去左右你当前的相应的一些判断。这判断可能不是一个非常intuitive的,直接基于条件反射给出的判断。但是基于你本身搭建出来的模型,你往后去推点几步,你就能够知道这当前的action到底哪个是好的,哪个是坏的对吧?这就是word model对于我们自己,也对于我们所有的构建出的智能体的一个好处。
Podcast Editor
Podcast.json
Preview
Audio
