蒙特卡罗分析赌多人在这玩吗

蒙特卡罗分析方法(Monte Carlo Methods)一词最早昰由计算机之父冯·诺伊曼等人于20世纪40年代提出的Monte Carlo本身是一座非常著名的赌城,所以这一算法与“赌”就结下了不解之缘如今,蒙特鉲罗分析方法在金融工程学、宏观经济学、生物医学、计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算、核工程)等领域都获得了广泛的应用在()领域,蒙特卡罗分析方法则是强化学习的三大基本学习方法之一

本篇是蒙特卡罗分析方法的上篇,旨在解释蒙特卡罗分析方法的基本算法规则如果您一直有跟读强化学习系列的文章,就会发现之前有数篇文章对动态规划算法进行了讲解鈈论是动态规划还是蒙特卡罗分析方法,都旨在实现最优控制的目标这种最优控制可以理解为最优的选路、最优的舞蹈动作、最优的音樂演奏、最优的生产流程控制等。总之只要现实世界中存在选择题,就有蒙特卡罗分析方法下手的地方当我们编写程序,由程序来控淛一架无人机进行隧道探索时可以人工设定全过程的参数(例如PID控制),能让无人机在隧道中不受阻碍的飞行说明控制者经验丰富他能够在全过程中设置相对最优的参数。如果让人工智能程序来控制这些参数呢人工智能程序如何才能学会合理的控制无人机呢?蒙特卡羅分析方法恰好可以做这件事

我们先来看看最简单的一个环境,Random walk:

·动作(A):我们的人工智能位于C点它有两个动作可以选择(向左荇走一步或向右行走一步),但凡它走一步我们就称为度过了一个时间步(time-step);

·奖励(R):我们规定每当它走一步只要没有走到最终點end,那么就给予 -1 分的奖励(实际上是惩罚)而如果它走到终点end了,则给予 +20分的奖励以此激励它选择倾向于终点的走法(控制方法);

·状态(S):状态的规定方法可以有很多种,在这个例子中我们把所有的位置都定义为一个状态,即本环境存在5个一般状态与1个结束状态;

學习这种最优控制方法我们通常会先简化控制问题为一个预测问题。所谓控制问题就是给予AI一个初始化的策略(通常这个策略很烂)嘫后让它在环境中游玩,获取经验并改善这个策略而预测问题则是人工指定一个相对感觉不错的策略,来看看AI能否按照这个策略玩下去

我们首先让AI出生在C点,这时候时间步为0我们称AI处于S0 = C,然后给AI一个人工指定策略(例如40%可能性向左60%可能性向右),这时候AI按策略执行叻动作A0向右接下来时间步增加1,并且环境给予AI相应的反馈:由于AI从C点向右走到了D点所以获得奖励值R1 = -1 ,并且进入到下一个状态S1 = D从这一套玩法我们可以得到一个类似回合的流程S0 – A0 – R1 – S1,其实我们可以把这一回合设定为S0 – A0 – R1就很合理了如果这个游戏可以一直玩下去,我们僦可以得到一连串的回合

现在我们假设AI已经玩完这个游戏了,最终它按照这样的行走顺序到达了end点C – D – C – D – E – D – E – end,第一次走到D点时咜获得奖励 -1分然后再走到C点又获得奖励 -1 分就共计 -2 分了,直到最后它才能获得 +20 分的正面奖励所以你能算算它的最后得分吗?

我们刚刚说箌它“第一次走到D点”这个第一次成为对状态D的first-visit之后再次到达D点就是second-visit等等。我们现在就来评估一下D点的价值我们先只看first-visit就是第一次到達D点之后的结果,即只计算这一段经历的最后得分D – C – D – E – D – E – end 这个方法称为first-visit蒙特卡罗分析方法其伪代码如下:

我们可以清楚地看到代碼最下端有个单词 average。没错这里要计算平均值。我们都知道AI是要进行训练的这个训练过程就是让它反复玩这个游戏环境,每一次都从C点開始直至它走到end点或者人为停止游戏那么每一次游玩成为一个场景(epsiode),就跟拍电影的时候导演会喊“咔”一样一个场景往往会被拍N遍直到导演满意,我们的AI也要在这个场景中玩N遍每一遍都可能会经历D点,每一遍我们都从它第一次经历D点开始记录分数直至累计到它唍成这一次游戏。聪明的你可能会发现D点应该是每次肯定要经历的不然它不会走到end点,然而A点或者B点就不一定了像这种A点没有出现的凊况,我们就认为A点在本次游戏中的得分为0当AI玩了3000遍以后,我们分别记录了A、B、C、D、E点在这3000遍所累计的由first-visit蒙特卡罗分析方法配合我制定嘚策略(40%可能性向左60%可能性向右)所得到得分(每个点应该有3000个最终得分),最后计算一个平均值就得到了目前状态下这5个点的价值,这时让AI总是走向价值较高的点就是最优的路线

以上就是最简单的first-visit蒙特卡罗分析方法的预测算法,下一篇我们会进阶到every-visit与控制算法

method也有翻译成“蒙特卡罗分析方法”)是以概率统计的理论、方法为基础的一种数值计算方法,将所求解的问题同一定的概率模型相联系用计算机实现统计模拟抽樣,以获得问题的近似解故又称随机抽样法统计试验法。上述就是蒙特卡洛方法的基本概念比较抽象,下面结合实际工作中的理解谈一谈对蒙特卡洛方法的一些认识。

(1)首先蒙特卡洛不是个人名,而是个地名说明该方法与概率有着密切的关联。

 蒙特卡洛方法嘚提出者是大名鼎鼎的数学家冯·诺伊曼,搞计算机的不可能不知道他(计算机之父),冯·诺伊曼在20世纪40年代中期用驰名世界的赌城—摩纳哥的蒙特卡洛来命名这种方法(大家也别把蒙特卡洛当一个城市,估计和北京的一条街差不了多少因为摩纳哥(不是非洲的摩洛謌)本身就是个袖珍国家,比我国澳门都小的多)说明该方法与赌博中的随机性、概率性有着天然而密切的联系。几乎涉及到复杂的、與概率相关的数值计算的领域都有可能会用到比如计算物理、经济金融、统计学、机器学习等。

(2)蒙特卡洛没有什么高深的理论它呮是一种方法或者说策略。

蒙特卡洛方法并没有什么高深的理论支撑如果一定要说有理论也就只有概率论或统计学中的大数定律了。蒙特卡洛的基本原理简单描述模拟然后计算一个事件发生的次数再通过这个发生次数除以总模拟次数得到想要的结果。比如投3个骰子计算3个骰子同时是6的概率,可以模拟投N次(随机样本数)统计同时是6出现的次数C,然后C除以N即是计算结果

(3)蒙特卡洛方法可以应用在很多场合,但求的是近似解在模拟样本数越大的情况下,越接近与真实值但样本数增加会带来计算量的大幅上升。    

蒙特鉲洛方法不仅仅是算概率哦再一个稍复杂点的实例:求函数y=x2在[0,2]区间的积分,即求如下图所示的红色区域的面积当然直接用数学中的萣积分公式算更简单精确,这里主要是举例说明下蒙特卡洛方法的使用过程

该红色区域在一个2×4的正方形里面。使用蒙特卡洛方法随機在这个正方形里面产生大量随机点(数量为N),计算有多少点(数量为count)落在红色区域内(判断条件为y<x2)count/N就是所要求的积分值,也即紅色区域的面积

这与精确值(2.666666)的差距只有6.2%,而对于更大规模的模拟N=100万输出结果为:2.66528这与精确值的差距只有0.051975%(分之)。可以看出蒙特卡洛方法有一定的误差,误差的大小与模拟的样本大小直接相关模拟样本越大,误差越小但计算量也会大幅上升。

4)对於简单问题来说蒙特卡洛是个“笨”办法。但对许多问题来说它往往是个有效,有时甚至是唯一可行的方法

    对于上面的简单问题,蒙特卡洛方法就显得有点“笨”了直接用数值积分运算更简单,更精确

    但对于涉及不可解析函数或概率分布的模拟及计算,蒙特卡洛方法是个有效的方法

    我们都玩过套圈圈的游戏,想过为什么你总是套不上吗用蒙特卡洛方法来算一算。

    2.设投圈半径8cm投圈中心点围绕粅品中心点呈二维正态分布,均值μ=0cm标准差σ=20cm,模拟1000次投圈过程

    上图中红圈为物品,散点图为模拟1000次投圈过程中投圈中心点的位置散布。

    3.计算1000次投圈过程中投圈套住物品的占比情况。

    输出结果:0.014即投1000次,有14次能够套住物品就是个小概率事件,知道你为什么套不住了吧

5)蒙特卡洛方法本身不是优化方法,与遗传算法、粒子群等优化算法有着本质的区别

 蒙特卡洛方法与遗传算法、粒子群算法等智能优化算法有相似之处,比如都属于随机近似方法都不能保证得到最优解等,但它们也有着本质的差别一是层次不一样,蒙特卡洛只能称之为方法遗传算法等则属于仿生智能算法,比蒙特卡洛方法要复杂二是应用领域不同,蒙特卡洛是一种模拟统计方法如果問题可以描述成某种统计量的形式,那么就可以用蒙特卡洛方法来解决;遗传算法等则适用于大规模的组合优化问题(选址问题、排班问題、管理调度、路线优化)等以及复杂函数求最值、参数优化等。

我要回帖

更多关于 蒙特卡罗分析 的文章

 

随机推荐