学习目标
- 理解Prediction和Control的差别;
- 理解什么是first-visit和every-visit;
- 理解什么是on-policy和off-policy;
- 理解蒙特卡洛方法的Prediction和Control问题;
Prediction和Control
其实这两个名词在总结动态规划方法的文章中也提到过了,但是没有细说,这里再简单的说明一下。预测(Prediction)和控制(Control)是MDP中的两类问题:
预测问题
- 输入:MDP 和策略
- 输出:状态值函数 或者状态动作值函数
控制问题
输入:MDP
输出:最优状态值函数 或者最优状态动作值函数 ,和最优策略
比如上一节的动态规划方法,两者的对应关系如下图:
蒙特卡洛方法简述
动态规划方法是建立在模型已知的情况下,但是往往大多数情况下模型是未知的,实际应用中我们不可能完全了解一个环境的所有知识,比如说得出它的状态转移矩阵。这个时候蒙特卡洛算法就派上用场了,它只需要从经验(experience)中去学习,这个经验包括样本序列的状态(state)、动作(action)和奖励(reward)。得到若干样本的经验后,通过**平均所有样本的回报(return)**来解决强化学习的任务。
类似于DP方法,MC求解也可以看作是一种广义的策略迭代过程,即先计算当前策略所对应的值函数,再利用值函数来改进当前策略,不断循环这两个步骤,从而得到最优值函数和最优策略。两个步骤细节上与DP不同,下面就慢慢道来。
蒙特卡洛方法的预测问题——策略评估
回想一下值函数的求解公式,即回报的期望:
但是蒙特卡洛方法在策略评估时不是求的回报的期望,而是使用经验平均回报(empirical mean return)。随着我们的样本越来越多,这个平均值是会收敛于期望的。
一个episode就可以看作是一个样本,假设对于状态 ,给定策略 ,要计算其值函数 。在一个episode中,每次状态 出现都称为一次visit,当然在一个episode中, 可能出现多次。我们称第一次出现该状态为first-visit,因此first-visit蒙特卡洛方法(first-visit MC method)就是将所有第一次访问到 得到的回报求均值。根据大数定理,当样本足够大的时候,该均值就趋近于 。顾名思义,every-visit蒙特卡洛方法(first-visit MC method)就是将所有访问到 得到的回报求均值。下面的算法就是估计的first-visit MC方法:
说了这么多,估计状态值函数对于我们有用吗?回想一下DP方法中我们是怎么计算 的:
我们是通过one step look ahead的方法来迭代求解的。但是此时我们并不知道模型的具体情况,状态转移矩阵也不知道,所以这种求法就行不通了!还记得当时我在强化学习——马尔科夫决策过程和贝尔曼方程这篇文章中提的一个问题吗?为什么要有状态值函数(state value
function)和状态动作值函数(state-action
function)这两个概念,明明一个状态值函数就可以表征我们强化学习的目标——最大化回报,学到这里就可以给一个说法了,因为在模型已知的时候,只用状态值函数就可以完全决定策略,而模型未知的时候就必须估计每个动作的值,即状态动作值函数。所以,蒙特卡洛了方法就是去得到 ,则对应的策略估计问题就是估计 ,即从状态 开始,并采取动作 ,然后遵循策略 得到的回报的期望。根据上面的讨论,first-visit MC方法去估计 就是求所有episode第一次访问 这个state-action pair所得到回报的均值。
蒙特卡洛方法的控制问题——策略提升
根据广义的策略迭代算法,得到值函数以后,下一步就是进行提升,进而得到最优值函数和最优策略。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nBRdY4fw-1592832193939)(http://img.wildwind0.com/202020302052-1.png)]
为了使这个过程收敛,我们是建立在两个假设上面的:
1. 策略估计过程需要无限个episode才会收敛到回报的期望;
2. Exploring starts,即能够保证状态集合 [公式] 中的所有状态都是有可能被选中为每个episode的初始状态。
显然,在实际的算法中这是不可能实现的,我们必须想法去掉这两个假设!先看第一个假设,其实这个假设我们在DP方法中也是遇到的,有两种方法可以去掉这个假设。
方法一:坚持在每次策略评估的过程中接近 。有点懵是不是?这是sutton书中的一句话,原话是“One is to hold firm to the idea of approximating in each policy evaluation.”其实很简单,就是说虽然理论上必须有无限个episode来作为样本去评估 ,实际上是做不到的,我只能尽力多产生点episode,尽可能的去接近这个收敛值。我们可以设定一个误差,两次估计的值小于这个误差,差不多就行了。
方法二:既然要很多episode才能收敛,那么索性我就不管它收不收敛了,还记得DP方法中,在策略提升过程中我还用到的一个方法吗?就是值迭代(value iteration),这是一个极端的例子,就是在策略估计的时候只进行了一次迭代就转向策略提升了。速度是快了,但最后精度就降低了。
再看第二个假设,怎么解决exploring starts这个假设呢?我们一方面希望能找到最好的策略,另一方面又不知道当前策略是不是最好的,这就得去尝试不同的state action pair。一旦找到了一个更好的,如果一直沿着这个策略进行下去,那就有可能陷入局部最优解,进而找不到最优解了。
为了解决这个矛盾,书中提出了两种方法,就是我们说的on-policy和off-policy。所谓的on-policy就是生成episode的策略和迭代优化的策略是同一个,并且这个策略是一种软(soft)策略,即
具体地,我们使用 greedy 策略,以下算法就是使用该策略的On-policy first-visit MC control
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7YlFezDl-1592832193943)(http://img.wildwind0.com/202020302056-g.png)]
On-policy方法在一定程度上解决了exploring starts这个假设,让策略既greedy又exploratory,最后得到的策略也一定程度上达到最优。Off-policy方法就更加直接了,分别在策略估计和策略提升的时候使用两种策略,一个具有探索性的策略专门用于产生episode积累经验,称为behavior policy ,另一个则是更为贪婪,用来学习成为最优策略的target policy 。为了利用从规则 产生的 episodes 来评估 的value,则我们需要规则 下的所有行为在规则 下被执行过,也就是要求对所有满足的 均有 ,这个假设可以称为是“覆盖”(coverage)。
Off-policy预测问题中的重要性采样(Importance Sampling)
几乎所有off-policy方法使用的都是重要性采样,就是给定服从一种分布的样本情况下,估计另外一种分布下期望值的一般方法。我们根据轨迹在target policy和behavior policies 下发生的相关概率来对 returns 赋予权重,给定初始状态 ,state-action轨迹为 在规则 下发生的概率为
其中,p 代表的是 state-transition 概率函数,因此,轨迹在 target policiy 和 behavior policy 下发生的相关概率(即 importance-sampling ratio)为
可以看出, 与MDP没有关系,仅仅与两个规则相关。好了,为什么我们要求这个?我们的目的是要估计一个规则,即求target policy下回报的期望,但现在我们是根据behavior policy生成的episode,得到的自然是一个错误的期望值 ,但我们要的是 ,所以这个时候就该 发挥作用了!
好,接下来就要给出off-policy方法是如何评估策略的公式。现在假设我们有了一系列服从规则 的episodes,首先我们对这些 episodes 进行连接和标号,假设第一个 episode 在时刻 100 结束,则第二个 episode 就以时间 101 开始,以此类推。下面规定一些符号表示:
- :对 every-visit 方法,它代表所有状态 s 被 visit 的时刻的集合,对 first-visit 方法,它仅代表所有状态 s 在某个 episode 中第一次被 visit 的时刻的集合;
- :从时刻t到的回报(return);
- :属于状态s的回报;
- :代表相应的importance-sampling ratio;
根据求平均的方法不同,有两种估计 ,一种是ordinary importance sampling:
另一种是weighted importance sampling,
增量式求均值
在策略估计的时候,MC所采用的方法是将所有样本episodes所得到的回报求均值,怎么求这个均值呢?当然可以简单的求和再除以episode的数量。这里要介绍的是另一种方法——增量式求均值。
假设我们得到了一系列回报,对于off-policy来说,因为我们利用了重要性采样,所以多了一个权重的因素,设每个回报的权重为
于是有
Off-policy的控制问题
前面两个小节就是在为这个小节做铺垫,所以直接给出算法啦。
学习资料
[1] Reinforcement Learning: An Introduction- Chapter 5: Monte Carlo Method
[2] David Silver’s RL Course Lecture 4&5
[3] 强化学习入门 第三讲 蒙特卡罗方法
[4] 采样方法(一)
《Reinforcement Learning: An Introduction 第二版》PDF书籍与David Silver课程,欢迎关注我的公众号“野风同学”,回复“RL”即可获取。
一个程序员的自我成长之路,持续分享机器学习基础与应用、LeetCode面试算法和Python基础与应用等技术干货文章,同时也经常推荐高质量软件工具、网站和书籍。