1.MCMC简介
马尔可夫链蒙克卡罗(Markov Chain Monte Carlo,MCMC) 是一种随机采样方法,在机器学习、深度学习及自然语言处理等领域都有广泛的应用,是很多复杂算法求解的基础,例如受限玻尔兹曼机(RBM)便是用MCMC来做一些复杂算法的近似求解。在具体讲解什么是MCMC之前,我们先看看MCMC可以解决什么样的问题,为什么需要MCMC方法。
2. 为什么需要MCMC?
假如我们需要对一维随机变量 X X X进行随机采样, X X X的样本空间是 { 1 , 2 , 3 } \{1,2,3\} { 1,2,3},概率分别是 { 1 2 , 1 4 , 1 4 } \{\frac{1}{2},\frac{1}{4},\frac{1}{4}\} { 21,41,41}。那么我们只需要根据各离散值的概率大小对[0,1]区间进行等比例划分,例如划分为[0,0.5],[0.5,0.75],[0.75,1]三个区间,然后通过计算机产生[0,1]之间的伪随机数,根据伪随机数的落点便可完成采样。下面问题变得复杂一些,假如 X X X是连续分布,概率密度函数(PDF)是 f ( X ) f(X) f(X),那么如何采样呢。
你肯定会想到累积分布函数(CDF),表达式为 P ( x ) = ∫ − ∞ x f ( x ) d x P(x) = \int _{-\infty} ^{x} f(x) dx P(x)=∫−∞xf(x)dx。然后在[0,1]间随机生成一个数 a a a,求使得 x = C D F − 1 ( a ) x=CDF^{-1}(a) x=CDF−1(a),此时便可得到一个采样结果。例如以高斯分布为例进行采样,高斯分布的概率密度函数如下所示
f ( x ) = 1 σ 2 π e x p ( − ( x − u ) 2 2 σ 2 ) f(x)= \frac{1}{\sigma \sqrt{2\pi}} exp({- \frac{(x-u)^2}{2 \sigma ^2}}) f(x)=σ2π1exp(−2σ2