从概率论到Markov Chain Monte Carlo(MCMC)

       大学本科时代开始学习的概率论,从变着花样从箱子里取不同颜色的球计算概率,到计算各种离散或连续的随机分布期望、方差,再高深点就是利用生成函数求期望和方差,再就是估计理论,包括点估计、极大似然估计和区间估计等,然后是一些假设检验,最后,会加上一点随机过程的知识。
       和所有中国教育中的基础理论教学一样,我们被训练去求给定分布(一般会给一些复杂的分布)的期望和方差,我们去背复杂的估计理论和假设检验公式,概率学习变成了一个技术活。在我的印象里,概率论总感觉是一门“形而上”的学问。
       直到不久前,我还是不知道大数定理和中心极限定理那章的作用,但现在,个人感觉,这章实际是概率论体现理论源于实践又反过来指导实践的最佳哲学证明,是甩掉概率论“形而上学”的核心武器。从大数定理,我们知道大量的随机变量(函数)样本平均值依概率趋近于该随机变量(函数)的期望。实际应用中的概率分布往往并不是如同泊松分布、指数分布那样的简单分布,而是解析式非常复杂,甚至没有解析式,而这些分布的期望往往可以帮助我们估计分布的参数或其他重要性质,这时候通过计算机生成符合该分布的采样值的方法就非常重要。
       我们知道,对于常见的经典分布,(0,1)均匀分布可以利用线性同余生成器、斐波那契生成器等生成;其他非均匀分布,如泊松分布、指数分布等可以通过利用反变换、舍选法、卷积法等生成,但这些方法对实际中的大量分布还是无能为力,甚至尽管可以用这些方法,但如果需要生成大量的样本,一些现有的方法效率太低,例如产生指数分布样本需要计算开销巨大的lnx函数。
      MCMC就是一种很牛的采样方法,它的想法是,假设需要产生密度函数为f(x)的样本,设计一个马尔科夫链,使其平稳分布恰好是f(x),等到该链平衡时开始采样。这和以前已知markov chain求equilibrium distribution恰恰相反。根据建立Markov chain方法的不同,两类最重要的MCMC方法为就是Metropolis-Hastings Algorithm和Gibbs Sampling,前者常设计成随机游走(Random walk),后者则基于conditional sampling。当然这里,如何设计这个Markov chain是一个很高超的技术,有兴趣的可以再深入查阅。
       另外一种也不错的采样方法叫sequential importance sampling。具体原理我也不太清楚,大致意思是通过迭代采样逐步建立一个逼近原分布f(x)的分布g(x),大名鼎鼎的particle filtering粒子滤波就是基于这个思想来的。
       除了在概率论中使用,随机思想也渗透到各种确定性领域。面对传统很多确定性领域无法得到解析式的困难,如求高维积分,将其转换成求一个特定函数的期望,或一些经典的科学问题,设计一个特殊分布,使待求变量等于该分布的期望,则通过MCMC等采样方法加上大数定理,即可得出高精度的近似解。


你可能感兴趣的:(CS,algorithm,random,教育)