蒙特卡洛 Monte Carlo 入门(15分钟版)
20世纪40年代,蒙特卡洛(Monte Carlo, 位于摩纳哥的赌城,如标题图)方法由John von Neumann,Stanislaw Ulam和 Nicholas Metropolis 在 Los Alamos National Lab (LANL) 曼哈顿计划中,为模拟中子扩散发展出的一种统计方法。 正如名字反映出的,蒙特卡洛方法本质上是跟赌博一样具有随机特性。
如果(x,y)是独立地从0到1之间均匀分布抽样出的一系列的数对number pair, 那么这些随机的位置坐标(x,y)落在1为半径圆弧内的概率应该是:四分之一圆的面积➗整个正方形的面积:
蒙特卡罗
而因为(x,y) 是0到1的均匀分布,所以这个概率当抽样足够多的时候就等于红色的点数除以总共点数:
这样一来,只要采样足够多,就可以得到无限趋近于
微积分里我们学到,定积分(也就是曲线下的面积)可以想象成很多等宽小矩形加起来的面积之和,如下图所示,
如果用蒙特卡洛的思维来做的话,可以从a到b的均匀分布产生一些列的x值:
其实,很多积分中
这里,
另一方面,重要性抽样有着很简单直接的并行化方案:对于多维定积分,
其实,统计力学里常见的积分就是物理量
这里
那么,问题来了,怎么对任意分布
玻尔兹曼分布说对于构型
当体系达到平衡时,体系在
这里
Metropolis选择的是下面方式选择转移概率(尽量最大化接受新构型):
读者可以将上面两个式子相除,就可以看出在不管新构型的能量是更高还是更低,这个转移概率的比值都服从细致平衡条件,也就是最终产生的分布就会使玻尔兹曼分布了。
Metropolis算法——移动然后选择接受这个移动还是拒绝这个移动
- 从起始构型
,计算能量 ; - 随机移动一些构型坐标得到一个trial构型
,并计算该构型的能量 ; - 决定是否接受这个移动:
(1)如果 ,那么100%接受这个移动,正式的下一步构型就是 了;
(2)如果 ,那么产生一个0到1之间的随机数R, 并跟转移概率 比较,如果 那就接受这个移动 ,否则就拒绝这个移动 ; - 回到第二步,直到累积N个构型。
这一列构型
当然,这个例子只是一个统计力学里的概率分布函数,其实任何形式的分布都可以用MC产生,使得MC方法在统计里应用的不要太多。
谢谢!