马尔可夫蒙特卡洛方法(MCMC)到底是什么呀?感觉和贝叶斯网络(Bayes network)以及隐式马尔可夫(HMM) 有关系?
1个回答
这个问题挂这么久了,一直没有人回答,那我就试试吧。
先说说MCMC是什么。第一个MC是Markov Chain,第二个MC是Monte Carlo。MCMC就是两者的结合,顾名思义,就是带有马尔可夫链性质的蒙特卡洛模拟方法。
-----------什么是马尔可夫链-----------
假设随机变量$X_t$表示$t$时刻发生的事件。一个随机过程$X_0,X_1,X_2,\cdots,X_T$,如果满足
$$P(X_{n+1}|X_n)=P(X_{n+1}|X_n, X_{n-1}, X_{n-2}, \cdots, X_0),$$
就称这个过程是一个马尔可夫分链。换句话说,在一个马尔可夫链当中,下个时刻的事件状态只和当前状态有关。
-----------什么是蒙特卡洛模拟-----------
蒙特卡洛模拟是基于大数定律的随机重复抽样方法。比如说,为了估计抛某个有偏差硬币落在正面的概率,我们可以重复抛$m$次,得到$k$次正面,那么$p=\frac{k}{m}$。比如说,为了估计圆周率,我们可以在正方形中画一个内切圆,然后对这个正方形随机重复投点$m$次,如果有$k$次落在圆内,那么可以估计$\pi$为$\frac{4k}{m}$。
-----------到底什么是MCMC-----------
举个简单的例子:假设如果今天晴天,明天下雨的概率是0.1;如果今天晴天,明天晴天的概率是0.9;如果今天下雨,明天下雨(rainy)的概率是0.5;如果今天下雨,明天晴天的概率也是0.5。问题来了,如果我们不知道今天的天气如何,怎么通过随机抽样来模拟未来10天的天气呢?
步骤1: 随机选定初始点$X_0$,比如可选择为晴天。
步骤2: 根据上述的概率,随机产生一个天气$X_1$(0.1概率为雨天,0.9概率为晴天)
步骤3: 根据上述的概率和$X_2$,随机生成$X_3$。
步骤4: 如此反复100次(越多越好)。
步骤5: 取出$X_{101},X_{102},\cdots, X_{110}$即可。
这样得到的10个天气就是随机抽取出来的。为什么步骤4中次数越多越好呢?因为$i$越小,$X_i$越容易被初始值$X_0$影响。当$i$变得很大时,就趋于稳定(依照转移矩阵稳定态概率的的随机)。
-----------在贝叶斯网络和隐式马尔可夫模型中的应用-----------
MCMC经常被用来估计复杂的贝叶斯网络中的后验概率分布。
类似地,在隐式马尔可夫模型中,需要计算似然估计,而求这些似然估计,需要对很多隐藏状态求和,计算量很大,所以可以通过MCMC来模拟求解。