参考书籍: Reinforcement Learning An introduction
第二版 作者:Richard S. Sutton and Andrew G. Barto
以及此书的中文版《强化学习》

第5章 Monte Carlo蒙特卡洛方法

上一章:第4章:动态规划

1.介绍

这小节内容很重要,要是不懂的话,之后得强化学习算法都不能学得很好。因为很多算法都会使用蒙特卡洛法,而必须知道该方法的原理,解决什么样的问题,才能知道后面的强化学习的算法为什么要使用蒙特卡洛方法。
这一章开始考虑评估价值函数以及获得最优策略的第一种学习方法。 不同于上一章,这里我们不再假设我们对环境有完全的了解。 蒙特卡洛方法需要的仅仅是 经验*──与环境进行真实的或者模拟的交互所得到的状态,动作,奖励的样本序列。即,蒙特卡洛方法利用样本的数据来进行估计。 其中,从 真实 的经验学习是非常吸引人的,因为它在不需要关于环境动态的先验知识的情况下仍然能够获得最优的行为(策略); 而从 模拟 的经验学习也同样强大,虽然这时需要一个模型,但是这个模型仅仅用来产生样本, 并不是动态规划(DP)方法中所用到的所有转移概率的完整分布函数。 在相当多情况下我们很容易从目标的概率分布函数中进行抽样得到样本,可是很难获得这个分布的显式(具体)形式。
蒙特卡洛方法是基于对样本回报求平均的办法来解决强化学习的问题的为了保证能够得到良好定义的回报,这里我们定义蒙特卡洛方法仅适用于回合制任务。 就是说,我们假设我们的经验被分成一个个的回合,而且对每个回合而言,不管选择什么样的动作,都会结束。 只有在事件结束时,我们的价值估计和策略才会改变。蒙特卡洛方法因此能够写成逐个回合的增量形式,而不是逐步(在线)的形式。 术语“蒙特卡洛”被广泛的用于任何的在操作中引入了随机成分的估计方法。 这里我们使用它来表示基于平均整个回报的方法(区别于那些使用部分的回报的方法。我们将在下一章阐述)。
蒙特卡洛方法使用抽样以及对状态-动作对的 回报 求平均的办法很像我们在第二章中遇到的赌博机中使用的方法, 在第二章中我们也使用了抽样以及对每个动作的 奖励 求平均的方法。 他们主要的区别在于,我们现在有多种状态,每个表现地就像一个不同的赌博机问题 (就像一个联合-搜索或前后关联的赌博机),而且它们之间是相互关联的。 就是说,在一个状态下做出一个动作的回报依赖于本事件中这个状态之后的状态所做的动作。 因为所有动作选择都在学习中,所以从较早状态的角度来看,问题变得不稳定。

为了解决这种非平稳性,我们改变我们的办法,像我们在第四章中对动态规划方法(DP)所做的,使用广义策略迭代(GPI)。 之前动态规划我们依靠对MDP的了解来 计算 价值函数,这里我们从MDP的抽样回报中 学习 价值函数。 我们使用相同的办法去获得最优的价值函数和策略,即GPI中价值函数和对应的策略交互作用。 就像在动态规划(DP)的那章所做的,首先我们考虑预测的问题 (计算一个确定的随机策略 π 的价值 vπ 和 qπ ), 然后是策略提升,以及最后,控制的问题和解决它的广义策略迭代方法。 从动态规划(DP)中得到的这些想法都被推广到蒙特卡洛方法中,不过在这种情况下(指蒙特卡洛),我们只有样本经验

2 蒙特卡洛预测

我们开始考虑在给定策略的情况下,用蒙特卡洛方法学习状态-价值函数。 我们之前讲过,一个状态的价值等于从这个状态开始的期望回报──期望的累积未来折扣奖励。 一个显而易见的估计方法是,对经验中的所有的这个状态的回报求平均。 随着更多的回报被观察到,这个平均值会收敛于它的期望值,即期望回报。 这个想法根植于所有的蒙特卡洛方法中
具体来看,假设我们想要估计 vπ(s) 的值, 它表示遵循策略 π 的情况下,状态 s 的价值, 我们已经得到了一些回合,它们都遵循策略 π 并且都出现了状态 s 。 每当一个回合中出现状态 s,我们就说这是对状态 s 的一次 访问。 当然,在同一个回合中状态 s 可能被访问多次,我们称第一次为 s 的 首次访问。 所以我们有两种蒙特卡洛方法,一种只计算所有回合中首次访问状态 s 的平均回报, 以此作为 vπ(s) 的估计值,我们称之为 首次访问MC方法 ; 与之对应的,另一种方法计算所有回合中每次访问状态 s 的平均回报,我们称之为 每次访问MC方法 。 上述的两种方法很相似,但是具有细微不同的理论特性。 第一种方法(指首次访问MC方法)被广泛研究可追溯到十九世纪四十年代,所以我们这一章主要关注这种方法。 至于第二种方法呢,我们将在第九章和第十二章分别作为函数近似和资格迹(eligibility traces)的扩展。 首次访问MC方法如下所示。每次访问MC方法和首次访问MC方法是相同的,除了没有检查在回合中早些时候发生过 St。


下面理解动态规划和蒙特卡洛的重点

我们可以通过蒙特卡洛(下图右)与动态规划的图表(下图左)对比发现, 首先,动态规划(DP)的图表展示了所有的转移可能,列出了所有可能的下一状态,而蒙特卡洛(MC)在一个回合里只有一种转移可能。 其次,动态规划(DP)只包含了单步的转移状态价值,而蒙特卡洛(MC)表示一个回合从开始到结束的所有状态价值。 这些图表所表现的不同精确地反应了这两种算法的根本性的差异。

需要注意的是,蒙特卡洛(MC)方法对每个状态的估计是独立的,即是说,对这个状态的估计并不取决于其他的状态,这点和动态规划(DP)是不一样的。 换句话说,就像我们在前面的章节所提到的,蒙特卡洛(MC)方法不使用 提升(bootstrap)
:bootstrap是指在对一个状态进行估计时,需要使用到其它状态的估计值,很显然,动态规划从上图左,可以看到在估计s的价值时,需要使用到s‘的价值的估计值,故属于bootstrap的。而蒙特卡洛采样回合,如上图右,当我们估计一个状态的价值的时候,只需要将这条轨迹上的奖励加起来就行了,而不需要使用其它状态的估计值。

3 蒙特卡洛状态动作值q的估计

下面这段话一定要理解,才能知道为什么有时候我们需要计算状态动作值q而仅仅是计算状态值V。
我先总结一下下面这段黑体话的意思。解释之前,希望大家已经知道动态规划是如何在动作评估后更新策略的(通过状态值,每一个状态选择动作带来回报最大的)。由于动态规划已经知道模型(模型可用),即它知道在s状态下采取动作a会到达的下一个状态s’是什么,所以它可以通过r(s,a)+V(s’)计算出这个动作的价值,我们只需要按这个公式计算出所以动作的价值,选择最大动作当作新策略。但是假如模型是不可用的,那么我们在状态s采取a的下一个状态是什么是无法知道,即我们无法知道下一个状态s‘是什么,进而就无法求解r(s,a)+V(s’)。所以蒙特卡洛希望在估计的时候直接估计q(s,a)而不是估计v(s)。q(s,a)表示在状态s采取动作a的价值。如果我们估计了q(s,a),那么我们对于状态s,不需要知道下一个状态s’,直接比较所有动作的q(s,a),然后取最大q值得动作就行了。

这段黑体看不懂的话先看上一段话我的解释。如果模型不可用,那么估计 动作 价值(即状态-价值对的值)而不是 状态 价值就会特别有用。 如果模型可用,那么仅使用状态价值就可以决定策略; 决定下一步只需要看哪个动作导致的奖励和下一状态组合最佳,就像我们在动态规划(DP)那章所讲的一样而如果模型不可用,仅使用状态价值是不够的。我们必须清楚地估计每个动作的价值,以使价值在建议策略时有用。 所以,蒙特卡洛方法主要用来估计 q∗ 。为此,我们首先考虑对动作价值的策略估计问题。

对于动作价值的策略评估问题,即估计 qπ(s,a) 。qπ(s,a) 定义为, 从状态 s 开始,做出动作 a,之后遵循策略 π,所得到的期望回报(return)。 在这里使用的蒙特卡洛方法与上一节对状态价值使用的基本相同,只不过现在谈论的是状态-动作对而不是状态。 一个状态-动作对 s,a 即是在一个回合里,访问到状态 s ,并做出动作 a。 在每次访问MC方法中,每次访问状态-动作对都会计算,最后求平均; 而首次访问MC方法每个回合只计算最多一次。当访问次数趋近于无穷时,这两种方法(指每次访问 MC 和首次访问 MC)都会以二次方收敛到期望值。

唯一的问题是,可能会有许多状态-动作对从未被访问到。如果 π 是一个确定性的策略(确定性策略是指在状态s只会采取一个确定的动作,而不是依概率选取动作), 那么遵循策略 π,每个状态将会仅仅观察到一个动作的回报。 如果不能观察到其他动作的回报,也就不能求平均,那么蒙特卡洛的估计就不能随着经验的增加而提高。 这是一个严重的问题,因为我们学习动作价值,就是为了在每个状态选择合适的动作。 为了比较所有的可能,我们需要估计每个状态 所有 可能的动作,而不仅仅是当前选择的动作。

这是一个很普遍的问题,即 保持探索。我们在第二章的k-臂赌博机问题中提到过。 要使策略评估能够工作,我们必须保证持续的探索。一个办法是, 从特定的状态动作对出发 ,对每种动作都有大于零的概率选择到。 这能够保证经历无限个回合后,所有的状态-动作对都会被访问到无限次。我们称这种假设为 探索开端

4 蒙特卡洛控制

现在,我们开始考虑蒙特卡洛估计来解决控制问题,即求解近似最优的策略。 整个的过程和上一章动态规划的模式相同,我们依照广义策略迭代(GPI)的思想。 广义策略迭代(GPI)中,我们同时维持一个近似的策略和一个近似的价值函数。 这个价值函数会不断地靠近当前策略的价值,而这个策略也会不断地根据当前的价值进行提升,如右图所示。 这两种变化在一定程度上相互作用,任意一方的改变都会引起另一方的改变,但是总的来讲他们使策略和价值函数都趋向于最优。

首先,我们考虑经典的策略迭代的蒙特卡洛(MC)版本。这里,我们交替执行策略迭代和策略提升的完整步骤。 从一个随机的策略 π0 开始,以最优策略和最优的动作-价值函数结束:


策略提升的方法是,对于当前的价值函数,使策略贪婪。这种情况下,我们有 动作-价值 函数,因此不需要模型来构建贪婪策略。 对于任何的动作-价值函数 q,它对应的贪婪策略是:对每个 s∈S, 选择使动作-价值函数最大的那个动作:

之后我们可以做策略提升,我们构建每个 πk+1 为 qπk 的贪婪策略。 策略提升理论(见4.2节)可以应用到 πk 和 πk+1 上, 因为对于所有 s∈S,

正如我们上一章说阐述的,这个理论保证了每个 πk+1 都一致地比 πk 好, 或者和 πk 一样好。后者,我们能得到两个最优策略。这个理论保证了整个过程会收敛到最优的策略和价值函数。 通过这种方法我们能在不知道环境动态(不知道转移函数)的情况下,仅靠样本回合(使用蒙特卡洛(MC)方法)来找到最优策略。

我们已经做出了两个不太可能的假设,以保证蒙特卡洛(MC)方法能够收敛。第一个是,回合都是探索开端的方式; 第二个是,我们有无限个回合供策略评估使用。为了得到一个可实践的算法,我们将不得不删除这两个假设。 我们将在这一章的稍后部分考虑怎么删除第一个假设。

现在,我们先考虑第二个假设,即策略评估需要无限个回合。这个假设相对容易去掉。 事实上,相同的问题曾在上一章的经典动态规划(DP)算法中出现过。例如迭代策略评估只会渐进地收敛到真实价值函数。 无论是DP还是MC,我们有两种方法解决这个问题。
(1)一个方法是,让每次策略评估都足够接近 qπk。 为了获得这个估计的边界的量级和错误的概率,我们会使用一些方法和一些假设,然后经过足够多的步骤后, 策略评估能够保证这些边界足够的小。这个方法可以完全满足保证收敛到一定程度的近似。 然而,如果使用这种方法,即使是解决最小的问题,在实践中也会需要非常多的回合。(评估到很小的误差,转向策略提升
(2)还有第二种方法可以避免策略评估需要无限回合,在跳转到策略提升前,放弃尝试完成策略评估。 评估的每一步,我们将价值函数 向 qπk 移动,但是除了很多步之外,我们不希望移动到期望的值。 我们最先在4.6节的GPI中介绍了这种方法。一个极端的例子是价值迭代,就是每执行一步策略提升就要执行一步迭代策略评估。 还有一种更极端的例子是价值迭代的原地版本,它每个状态交替使用策略提升和策略评估。(评估几个回合就直接策略提升,之前介绍的价值迭代就是评估一个回合直接策略提升

对于蒙特卡洛策略评估而言,以回合制的方式交替使用策略评估和策略提升是很自然的。 每一个回合结束后,观察到的回报用来做策略评估,然后对每个经历的状态做策略提升。 完整的简化算法在下面,我们称作 探索开端的蒙特卡洛算法 (Monte Carlo ES,即 Monte Carlo with Exploring Starts)。

5 非探索开端的蒙特卡洛控制

如何摆脱这个在实践中不太可能发生的探索开端的假设呢? 保证无限次后所有的动作都能被选到的唯一的通用办法是让个体能够持续地选择它们。 具体来讲有两种方法,我们称之为 在策略(on-policy) 方法和 离策略(off-policy) 方法。 在策略方法尝试去估计和提升我们用作决策的那个策略;而离策略估计和提升的策略与用来生成数据的策略不同。 我们上一节所用到的探索开端的蒙特卡洛方法就是一种在策略方法。 在这一节里,我们还将学习如何设计不用探索开端假设的在策略蒙特卡洛控制(on-policy Monte Carlo control)算法。 离策略方法将在下一节说明.

我们的在策略控制方法是 软的(soft)就是说所有的 s∈S 和 a∈A(s),π(a|s)>0但是会逐渐地接近于确定性的最优策略。 许多第二章谈论的方法都可以提供这种机制。 这一节我们使用 ϵ− 贪心 (ϵ−greedy)策略, 即大多数时间选择有最大估计动作价值的动作,但是有 ϵ 的概率选择随机的动作。 也就是说,对所有非贪心的动作,选择它的概率是 ϵ|A(s)|, 选择贪心的动作的概率是 1−ϵ+ϵ|A(s)|。 ϵ− 贪心是 ϵ−soft 策略的一个例子, 在 ϵ−soft 中,对所有的状态和动作, 有 π(a|s)≥ϵ|A(s)|。 在 ϵ−soft 中,ϵ− 贪心策略是最接近贪心的。

在策略蒙特卡洛控制的思想仍然是广义策略迭代(GPI)。 和探索开端的蒙特卡洛算法一样,我们使用首次访问蒙特卡洛方法来估计当前策略的动作-价值函数。 由于没有探索开端这个假设,我们不能简单地对当前价值函数使用贪心来提升当前的策略, 因为那样会影响我们在未来对非贪心动作的探索(而探索开端保证了开始就有非贪心的动作会被选择,所以之后就可以贪心)。 幸运的是,广义策略迭代(GPI)并不需要我们的策略一直保持贪心,只是要求不断向贪心策略 靠近。 我们的在策略方法会不断的趋向于 ϵ− 贪心策略。 对任意的 ϵ−soft 策略 π, qπ 对应的任意的 ϵ− 贪心策略都不坏于策略 π。 完整的算法如下。

6 通过重要性采样的离策略预测

所有的控制方法都会面临这样一个两难的问题:一方面,他们需要通过 最优 的行为来学习动作价值; 但另一方面,他们需要表现地不那么好,来探索所有的动作(来 找到 最优的动作)。 那么,如何既能够学到最优策略,又能够在实际中多探索呢? 上一节的在策略方法实际上是一个妥协——它学习的并非最优策略,而是仍然保留了探索的近-最优策略(也就是在策略提升的时候,改进策略仍是ϵ− 贪心策略,这样求得的q肯定不如取最大q的要好,故当前学习非最优策略)。 一个更直截了当的方法是,使用两个策略,一个策略用来学习最优策略,另一个则更具探索性地用来产生行为。 用来学习的策略我们称之为 目标策略 ,另一个用来生成行为的称作 行为策略 。 这种情况下,我们说从数据中学习是“离开了(off)”目标策略的,整个过程用术语 离策略学习 表示。

我们会在本书整个余下的内容中同时探讨在策略和离策略两种方法。在策略方法一般来讲更简单一些,所以一般先考虑它。 离策略方法需要额外的概念和记号,且因为数据是由另一个不同的策略产生的,离策略方法通常拥有更大的方差,收敛更慢。 另一方面,离策略方法更加强大且更一般化。它包括在策略方法作为特殊情况,此时目标和行为策略相同。 离策略方法在应用程序中也有各种其他用途。例如,离策略能够从非传统学习器或人类专家生成的数据中学习。 离策略学习还被看成是学习多步预测模型的关键,该模型常被用来预测现实世界的动力学 (请看17.2章节; Sutton, 2009; Sutton et al., 2011)。

这一节我们开始学习离策略方法。从考虑 预测 问题开始,预测时目标策略和行为策略都是固定的。 现在,假设我们想要估计 vπ 或者 qπ, 但我们所有的回合都由另一个策略 b 所得到,这里 b≠π。 这种情况下,π 是目标策略,b 是行为策略,这两种策略都认为是已知且固定的。

为了使用策略 b 得到的回合来估计 π 的价值, 我们要求在策略 π 下做出的动作也能,至少时不时地在策略 b 下做出。就是说,我们需要 π(a|s)>0 意味着 b(a|s)>0。这个称为 覆盖(coverage) 假设。对特定的状态,策略 b 必须是随机且不等于 π。 另一方面,目标策略 π 可以是确定性的,事实上,这在控制问题上会很有趣。 在控制问题中,目标策略一般对当前的动作价值函数是确定性的贪心策略。 这个策略变成确定性的最优策略的同时,行为策略还能保持随机性和更多的探索性,比如,一个 ϵ− 贪心策略。 当然,这一节,我们只考虑预测问题,且策略是给定的和固定的。

几乎所有的离策略方法使用了 重要性采样(Importance sampling)。 这是一个通用的技术,用来估计随机变量在一个分布上的期望值,但是采样的样本来自另一个分布。 我们在离策略上应用重要性采样的方法是,根据目标和行为策略下得到发生的事件轨迹的概率,将得到的回报加权。 两个概率的比值称为 重要性采样率 。给定初始状态 St ,那么在策略 π 下, 接下来的状态动作轨迹 At,St+1,At+1,…,ST 发生的概率是

其中, p 是状态转移概率函数,因此,在目标策略和行为策略下的该轨迹的发生的相对概率为(即重要性采样率)

注意到上式中的轨迹的概率依赖于MDP的转移概率(常常是未知的),但是它们在分子和分母中都是相同的,能够被消掉。 即是说,重要性采样率最终仅仅依赖于两个策略和序列,而与MDP无关。

回想一下,我们希望估算目标策略下的预期回报(价值),但由于行为策略,我们所有的回报都是 Gt。 这些回报具有错误的期望 E[Gt|St=s]=vb(s),因此不能平均得到 vπ。 这是重要性抽样的来源。新策略和旧策略的概率比率 将收益转换为具有正确的期望值

现在我们准备好给出蒙特卡洛算法,算法使用在策略 b 下的一批观察到的回合来估计 vπ(s)。 为了方便,我们将时间步调设置为穿过回合的递增形式,即下一个回合开始时的时间步调不清零,而是接着上个回合的末尾加一。 比如,这一批的回合中,第一回合在时间 100 的时候结束,那么下一个回合在时间 t=101 开始。 这使我们能够使用时间步调来指代特定回合中的时间步调。 特别地,我们可以定义一个集合表示状态 s 被访问到的时间步调,记为 T(s)。 这是对于每次访问而言的。对于首次访问,T(s) 只包含第一次访问 s 的时间步调。 然后,T(t) 表示第一次回合结束的时间,Gt 表示 t 之后到 T(t) 的回报。 然后集合 {Gt}t∈T(s) 表示状态 s 的所有回报, {ρt:T(t)−1}t∈T(s) 表示对应的重要性采样率。 为了估计 vπ(s) ,我们用重要性采样率来缩放回报,然后求平均:

当重要性采样只是以上面的简单的方式求平均时,我们称为 原始重要性采样(ordinary importance sampling)

另一个选择是 加权重要性采样(weighted importance sampling) ,它使用了加权平均,定义为

若分母为零,加权重要性采样也为零。 为了了解这两种不同的重要性采样方法,在观察状态 s 的单一回报后,我们考虑其首次访问方法的估计。 对加权重要性采样来说,分子分母中的 ρt:T(t)−1 可以消掉, 因此这时它就等于我们观察到的回报,与重要性采样率无关(假设重要性采样率不为零)。 由于只有一个回报被观察到,所以这是一个合理的估计。 但是,它的期望值应该是 vb(s) 而不是 vπ(s)。从统计意义上看,这是有偏估计。 与之相对,原始重要性采样(5.5)的首次访问版本的期望值始终是 vπ(s) (这是无偏的),但它可能会很大。 假设重要性采样率为十,即对观察到的轨迹,目标策略发生的可能性是行为策略的十倍。 这种情况下,采用原始重要性采样方法的估计值是观察到的回报的 十倍 。 它可能与观察到的回报相差太大了,即使当前的轨迹可以很好的表示目标策略。

正式地讲,两种重要性采样的不同可以用偏差和方差来表示。 原始重要性采样的估计是无偏的,而加权重要性采样是有偏的(偏差会渐进地趋于零)。 另一方面,原始重要性采样的方差一般是无界的,因为它的重要性采样率的方差是无界的;而加权重要性采样的任意单个回报的最大权重是1。 事实上,假设回报是有界的,即使重要性采样率为无限, 加权重要性采样的方差也是趋于零的(Precup, Sutton, and Dasgupta 2001)。 实践中,由于加权重要性采样方差更小,一般更偏向于使用它。 然而,我们不能完全放弃原始重要性采样,因为使用函数近似,它更容易扩展到近似的方法。 我们将在本书的第二部分介绍近似方法。

原始和加权重要性采样的每次访问方法都是有偏差的,但是,随着样本数量的增加,偏差也渐渐渐渐变为零。 实际上,每次访问方法通常都是首选方法,因为它们不需要跟踪访问过哪些状态,因为它们更容易扩展到近似值。 完整的使用加权重要性采样用来估计离策略的每次访问MC算法将在将在下一小节给出。

7 增量式的实现

蒙特卡洛预测方法可以用增量式的方式,用回合式的形式,使用在第二章(2.4节)提到的展开的技术实现。 不同的是,第二章中我们平均 奖励,而蒙特卡洛方法中,我们平均 回报。 其他第二章所用到的,都可以用在 在策略 蒙特卡洛方法中。 对于 离策略 蒙特卡洛方法,我们需要分别考虑 原始 重要性采样和 加权 重要性采样两种情况。

对于原始重要性采样,回报值会被重要性采样率 ρt:T(t)−1 (式5.3)所缩放,然后再求平均(式5.5)。 对于这些方法,我们可以再次使用第二章用到的增量式的方法,但使用缩放的回报值代替第二章所用的奖励值。 现在,就剩下 加权 重要性采样的离策略方法。这里,我们需要生成对回报值的加权平均,所以需要一个稍有不同的增量式算法。

假设我们有一系列的回报值 G1,G2,…,Gn−1,都是从相同的状态开始的, 且每个回报值对应一个随机的权值 Wi (比如 Wi=ρti:T(ti)−1)。我们希望表示估计值

然后在每获得一个额外的回报 Gn 时保持更新。除了跟踪 Vn, 我们还必须保持给定前 n 个回报下每个状态的累积权值 Cn。Vn 的更新规则是


然后在每获得一个额外的回报 Gn 时保持更新。除了跟踪 Vn, 我们还必须保持给定前 n 个回报下每个状态的累积权值 Cn。Vn 的更新规则是
这里 C0≐0 (且 V1 是随机的,因此需要一个具体值)。 下面的框中包含了完整的回合式的增量式算法,用于蒙特卡洛策略估计。 这个算法主要用在离策略的情况,使用加权重要性采样,但是也能用于在策略的情况。 用于在策略时,让目标策略和行为策略一样即可(这种情况下(π=b),W 始终是1)。 近似值 Q 收敛到 qπ (对所有的出现的状态-动作对),而动作由另一个潜在的不同策略 b 提供。

8 离策略蒙特卡洛控制

现在我们开始展示一个例子,关于本书的第二类学习控制方法:离策略方法。 前面讲到,在策略的显著特点是,它在估计策略值的同时也用于控制。而离策略方法中,这两个功能是分开的。 用于产生行为的策略,即称作 行为 策略,事实上与要评估和提升的策略,即 目标 策略,是无关的。 这样分开的好处是,目标策略可以是确定性的(即,贪心的),同时行为策略能持续访问所有的动作。

离策略蒙特卡洛控制方法使用上两节讲过的一种技术。它们跟随行为策略的同时,学习和提升目标策略。 这些技术需要行为策略选择所有动作的概率是非零的,这些动作可能会被目标策略选择到(覆盖)。 为了探索所有的可能,我们需要行为策略是软(soft)的(即,在所有状态下,策略选择所有动作的概率是非零的)。

下边的框里展示了一个离策略蒙特卡洛方法来估计 π∗ 和 q∗, 它是基于广义策略迭代(GPI)和加权重要性采样的。 目标策略 π≈π∗ 是对于 Q 的贪心策略, Q 是 qπ 的估计。 行为策略 b 可以是任何的策略,但是为了保证 π 能收敛到最优策略, 对每对状态动作对,都需要收集无限次的回报。 这一点可以通过选择 b 是 ϵ−soft 来保证。 即使动作是由另一个软策略 b 选择的,且策略 b 可能在回合之间甚至回合中改变, 策略 π 也能在所有遇到的状态收敛到最优


一个潜在的问题是,当所有剩下的动作是贪心的时候,这个方法只能从回合的尾部学习。 如果非贪心的动作出现很多的话,学习过程会很慢,特别是对于长回合开始出现的状态而言,潜在地,这可能会大大减慢学习速度。 当然,还没有足够的经验表明这在离策略蒙特卡洛方法中是个严重的问题。 如果这个问题很严重,那么阐述它最重要的方式是结合时序差分学习(temporal-difference)来讲,这个算法将在下一章见到。 或者,如果 γ 小于 1 ,下一节的方法也会管用。

上一章:第4章:动态规划

第5章 Monte Carlo蒙特卡洛方法相关推荐

  1. 通俗易懂的Monte Carlo积分方法(二)

    通俗易懂的Monte Carlo积分方法(二) Monte Carlo积分的计算(期望法) Monte Carlo算法的期望法计算的数学基础: 辛钦大数定律: 如果Xi是独立的随机变量,且EXi是相应 ...

  2. 蒙特卡罗(Monte Carlo)方法计算圆周率π

    一.蒙特卡洛(Monte Carlo)方法简介 蒙特卡洛是一个地名,位于赌城摩纳哥,象征概率.蒙特卡洛(Monte Carlo)方法是由大名鼎鼎的数学家冯·诺伊曼提出的,诞生于上世纪40年代美国的&q ...

  3. Monte Carlo仿真方法的基本思想及其特点

    Monte Carlo仿真方法又称统计试验法,它是一种采用统计抽样理论近似地求解数学.物理及工程问题的方法.它解决问题的基本思想是,首先建立与描述该问题有相似性的概率模型,然后对模型进行随机模拟或统计 ...

  4. 通俗易懂的Monte Carlo积分方法(一)

    通俗易懂的Monte Carlo积分方法(一) Monte Carlo积分的投点法计算: Monte Carlo算法(投点法)的数学基础: 伯努利大数定律: 设fA为n重伯努利试验中事件A发生的次数, ...

  5. MATLAB蒙特卡洛(Monte Carlo)方法求椭圆面积

    MATLAB蒙特卡洛方法求椭圆面积 代码 代码 在某个规定的范围内随机打点,找到满足条件的点,并数一下这些点的数量与总的随机点数量的比,就OK了.关键是设置条件. 代码 clear;clc; n=10 ...

  6. Monte Carlo蒙特卡洛算法经验与UCB算法与UCT算法

    Monte Carlo方法举例:一个框里有100个苹果,找到其中最大的,闭上眼睛不断随机的从中拿出苹果,若新拿到的比持有的大则换一下,随着抽取苹果的次数变多拿到的苹果的大小会越来越接近最大值.此算法具 ...

  7. 通俗易懂的Monte Carlo积分方法(四)

    Monte Carlo 方法计算的理论基础 1.理论目标 2.收敛性的描述 3.误差的描述与控制 4.减少误差的技巧 5.代码的实现 1.理论目标 ​ 利用辛钦大数定律和中心极限定理对MentoCar ...

  8. R语言与Markov Chain Monte Carlo(MCMC)方法学习笔记(2)

    前面已经大致的叙述了MCMC方法.今天来分享一下R中的一个实现MCMC算法的包mcmc. mcmc包的一个核心函数就是metrop,其调用格式为: metrop(obj, initial, nbatc ...

  9. 强化学习系列(五):蒙特卡罗方法(Monte Carlo)

    一.前言 在强化学习系列(四):动态规划中,我们介绍了采用DP (动态规划)方法求解environment model 已知的MDP(马尔科夫决策过程),那么当environment model信息不 ...

  10. martingale、markov chain、Monte Carlo、MCMC

    文章结构如下: 1: MCMC 1.1 MCMC是什么 1.2 为什么需要MCMC 2: 蒙特卡罗 2.1 引入 2.2 均匀分布,Box-Muller 变换 2.3 拒绝接受采样(Acceptanc ...

最新文章

  1. poi excel mysql_java的poi技术读取Excel数据到MySQL
  2. Git 使用篇一:初步使用GitHub,下载安装git,并上传项目
  3. 腾讯技术直播间 | 走进小程序云开发
  4. 抽象工厂模式升级版————泛型化实现
  5. 盘点提高程序员技术的5个免费编程网站,你知道几个?
  6. Java中的内存处理机制和final、static、final static总结
  7. 五大常用算法之回溯法
  8. android存储登录用户名密码,AndroidStudio实现账号密码保存功能
  9. linux读取外接硬盘。bash: cd: too many arguments
  10. 女生宿舍,男生请勿进
  11. taro开发微信小程序-播放轨迹(十一)
  12. uniapp中app分享小程序方法
  13. python打包和添加数据文件_python库打包分发setup.py编写指南
  14. CSS预处理器之Sass与Less
  15. 四川乐而得教育:拼多多店铺推广要注意哪些优化
  16. 掉队的魅族还能和小米平起平坐吗?| 畅言
  17. 条纹噪声图片_一种红外图像条纹噪声滤波方法与流程
  18. 一些非主流搜索引擎的优化
  19. RedHat yum源配置
  20. 一个人如何运营独立站

热门文章

  1. [渝粤教育] 四川大学 营养与食品卫生学Ⅱ 参考 资料
  2. 使用jqdata和hikyuu平台进行C /python混合策略编写的方法
  3. JNA实战系列:JNA与C语言中的数据类型映射以及复杂结构体传参示例
  4. 【综述】矩阵补全问题
  5. 基于Lasso回归筛选变量构建Cox模型并绘制Nomogram
  6. Py||Is prime
  7. Unity3D-敌人巡逻和拉脱
  8. 计算机专业java论文题目_计算机专业毕业设计题目选题
  9. scrapy settings和管道的深入
  10. 哥尼斯堡的“七桥问题”