1. 为什么需要马尔科夫链?
在上一篇文章 《MCMC (1): 蒙特卡洛方法》 中,我们总结了蒙特卡洛方法解决问题的三个步骤为:
- 构造概率过程;
- 采样;
- 估计参数。
马尔科夫链也就是需要解决上述的采样问题。
在计算机中,均匀分布 $Uniform(0,1)$ 的样本相对容易生成,常见的概率分布也可以基于均匀分布生成。但是,当我们的概率分布很复杂或者是高维分布时,样本的生成就存在困难,这时候就需要借助马尔科夫链了。也就是说,马尔科夫链的性质可以帮助我们近似的生成符合某概率分布的样本。为什么呢?
2. 马尔科夫链
马尔科夫链的定义很简单:
\begin{equation}
P(X_{t+1} = x \mid X_t, X_{t-1}, \cdots) =P(X_{t+1}=x \mid X_t)
\end{equation}
也就是状态转移的概率只依赖于前一个状态。符合这样定义的马氏链有什么性质呢?让我们看一个例子。
社会学家经常把人按其经济状况分成 3 类:低层、中层、高层 ,我们用 1、2、3 分别代表这三个阶层。社会学家们发现决定一个人的收入阶层只与其父母的收入阶层有关,也就说收入状态转移的概率只依赖于前一个状态(马尔科夫链)。具体的转移概率如下图所示:
也就说如果一个人的父代的收入阶层是底层,他属于底层的概率是 0.65、属于中层的概率是 0.28、属于高层的概率是 0.07 (寒门难出贵子!)。将转移概率写成矩阵:
\begin{equation}
P =
\begin{bmatrix}
0.65 & 0.28 & 0.07 \\
0.15 & 0.67 & 0.18 \\
0.12 & 0.36 & 0.52 \\
\end{bmatrix}
\end{equation}
假设某一代为初始状态,初始概率分布为 $\pi_0 = [0.21,0.68,0.11]$,则根据转移矩阵我们可以计算 $n$ 代人的收入阶层分布:
下层比例 | 中层比例 | 高层比例 | |
---|---|---|---|
第0代人 | 0.210 | 0.680 | 0.110 |
第1代人 | 0.252 | 0.554 | 0.194 |
第2代人 | 0.270 | 0.512 | 0.218 |
第3代人 | 0.278 | 0.497 | 0.225 |
第4代人 | 0.282 | 0.492 | 0.226 |
第5代人 | 0.284 | 0.490 | 0.226 |
第6代人 | 0.285 | 0.489 | 0.225 |
第7代人 | 0.286 | 0.489 | 0.225 |
第8代人 | 0.286 | 0.489 | 0.225 |
第9代人 | 0.286 | 0.489 | 0.225 |
第10代人 | 0.286 | 0.489 | 0.225 |
我们发现从第7代人开始,这个分布就稳定不变了,这个是偶然的吗?
我们换一个初始概率分布 $\pi_0 = [0.75,0.15,0.1]$ 试试:
下层比例 | 中层比例 | 高层比例 | |
---|---|---|---|
第0代人 | 0.750 | 0.150 | 0.100 |
第1代人 | 0.522 | 0.346 | 0.132 |
第2代人 | 0.407 | 0.426 | 0.167 |
第3代人 | 0.349 | 0.459 | 0.192 |
第4代人 | 0.318 | 0.475 | 0.207 |
第5代人 | 0.303 | 0.482 | 0.215 |
第6代人 | 0.295 | 0.485 | 0.220 |
第7代人 | 0.291 | 0.487 | 0.222 |
第8代人 | 0.289 | 0.488 | 0.224 |
第9代人 | 0.288 | 0.488 | 0.224 |
第10代人 | 0.287 | 0.488 | 0.225 |
第11代人 | 0.287 | 0.488 | 0.225 |
第12代人 | 0.287 | 0.488 | 0.225 |
从上面的两个表格可以发现,两次分布都收敛了,而且都收敛到 $\pi=[0.286, 0.489, 0.225]$ 这个分布。这就是马尔科夫链的收敛性质。
这里我们不过多的讲述关于马尔科夫链的定理和性质,需近一步了解的可以参考本文后列出的参考资料。我们需要知道的是,对于一个概率分布来说,如果马尔科夫链中的每一步都让这个概率分布保持不变,我们就说这个概率分布是马尔科夫链的平稳分布。用公式可如下表示:
\begin{equation}
\pi P = \pi, \quad \sum_{i=0}^{\infty} \pi_i = 1
\end{equation}
其中 $\pi$ 是马尔科夫链的概率分布,$P$ 是转移概率矩阵。即概率分布乘上转移矩阵还是它本身,也就是概率分布在每一步都保持不变。而且 $\pi$ 是方程 $\pi P = \pi$ 的唯一非负解。
回到我们的正题。我们需要利用马尔科夫链的性质来生成复杂概率分布 $p(x)$ 的样本。很自然的,我们的想法是产生一条马氏链,使得它的平稳分布就是想要的分布。即,构造符合条件的转移矩阵,使其满足:
\begin{equation}
p(x)Q = p(x)
\end{equation}
因为 $p(x)$ 是上式的唯一解,我们可以根据上式来生成 $p(x)$ 的样本。
那么,如何构造转移矩阵呢?
假设我们有一个转移矩阵 $Q$($q(i,j)$),其满足如下条件:
\begin{equation}
p(i)q(i,j) = p(j)q(j,i)
\label{dbc}
\end{equation}
$i,j$ 是分布中的两个状态,如上面例子中的低层、中层(就是 $Q$ 矩阵中的下标)。根据 (\ref{dbc}) 式,我们有:
\begin{align}
& \sum_{i=1}^\infty p(i)q(i,j) = \sum_{i=1}^\infty p(j)q(j,i)
= p(j) \sum_{i=1}^\infty q(j,i) = p(j) \\
& \Rightarrow p Q = p
\end{align}
可以看到,只要构造满足 (\ref{dbc}) 式的转移矩阵,我们就可以得到平稳分布 $p$,(\ref{dbc}) 式也就是马氏链的细致平稳条件。根据 (\ref{dbc}) 式,利用随机采样的方法,就可以得到分布 $p$ 的样本。随机采样的方法将在下一章记录。
参考资料
[1] LDA-math-MCMC 和 Gibbs Sampling
[2] Information Theory, Inference, and Learning Algorithms, David J.C. MacKay. (Chap. 29).
[3] Pattern Recognition and Machine Learning, Christopher M. Bishop. (Chap. 11).