Sources
我们今天进入第九节的内容,九节内容叫做model base real inforcements learning。其实是在第五节规划与学习当中我们已经提到过了。但是其实今天我们会以更多的以深度强化学习背景,可以说是重新再介绍一遍基于模型的强化学习。 我觉得基于模型的深度强化学习原因是因为我们一直以来比较坚持的一点就是说我们要么在tabular setting当中,这个model几乎都已经告诉你了。比如说一个迷宫的model等等,在这个里面我们run一个单AQ等等,你会发现说用model用的越多越好。当然因为你的model就是环境本身,因为它就是一个给好的白盒的一个great world。但是如果说我们是在一些比如环境本身很复杂情况下,至今我们能讲到的包括像DQN,包括PPU,它都是model free的方法。也就是说我们直接让agent和环境交互出真实的experience data,再用这个data尽量的训练好我们的策略。无论是你是训练价值,然后在导出策略,还是直接去训练策略本身。但是还有另外一支方法,也就是说我们希望能够去build environment model from data。在使用这个英格尔的model,能够更加高效的,更加有效率的去训练我们的policy,叫做基于模型的生长学习。 最近其实这样的工作也正在被发展。比如说google deep my最近出了一个爆款叫今年,不知道大家有没有印象?这个是一个通过imagination一类的工作去想象说我接下来游戏的几帧可以是怎样的。然后基于这个接下来的想象,我们再去导出当前的action可以是怎。 其实有的时候大家去玩游戏,你是有可能会在大脑当中在想象说接下来几天会发生什么样的情况。包括我平时开车,我也会考虑说我现在如果往左并道,会不会出现一些有车低我或者说追尾的情况。我在以此去给出我相应的action,可能就不变道了。这个其实都是我们脑子当中会有一个我们叫环境模型。现在换了一个新词叫世界模型。基于这个,我们再往后去做一定的推演。最终我们去导出我们现在的模型,或者说导出一些imagination的data,然后再使用这些贝塔去训练我们的模型。 所以说整体而言,我们回过头去看上面两张的工作。其实我们会发现说deep reinforce learning,其实它就是使用deep learning嵌入到reinforcement的框架当中去,能够去继承到deep learning。它可以自适应学习我们的observation的feature的标准,不用让我们对于observation本身再去抽各种各样的feature,最终吐出一个action。 这件事情固然好,但是它有一个极大的问题,就deeper inforce learning data efficiency非常的低,原因是什么呢?Deep inforce learning首先它和deeper learning的区别在于有监督学习。我们是将相应的数据集已经收集好啊,随便你怎么学,反正数据集就这些。最终我们performance好是继承于deep learning本身,它能够自动的去学习数据表征的这个优势。但是deep inforce有区别,正常一上来是没有数据的,没有数据那就需要和环境进行交互,来进行收集数据。书收集完了之后,我们存在里面是可以通过replay buffer当中的。比如说of policy q learning去学习,或者咱就直接是S3C这样的纯on policy的方法,将数据收集完,训练一步,然后就扔掉一种方式来进行学习。 但是大家可以知道,deep enforce unity本身它有两方面的黑盒uncertainty。第一方面是deep learning本身的深度神经网络的黑盒uncertainty。你不知道这个神经网络它可以去走到哪里,哪个local optical上去,没有办法进行控制的,没有办法去证明说这个local optimal有多好,或者说有多么的globally optimal。二个黑盒点就在于说是环境是dynamic的黑盒。你是不知道说我们的策略哪怕动了一点点参数,它接下来对应的occupant's measure到底有多大的变化。其实这件事情我们都是不知道的。所以在这种情况下,我们往往会使用到很多i narrow收集得到的数据。这使得我们从机器学习的这个角度来讲,sample或者data efficiency就很低。 过efficiency或da efficiency。它在机器学习当中的意义是说,我希望这个模型拥有一定的达你的泛化与error。就是将泛化的error降到某一个位置。我需要O多少的发音的这种头来训练,这个过程是一个learning algorithm,一个learners learning algorithm它本身的一个最重要的性质就是它的反义词叫sample complexity。 样本复杂度我们都有什么内存的空间复杂度对吧?有时间复杂度。但是其实机器学习当中还有一个样本复杂度。你使用上少量的样本,你就是sample efficient。你使用较多的样本就是sample complex。于是在这个时候,我们其实就会需要去考虑说deep enforcement过人,但是我们不想要使用太多的真实样本,那么我们有没有办法怎么去降低这个使用真实样本的量呢? 一个重点的方向就是使用model base的reinforce morning我首先使用样本去build一个model。这个model大家可以看到也就是一个基于data action,我可以去sample下一个state和reward这么一个module。这个module有了之后,其实我们能干什么呢?我们能干的事情太多。对,我们可以让任何policy,他在学校任何情况下可以和这个model进行交互,产生无穷的数据。但是毫无疑问,这个model本身它一定会有它相应的error。但是如果我们用error比较小,那么我们就可以去使用我们所谓产生的数据,或者叫做imagination的新的数据,去对policy本身具有一个提升。这个事情是上证明说是有效的。 有的同学会不会说我这个数据反正就这些,我拿来学policy和我拿来学了model之后,让model产生更多的数据再去policy y到底有什么本质的区别?本质的区别就在于inducted base不一样,你的data你可以去拿来去学。Model这件事情其实是一个有监督学习或者是一个view的一个DNA ic model本身的induct的级。但是由于这个inducted bias,它可能会导致它对于拟合出的数据本身,它其实还是可以接受的。它产生出大量的可能会有瑕疵的,但是对我还是有用的。Experience data之后,能够帮助我们的policy,能够更好的在强化学习这个index当中能够获益。 一直有人会问说model best reinforcement到底是不是真的会提升apple efficiency?答案是肯定的。说到底也就是我带上了非强化学习的这种data base data induct bias的优势,使得它能够阅读的更好。而且在这个过程当中,我还可能会在学model的过程中involve大量的缓这个domain knowledge。我们可能不知道一个policy可以有including哪些dorin knowledge,但是我标的一个environment,我可以在review function上,我可以在c transition上encoding大量的doring knowledge,使得我们在model层面上能够去学的非常准。 接下来我们就是模拟器的一件事情,所以说这个agent和environment进行交互,它其实可以发现environment本身它就是两个最重要的module。一个是state dynamic,也就是SAZ到s prime的这样一个direction。第二个就是说function,given SA我们的人到是多少,那么policy和一个environment一个real environment进行交互,它最后就可以产生一系列的四元组,我们叫做experience data。但凡这个data本身是和真实环境交互的,咱就叫经验数据。 但是大家要知道说,如果我是和一个environment model进行交互,这model其实是假的。我们不把它叫经验数据,我们把它叫模拟数据,或者叫做imagination data。想象出来的数据,这是完全符合标准的。原因是因为在强化学当中,我们其实为什么想要提升对他efficient city,其实是不希望agent在没学好之前过多的打扰这个环境。如果是无人驾驶,如果是人形机器人,觉得data都得从物理世界当中去获得,那它当然会极大的打扰我们的环境。但是如果你学习,你是在模拟世界当中进行学习,你除了多烧点电以外,其实没有太大的区别。所以说如果我们做到了一个很好的simulator,我们去产生大量的simula data,我们是可以学的更好的。所以这里一定要强调一点,model best reinforce learning, 并不是说它involve到的所有的real and fake data量还居然可以变小。 不是,他只是说involve到的real的data的量变小了。但是fake data imagination的data变得多了不知道多少倍,使得它最终打扰环境的次数少了。这就是在强化学当中仍然被认为是sample efficiency的有效提升的一种计算的方式。 所以我们对比一下model free和model base 22U这两种方法,它们之间的一些核心的一些factor。第一model base RL好处,我们用蓝色来表示它。但凡这个model被学成之后,你接下来完全是purely happily policy,是on policy learning的。因为你就跟model交互就行了,你数据无限,所以说你完全开心的这个数据收集下来扔掉没有关系,我们不再去考虑任何这些事情。第二我们甚至可以让这个model一旦学出来之后,我们知道policy从他第一步开始学习,就不和环境交互了,就只和mode进行交互。就导致了我们最终其实可以做一件事情,叫做offline 2流,当时也叫做826。也是我其实build一些environment,我就让policy在environment进行学习,直接上场测试。 但是也很正常,我们实验室也好,或者说有一些课题,比如南京大学俞扬老师的课题,他的产学研项目都是跟什么水务公司来进行合作。给你一堆数据,数据库里面的数据目标就是调这个水务公司当中的某几个开关,调的特别好,你的水务的效率就高调的不好,这个还浪费很多能源等等。这个开关很显然不是让你策略学的时候,在那发票那肯定一上去第一把就能变好。于是他的一个方法,在使用数据训练一个模拟器模拟环境当中优化我调试的策略。这策略调好之后,他认为能够上去第一把应该是不比人差。 这样它就可以完成一个正循环,这个其实就是model base的一个好处。所以另外一点就是说在各种环境当中,我们都可以证明说empire好,还是有一些assumption之下的一个thereto。Al的证明是说,他是more sample efficient than model free reinforcement。很显然,因为你你手里面其实额外带了一个model,我们的sample都是一样情况下,我们只是额外多学了一个model。那么这个model但凡它有点用,它也会提升sample efficiency,而不会反而降低sample efficiency。 但是它有一个至关重要的一个问题,就是它会有复合误差问题。Model符合误差问题将会在我们接下来的部分当中会简单介绍model。不断的往前去做推演,每一步都会错一点点,多步之后就会错的非常远。错的非常远之后,对它就没有意义了,所以说它也就止步于此。这个moto本身它是会有一个复合误差,在这个auto regressive ly去推演的过程当中,都会拥有这样一个问题。 那么讲完model base,讲model free,model free的reinforce learning上来,第一个就是杀手锏的一个优势,就是它就拥有最好的收敛性能。我们这样会使用一个词叫做a symptom performance,叫渐进性能,什么意思呢?就强化学它跟一般的机器学习方法不太一样。它可能坐标如果是data的数据量的话,它是可以无限采样的。它跟一般的有节奏学习不一样。有的学习你就是这么多数据就放在这儿就停了。强化学习你的data是无限的,你可以无线交互,只要你愿意。 所以说我们的渐进性能是什么意思呢?就我这个算法反正最后收敛到大家往正无穷走的时候,这边会有一个叫渐进线切过来,它的performance是在这个位置。而很多时候我们这个办法一方面也要看渐进性能好不好,你最终收敛到那个位置他performance好不好。另外一方面就是说我达到这个位置的时候,他用了多少数据。 一般来说强化学习你很少看到或者是以表格的形式来呈现overall performance,除非是一些博弈等等这种对抗100盘average一下的。如果说你是直接跟环境交互,一般最后呈现方式是图,就画这个图。比如说baseline,可能是有一条线是在这儿很远处才能达到渐进性能这个专家级别。如果我们的算法能够以最快的速度就收到这个performance,渐进性能上其实大家会发现说,你相比于别人达到同样水平的时候,我们节省了3分之2数据量是吧?那这个其实就是安卓学习本身的优势。所以model free force它因为没有model,model有error,有arr本身是有问题的,但是我没有error的问题,我当然最后收敛到的位置就是最好的间接性。此外的一点就是说它是比较适合在deep learning的这个architecture上去工作的。 Deep learning architecture是什么呢?它发展出来一套方法,我们把数据做成mini x张亮的话之后放到显存当中去去计算梯度。Model l free的方法其实也很简单,我从环境当中或者从replay buff er当中去拿一个mini bt的一个experience data。二氧化之后扔到显存当中去算算梯度。无论是Q的梯度还是策略的梯度,我们都可以去测算完之后更新,这个过程也是很适合这个model free的方法。 它的问题我们来看看它的不足。一是of policy methods仍然会有严重的训练不稳定问题。我们刚刚其实已经看到讲PPU的时候,大家也看到了,就是说即使是一部TRPO的一部import ratio,它也会带来相应的训练不稳定的问题。更别说如果说我们是去做一些像是active critic或者Q当中的一些学习,你使用的数据稍微之带来训练不稳定性是家常便饭。对,如果是纯on policy这件事情这个性质就很好,因为我们刚刚都是新鲜出炉的数据,所以说它也会导致非常低的sample efficiency,需要大量的训练数据。这就使得强化学习本身还是希望能够更好的去提升它的训练效率。 Mode base enforcement in它其实有两大类的一个范式,或者两大类的一个分类。第一叫做黑盒模型,黑盒模型它的意思就是说我们不管这模型里面它到底是什么,我们policy只用和模型交互就可以了。交互出了新的这个四元组data,我们使用这个data再去用model free的方法去更新我的参数的data,或者是更新我的策略的ta或者是我的Q的都可以。相应的方法都有我们之前做的一些方法。 还有另外一种model,它叫做白盒模型。它的意思就是说我们完全会告诉这个开发者,或者说开可告诉算法设计者这个模型本身里面是怎么长的那使得我们甚至可以去做这么一件事情。也就是说站在当前state,我的策略本身take了一个action a这个a deliver到我的model当中,直接model会给你输出s prime这个位置。我们如果是gradient,如果是s dolci cc的话,它也通过叫做reprimand tradition参数,它可以变成是一个disease的方法。它只不过再输入一个高斯白噪声进去就可以了,就完全磕到的。 在这种情况下,我们甚至可以去做什么事情呢?大家可以看到站在S这个位置,policy take action a我们其实环境走到了s prime这个位置。我们看下一步的value的时候,我可以让下一步的value function对于下一步的state去求导,再用链式法则对于下一步state对于当前的action求导,再站在当前的action这个位置。因为action a等于的是拍S所以说我可以对拍S当中的西塔进行求。 通过这个链式法则大家可以看到,我只有把环境是打开的时候,打开成白盒里面当然也是神经网络可以没问题,或者是线性模型都可以,关键是你得打开之后能拿到梯度。拿到梯度的唯一方式就是你完全知道这个模型是什么,我们才能够去做相关的一个更新。这样做的好处在于它更加拥有提升样本效率的一个特性。它不但告诉你了是当前这个数据是好还是坏,他甚至可以告诉你说,你得把s prime往哪个方向去微调,使得我的价值会更高。那么要往这个方向去微调,基于我的dynamic,当前S这个位置take the action,要往哪儿去微调?我下一步走到s print这个位置,下一步的s Price才能够往这个方向去微调,才能使得我加强度提升。这个就更加的informative一些。 这个方法的话很显然,一对于环境的模型有很大的要求,二他也会用他自己的一些是不是scalable?这个梯度到底靠不靠谱?大家学TT3的时候也知道,这个梯度肯定是不靠谱的对吧?你得加各种clip两个model,还有mean一下等等趋势它变得比较的保守,比较平滑。梯度本身是可以被使用的。 所以说我们这次更多的是介绍第一个工作。第一类工作就是黑盒模型。黑盒模型它介绍它的好处在于说,它其实白盒所有的模型它都得具备黑盒的一些性质,就是sample。你有了代码之后,你再学习上gradient,我们才能够去拥有一个白盒模型。而黑盒模型本身只需要sample data就可以了。 于是我们首先来讲讲最简单的,我们回顾一下之前的这个代码算法,这个model,或者说我们的policy的大值,或者是policy这个agent和环境的交互采样得到的experience data,这个是真data。Real data有了之后,我们去build了我们的model,build这样一个SA到s pre和R的映射,或者是说是只是一个dynamics映射。如果说我们的reward一般来说在环境当中是给定的,那么我们就可以使用这个去做planning。我们planning的意思就是说我使用这个model之后,在model当中去做或者推演,最终我去计算出也许当前更好的action。或者是说我只是采样得到了一些我们叫做随机采样的data,叫roll out jeffy data。有了这些data之后,我再去优化我们当前的q function或者是派,这样我们就完成了一轮的训练。 所以说在这里我们简要的回顾一下q planning。它的意思就是说我们build了model之后,每次我们从model当中采样出来一个四元组,这里面能不能保证A本身是真实的SA pair。因为reward和surprise是model产生的,所以说这个四元组仍然是我们叫做experience,da叫做simulation data。但它仍然是一个四元组,所以说我们可以仍然使用q planning,也就是说在这个四元组之上跑一步q learning来去使用simulated data去更新我们当前的Q值。这个时候大家可以发现就是一个典型的使用想象出来的数据,我们仍然去更新我们当前价值函数的一个方法。 有了q planning之后,我们可以发现说原来的这个model free的方法基于experienced直接回来去更新当前的价值和我的策略方法,它也可以被套进来。于是在这边是双loop的形式。Inner loop直接学fn outlook p是学了model再产生新的数据,然后再学。这件事情就这两个结合在一起,就是戴拿是rich certain,也是在90年的时候提出来的方法,是非常早期的一个方法。也就是说我一部q learning之后,带上N部的q planning,我sample出来一行数据,这行数据直接当场做q learning,做完Q的这个数据存到模型里面去,再来开始采N步的N轮的一次采样,就是sample一个SA pair是真的,然后用model产生reward和下一个状态,然后基于这个四元组做一步q play,这样做N次。这样做的好处就是说当我们的环境特别好学的时候,或者说这个环境本来就是给定的时候。我们但凡做了更多次的q planning,都会使得我们的performance,我们的sample efficiency能够进一步的提升,也就是达到一个好的performance。 需要的和真实环境交互的data是很少的。但是这仅限于我们这个环境模型本来就很简单,或者是说它是给定的,那给定了,当然就是尽量多用为model里面的role out就可以了。所以在这个时候大家可以发现说,我们就有核心的几个问题需要回答。我们在下节课讲。第一个就是说我们如何更好的去训练这个deep environment model。就是它可以去利用agent和环境交互处data,能够很好的build出来这个model。第二点就是说这个model本来它但凡是训练的神经网络就有肯定会有哪些区域是不准的。它但凡准了,那我们也不用讲了,对他就直接用就行了。那么什么时候我们要trust我们的model,什么时候不能,或者说in what degree我们要trust我们的model,怎么去用它,我们不能用它。最终就是说这个model是不是真的可以really improve data efficiency,使得我们的model base r它能够真正站住脚,能够被大量的进行使用,被放心的进行使用。对这些问题,我们下一个讲。
Podcast Editor
Podcast.json
Preview
Audio
