MCMC采样法 一些前置知识

一、总结

一句话总结:

作为一种随机采样方法,【马尔科夫链蒙特卡罗】(Markov Chain Monte Carlo,以下简称MCMC)在机器学习,深度学习以及自然语言处理等领域都有广泛的应用,【是很多复杂算法求解的基础】。下面我们就对MCMC的原理做一个总结。
从名字我们可以看出,MCMC由两个MC组成,即蒙特卡罗方法(Monte Carlo Simulation,简称MC)和马尔科夫链(Markov Chain ,也简称MC)。【要弄懂MCMC的原理我们首先得搞清楚蒙特卡罗方法和马尔科夫链的原理】。

 

1、随机模拟?

随机模拟也可以叫做【蒙特卡罗模拟(Monte Carlo Simulation)】。
随机模拟中有一个重要的问题就是【给定一个概率分布p(x) , 我们如何在计算机中生成它的样本】。
一般而言均匀分布 Uniform(0,1) 的样本是相对容易生成的。 通过【线性同余发生器】可以生成伪随机数,我们用确定性算法生成[0,1]之间的伪随机数序列后,这些序列的各种统计指标和均匀分布 Uniform(0,1)  的理论计算结果非常接近。这样的伪随机序列就有比较好的统计性质,【可以被当成真实的随机数使用】。

 

2、蒙特卡罗方法引入?

蒙特卡罗原来是一个赌场的名称,用它作为名字大概是因为蒙特卡罗方法【是一种随机模拟的方法】,这很像赌博场里面的扔骰子的过程。最早的蒙特卡罗方法都是为了【求解一些不太好求解的求和或者积分问题】。

 

 

3、蒙特卡罗方法求解不好求积分问题 过程?

1、比如积分:$$ \theta = \int _ { a } ^ { b } f ( x ) d x $$,【如果我们很难求解出f(x)的原函数,那么这个积分比较难求解】。当然我们可以通过蒙特卡罗方法来模拟求解近似值。如何模拟呢?
2、则一个简单的近似求解方法是在[a,b]之间随机的采样一个点。比如x0 ,然后用x0代表在[a,b]区间上所有的f(x)的值。那么上面的定积分的近似求解为:(b-a)f(x0),当然,用一个值代表[a,b]区间上所有的 f(x) 的值,这个假设太粗糙。【那么我们可以采样[a,b]区间的n个值:x0,x1,...xn-1】 ,用它们的均值来代表[a,b]区间上所有的 f(x) 的值。这样我们上面的定积分的近似求解为:$$\frac { b - a } { n } \sum _ { i = 0 } ^ { n - 1 } f ( x _ { i } )$$
3、虽然上面的方法可以一定程度上求解出近似的解,但是它隐含了一个假定,即x在[a,b]之间是均匀分布的,而绝大部分情况,x在[a,b]之间【不是均匀分布】的。如果我们用上面的方法,则模拟求出的结果很可能和真实值相差甚远。怎么解决这个问题呢? 如果我们可以得到x在[a,b]的概率分布函数p(x),那么我们的定积分求和可以这样进行:$$\theta = \int _ { a } ^ { b } f ( x ) d x = \int _ { a } ^ { b } \frac { f ( x ) } { p ( x ) } p ( x ) d x \approx \frac { 1 } { n } \sum _ { i = 0 } ^ { n - 1 } \frac { f ( x _ { i } ) } { p ( x _ { i } ) }$$,【上式最右边的这个形式就是蒙特卡罗方法的一般形式】。当然这里是连续函数形式的蒙特卡罗方法,但是在离散时一样成立。