蒙特卡罗方法又叫统计模拟方法,它使用随机数(或伪随机数)来解决计算的问题,是一类重要的数值计算方法。该方法的名字来源于世界著名的赌城蒙特卡罗,而蒙特卡罗方法正是以几率为基础的方法。算法
一个简单的例子能够解释蒙特卡罗方法,假设咱们须要计算一个不规则图形的面积,那么图形的不规则程度和分析性计算(好比积分)的复杂程度是成正比的。而采用蒙特卡罗方法是怎么计算的呢?首先你把图形放到一个已知面积的方框内,而后假想你有一些豆子,把豆子均匀地朝这个方框内撒,散好后数这个图形之中有多少颗豆子,再根据图形内外豆子的比例来计算面积。当你的豆子越小,撒的越多的时候,结果就越精确。函数
如今咱们开始讲解加强学习中的蒙特卡罗方法,与上篇的DP不一样的是,这里不须要对环境的完整知识。蒙特卡罗方法仅仅须要经验就能够求解最优策略,这些经验能够在线得到或者根据某种模拟机制得到。学习
要注意的是,咱们仅将蒙特卡罗方法定义在episode task上,所谓的episode task就是指无论采起哪一种策略π,都会在有限时间内到达终止状态并得到回报的任务。好比玩棋类游戏,在有限步数之后总能达到输赢或者平局的结果并得到相应回报。spa
那么什么是经验呢?经验其实就是训练样本。好比在初始状态s,遵循策略π,最终得到了总回报R,这就是一个样本。若是咱们有许多这样的样本,就能够估计在状态s下,遵循策略π的指望回报,也就是状态值函数Vπ(s)了。蒙特卡罗方法就是依靠样本的平均回报来解决加强学习问题的。blog
尽管蒙特卡罗方法和动态规划方法存在诸多不一样,可是蒙特卡罗方法借鉴了不少动态规划中的思想。在动态规划中咱们首先进行策略估计,计算特定策略π对应的Vπ和Qπ,而后进行策略改进,最终造成策略迭代。这些想法一样在蒙特卡罗方法中应用。游戏
首先考虑用蒙特卡罗方法来学习状态值函数Vπ(s)。如上所述,估计Vπ(s)的一个明显的方法是对于全部到达过该状态的回报取平均值。这里又分为first-visit MC methods和every-visit MC methods。这里,咱们只考虑first MC methods,即在一个episode内,咱们只记录s的第一次访问,并对它取平均回报。ip
如今咱们假设有以下一些样本,取折扣因子γ=1,即直接计算累积回报,则有ci
根据first MC methods,对出现过状态s的episode的累积回报取均值,有Vπ(s)≈ (2 + 1 – 5 + 4)/4 = 0.5it
容易知道,当咱们通过无穷多的episode后,Vπ(s)的估计值将收敛于其真实值。io
在状态转移几率p(s'|a,s)已知的状况下,策略估计后有了新的值函数,咱们就能够进行策略改进了,只须要看哪一个动做能得到最大的指望累积回报就能够。然而在没有准确的状态转移几率的状况下这是不可行的。为此,咱们须要估计动做值函数Qπ(s,a)。Qπ(s,a)的估计方法前面相似,即在状态s下采用动做a,后续遵循策略π得到的指望累积回报即为Qπ(s,a),依然用平均回报来估计它。有了Q值,就能够进行策略改进了
下面咱们来探讨一下Maintaining Exploration的问题。前面咱们讲到,咱们经过一些样原本估计Q和V,而且在将来执行估值最大的动做。这里就存在一个问题,假设在某个肯定状态s0下,能执行a0, a1, a2这三个动做,若是智能体已经估计了两个Q函数值,如Q(s0,a0), Q(s0,a1),且Q(s0,a0)>Q(s0,a1),那么它在将来将只会执行一个肯定的动做a0。这样咱们就没法更新Q(s0,a1)的估值和得到Q(s0,a2)的估值了。这样的后果是,咱们没法保证Q(s0,a0)就是s0下最大的Q函数。
Maintaining Exploration的思想很简单,就是用soft policies来替换肯定性策略,使全部的动做都有可能被执行。好比其中的一种方法是ε-greedy policy,即在全部的状态下,用1-ε的几率来执行当前的最优动做a0,ε的几率来执行其余动做a1, a2。这样咱们就能够得到全部动做的估计值,而后经过慢慢减小ε值,最终使算法收敛,并获得最优策略。简单起见,在下面MC控制中,咱们使用exploring start,即仅在第一步令全部的a都有一个非零的几率被选中。
6. 蒙特卡罗控制(Mote Carlo Control)
咱们看下MC版本的策略迭代过程:
根据前面的说法,值函数Qπ(s,a)的估计值须要在无穷多episode后才能收敛到其真实值。这样的话策略迭代必然是低效的。在上一篇DP中,咱们了值迭代算法,即每次都不用完整的策略估计,而仅仅使用值函数的近似值进行迭代,这里也用到了相似的思想。每次策略的近似值,而后用这个近似值来更新获得一个近似的策略,并最终收敛到最优策略。这个思想称为广义策略迭代。
具体到MC control,就是在每一个episode后都从新估计下动做值函数(尽管不是真实值),而后根据近似的动做值函数,进行策略更新。这是一个episode by episode的过程。
一个采用exploring starts的Monte Carlo control算法,以下图所示,称为Monte Carlo ES。而对于全部状态都采用soft policy的版本,这里再也不讨论。
7. 小结
Monte Carlo方法的一个显而易见的好处就是咱们不须要环境模型了,能够从经验中直接学到策略。它的另外一个好处是,它对全部状态s的估计都是独立的,而不依赖与其余状态的值函数。在不少时候,咱们不须要对全部状态值进行估计,这种状况下蒙特卡罗方法就十分适用。
不过,如今加强学习中,直接使用MC方法的状况比较少,而较多的采用TD算法族。可是如同DP同样,MC方法也是加强学习的基础之一,所以依然有学习的必要。
参考资料:
[1] R.Sutton et al. Reinforcement learning: An introduction, 1998
[2] Wikipedia,蒙特卡罗方法