来自 | 知乎   作者 | 薛定豆

链接 | https://zhuanlan.zhihu.com/p/223042372

编辑 | 深度学习这件小事公众号

本文仅作学术交流,如有侵权,请联系后台删除。

15分钟入门蒙特卡洛 Monte Carlo

20世纪40年代,蒙特卡洛(Monte Carlo, 位于摩纳哥的赌城,如上图)方法由John von Neumann,Stanislaw Ulam和 Nicholas Metropolis 在 Los Alamos National Lab (LANL) 曼哈顿计划中,为模拟中子扩散发展出的一种统计方法。正如名字反映出的,蒙特卡洛方法本质上是跟**一样具有随机特性。

   一、估计圆周率 15分钟入门蒙特卡洛 Monte Carlo 的值

如果(x,y)是独立地从0到1之间均匀分布抽样出的一系列的数对number pair, 那么这些随机的位置坐标(x,y)落在1为半径圆弧内的概率应该是:四分之一圆的面积➗整个正方形的面积:

15分钟入门蒙特卡洛 Monte Carlo

而因为(x,y) 是0到1的均匀分布,所以这个概率当抽样足够多的时候就等于红色的点数除以总共点数:

15分钟入门蒙特卡洛 Monte Carlo

这样一来,只要采样足够多,就可以得到无限趋近于15分钟入门蒙特卡洛 Monte Carlo的值。这个例子很好的体现了Monte Carlo(MC)方法的精神:利用随机分布的特性,大数次抽样得到准确的估计。换句话说,就是我猜,我猜地又多又均匀就基本上成功了!

15分钟入门蒙特卡洛 Monte Carlo

   二、估计定积分的值

微积分里我们学到,定积分(也就是曲线下的面积)可以想象成很多等宽小矩形加起来的面积之和,如下图所示,

15分钟入门蒙特卡洛 Monte Carlo

15分钟入门蒙特卡洛 Monte Carlo

如果用蒙特卡洛的思维来做的话,可以从a到b的均匀分布产生一些列的x值: 15分钟入门蒙特卡洛 Monte Carlo,只要抽样足够多,就可以估计出在这个区间内 15分钟入门蒙特卡洛 Monte Carlo 的平均值,记做 15分钟入门蒙特卡洛 Monte Carlo 这样一来,曲线下面积就等效成一个以这个平均值为高的矩形面积:

15分钟入门蒙特卡洛 Monte Carlo

15分钟入门蒙特卡洛 Monte Carlo

   三、重要性抽样(Importance sampling)

其实,很多积分中 15分钟入门蒙特卡洛 Monte Carlo 还是有一些重要的区域的,为了使采样更有效率,一般我们可以采用重要性抽样来计算积分:

15分钟入门蒙特卡洛 Monte Carlo

这里, 15分钟入门蒙特卡洛 Monte Carlo 是任意满足正定 15分钟入门蒙特卡洛 Monte Carlo 且归一化 15分钟入门蒙特卡洛 Monte Carlo 条件的概率分布,且 15分钟入门蒙特卡洛 Monte Carlo 是从这个分布采样的随机数。重要性抽样其实仅仅就是做了个恒等变形,把原来要均匀采样的概率分布(其实就是 15分钟入门蒙特卡洛 Monte Carlo )替换成任意概率分布,并把要平均的函数除以这个分布。重要性抽样是统计和物理中常见的方法,可以很好的对重点区域采样而快速估计积分。

另一方面,重要性抽样有着很简单直接的并行化方案:对于多维定积分, 15分钟入门蒙特卡洛 Monte Carlo 从分布 15分钟入门蒙特卡洛 Monte Carlo 中采样的话,(这里为了符号简便,现在暂时将第 15分钟入门蒙特卡洛 Monte Carlo 次采样记做带括号的上标 15分钟入门蒙特卡洛 Monte Carlo )

15分钟入门蒙特卡洛 Monte Carlo

其实,统计力学里常见的积分就是物理量 15分钟入门蒙特卡洛 Monte Carlo 的系综平均

15分钟入门蒙特卡洛 Monte Carlo

这里15分钟入门蒙特卡洛 Monte Carlo 是正则系综分布函数, 15分钟入门蒙特卡洛 Monte Carlo 是正则配分函数。

   四、Metropolis Monte Carlo算法 (Markov Chain Monte Carlo, MCMC)

那么,问题来了,怎么对任意分布 15分钟入门蒙特卡洛 Monte Carlo 采样?这里介绍Metropolis MC算法,也叫Metropolis-Hastings算法,它类似于随机瞎走(Random walk)的方式产生一列数,这些数的总体分布服从 15分钟入门蒙特卡洛 Monte Carlo 。这里,我们以平衡态统计力学中的最常见的Boltzmann分布为例说明。

玻尔兹曼分布说对于构型 15分钟入门蒙特卡洛 Monte Carlo ,它的概率应该是 15分钟入门蒙特卡洛 Monte Carlo ,这里 15分钟入门蒙特卡洛 Monte Carlo 是这个构型的能量。我们想要产生服从玻尔兹曼分布的一系列 15分钟入门蒙特卡洛 Monte Carlo ,可以设想如果我基于原来的一个构型 15分钟入门蒙特卡洛 Monte Carlo 怎么产生下一个构型 15分钟入门蒙特卡洛 Monte Carlo 呢?

当体系达到平衡时,体系在 15分钟入门蒙特卡洛 Monte Carlo 的概率 15分钟入门蒙特卡洛 Monte Carlo 不应该随时间改变,于是有

15分钟入门蒙特卡洛 Monte Carlo

这里 15分钟入门蒙特卡洛 Monte Carlo 表示基于 15分钟入门蒙特卡洛 Monte Carlo 随机产生 15分钟入门蒙特卡洛 Monte Carlo 的转移概率(Transition probability),求和是对于所有可能的其他构型15分钟入门蒙特卡洛 Monte Carlo。从上面关系可以得到只要满足下面细致平衡(detailed balance)条件,就可以产生出服从玻尔兹曼分布的序列:

15分钟入门蒙特卡洛 Monte Carlo

Metropolis选择的是下面方式选择转移概率(尽量最大化接受新构型):

15分钟入门蒙特卡洛 Monte Carlo

15分钟入门蒙特卡洛 Monte Carlo

读者可以将上面两个式子相除,就可以看出在不管新构型的能量是更高还是更低,这个转移概率的比值都服从细致平衡条件,也就是最终产生的分布就会使玻尔兹曼分布了。

Metropolis算法——移动然后选择接受这个移动还是拒绝这个移动

  1. 从起始构型 15分钟入门蒙特卡洛 Monte Carlo ,计算能量 15分钟入门蒙特卡洛 Monte Carlo ;

  2. 随机移动一些构型坐标得到一个trial构型 15分钟入门蒙特卡洛 Monte Carlo ,并计算该构型的能量 15分钟入门蒙特卡洛 Monte Carlo ;

  3. 决定是否接受这个移动:
    (1)如果 15分钟入门蒙特卡洛 Monte Carlo ,那么100%接受这个移动,正式的下一步构型就是 15分钟入门蒙特卡洛 Monte Carlo了;
    (2)如果 15分钟入门蒙特卡洛 Monte Carlo ,那么产生一个0到1之间的随机数R, 并跟转移概率 15分钟入门蒙特卡洛 Monte Carlo 比较,如果 15分钟入门蒙特卡洛 Monte Carlo 那就接受这个移动 15分钟入门蒙特卡洛 Monte Carlo ,否则就拒绝这个移动 15分钟入门蒙特卡洛 Monte Carlo ;

  4. 回到第二步,直到累积N个构型。

这一列构型 15分钟入门蒙特卡洛 Monte Carlo 被称为马尔科夫链(Markov Chain),因为产生的新构型只跟当前构型有关,对前面的构型没有任何的记忆效应,所以这个方法又叫马尔科夫链蒙特卡洛(MCMC)。而且,从任何初始构型出发,最终都会达到平衡而且服从就是玻尔兹曼分布,即通过配比转移概率 15分钟入门蒙特卡洛 Monte Carlo 达到对某构型的采样概率为15分钟入门蒙特卡洛 Monte Carlo 且不随“时间”改变。【注意:MC里序列是没有物理上时间先后关系的,所有说MC“时间序列”都是指随机产生的顺序。】

当然,这个例子只是一个统计力学里的概率分布函数,其实任何形式的分布都可以用MC产生,使得MC方法在统计里应用的不要太多。

15分钟入门蒙特卡洛 Monte Carlo

相关文章:

  • 2021-11-18
  • 2021-11-18
  • 2022-12-23
  • 2021-06-15
  • 2021-11-18
  • 2021-11-18
  • 2021-11-18
猜你喜欢
  • 2021-11-18
  • 2021-10-30
  • 2022-01-17
  • 2021-09-11
  • 2021-11-18
  • 2021-11-18
  • 2022-12-23
相关资源
相似解决方案