David Silver强化学习课程笔记(五)

来源:互联网 发布:四元数 方向余弦矩阵 编辑:程序博客网 时间:2024/05/21 10:26

第五课:模型无关的控制

        本文主要介绍模型无关的控制,包括同策略方法(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方法得到,因此,重要性采样的因子pi/mu就有两种情况了,对于某个状态s,pi策略选择动作a的概率要么是1,要么是0,当为1时,mu选择该动作的概率也较大(因为epsilon一般比较小),所以pi/mu约等于1;当为0时,pi/mu=0。因此,虽然Q-learning是一种异策略算法,它却不需要重要性采样因子了,或者说,不需要引入重要性采样。给出Q-learning算法的课程ppt供大家参考:

      

      

      

      

        在Q-learning算法中,我们只有一个值函数q,行为策略和目标策略均由它产生。如果我们将上面算法中的target换为R+gamma*Q(S',A')(这里A'是从行为策略中产生),那么就是Sarsa算法了。而这里使用目标策略对应的值函数构造target,其想法就是朝着目标策略(也即greedy策略)去更新,从而使之收敛到确定性策略对应的值函数。

        值得一提的是,Q-learning也叫做SARSAMAX,记住这一点也就可以很容易地记住Q-learning算法了。

        在本文的最后,给出动态规划方法与时间差分方法之间的关系表格:

      

      

        祝大家工作愉快~


阅读全文
0 0