Markov Chain
提起马尔科夫链,大家应该都不陌生。我第一次接触这个概念,是在大一的C语言编程课中,当时用马尔科夫链来做文章的随机生成。马尔科夫链的思想非常简单,在数学上可以表述如下:
(6)
P
(
X
t
+
1
∣
X
t
,
X
t
−
1
,
.
.
.
,
X
0
)
=
P
(
X
t
+
1
∣
X
t
)
P(X_{t+1}|X_{t}, X_{t-1}, ..., X_0) = P(X_{t+1}|X_{t}) \tag6
P(Xt+1∣Xt,Xt−1,...,X0)=P(Xt+1∣Xt)(6)
也就是说,随机变量 X X X在 t + 1 t+1 t+1时刻的状态,只与 t t t时刻的状态有关,与 t t t时刻之前的状态无关,这就是所谓的马尔科夫性。由于马尔科夫链是一个过于简化的模型,大部分情况下并不能准确地描述客观世界中的现象。比如,我现在站在办公楼门口,那么马尔科夫链认为,我接下来要去哪与我之前在哪无关,这显然是不合理的。如果我之前在家,那么我下一个状态应该是进入办公室工作;如果我之前在办公室,那么我下一个状态可能是去附近吃午饭,也可能是回家。当然也存在一些情况,我们可以用马尔科夫链作为一个很好的近似,比如我们可以认为一个人下个月能拿到多少工资,只取决于他这个月的工资水平。
不过马尔科夫链能否对很好地对现实中的过程建模,并不是我们这里所关心的,我们在意的是马尔科夫链一个有趣的性质。我们首先看一下 ( 6 ) (6) (6)式中的 P ( X t + 1 ∣ X t ) P(X_{t+1}|X_t) P(Xt+1∣Xt),这一项是一组条件分布,它完整地描述了随机变量 X X X如何由 t t t时刻的状态转移至 t + 1 t+1 t+1时刻的状态。就让我们用一个例子来解释一下这句话的含义。
我们可以按照经济状况,把人分成下层,中层,上层三类。通常来说,一个人当前所处的阶层很大程度上取决于父辈的阶层。这里为了简化我们的讨论,我们假设社会上只有两个阶层,上层和下层。那么我们假设:
- 如果父辈是上层,子辈有0.8的概率维持在上层,有0.2的概率落入下层
- 如果父辈是下层,子辈有0.7的概率维持在下层,有0.3的概率进入上层
按照这种方式我们定义了 P ( X t + 1 ∣ X t ) P(X_{t+1}|X_t) P(Xt+1∣Xt),我们可以用一个表格来表示上面两个条件分布:
P ( X t + 1 = 上 层 ) P(X_{t+1}=上层) P(Xt+1=上层) | P ( X t + 1 ) = 下 层 P(X_{t+1})=下层 P(Xt+1)=下层 | |
---|---|---|
X t = 上 层 X_t=上层 Xt=上层 | 0.8 | 0.2 |
X t = 下 层 X_t=下层 Xt=下层 | 0.3 | 0.7 |
现在我们只要知道了父辈的阶层,就可以知道子辈处于各个阶层的概率了。也就是说,这一组条件分布完整的描述了随机变量 X X X如何由 t t t时刻的状态转移到 t + 1 t+1 t+1时刻的状态。
单个随机变量的转移描述了个体的行为,如果从整体的角度来看,这一组条件分布也完整地描述了随机变量
X
X
X如何由
t
t
t时刻的分布
P
(
X
t
)
P(X_t)
P(Xt)转移到
t
+
1
t+1
t+1时刻的分布
P
(
X
t
+
1
)
P(X_{t+1})
P(Xt+1)。假设在这一辈的分布是(上层人0.2, 下层人0.8),那么我们可以计算出在下一辈中,上层人和下层人的分布:
[
0.2
0.8
]
T
×
[
0.8
0.2
0.3
0.7
]
=
[
0.4
0.6
]
T
\left[ \begin{array}{c}0.2\\0.8\end{array}\right]^T \times \left[ \begin{array}{cc}0.8&0.2\\ 0.3&0.7\end{array}\right]=\left[\begin{array}{c}0.4\\0.6\end{array}\right]^T
[0.20.8]T×[0.80.30.20.7]=[0.40.6]T
直觉上,如果按照这组条件分布一直持续进行下去,社会中上层人和下层人的比例应该会达到一种平衡的状态。我们用简单的计算验证一下。
-
第一步,假设平衡的状态存在,在平衡的状态下,分布为(上层人 x x x, 下层人 1 − x 1-x 1−x),且转移一代之后,上层人与下层人的分布不变,那么以下等式成立:
[ x 1 − x ] T × [ 0.8 0.2 0.3 0.7 ] = [ x 1 − x ] T \left[ \begin{array}{c}x\\1-x\end{array}\right]^T \times \left[ \begin{array}{cc}0.8&0.2\\ 0.3&0.7\end{array}\right]=\left[\begin{array}{c}x\\1-x\end{array}\right]^T [x1−x]T×[0.80.30.20.7]=[x1−x]T解这个方程可以得到 x = 0.6 x=0.6 x=0.6, 也就是说,如果当前社会中上层人的比例为60%,下层人比例为40%, 那么以后的每一代中,该比例维持不变。 -
第二步,我们证明从任意分布出发,经过一定次数的转移之后,都可以到达这个稳定的分布。我们假设当前的分布为 ( x t x_t xt, 1 − x t 1-x_t 1−xt),且 x t > 0.6 x_t>0.6 xt>0.6。那么经过一次转移之后,上层人的比例为 x t + 1 = 0.3 + 0.5 x t x_{t+1}=0.3 + 0.5x_t xt+1=0.3+0.5xt,且 0.6 < x t + 1 < x t 0.6<x_{t+1}<x_t 0.6<xt+1<xt 。同理,如果 x t < 0.6 x_t<0.6 xt<0.6,我们可以得到 x t < x t + 1 < 0.6 x_t<x_{t+1}<0.6 xt<xt+1<0.6。因此,无论初始的 x t x_t xt是多少,最终都会向0.6收敛。
通过以上两步,我们证明了,无论初始状态下社会阶层的分布是怎样的,在误差允许的范围内, 我们可以经过有限步的转移,到达稳定的状态——60%的上层人,40%的下层人。
我们刚刚用阶层转移的例子讨论了最简单的情况 —— 随机变量
X
X
X是一维离散的,并且只在两个点上取值。我们可以将其推广到一般的情形 ——
X
X
X是高维随机变量,取值空间为
Θ
\Theta
Θ,
f
(
X
t
+
1
∣
X
t
)
f(X_{t+1}|X_t)
f(Xt+1∣Xt)是条件密度函数。假设我们现在有一个定义在
Θ
\Theta
Θ上的任意分布,其密度函数为
π
0
(
x
)
\pi_0(x)
π0(x),那么我们将
π
0
(
x
)
\pi_0(x)
π0(x)按照
f
(
X
t
+
1
∣
X
t
)
f(X_{t+1}|X_t)
f(Xt+1∣Xt)进行转移,依次得到
π
1
(
x
)
,
π
2
(
x
)
⋯
\pi_1(x), \pi_2(x)\cdots
π1(x),π2(x)⋯,那么这一个分布序列最终会收敛到某个稳定的分布
π
(
x
)
\pi(x)
π(x)。
π
t
(
x
)
\pi_t(x)
πt(x)到
π
t
+
1
(
x
)
\pi_{t+1}(x)
πt+1(x)的转移过程可以由以下等式描述:
π
t
+
1
(
x
)
=
∫
y
∈
Θ
f
(
x
∣
y
)
π
t
(
y
)
d
y
\pi_{t+1}(x)=\int_{y \in \Theta}f(x|y)\pi_t(y)dy
πt+1(x)=∫y∈Θf(x∣y)πt(y)dy
这个等式的含义是显然的, t + 1 t+1 t+1时刻的状态 x x x可能由 t t t时刻任意状态 y y y转移而得到,这个事件的概率为 f ( x ∣ y ) π t ( y ) f(x|y)\pi_t(y) f(x∣y)πt(y),我们对所有可能的 y y y求和(积分),便得到 π t + 1 ( x ) \pi_{t+1}(x) πt+1(x)。
这种收敛性是否对于任意的转移概率 f ( X t + 1 ∣ X t ) f(X_{t+1}|X_t) f(Xt+1∣Xt)都成立呢?马尔可夫链收敛性的证明是一个复杂的问题,鉴于我并没有研究过,这里只列出结论:
- f ( X t + 1 ∣ X t ) f(X_{t+1}|X_t) f(Xt+1∣Xt)是非周期的。所谓周期性,就是存在至少一个分布 π ( x ) \pi(x) π(x),经过有限步的转移之后,再次回到 π ( x ) \pi(x) π(x)。我们遇到的绝大多数马尔可夫链都是非周期的
- 随机变量 X X X的任意两个状态是连通的。也就是说,对于任意两个状态 x i , x j x_i, x_j xi,xj, 从 x i x_i xi出发, 经过有限次的转移之后,我们可以转移到状态 x j x_j xj
总结一下,如果我们有一组条件分布 f ( X t + 1 ∣ X t ) f(X_{t+1}|X_t) f(Xt+1∣Xt),满足非周期性和连通性,那么我们从随机变量 X X X的任意分布 π 0 ( x ) \pi_0(x) π0(x)出发,按照该条件分布进行转移,会收敛到某个稳定的分布 π ( x ) \pi(x) π(x)。到这里,马尔科夫链与采样似乎产生了联系,在下一篇里我们将详细讨论,如何借助马尔科夫链,来实现从任意分布中采样。
文章列表:
漫谈MCMC与Gibbs采样(一)—— 采样背后的逻辑
漫谈MCMC与Gibbs采样(二)—— 拒绝采样
漫谈MCMC与Gibbs采样(三)—— 有趣的马尔科夫链
漫谈MCMC与Gibbs采样(四)—— Monte Carlo Markov Chain
漫谈MCMC与Gibbs采样(五)—— M-H采样与Gibbs采样