蒙特卡洛方法

Posted

tags:

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

参考技术A 本文主要讲解三部分:

  这一小节我们简要介绍一下引出蒙特卡洛方法的实际场景。

  机器学习/深度学习中的图像叠加文字识别需要大量的训练样本,自动生成样本(使用程序在背景图片上叠加文字)是一种样本的获取方式。但色彩值(为了兼顾各方向的同学,原谅我用一个这么不专业的词汇,此值可以是RGB到[0,1]区间的映射,让它能代表颜色的性质)的选择很重要,为了防止(控制)发生叠加文字与背景图片的色彩值相近的情况发生,叠加文字的色彩值最好服从我们指定的概率分布。这样就需要根据指定的概率分布来产生色彩值——蒙特卡洛方法擅长解决的问题。

  蒙特卡洛方法的应用场景很多,横跨物理、金融、计算机。拿计算机科学来举例,自然语言处理中的LDA模型,hinton较早提出的深度学习模型DBN都用到了蒙特卡洛方法。此文第一部分简要介绍了实际问题,简而言之蒙特卡洛方法就是生成样本,即蒙特卡洛采样。即根据某已知分布的概率密度函数f(x)f(x),产生服从此分布的样本XX。

  下面首先介绍一种最简单最易理解的蒙特卡洛方法——Accept-Rejection method(下文称接受拒绝采样),然后给出这个方法的直观解释,最后证明方法的正确性。

其中

蒙特卡洛方法应用

e的定义如下:

技术图片

 



求解它有两种方法:
一是公式法,

取一个很大的数代入。

python代码如下:

1 x = 1024*1024
2 e = pow(1+1/x,x)
3 print("".format(e))

 


二是蒙特卡洛方法 (题目本身不难,重点的是这种思维模式)

技术图片

 

 1 import random as rd
 2 
 3 scatterNum = 1024*1024 #撒点的总数
 4 count = 0
 5 
 6 for i in range(scatterNum):
 7     x = rd.uniform(1,2)
 8     y = rd.uniform(0,1)
 9     if x*y <= 1:
10         count+=1
11 e = pow(2,scatterNum/count)
12 print("自然常数e:".format(e))

 

以上是关于蒙特卡洛方法的主要内容,如果未能解决你的问题,请参考以下文章

蒙特卡洛方法

蒙特卡洛方法原理

请问风险管理中蒙特卡洛法是谁提出来的

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

蒙特卡洛方法

蒙特卡洛算法