Sources
把PU讲完之后,我们进入到了我们的课程大纲的第二部分,主要是讲解一些比较前沿的一些课题。我们就以比较快的速度先把这个近端策略优化和TPU讲完。 回顾TRPU这边,我们现在优化的一个目标其实变成就是说我们站在当前的参数拍SATA之上,我们其实可能收集到了一些专业的数。我们当前的参数是拍西塔,收集到了一些相应的数据,我们也可以是称这个拍西塔可能或者说是涉及到相应的数据是D拍SATA。基于D拍西塔本身的相应的数据,我们是希望能够去找到一个新的pi pride的这样一个位置上去。但是我们会发现说,但凡我们的参数被更新了,贝塔一旦跟原来现在不一样,那么我们其实分布是不一样的,其实是就走到强化学习本身的。但凡优化一点点你的策略,那么我们的相应的数据都不太一样。甚至可以这么讲,你但凡只走一步,我们也不是很清楚说这一步怎样能跨多远。而在这之前的话,比如说我们在做所谓on policy的那些policy gradient act critic这些,只要我们的参数量还不是特别的大,或者说神经网络不是特别深,但凡咱走一步on policy咱走一步,至少还是可以走的。 但是在这里我们会发现什么呢?就是说我们但凡走一步这步如果你走错了,什么叫走错了?步子走大了,那你还是会掉到悬崖下面去。 虽然你这一步gradient本身是正确的。所以说我们最终通过一个简单的推导,构建出了这样一个我们叫surrogate objective一种代替式的目标。它的意思就是说我们其实站在当前这一步,我们认为我们的CA更新之后,state distribution本身其实还是可以认为稍微是没有变化的。但凡我们更新的参数,它它其实的落地体现就是我们在不同的state选择action的时候,它的这个ratio就有不再是一了,肯定不再是一了。如果但凡都是一的话,那你相当于每个人性参数。所以这一步就是action这一步我们得用important方法去做。但是state被采样出来这一步,我们姑且认为在变化不大的情况下,这个state的distribution仍然是一样的。 那么这件事情的要求就是说我们policy派西塔Price和pi本身之间的KL divergence dandy让它小于等于一个ipsa,这件事情其实无论是我们的实践过程当中,当然是我们遭遇推到了这个state,我让它小于等于killed 2减4,小于等于一就可以了。在推导的过程当中,如果大家去看那个推导的back的话,其实它其实是有一个max操作,使得我碰到了任何state what care divergence这两个policy and are divergence都不要超过episode。通过这种方式我们就可以去保证了一个monotonic improvement。它的意思就是说我们沿着梯度走肯定没错。 但是但凡我们走了一步之后,我们如果说KW比大,我们就没有所谓的单调递增的保障,就没有monotonic improvement。那这样的话我们就有可能会一脚踏空,掉到悬崖下面去。但是如果我们标准virgins有这个保障,我们都没有超过和原始policy之间的距离,超过epo one,那我们就拥有这样一个单调提升的这样一个性质。其实我们我们看到这个PU本身,其实在2 0116年开服,2015年出来SML,2016年的paper。其实在那会儿,我们其实也是对于社区,对于专业的工作其实关注度很高,trance region这样一个概念,其实也会拥有一些相应的不足。 或者说这个TRPU本身除了他自己比较难以理解以外,它的这个实现过程其实也拥有相应的一些困难。比如说它但凡它还是会有一部的importance ratio出来。还有另外一点就是说他可能一直想要去优化一个约束性求解。当时的原版的solution是推荐一个他的展开,然后再用功能梯度的方法。因为他的展开当中,它其实会有一个举证求利。在用一些工作梯度的方法去做这个事情,其实是比较麻烦的一件事情。后来的话其实就希望能够去尝试一些更加简单的方法。 也正好在上节课我们讲到这个john shaman。他从这里毕业之后,他就进入到open a作为open a的创始的十个research之一,所以他也可以称之为自己是OpenAI的这个profounder之一。提到一嘴这个是马斯克他创立这种AI公司,特别喜欢让他的整个创始团队全部号称是高仿的。这个好处在于说,所有的人刚刚进去,那motivation实在是太强,那个incentives实在太强,刚开始做的事情就非常靠谱。 比如说后来马斯克又创立了XAI这个公司。我们了解到它的创始团队有12个人,全都是cofounder。12个人就大概八个月时间就把一个这么大的模型brook一给做出来了。大家后来知道group 1有三千多亿参数。对。第一马斯克给我们八千大约100。第二基本上这么大几个月,将近一年以来每天都是996,即使是在硅谷也是不多见的。但是他们愿意这么干,就小man其实他至少目前为止仍然还是在在OpenAI。 他当时其实作为open a5可能认为是说研究强化学习最好的学者加入OpenAI的。所以说最开始的时候,那些像OpenAI gin,这几个policy optimization的方法都是他带过去的。直到目前为止,PPU仍然是世界范围内最有效的深度强化学习方法。比如说我们在chat PT当中,仍然是使用这种PPO的方法在更新我们的大模型参数。后来我们其实develop出一系列的PO一类的方法,或者说deep RO的一些policy gradient方法,但是都是在PPO的伯仲之间。但是皮肤本身的优化以及它本身的效果,保证它本身能够一直在这个领域长期直到现在。 我们在这个TRPU之前到底做了什么样的改进。因为作者都是一样的,那肯定就是消耗它本身的话,能够在这个TRPU的基础之上,能够找到它的弱点,找到它自己的实实在在落地的不足,再去产生了一些相应的创新,然后放在这个paper挂在cap上对吧?所以说大家可以看到PPU这边paper是他有多少好几万,但是他是没有投paper的,他直接是挂在了cap上。原因我认为他认为这个和TRPO没有本质上的一个更新。即使如此,也是非常受欢迎的。 第一个创新就是直接针对于TRPU之前我们所提到的有important sampling ratio这么一个问题。就算只有一步,但是它还是会导致我们会有一定的不确定性,有一些various存在,所以说一般的做法就是说我们去吸相应的一些,为了让出一些bias,大大的降低variance。这件事情其实在这个环节是其极其OK的,原因是什么呢?大家可以看这个公式,原来这个公式当中我们其实是带上了这个important sample ratio。但是后面还有一个critic的add vantage function,critic advantage function. 咱本来估计就不一定准,本来也是另外一个模块学的。所以说你在这个情况下,你就并比如说我们前面这个ratio,我宁愿不出让任何various,我要保住它这个bias。所以说在这个时候你会发现右边这一行,你右边这个faction本来就已经是bias的了。因为它不准,所以说你何乐而不为?干脆把这个virus降下来,再出让一定的。所以说对于一个基本的操作,leap这样的操作,也就是说我们是希望AO是在这样一个范围之内,一减去epo o一加上epo on这个范围之内去去有这样一个racial存在,当然这个racial后面他又套了一个操作。最终的这个结果是怎样的,我们可以看到下面这张图。当advantage function是大于零的时候,那么这个ratio它超过了一加episode之后,它就会被收在eap sone上的意思就是说,当我的advances function这个module估计为正的时候。 原则上来讲,我们会通过polygram去增大当前是take a这个action的概率。但是如果说这个A非常不凑巧的是它over estimated,或者是说它会碰到这样的问题,会使得我们在这个时候正好也会使得ratio可能会超过一加。在这个时候就很有可能会出现一些过大的S的情况,训练极其不稳定的情况。 当A比较小的时候,其实我们也会要阻止我们的数据尽量的变得太小。因为当A比较小的时候,我们就希望这个数据,如果说过小了会出现什么情况呢?就出现了续航数据,但基本上就不要了。这不要了的话,其实你就会把所有的训练的efforts放在那几个维数比较大的A比较大的那些数据上。这样说白了你的数据就丢掉了大部分的数据,留下为数几个importance real本来就比较大的数据。这样的话你训练出来的结果它显然是very good。通过这两方面的结论,我们就会使得说每边的数据咱都去尽量的保持。你看大家可以看到这个截距就基本上可以说保持和原始数据尽量都用起来的这样一个特性。 是我出让了bias。但没有关系,在这样一个范式之下,反正我的advantage function也会stimac也会带来88S。所以说我们也就相应的去做推到另外一个创新点,叫做GAE做generalized the advantage estimation。他的意思是说我们记advantage的时候,一般来说都是以步估计。比如说一次的reward加上下一步的Better function,它其实是一个QSA当前的这一步action value的一个sample。一次的reward加上下一步的state的这样一个value方。但是我如果说我们当时提这个other function的时候,其实也就是说说说这一点。 我们在去构建idea的时候,其实你真正最后使用它的时候。用的只有v function,没有所谓的a function或者q function,这是它的一个好处。但是我们会发现如果我只使用一部的value function,大家可以看到一次reward加上伽马乘上下一步的V方式,再减去当前的V方式。这样去做,基本上其实只是involve到了一步的这样一个observation。 其实有的时候会发现说,如果我引用多次的优势,我们做这个martis step的TD的时候,也给大家讲过多部的TD其实带来更多的information。它是会带来引入一些像response一样,引入一些various。但是我带来多部的这种reward,其实有助于我的advantage function更加informative一些。所以说多步的优势函数,它其实可以帮助我们更好的去estimate一个advantage。这件事情很显然也是在这个TRPO日常落地的时候,它能够看到说,我如果说是matter stepped的advantage,会比我现在看到的bone step的advantage function会往往更有效一些。 第三个点也就是我们所谓的这种参数的惩罚,就是两个policy之间的这个care divergence。咱不能把它以constraint的形式写在我们的网站优化的这个框架当中去,而是以这种阀的形式,就像是这样一个backup是functioning。这里我们就要将这个KL divergence的这个因子放在我们的优化目标当中。我们要maxim ize左边这一项,但是因为我们加了一个负号,所以说同时又以一定的weight minimize右边这一项divergence。这个的话后续就是在first region policy grant policy optimization的后继的一些practice落地上,它已经使用了。只不过在PPU当中它进一步沿用它。 那么它使用了一个动态调整贝塔的方法,贝塔方法是什么呢?大家可以看到如果说我们当前计算得到的一个mini bench,再去控制一下遭遇到所有的ST,我们去计算在每一个state之上两个policy之间的killed divergence。如果说已经超过了,比如说这样一个constraint target的1.5倍,就是说我已经超过了1.5倍了,那么我是需要将贝塔更新为原来两倍的。也就是说在接下来这次更新当中,我会更加关注于minimum就killed divergence,因为我的贝塔已经乘了2。如果说这个constraint已经稀松于原来target的1.5倍了,也就是说在原来它是二分3分之2左右。那我下一次更新的时候,当然也可以把贝塔除以2,使得它更加主要去优化这样一个目标,优化这个价值目标。通过这种方式,它其实取得一个动态调整的贝塔的方法,使它训练也非常的迅速。而且最终也能够达到说guild divergence,能够取得一个比较好的控制它的作用。 那BPU本身的话,它会有相应的一些二是也有一些相应的实验。在七个连续控制的环境当中,一个环境它sample 3个随机种子,那么这个种子其实也就是必须得固定下来。Across所有的argon,每个算在此基础之上跑100次,最后去Normal ize这个score。 我们的这个实验结果会发现说使用clipping epson取0.2效果会比较好。使用adaptive的killed divergence的这个beta会更好一些。一方面beta本身可以有一些相应的取值,另外一方面我们的这个constraint本身是否很紧。D targets其实也会是比较重要的。在这里大家可以看到0.01的d target,也就是说我的两步之间kill divergence差距不要超过0.01的要求,其实是还比较高的那这个其实被证明说是比较好的一个hyper parameter,此外的话也就是这个贝塔值取多少?比如说贝塔可以取3的时候,其实在他自己的对比当中效果也会稍微好一点。但是其实大家可以发现adaptive的care divergence效果会更好一些,也就是它的第三项创新。 这个PPU本身的话在当时就是一方面相比于他自己的TRPU还有一些别的算法,SA to c vina的就是最传统的PG算法等等,它也是有比较明显的一个优势。其实在这里大家可以发现,在有些方法上,这个TRPU其实效果并不是很好。他也可能是在自己之前的这个实验当中,其实已经发现了这样一些问题。那么在OpenAI这边的话,它可以去有更好的实验的支持,最终把这个PPU给它创立出来对吧?所以最终PPU其实直到今天也在其他GP中去进行使用。但这个并不是igbt本身当中的PPU,其实是没有什么很特别的点。但是后续的在各种各样的,比如说我们在做游戏AI的这个博弈当中等等,其实很多东西都是需要PPU,甚至是multi agent的PPU。 在这方面的话,PPU仍然创造着比较好的基本的performance。使得我们往往说大家在有有一定算力的基础之上,不要很多的算力。有一块GPU,有良好的CPU。那么我们去跑一个强化血算那个PPU能够得到一个比较reasonable的performance,这是完全可以期待的。所以这个就是这个PPU以及基于策略的深度强化学习的方法,其实它相比于基于价值深度强化学习的核心区别在于说,我们的优化的目标直接就是策略本身的价值。而这件事情其实就是将策略本身放到环境当中去,然后去做相关的交互获得的,我们叫做return希望就是我们策略优化的目标。 优化的目标它其实核心和这个基于价值的目标而言,很显然基于策略的目标会更加直接一些,但是它不好优化,不好优化的点就在于是说我们其实是以一种优化价值的方式在优化策略。这中间往往会有我们刚刚其实提到了来可以获得racial这样的问题。所以说我们在做优化的时候,往往会去考虑一些比如说以trust上的概念,以至于我们一步再走一步的梯度,也有可能会踏空掉。 你比如说走用老数据走多步的梯度,最终我去100P就PO这个算法,它在这个性能上,在稳定性上都能取得比较好的优势,一直沿用至今。现在大家其实要跑一些方法使用,比如说像TRPO这样的方法就已经很少了。因为他已经认为在性能上、稳定性上、一实现性上都已经完全多面体PROTPTRPO了。这个就是我们对于这个深度策略的方法的一些讲解。
Podcast Editor
Podcast.json
Preview
Audio
