强化学习(四) - 蒙特卡洛方法(Monte Carlo Methods)及实例
4. 蒙特卡洛方法
蒙特卡罗方法是我们第一个用于估计价值函数和发现最优策略的学习方法。与之前动态规划DP不同的是,这里我们不假设对环境的完全了解。蒙特卡洛方法只需要状态、动作和与环境实际或模拟交互的奖励的经验样本序列。从实际经验中学习是引人注目的,因为它不需要事先了解环境的动态,但仍然可以达到最佳行为。从模拟经验中学习也很强大。虽然需要一个模型,但模型只需要生成样本转换,而不是动态规划(DP)所需要的所有可能转换的完整概率分布。在许多情况下,根据所需的概率分布采样生成经验很容易,但以显式形式获得分布却不可行。
蒙特卡洛方法是基于平均样本收益来解决强化学习问题的方法。为了保证有明确的回报,这里我们只对偶发任务定义蒙特卡洛方法。也就是说,我们假设经验被划分为若干个事件,并且无论选择什么动作,所有事件最终都会终止。只有在一个事件完成时,价值估计和策略才会改变。因此,蒙特卡洛方法可以在逐个完整事件的意义上是增量的,但不能在每个单步(online方法)的意义上是增量的。术语蒙特卡洛通常更广泛地用于任何操作涉及重要随机成分的估计方法。在这里,我们将其专门用于基于完整收益率平均的方法(相对于从部分收益率学习的方法,将在之后考虑)。
蒙特卡洛方法对每个状态 - 动作对的回报进行采样和平均,就像bandit方法(老虎机方法)对每个动作的回报进行采样和平均一样。主要的区别是,现在有多个状态,每个状态的作用就像一个不同的老虎机问题(如关联搜索或上下文老虎机问题),而且不同的老虎机问题是相互关联的。也就是说,在一个状态下采取动作后的回报取决于同一事件中以后状态下的动作。由于所有的动作选择都是经过学习的,从早期状态的角度来看,问题变得非平稳。
关于老虎机问题(Bandit Problem)的介绍可以看此处。
为了解决这一非平稳性问题,我们采用了通用策略迭代(GPI) 的思想。在这里,我们通过了解MDP来计算价值函数,而在这里,我们通过使用MDP返回的样本来学习价值函数。价值函数和相应的策略仍然以本质上相同的方式相互作用以获得最优性(GPI)。在上个部分动态规划DP中,我们首先考虑了预测问题(一个固定的任意策略 π \pi π的 v π v_\pi vπ和 q π q_\pi qπ的计算),然后是策略改进,最后是控制问题及其通过GPI的求解。从DP中提取的每一个想法都被扩展到蒙特卡洛案例中,其中只有样本经验是可用的。
4.1 蒙特卡洛预测
我们首先考虑蒙特卡罗方法来学习给定策略的状态价值函数。回想一下,一个状态的价值就是从该状态开始的预期收益,即预期累积未来折现回报。那么,根据经验来估计它的一种明显的方法就是简单地平均访问该状态后观察到的回报。当观察到更多的收益时,平均值应该收敛于期望值。这个思想是所有蒙特卡罗方法的基础。
特别地,假设我们希望估计 v π ( s ) v_\pi(s) vπ(s),即策略 π \pi π下状态 s s s的值,给定由下面得到的一组集。通过 s s s,状态 s s s在一个事件中的每一次发生都被称为对 s s s的访问,当然, s s s可能在同一个事件中被访问多次;我们把第一次访问一个事件称为 s s s的首次访问(first visit)。首次访问MC方法估计 v π ( s ) v_\pi(s) vπ(s)的平均回报后第一个访问, 而每次访问(every visit) MC方法平均每次访问 s s s后的收益。这两个蒙特卡罗(MC)方法非常相似但略有不同的理论属性。首次访问MC的研究最为广泛,可追溯到20世纪40年代,这是我们在这里重点关注的一个。每次访问MC方法都更自然地扩展到函数近似和合格性跟踪。首次访问MC方法以程序形式显示在方框内。每次访问MC方法都是一样的,除了 S t S_t St的检查已经发生在一个事件的早些时候。
Frist-visit MC prediction, for estimating V ≈ v π V \approx v_\pi V≈vπ

当访问 s s s的次数(或首次访问)趋于无穷时,首次访问MC方法和每次访问MC方法都收敛于 v π ( s ) v _\pi(s) vπ(s)。这对于首次访问MC方法来说是很容易看到的,在这种情况下,每个收益是一个独立的,同分布的估计 v π ( s ) v _\pi(s) vπ(s)与有限的方差。根据大数定律,这些估计的平均值序列收敛于它们的期望值。每个平均值本身是一个无偏估计,其误差的标准差下降为 1 / n 1/\sqrt{n} 1/n,其中n是平均收益的数量。每次访问MC方法都不那么直接,但它的估计也会收敛到 v π ( s ) v_\pi(s) vπ(s)的平方 (Singh和Sutton, 1996)。
通过一个例子很好地说明了蒙特卡罗方法的使用。
例4.1:Blackjack(21点)
赌场上流行的21点纸牌游戏的目的是获得其数值之和尽可能大而不超过21的牌。所有的人头牌(扑克中的J,Q,K)都算作10,而A可以算作1或11。我们考虑每个玩家独立与庄家竞争的版本。游戏开始时,庄家和玩家都有两张牌。庄家的一张牌面朝上,另一张牌面朝下。如果玩家立即有21张牌(一张A和一张10牌),这被称为自然牌。他就赢了,除非庄家也有一张自然牌,在这种情况下,游戏是平局。如果玩家没有自然牌,那么他可以要求额外的牌,一个接一个要牌(hits),直到他停止(sticks)或超过21(破产(gose bust))。如果他gose bust,他就输了;如果他要牌,然后就轮到庄家的回合。庄家根据一个固定的策略确定要不要牌:如果牌面不大于17则继续要牌,否则停止。如果庄家破产,那么玩家赢了,否则,结果赢,输,或平局是由其最终的总和更接近21决定。
玩21点自然而然地被表述为一个偶发的有限MDP。每一局21点游戏都是一个事件。赢、输和平局的奖励分别为+1、1和0。一个游戏内的所有奖励都是零,没有折扣率( γ = 1 \gamma =1 γ=1),因此这些终端奖励也是回报。玩家的动作是要牌或者停止。这些状态取决于玩家的牌和庄家的牌。我们假设牌是从一副无限的牌中发出的(即,有替换),因此,跟踪已经发出的牌没有好处。如果玩家持有一张A,他可以在不破产的情况下算作11,那么这张A被认为是可用的。在这种情况下,它总是被算作11,因为将它算作1会使总和为11或更少,在这种情况下,没有任何决定可做,因为,显然,玩家应该总是打。因此,玩家根据三个变量做出决定:他的当前和值(12 21),庄家的一张牌(A 10),以及他是否持有可用的A。这使得总共有200种状态。
如果玩家的和值是20或21,则考虑该策略,否则继续要牌。为了通过蒙特卡洛方法找到这个策略的状态值函数,我们使用该策略模拟许多21点游戏,并对每个状态后的收益进行平均。通过这种方式,我们得到了图4.1所示的状态值函数的估计值。对于牌A的状态的估计值不太确定,也不太规则,因为这些状态不太常见。无论如何,在500,000次游戏之后,价值函数是非常好的近似值。

虽然我们对21点任务中的环境有完整的了解,但要应用DP方法来计算值函数并不容易。DP方法特别需要下一个事件的分布,它们需要由四参数函数 p p p给出的环境动态,而对于21点来说,确定这个并不容易。例如,假设玩家s的和是14,他选择要牌。作为庄家出示牌的函数,他以奖励+1结束的概率是多少?在应用DP之前,所有的概率都必须计算出来,而且这种计算通常很复杂,容易出错。相比之下,产生蒙特卡洛方法所需的样本游戏是很容易的。蒙特卡洛方法能够单独处理样本事件,即使在人们完全了解环境动态的情况下,这也是一个显著的优势。
我们能把备份图的思想推广到蒙特卡洛算法吗?备份图的一般思想是在顶部显示要更新的根节点,在下面显示所有的转换和叶节点,它们的回报和估计值对更新有贡献。对于 v π v_\pi vπ的蒙特卡罗估计,起始是一个状态节点,起始节点的下面是沿某一特定单事件的整个过渡轨迹,结束于终端状态,DP图显示了所有可能的转换,而蒙特卡洛图只显示了在一个场景中采样的那些转换。DP图只包含一步转换,而蒙特卡洛图展示了整个事件。这些差异准确地反映了两种算法之间的基本差异。

关于蒙特卡洛方法的一个重要事实是,每个状态的估计是独立的。对一个状态的估计并不像在DP中那样建立在任何其他状态的估计之上。换句话说,蒙特卡洛方法并不像我们在之前所定义的那样进行推导。
特别要注意的是,估计一个状态值的计算与状态的数量无关。当人们只需要一个或一个子集的状态值时,这可以使蒙特卡洛方法特别有吸引力。人们可以从感兴趣的状态开始生成许多样本事件,只对这些状态的收益进行平均,而忽略所有其他状态。
这是蒙特卡洛方法相对于DP方法的第三个优势(继从实际经验和模拟经验中学习的能力之后)。
4.2 动作价值的蒙特卡洛估计
如果没有模型,那么估计动作值(状态-动作对 的值)而不是状态值就特别有用。有了模型,状态值本身就足以决定一个策略;我们只需向前看一步,然后选择哪一个动作导致了奖励和下一个状态的最佳组合,就像我们在之前DP中所做的那样。然而,如果没有一个模型,仅有状态值是不够的。我们必须明确地估计每个动作的价值,以使这些价值在建议策略时有用。因此,我们蒙特卡洛方法的主要目标之一是估计 q ∗ q_* q∗。
为了实现这一目标,我们首先考虑动作值的策略评价问题。动作值的策略评价问题是估计 q π ( s , a ) q_\pi(s,a) qπ(s,a),即从状态 s s s开始,采取动作 a a a,此后遵循策略 π \pi π时的预期收益。这方面的蒙特卡洛方法与刚才介绍的状态值基本相同,只是现在我们讨论的是对一个状态-动作对 的访问,而不是对一个状态的访问。一个状态-动作对 ( s , a ) (s, a) (s,a)被认为是在一个事件中被访问的,如果状态s被访问并且动作a被采取。每次访问MC方法估计一个状态-动作对 的价值是每次访问后的回报的平均值。首次访问MC方法是将每个事件中第一次访问该状态并选择动作后的返回值的平均值。这些方法和之前一样,随着每个状态-动作对的访问次数接近无穷大,会二次收敛到真实的期望值。
唯一的复杂之处在于,许多状态-动作对可能从未被访问过。如果 π \pi π是一个确定性策略,那么在跟随 π \pi π的过程中,人们将只观察到每个状态下的一个动作的回报。在没有回报率的情况下,其他动作的蒙特卡洛估计将不会随着经验的积累而改善。这是一个严重的问题,因为学习动作值的目的是帮助在每个状态下的可用动作中进行选择。为了比较备选方案,我们需要估计每个状态下所有动作的价值,而不仅仅是我们当前喜欢的动作。
这就是持续探索(maintaining exploration) 的一般问题,在之前的老虎机问题中讨论过。为了使策略评价对动作值起作用,我们必须保证持续的探索。一种方法是规定事件从一个状态 -动作对 开始,并且每一个状态-动作对 都有一个非零的概率被选为开始。这就保证了所有的状态-动作对在无限多的剧情中会被无限次的访问。我们称这种假设为探索开始(exploring starts)。
探索开始的假设有时是有用的,但当然在一般情况下不能依赖它,特别是当直接从与环境的实际交互中学习时。在这种情况下,起始条件不太可能有这么大的帮助。最常见的另一种方法是只考虑在每个状态下选择所有动作的非零概率的随机策略,以保证所有的状态-动作对 都能遇到。我们在后面讨论这种方法的两个重要变体。现在,我们保留探索开始的假设,并完成一个完整的蒙特卡洛控制方法的介绍。
4.3 Monte Carlo 控制
我们现在准备考虑如何在控制中使用蒙特卡罗估计,即近似最优策略。总体思路是按照与动态规划DP相同的模式进行,即按照广义策略迭代(GPI)的思路进行。在GPI中,一个保持一个近似策略和一个近似值函数。反复修改价值函数,使其更接近当前策略的价值函数,并根据当前的价值函数反复改进策略,如图所示。这两种变化在一定程度上是相互作用的,它们各自为对方创造了一个移动的目标,但它们共同导致策略和价值函数都趋向最优。

首先,让我们考虑经典策略迭代的蒙特卡洛版本。在此方法中,我们执行交替的完整步骤的策略评估和策略改进,开始于一个任意的策略 π 0 \pi_0 π0,结束于最优策略和最优动作-价值函数

其中 E → \underrightarrow{E} E表示完全的策略评估, I → \underrightarrow{I} I表示完全的策略改进。策略评估完全按照上一节的描述进行。经历了许多事件,近似的动作-值函数渐近地接近真实的函数。现在,让我们假设我们确实观察到了无限多的事件,而且,这些事件是伴随着探索的开始而产生的。在这些假设下,蒙特卡罗方法将精确地计算每一个 q π k q_{\pi_k} qπk,对于任意的 π k \pi_k πk。
策略改进是通过使策略对当前值函数变得贪婪(贪心)来实现的。在这种情况下,我们有一个动作-价值函数,因此不需要模型来构建贪心策略。对于任意一个动作值函数 q q q,其对应的贪心策略就是对于每一个 s ∈ S s \in \mathcal{S} s∈S,确定地选择一个动作价值最大的动作:
π ≐ arg max a q ( s , a ) (4.1) \pi_\doteq \argmax_{a} q(s,a) \tag{4.1} π≐aargmaxq(s,a)(4.1)
那么策略改进可以通过将每个 π k + 1 \pi_{k+1} πk+1构造为相对于 q π k q_{\pi_k} qπk的贪婪策略来完成。策略改进定理就适用于 π k \pi_k πk和 π k + 1 \pi_{k+1} πk+1,因为,对于所有 s ∈ S s\in \mathcal{S} s∈S,

正如我们在前面所讨论的,这个定理保证我们每个 π k + 1 \pi_{k + 1} πk+1均匀比 π k \pi_{k} πk,或者只是与 π k \pi_{k} πk一样好,在这种情况下,他们都是最优策略。这反过来保证我们整个过程收敛于最优策略和最优值函数。在这种情况下,蒙特卡罗方法可以用来寻找最优策略,只给样本集,而没有其他的环境动力。
为了使蒙特卡罗方法的收敛性得到保证,我们在上面做了两个不太可能的假设。一个是事件有探索的开始,另一个是策略评估可以用无数的事件来完成。为了得到一个实用的算法,我们必须去除这两个假设。
现在我们关注的是策略评估对无限多的事件进行操作的假设。这个假设相对容易消除。事实上,同样的问题出现在经典的DP方法,如迭代策略评估,也只渐近收敛于真值函数。在DP和蒙特卡洛两种情况下,都有两种方法来解决问题。一是坚持在每次策略评估中近似 q π k q_{\pi_k} qπk的想法。通过测量和假设来获得估计误差的大小和概率的界限,然后在每次策略评估中采取足够的步骤来确保这些界限足够小。在保证正确收敛到某种近似水平的意义上,这种方法可能是完全令人满意的。然而,除了最小的问题之外,它也可能需要太多的事件来在实践中发挥作用。
为了避免名义上需要进行策略评估的无数章节,还有第二种方法,即在返回到策略改进之前,放弃试图完成策略评估。在每一步计算中,我们都将值函数移向 q π k q_{\pi_k} qπk,但我们并不期望实际上能接近它,除非经过许多步。该思想的一种极端形式是价值迭代,即在策略改进的每一步之间只执行迭代策略评估的一次迭代。价值迭代的in-place版本甚至更极端;对于单个状态,我们在改进和评估步骤之间交替进行。
对于蒙特卡洛策略评估,很自然地在评估和改进之间交替进行。在每个事件之后,观察到的返回值将用于策略评估,然后在事件中访问的所有状态对策略进行改进。沿着这些路线的一个完整的简单算法,我们称之为蒙特卡洛ES(Monte Carlo with Exploring Starts,带有起始探索的蒙特卡洛方法)
Monte Carlo ES (Exploring Starts), for estimating π ≈ π ∗ \pi \approx \pi_* π≈π∗

例4.2: 21点的解法
将蒙特卡洛ES应用于21点是很直接的。因为所有的事件都是模拟游戏,所以很容易安排包括所有可能性的探索性开始,在这种情况下,我们只需选择庄家的牌,玩家的和,以及玩家是否有牌。在这种情况下,我们只需选择庄家的牌,玩家的和,以及玩家是否有可用的A,所有这些都是随机的,概率相等。作为初始策略,我们使用在前面21点例子中评估的策略,即只在20或21上坚持。对于所有的状态动作对,初始动作值函数可以为零。图4.3显示了由蒙特卡洛ES找到的21点的最优策略。该策略与Thorp(1966)的基本策略相同,唯一的例外是策略中最左边的缺口为可用A,这在Thorp的策略中是不存在的。我们不确定这种差异的原因,但相信这里显示的确实是我们所描述的21点版本的最佳策略。

4.4 蒙特卡洛控制的无探索启动
我们如何避免探索开始的不可能假设?确保所有动作被无限频繁地选择的唯一一般方法是让智能体继续选择它们。有两种方法可以确保这一点,由此产生了我们所说的 on-policy(有些文章翻译成"同策") 方法和 off-policy(“异策”) 方法,在之后还是使用其原来的英语名称,即"on-policy"与"off-policy"。on-policy方法试图评估或改进用于决策的策略,而off-policy方法评估或改进与用于生成数据策略的不同。上面开发的蒙特卡洛ES方法就是一个on-policy方法的例子。在本节中,我们将展示如何设计一种不使用不切实际的探索启动假设的策略性蒙特卡罗控制方法。之后将考虑Off-policy方法。
在on-policy控制方法中,策略一般是柔性(soft) 的,即对所有 s ∈ S , a ∈ A ( s ) s \in \mathcal{S}, a \in \mathcal{A}(s) s∈S,a∈A(s)来说,意味着 π ( a ∣ s ) > 0 \pi(a|s)>0 π(a∣s)>0,但逐渐向确定性最优策略靠拢。在本节中介绍的on-policy方法使用了 ε \varepsilon ε-贪婪的策略,这意味着大多数时候他们会选择一个具有最大估计动作值的动作,但在概率 ε \varepsilon ε上他们反而会随机选择一个动作。也就是说,所有的非贪婪动作都被赋予了最小的选择概率, ∣ A ( s ) ∣ ε \frac{|A(s)|}{\varepsilon} ε∣A(s)∣ ,而剩下的大部分概率, 1 − ε + ∣ ε A ( s ) ∣ 1-{\varepsilon}+|\frac{ {\varepsilon}}{A(s)}| 1−ε+∣A(s)ε∣,被赋予了贪婪动作。 ε \varepsilon ε-贪婪策略是 ε \varepsilon ε-柔性策略的一个例子,它被定义为,对于 ε > 0 \varepsilon >0 ε>0,对所有的状态和动作,有 π ( a ∣ s ) ≥ ε ∣ A ( s ) ∣ \pi(a|s) \geq \frac{\varepsilon}{|A(s)|} π(a∣s)≥∣A(s)∣ε的策略。 ε \varepsilon ε-柔性策略中, ε \varepsilon ε-贪婪策略在某种意义上是最接近于贪婪的策略。
ε \varepsilon ε-贪婪策略,
π ( a ∣ s ) = { 1 − ε + ε ∣ A ( s ) ∣ , a = a ∗ ε ∣ A ( s ) ∣ , a ≠ a ∗ \pi(a|s)=\begin{cases}1-\varepsilon + \frac{\varepsilon}{|\mathcal{A}(s)|}, & a= a^*\\ \frac{\varepsilon}{|\mathcal{A}(s)|}, & \ a\not=a^*\end{cases} π(a∣s)={
1−ε+∣A(s)∣ε,∣A(s)∣ε,a=a∗ a=a∗
这个 ε \varepsilon ε贪婪测类比其中的概率平均分配在各个动作上,将剩下 ( 1 − ε ) (1-\varepsilon) (1−ε)的概率分配给动作 a ∗ a^* a∗.基于柔性策略的回合更新的要点就是在策略提升环节用 ε \varepsilon ε贪婪策略的表达式来更新策略.
策略上蒙特卡洛控制的总体思想仍然是GPI的思想。与蒙特卡洛ES一样,我们使用首次访问MC方法来估计当前策略的动作值函数。然而,在没有探索开始的假设下,我们不能简单地通过使策略对当前价值函数变得贪婪来改进策略,因为这将阻止对非贪婪动作的进一步探索。幸运的是,GPI并不要求将策略一直采取贪婪的策略,只要求将其向贪婪的策略发展。在我们的on-policy方法中,我们将只把它移动到一个 ε \varepsilon ε-贪婪策略。对于任何 ε \varepsilon ε-柔性策略, 任何关于 q π q_\pi qπ的 ε \varepsilon ε-贪婪策略都保证优于或等于 π \pi π。
On-policy first-visit MC control (for "-soft policies), estimates π ≈ π ∗ \pi \approx \pi_* π≈π

本文详细介绍了强化学习中的蒙特卡洛方法,包括预测、动作价值估计、控制策略,以及通过重要性采样进行Off-policy预测。通过21点游戏的案例,展示了蒙特卡洛方法的应用和实现。
最低0.47元/天 解锁文章
2081

被折叠的 条评论
为什么被折叠?



