蒙特卡洛 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值: 



其实,很多积分中 
这里, 




另一方面,重要性抽样有着很简单直接的并行化方案:对于多维定积分, 



其实,统计力学里常见的积分就是物理量 
这里

那么,问题来了,怎么对任意分布 

玻尔兹曼分布说对于构型 




呢?
当体系达到平衡时,体系在 

这里 

的转移概率(Transition probability),求和是对于所有可能的其他构型
。从上面关系可以得到只要满足下面细致平衡(detailed balance)条件,就可以产生出服从玻尔兹曼分布的序列:
Metropolis选择的是下面方式选择转移概率(尽量最大化接受新构型):
读者可以将上面两个式子相除,就可以看出在不管新构型的能量是更高还是更低,这个转移概率的比值都服从细致平衡条件,也就是最终产生的分布就会使玻尔兹曼分布了。
Metropolis算法——移动然后选择接受这个移动还是拒绝这个移动
- 从起始构型
,计算能量
;
- 随机移动一些构型坐标得到一个trial构型
,并计算该构型的能量
;
- 决定是否接受这个移动:
(1)如果,那么100%接受这个移动,正式的下一步构型就是
了;
(2)如果,那么产生一个0到1之间的随机数R, 并跟转移概率
比较,如果
那就接受这个移动
,否则就拒绝这个移动
;
- 回到第二步,直到累积N个构型。
这一列构型 


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








![I = \int d x_1 \int dx_1\cdots \int dx_P f(x_1,x_2,\ldots,x_P) \equiv\int d \mathbf x f(x_1,x_2,\ldots,x_P) \\= \int d\mathbf x\rho(x_1,x_2,\ldots,x_P) \left[\frac{f(x_1,x_2,\ldots,x_P)}{\rho(x_1,x_2,\ldots,x_P)} \right] \\ =\frac{1}{N} \sum_{i=1}^N \left[\frac{f(x_1^{(i)},x_2^{(i)},\ldots,x_P^{(i)})}{\rho(x_1^{(i)},x_2^{(i)},\ldots,x_P^{(i)})} \right]\\ =\frac{1}{N} \sum_{i=1}^N \left[\frac{f(\mathbf x^{(i)})}{\rho(\mathbf x^{(i)})} \right] = \frac{1}{N} \sum_{i=1}^N g(\mathbf x^{(i)})](https://allbet8.org/wp-content/uploads/2023/06/JphC93N7kv.jpg)

![\frac{d}{dt}P_a = \sum_b \left[ w_{b \to a} P_b - w_{a\to b} P_a\right]=0](https://allbet8.org/wp-content/uploads/2023/06/Gb7eKzs94.jpg)



,计算能量
;
,并计算该构型的能量
;
,那么100%接受这个移动,正式的下一步构型就是
了;
,那么产生一个0到1之间的随机数R, 并跟转移概率
比较,如果
那就接受这个移动
;