15分钟入门蒙特卡洛 Monte Carlo

举报
HWCloudAI 发表于 2020/10/14 09:50:20 2020/10/14
【摘要】 那么,问题来了,怎么对任意分布 采样?这里介绍Metropolis MC算法,也叫Metropolis-Hastings算法,它类似于随机瞎走(Random walk)的方式产生一列数,这些数的总体分布服从 。这里,我们以平衡态统计力学中的最常见的Boltzmann分布为例说明。玻尔兹曼分布说对于构型 ,它的概率应该是 ,这里 是这个构型的能量。我们想要产生服从玻尔兹曼分布的一系列 ,可以设...

那么,问题来了,怎么对任意分布 image.png 采样?这里介绍Metropolis MC算法,也叫Metropolis-Hastings算法,它类似于随机瞎走(Random walk)的方式产生一列数,这些数的总体分布服从 image.png 。这里,我们以平衡态统计力学中的最常见的Boltzmann分布为例说明。
玻尔兹曼分布说对于构型 image.png ,它的概率应该是 image.png ,这里 image.png 是这个构型的能量。我们想要产生服从玻尔兹曼分布的一系列 image.png 可以设想如果我基于原来的一个构型image.png  怎么产生下一个构型 image.png 呢?
当体系达到平衡时,体系在 image.png 的概率 image.png 不应该随时间改变,于是有
image.png
这里 image.png 表示基于 image.png随机产生 image.png的转移概率(Transition probability),求和是对于所有可能的其他构型image.png。从上面关系可以得到只要满足下面细致平衡(detailed balance)条件,就可以产生出服从玻尔兹曼分布的序列:
image.png
Metropolis选择的是下面方式选择转移概率(尽量最大化接受新构型):
image.png
image.png
读者可以将上面两个式子相除,就可以看出在不管新构型的能量是更高还是更低,这个转移概率的比值都服从细致平衡条件,也就是最终产生的分布就会使玻尔兹曼分布了。
Metropolis算法——移动然后选择接受这个移动还是拒绝这个移动
  1. 从起始构型 image.png  ,计算能量 image.png  ;
  2. 随机移动一些构型坐标得到一个trial构型 image.png  ,并计算该构型的能量 image.png
  3. 决定是否接受这个移动:
    (1)如果 image.png
     ,那么100%接受这个移动,正式的下一步构型就是 image.png 了;
    (2)如果 image.png
     ,那么产生一个0到1之间的随机数R, 并跟转移概率image.png   比较,如果 image.png 那就接受这个移动 image.png ,否则就拒绝这个移动 image.png ;
  4. 回到第二步,直到累积N个构型。
这一列构型 image.png 被称为马尔科夫链(Markov Chain),因为产生的新构型只跟当前构型有关,对前面的构型没有任何的记忆效应,所以这个方法又叫马尔科夫链蒙特卡洛(MCMC)。而且,从任何初始构型出发,最终都会达到平衡而且服从就是玻尔兹曼分布,即通过配比转移概率 image.png达到对某构型的采样概率为image.png且不随“时间”改变。【注意:MC里序列是没有物理上时间先后关系的,所有说MC“时间序列”都是指随机产生的顺序。】
当然,这个例子只是一个统计力学里的概率分布函数,其实任何形式的分布都可以用MC产生,使得MC方法在统计里应用的不要太多。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200