《白话强化学习与python》笔记——第四章蒙特卡洛法


蒙特卡罗法,也叫作统计模拟方法,是20世纪40年代中期由于科学技术的发展和电子计算机的发明而被提出的一种以概率统计理论为指导的非常重要的数值计算方法。蒙特卡罗法是指使用随机数(或者更常见的伪随机数)来解决很多计算问题的方法,与它对应的是确定性算法。蒙特卡罗法在金融工程学、宏观经济学、计算物理学(例如粒子输运计算、量子热力学计算、空气动力学计算)等领域有广泛的应用。

一、状态估值

蒙特卡罗法是一个用于解决估值问题的统计学方法
在第3章中,我们讨论了如何使用动态规划法来做状态估值和策略优化。这种方法的缺点在于,它是 Model-Based的,对条件的要求比较苛刻。那么,对于不能提供Model 的环境,该怎么办呢?蒙特卡罗法就派上用场了。例如,有一个机器人,它只知道在一个游戏环境中自己的样本空间和状态空间的取值范围,而不知道它们的客观分布,那么,它第一步应该做什么呢?最简单的思路是跟随动态规划的步伐,把这个 Mode!“试探”出来吗?这个思路在理论上是可行的。

二、两种估值方法:

1.首次访问蒙特卡罗策略估值

对任意状态s来说,如果在一个完整的Episode中第一次碰到它,就对计数器N(s)进行加1的操作。当然,在一开始,所有状态的N(s)的值肯定都是0。随着访问次数的增加,每个状态的N(s)的值将交替增加。在对N(s)做加1操作的同时,需要对另一个用于记录总体奖励值的函数S(s)进行加G,的操作。然后,可以得到估值
在这里插入图片描述

只要这么持续下去,根据大数定律,最终V(s)肯定无限趋近于它的数学期望值
在这里插入图片描述

2. 每次访问蒙特卡罗策略估值

每次访问蒙特卡罗策略估值,和首次访问蒙特卡罗策略估值非常相似。每次访问蒙特卡罗策略估值的评估方法,就像它的名字一样:第一次的访间策略就是针对第一次碰到这个状态的情况进行估算,后面再碰到,就不进行估算了:对每一次的访问策略,采用“一视同仁”的方式,即,第1次碰到状态s要做评估,第2次碰到状态s也要做评估,即便是第100次碰到状态s,该怎么评估,就怎么评估。
在这里插入图片描述

注意这个序列中的下标1、2、………它们表示的不是序数,而是不同的状态、不同的动作。因此在这个序列中第二次出现的s,表示机器人转了一圈,回到了前面出现过的一个状态。这个时候,同样按照
在这里插入图片描述

的方式,分别对两次的s,做估值计算即可。然后,依然按照在这里插入图片描述
继续进行估值

3.增量平均

首次访问蒙特卡罗策略估值和每次访问蒙特卡罗策略估值,都可以通过在程序里设置计数器的方式解决求和及求平均值的问题。而在程序中,为了使得计算方便、表达简洁,通常会把这个更新公式写成它的增量平均(IncrementalMean)形式
可以用这样一个公式进行更新:
在这里插入图片描述

这个公式看上去要比本章前面介绍的公式简单得多,其中没有次数计数器(s),也没有累加的S(s)=S()+Gt。

三、弊端

蒙特卡罗法的过程,是一个通过不断采样让样本丰富起来,进而比较准确地估算出由策略驱使的某个状态的估值u-(s)的过程。一旦准确地计算出这个值估,就几乎可以沿用动态规划的方法进行策略优化了。简单地说,通过多次实验进行统计,计算状态估值,一旦状态估值(s)能够估算准确,就能评价一个动作的估值q(s,a)。只要这一点能够达成,那么,一个好的策略就会变成“在某状态下,查看q(s,a)中的哪个a在当前给定的状态s下估值最高”的问题了,原因在于,只要q(s,a)是准确的,就表示其中包含远期收益(而不是瞬时收益),q(s,a)是一个可以信任的估值,而这个过程,就是由蒙特卡罗法“试”出来的。
蒙特卡罗法的优势在于,它不是以模型为基础的,而是通过多次试探求平均值的方法让估值逐步变得准确的。于是,问题产生了。在统计中,尽管随着实验次数的增加,平均值会逐渐稳定在一个值附近。

四、总结

本章介绍的是蒙特卡罗法的估值方法与优化方法。蒙特卡罗法有很多可取之处,毕竟比起动态规划法,它不要求一个完整的Model(或者环境满足MDP),也就是说,它对环境的适应性更强。每一次Episode结束,蒙特卡罗法都会对每个状态的值进行估算。随着试探次数的增加,这个估值将越来越客观、准确。

  • 24
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值