蒙特卡罗法 (Monte Carlo Methods)

Posted mayezhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蒙特卡罗法 (Monte Carlo Methods)相关的知识,希望对你有一定的参考价值。

在很多应用场景中,马尔可夫决策过程的状态转移概率 (p(s^ {prime}|s,a)) 和奖励函数 (rleft( {s,a,s^{prime}} ight)) 都是未知的。这种情况一般需要智能体与环境交互,然后收集一些样本,然后再根据这些样本来求解最优策略,这种基于采样的学习方法称为模型无关的强化学习 ([1]).

1 蒙特卡罗预测 (Monte Carlo Prediction)

1.1 蒙特卡罗状态值函数估计

蒙特卡罗法通过对若干个完整的状态序列(episode)采样以获取大量的经验数据,从而来估计真实的状态值函数 ({v_pi }left( s ight)).

在马尔可夫决策过程中对状态值函数 ({v_pi }left( s ight)) 的定义为:

[egin{aligned} v_{pi}(s) &= mathbb{E}_{pi}(G_t|S_t=s ) &= mathbb{E}_{pi}(r_{t+1} + gamma r_{t+2} + gamma^2r_{t+3}+...|S_t=s) end{aligned} ag{1-1} ]

即它等于所有该状态收获的期望,而蒙特卡罗做的事是在计算值函数时,用经验平均代替随机变量的期望。比如我们在一次 episode 中,状态 (s) 出现后得到的收获为:

[G_t =r_{t+1} + gamma r_{t+2} + gamma^2r_{t+3}+... gamma^{T-t-1}r_{T} ag{1-2} ]

有了一次 episode 就可以有多次,所以状态值函数 ({v_pi }left( s ight)) 为:

[v_{pi}(s) approx average(G_t), s.t. S_t=s ag{1-3} ]

现在有个问题是:状态 (s) 可能在一个 episode 中出现不止一次,从下图中就可以看出来。图中每一行都是当前策略下的一个独立的 episode.

技术图片

这种情况有两种处理的方式,分别为:

  • First-visit MC method:只把第一次出现该状态 (s) 后产生的 return (G_t) 记录下来,用于估计 ({v_pi }left( s ight))
  • Every-visit MC method:把所有出现该状态 (s) 后的 return 都记录下来,用来进行估计 ({v_pi }left( s ight))

第二种方法比第一种的计算量要大一些,但是在完整的经历样本序列少的场景下会比第一种方法适用

图中是用第一种方法计算的 return,所以 (R_1(s)=1-2+0+1-3+5=2). 最后得到的 ({v_pi }left( s ight)) 为:

[{v_pi }left( s ight) = frac{1}{N}sumlimits_{i = 1}^N {{R_i}left( s ight)} = frac{1}{4}left( {2 + 1 - 5 + 4} ight) = 0.5 ag{1-4} ]

很明显生成的 episode 越多,对状态值函数 ({v_pi }left( s ight)) 的估计就越准确,具体的算法流程为([2])

技术图片
First-visit MC prediction

1.2 蒙特卡罗动作值函数估计

我们在使用动态规划方法进行策略改进时,是假设环境状态转移概率 (p(s^ {prime}|s,a)) 是已知的,这样我们才能评判下一步采取什么 action 会更好。但是现在我们并不知道 (p(s^ {prime}|s,a)),也就没办法按以前的方法进行策略改进。

[egin{split}pi^{prime}(s)&=argmax_{mathbf{a}}q_{pi}(s,a)&=argmax_{mathbf{a}}sum_{s^{prime}}p(s^{prime}mid s,a)left[r(s,a,s^{prime})+gammaupsilon_{pi}(s^{prime}) ight]end{split} ag{1-5} ]

所以我们不如用相同的办法直接对动作值函数 ({Q^pi }left( {s,a} ight)) 进行估计:

[{Q^pi }left( {s,a} ight) = frac{1}{N}sumlimits_{n = 1}^N {Gleft( { au _{{s_t} = s,{a_t} = a}^{left( n ight)}} ight)} ag{1-6} ]

( au^{(n)}) 也就是第 (n) 个轨迹,也就是第 (n) 个 episode.

2 Monte Carlo Control

蒙特卡罗控制(Monte Carlo Control) 首要的问题就是如何估计最优策略,我们需要产生无数的 episode 才能保证收敛到最优结果。无数的 episode 和大量的迭代导致计算量巨大,效率非常低。主要有两种办法解决这个问题:

  1. 虽说理论上必须有无限个 episode 来估计 ({Q^pi }left( {s,a} ight)),实际上我们是做不到的,我们只能尽力多产生点 episode,尽可能去接近这个收敛值。我们可以设定一个误差,两次估计的值小于这个误差,差不多就行了。
  2. 在策略提升前放弃完全的策略评估,采用 episode by episode 的方式进行优化。即先用当前策略生成一个 episode,然后根据这个 episode 进行动作值函数的更新,同时更新策略,并利用更新后的策略继续生成后续的 episode。

2.1 Monte Carlo with Exploring Starts

然而我们需要考虑一个严重的问题:在所有样本片段集合中,很多 state-action 对并不出现,比如当我在一个确定的 policy下,有可能某个 state 下只出现有限的几个对应的 actions,其他的 actions 都基本不出现。这样我们根本没有 returns 去 average,怎么能估计到某些 ({Q^pi }left( {s,a} ight)) 呢?

比如在下五子棋,机器如果使用greedy的方法的话,从直观上来看下的每一步棋都对当前很有利。但是一些高手,看似下了一步很不相关的棋,但是从长远来看可能是一个战略上的布局,这个不相关的棋从长远来看收益可能更大,只不过我们永远不会去走那一步棋。

为了保证策略迭代对于所有行为值有效,我们必须保证持续的探索。一种解决的方法是在状态序列开始时,每个状态行为对被选到的概率都不为 0,这种方法称为探索初值假定(exploring starts)

下面给出 Monte Carlo with Exploring Starts 算法流程:

技术图片
Monte Carlo with Exploring Starts

2.3 On-Policy 蒙特卡罗控制

Exploring start 这个方案在模拟产生 episodes 也许可行,但是在从真实经验中学习时就不可行了,因为我们无法控制 start point。

On-policy Monte Carlo Control 为了避免初始状态假定而引入了随机策略。也就是在决策的时候以一定的概率选择那些不是最大回报的行为值。这样提供了探索的可能性,保证了所有状态能被访问到。On-policy Monto Carlo 控制方法的大体思想还是 GPI,但是没有探索初值假定的条件。

技术图片
On-policy first-visit MC control

记录一下疑问:这每一轮实验使用的是一个新的策略(pi)产生的,而这轮实验在某个状态((s,a))所带来的回报(G)又加入到(Return(s,a))去求了平均,那最后这个(Q(s,a))岂不是由多个策略共同生成的结果? 还是说这个(Return(s,a))在每轮进行完会清空呢?

2.4 Off-Policy 蒙特卡罗控制

一个更直截了当的方法是 off-policy:使用两个策略,一个策略用来学习最优策略,另一个则更具探索性地用来产生行为。 用来学习的策略我们称之为 目标策略 ,另一个用来生成行为的称作行为策略。

技术图片
Off-policy Monte Carlo Control

3 小结

蒙特卡罗法提供了一个替代的策略评估过程。蒙特卡罗法简单地对于从状态开始的 return 取均值,而不是用模型去算每个状态的值。蒙特卡罗法区别于 DP 方法主要在两方面:

  • 蒙特卡罗法基于采样经验,所以没有模型也可以学习
  • 蒙特卡罗法不是 bootstrap 的,因为蒙特卡罗法不基于其他状态的值估计来更新值估计

4 参考资料

  1. 神经网络与深度学习-邱锡鹏
  2. 强化学习博客-Dou Jiang
  3. 神经网络与强化学习-知乎专栏
  4. 机器学习笔记-知乎专栏
  5. 某喵的强化学习

以上是关于蒙特卡罗法 (Monte Carlo Methods)的主要内容,如果未能解决你的问题,请参考以下文章

(转)Monte Carlo method 蒙特卡洛方法

蒙特卡罗法 (Monte Carlo Methods)

蒙特·卡罗方法(Monte Carlo method)

强化学习专栏|蒙特卡洛法(Monte Carlo Methods)

蒙特卡罗(Monte Carlo) 模拟

ML-17-1MCMC--蒙特卡罗方法(Monte Carlo)