概述
第五课:模型无关的控制
本文主要介绍模型无关的控制,包括同策略方法(On-Policy,也译作“在策略”)和异策略(Off-Policy,也译作“离策略”)方法,由于是模型无关,因此本文聊的是学习(learning),而不是规划(planning)。
1.简介
在第一课中我们说到了预测和控制的区别,这里就不再赘述,下面我们主要聊一下同策略方法和异策略方法这两个概念。同策略学习指的是“ Learn on the job ”,确切的说就是用于采样的策略和我们要学习的策略一致;异策略学习指的是“ Look over someone's shoulder ”,也即我们想要学习的是一个策略,而用于采样的是另一个策略,举个简单的例子,我们想要学习到一个确定性策略,比如利用greedy方法得到的策略,我们直接用该策略进行采样并不会引入探索,但是我们想要对各个动作和状态进行探索,那我们就可以使用一个随机策略进行采样,比如epsilon-greedy得到的策略。当然,我们的异策略方法不仅仅可以用于引入探索,还可以产生引导样本,比如我们想要机器人完成抓取任务,可以先让专家给出示教轨迹样本,并利用该样本对抓取策略进行学习,从而有效地减少所需要的样本数量。
2.同策略蒙特卡罗控制
在第三课中我们说到了策略迭代方法,下面我们先来回顾一下:
我们第三课的主题是利用动态规划进行"规划",也即基于模型的方法,那我们如何将策略迭代方法拓展到"学习"这一问题上呢?
策略迭代包括两个部分,策略估计和策略改进,其中策略估计用的是贝尔曼期望方程,策略改进用的是greedy方法。既然我们要将其变为模型无关的方法,那么首先在策略估计中我们就不能使用贝尔曼期望方程,而是变为sample方法,比如MC方法或TD方法。假如我们选用MC方法对值函数进行估计,得到策略对应的状态值函数V,然后利用greedy方法得到新策略:
虽然我们在使用MC方法对策略进行估计的时候没有使用到模型,但是在上面的策略改进中需要知道模型的知识,即奖励函数R和转移概率矩阵P。因此我们并不能使用状态值函数作为估计的对象。那动作值函数q呢?
如果我们已经完成了策略估计,那么我们只需要求一个argmax即可对策略进行改进,所以我们的想法是正确的,可以使用q函数作为估计对象。
下面我们考虑策略改进,这里先直接使用greedy方法,从下面的例子我们会看见,这时我们的策略迭代可能会陷入一个僵局:
应聘者先打开了左边的门,得到的奖励为R=0,所以V(left)=0,然后打开了右边的门,得到的奖励为R=1,所以V(right)=+1,因为V(right)>V(left),所以应聘者会继续打开右边的门,如果右边的门获取到的奖励始终使得V(right)>V(left)成立,则应聘者再也不会打开左边的门,哪怕左边的门中有很大的概率R=100,也即陷入了僵局。
从这个例子来看,如果我们引入对左边门的探索,那么,就可能探索到R=100的奖励,也就选择了回报更大的门。所以,学者们提出了epsilon-greedy方法:
这是一种及其简单的想法,它保证了在任何一个状态下,所有动作都有可能被选择,或者说,它能够保证足够的探索。同greedy方法一样,我们可以很容易地证明epsilon-greedy方法总能对策略进行改进:
对上面的讨论进行总结,我们可以得到蒙特卡罗策略迭代方法:
与我们在第三课中讲到的策略迭代方法不一样,MC策略迭代在估计中用的是q函数,在策略改进中用的是epsilon-greedy方法。在实际应用中,我们称之为蒙特卡罗控制,且更确切地给出其迭代示意图:
我们希望得到一个这样的学习方法:
1)在学习开始时有足够的探索;
2)最终得到的策略没有探索,是一个确定性的策略。
这两个特点让我们引出了对于GLIE的定义:
GLIE满足两个条件:
1)所有的状态动作对都能够被探索无数次;
2)策略最终收敛到一个greedy策略,也即确定性策略。
比如说,在epsilon-greedy中,如果探索因子epsilon等于1/k,则它是GLIE的。下面我们将GLIE引入到蒙特卡罗控制中:
无非就是epsilon变为了1/k而已,其他并没有什么改变。对于GLIE蒙特卡罗控制的收敛性有如下定理:
2.同策略时间差分控制
在第四课中我们提到过,相对于MC方法而言,TD方法有着更低的方差,不需要完成整个episode就能对值函数进行更新,也就是说,可以在episode中的每一个timestep进行在线的值函数估计。说到同策略时间差分控制,一个很自然的想法就是,直接将同策略蒙特卡罗控制中对值函数估计的MC方法换为TD方法,然后将每一个episode对值函数更新一次换为每一个timestep更新一次。我们将这种方法叫做Sarsa,该名字的由来见下图:
它的命名就是用图像右边那一串字母命名的......它的迭代示意图也很简单:
再次强调一下,与同策略蒙特卡罗控制相比,修改了两个地方,一是策略估计的方法改为了Sarsa,二是每个episode更新一次变为了每个timestep更新一次。下面给出该算法的具体表述:
回顾我们前面说的同策略的定义,同策略也即”采样的策略和我们想要学习的策略一致“,从上面看出,两者都是对q函数利用epsilon方法导出来的策略,因而是一致的。设计完算法之后,总是要考虑一下收敛性的:
也就是说,如果我们在使用Sarsa方法的过程中,想要保证收敛,就必须要让上面两个条件成立,当然,在实际实现中,我们并不会真的去这么严苛地要求其成立。解释一下Robbins-Monro序列中的两个条件分别是什么含义,第一个式子表示从某个初始值开始,我们可以对值函数做出任意多的修正(累积起来很多),第二个式子表示我们对于值函数的修正将变得越来越小(单次修正越来越小)。
与一般的TD方法一样,我们可以定义n-step Sarsa:
然后给出Sarsa(labmda)算法:
因为是工程上实现,所以选用的是后向视角方法,在第四章中已经对前后向视角分别给出了解释,不过毕竟是关于状态值函数V的,所以这里再给出两种视角的具体说明,但不再给出解释:
3.异策略学习
如前面所说,在异策略学习中,想要学习的是一个策略,而实际用于采样的又是另外一个策略,这样做有什么好处呢?
1)可以从人类给出的示教样本或其他智能体给出的引导样本中学习;
2)可以重用由旧策略生成的经验;
3)可以在使用一个探索性策略的同时学习一个确定性策略;
4)可以用一个策略进行采样,然后同时学习多个策略。
其中最为人所知的原因是第三点,也即可以在使用一个探索性策略的同时学习一个确定性策略,Q-learning算法便是一个很好的例子。在具体介绍异策略学习方法之前,我们先给出重要性采样的定义:
可见,重要性采样实质上是按照两个概率分布对函数进行了加权,关于重要性采样的具体介绍可以参考这篇博客:采样方法。
下面我们将重要性采样与MC方法和TD方法结合起来:
从上面两张ppt可以看出,实质上是利用一个采样策略得到的target来估计我们想要学习的策略。此外,我们知道,MC方法的方差本来就很大,而重要性采样将会使得方差急剧增大,因此结合重要性采样的MC方法就很难用了。对于TD方法来说,其方差本来就比MC要小得多,并且我们仅仅需要行为策略和目标策略在单个时间步上较为相似,因此其加权之后的方差也较小,所以这种方法的实用性较强。
现在考虑Q-Learning算法,该算法中的行为策略与目标策略是从同一个值函数q中学习得到,其中目标策略使用greedy方法得到,行为策略使用epsilon-greedy方法得到,为什么不需要重要性采样呢?首先,我们注意到,在Q-Learning的更新中,是单步更新的,我们想要学习的是一个greedy策略,在式子右侧中,Rt+1是采取动作At之后得到的,虽然At是由epsilon-greedy得到,但是其实选取At的概率无关紧要。事实上,我们可以用一个基于表的Q(S, A)来理解,我们想要学习一个最优策略对应的Q(S, A),然后使用的动作策略是epsilon-greedy方法,此时,我们只看R这一项的话,对不同动作选择的概率只会影响各个表项的收敛速度,但是不会影响最终收敛的值。而式子右侧Target的第二项中,是max_a(Q(St+1, a)),恰好对应着我们要学习的greedy策略,因此,也不会影响我们的Q的学习。因此Rt+1 + max_a(Q(St+1, a))对于Q(S, Q)的学习恰好是指向greedy策略的。如果,我们这里是多步学习的话,则不一样,比如二步学习,Target中会涉及到Rt+2,这一项是At+1的结果,而At+1的选择是通过epsilon-greedy得到的,这一步与At的选择是一个序列性的行为,无法忽略其采样方法,因此,需要引入重要性采样因子。大家可以参考《Why don't we use importance sampling for one step Q-learning?》
下面括号中是另一种不需要重要性采样的解释,不过似乎有些问题,大家可以不用理会。
(现在考虑Q-learning算法,该算法中的行为策略与目标策略是从同一个值函数q中学习得到,其中目标策略使用greedy方法得到,行为策略使用epsilon-greedy方法得到,因此,重要性采样的因子pi/mu就有两种情况了,对于某个状态s,pi策略选择动作a的概率要么是1,要么是0,当为1时,mu选择该动作的概率也较大(因为epsilon一般比较小),所以pi/mu约等于1;当为0时,pi/mu=0。因此,虽然Q-learning是一种异策略算法,它却不需要重要性采样因子了,或者说,不需要引入重要性采样。)
给出Q-learning算法的课程ppt供大家参考:
在Q-learning中,计算TD target使用的是我们期望的策略,也即贪婪策略,而选择动作使用的策略是e-greedy策略。相当于,我们选择(状态,动作)对的时候,是引入探索的,而计算target的时候,是按照期望的贪婪策略进行的。事实上,这里的Q(S, A')选用e-greedy之后,首先是通过对Q-estimate使用e-greedy来选择动作A',然后又用Q-estimate来估计状态动作对,这样会使得我们over-estimate Q,所以就有了Double Q-learning算法,这种算法首先用Q-estimate来选择动作A',接着用Q-target来公平地估计这个状态动作对,从而减轻了over-estimate问题。关于Double Q-leanring这里就不详述了,有兴趣的同学可以去看看论文《Deep Reinforcement Learning with Double Q-learning》。
在Q-learning算法中,我们只有一个值函数q,行为策略和目标策略均由它产生。如果我们将上面算法中的target换为R+gamma*Q(S',A')(这里A'是从行为策略中产生),那么就是Sarsa算法了。而这里使用目标策略对应的值函数构造target,其想法就是朝着目标策略(也即greedy策略)去更新,从而使之收敛到确定性策略对应的值函数。
值得一提的是,Q-learning也叫做SARSAMAX,记住这一点也就可以很容易地记住Q-learning算法了。
在本文的最后,给出动态规划方法与时间差分方法之间的关系表格:
祝大家工作愉快~
最后
以上就是幸福缘分为你收集整理的David Silver强化学习课程笔记(五)第五课:模型无关的控制的全部内容,希望文章能够帮你解决David Silver强化学习课程笔记(五)第五课:模型无关的控制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复