15分钟入门蒙特卡洛 Monte Carlo
【摘要】 那么,问题来了,怎么对任意分布 采样?这里介绍Metropolis MC算法,也叫Metropolis-Hastings算法,它类似于随机瞎走(Random walk)的方式产生一列数,这些数的总体分布服从 。这里,我们以平衡态统计力学中的最常见的Boltzmann分布为例说明。玻尔兹曼分布说对于构型 ,它的概率应该是 ,这里 是这个构型的能量。我们想要产生服从玻尔兹曼分布的一系列 ,可以设...
采样?这里介绍Metropolis MC算法,也叫Metropolis-Hastings算法,它类似于随机瞎走(Random walk)的方式产生一列数,这些数的总体分布服从
。这里,我们以平衡态统计力学中的最常见的Boltzmann分布为例说明。
,它的概率应该是
,这里
是这个构型的能量。我们想要产生服从玻尔兹曼分布的一系列
,
可以设想如果我基于原来的一个构型
怎么产生下一个构型
呢?
的概率
不应该随时间改变,于是有
表示基于
随机产生
的转移概率(Transition probability),求和是对于所有可能的其他构型
。从上面关系可以得到只要满足下面细致平衡(detailed balance)条件,就可以产生出服从玻尔兹曼分布的序列:
-
从起始构型
,计算能量
;
-
随机移动一些构型坐标得到一个trial构型
,并计算该构型的能量
;
-
决定是否接受这个移动:
(1)如果
,那么100%接受这个移动,正式的下一步构型就是
了;
(2)如果
,那么产生一个0到1之间的随机数R, 并跟转移概率
比较,如果
,
那就接受这个移动
,否则就拒绝这个移动
;
-
回到第二步,直到累积N个构型。
被称为马尔科夫链(Markov Chain),因为产生的新构型只跟当前构型有关,对前面的构型没有任何的记忆效应,所以这个方法又叫马尔科夫链蒙特卡洛(MCMC)。而且,从任何初始构型出发,最终都会达到平衡而且服从就是玻尔兹曼分布,即通过配比转移概率
,达到对某构型的采样概率为
且不随“时间”改变。【注意:MC里序列是没有物理上时间先后关系的,所有说MC“时间序列”都是指随机产生的顺序。】
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者



;


,

评论(0)