文章目录
- 马尔可夫链
- 转移矩阵
- 例子
- 应用实例
- 参考
在阅读论文Denoising Diffusion Probabilistic Models时,发现论文里面介绍扩散概率模型(diffusion probabilistic model)是一个参数化的马尔科夫链(parameterized Markov chain),使用变分推理进行训练,以便能在有限的时间后产生与数据匹配的样本。为了能够深层次全面了解扩散模型的原理,所以先搁浅论文阅读,复习一些什么是马尔科夫链。
马尔可夫链
马尔可夫链是一个数学系统,它根据某些特定的概率规则从一个状态转换到另一个状态。马尔科夫的定义特征是:无论过程如何到达当前的状态,未来的状态都是固定的。也就是说,转换到任何特定状态的概率都取决于当前的状态和过去的时间。马尔可夫链是一个随机过程,而上述的特性也让它与一般的随机过程不同。马尔可夫链必须是“无记忆的”,未来行动的概率不取决于导致当前状态的步骤。,这被成为马尔可夫性质。
举一个小例子,便于快速理解马尔可夫性质。假设一个包里面有多个颜色的球,每次从包里面取出一个球,求每次得到一个特定颜色球的概率。这就构成了一个随机过程,随机变量是球的颜色。但是上述随机过程并不满足马尔科夫性质,每次取出球之后,包里球的总数会发生变化,那么 t t t时刻取出特定颜色球的概率受前 t − 1 t-1 t−1时刻所取球颜色的影响。那如何更改取球规则,才能使此随机过程满足马尔可夫性质呢?马尔可夫性质要求 t t t时刻取出特定颜色球的概率不受前 t − 1 t-1 t−1时刻的取球行为的影响,也就是说,每个时刻取球的概率是独立的。那我们更改条件,每次取球时记录球的颜色,然后将球再放入包中。这样,不论哪个时刻,包里球的总数是不变的,取出特定颜色的球的概率不受前几个时刻的取球动作的影响。这个随机过程满足马尔可夫链性质。
直白地说,一个马尔科夫链就是一系列满足条件独立规则的随机变量 X 0 , X 1 , X 2 , ⋯ X n X_{0}, X_{1}, X_{2}, \cdots X_{n} X0,X1,X2,⋯Xn。对任何正整数 n n n和随机变量的可能状态 i 0 , i 1 , ⋯ , i n i_{0}, i_{1}, \cdots, i_{n} i0,i1,⋯,in,马尔可夫性质可用公式表示为:
P ( X n = i n ∣ X n − 1 = i n − 1 ) = P ( X n = i n ∣ X 0 = i 0 , X 1 = i 1 , ⋯ , X n − 1 = i n − 1 ) P\left( X_{n} = i_{n} | X_{n-1} = i_{n-1} \right) = P\left( X_{n} = i_{n} | X_{0}=i_{0}, X_{1} = i_{1}, \cdots, X_{n-1} = i_{n-1} \right) P(Xn=in∣Xn−1=in−1)=P(Xn=in∣X0=i0,X1=i1,⋯,Xn−1=in−1)
转移矩阵
马尔科夫链 { X } \{X\} {X}在时刻 t t t的转移矩阵 P t P_{t} Pt是一个包含状态之间转换概率信息的矩阵。矩阵 P t P_{t} Pt第 i i i行第 j j j列的元素信息,用数学公式表示为: ( P t ) i , j = P ( X t + 1 = j ∣ X t = i ) \left( P_{t} \right)_{i,j} = \mathbb{P} \left( X_{t+1}=j | X_{t} = i \right) (Pt)i,j=P(Xt+1=j∣Xt=i)。由上述公式可以看出,转换矩阵的每一行是一个概率向量,向量里面元素和为1。
假设有
n
n
n个随机变量,其
t
t
t和
t
−
1
t-1
t−1时刻的转移矩阵分别为
P
t
P_{t}
Pt和
P
t
+
1
P_{t+1}
Pt+1,设
M
=
P
t
⋅
P
t
+
1
M = P_{t} \cdot P_{t+1}
M=Pt⋅Pt+1,计算
M
M
M第
i
i
i行第
j
j
j列的转移概率
M
i
,
j
M_{i,j}
Mi,j
M
i
,
j
=
∑
k
=
1
n
(
P
t
)
i
,
k
(
P
t
+
1
)
k
,
j
=
∑
k
=
1
n
P
(
X
t
+
1
=
k
∣
X
t
=
i
)
P
(
X
t
+
2
=
j
∣
X
t
+
1
=
k
)
=
P
(
X
t
+
2
=
j
∣
X
t
=
i
)
\begin{array}{l} M_{i,j} & =\sum_{k=1}^{n} \left( P_{t} \right)_{i,k} \left( P_{t+1} \right)_{k,j} \qquad \qquad \qquad \qquad \qquad \qquad \\ &= \sum_{k=1}^{n} \mathbb{P} \left( X_{t+1}=k | X_{t} = i \right) \mathbb{P} \left( X_{t+2}=j | X_{t+1} = k \right) \\ &= \mathbb{P} \left( X_{t+2}=j | X_{t} = i \right) \qquad \qquad \qquad \qquad \qquad \qquad \; \; \end{array}
Mi,j=∑k=1n(Pt)i,k(Pt+1)k,j=∑k=1nP(Xt+1=k∣Xt=i)P(Xt+2=j∣Xt+1=k)=P(Xt+2=j∣Xt=i)
那么
P
(
X
t
+
2
=
j
∣
X
t
=
i
)
=
(
P
t
⋅
P
t
+
1
)
i
,
j
\mathbb{P} \left( X_{t+2}=j | X_{t} = i \right) = \left( P_{t} \cdot P_{t+1} \right)_{i,j}
P(Xt+2=j∣Xt=i)=(Pt⋅Pt+1)i,j,依次类推,第
k
k
k步的转移方程为
P
t
(
k
)
=
P
t
⋅
P
t
+
1
⋯
P
t
+
k
−
1
P_{t}^{\left(k\right)} = P_{t} \cdot P_{t+1} \cdots P_{t+k-1}
Pt(k)=Pt⋅Pt+1⋯Pt+k−1。那么
P
t
(
k
)
P_{t}^{\left(k\right)}
Pt(k)的矩阵元素也可以表示如下:
例子
上述公式晦涩难懂,我们举一个小例子便于理解。下图描述的与时间无关的马尔科夫链,计算它的第二步转移矩阵?
如上所示,有两个变量 A A A和 B B B, A A A到 A A A的概率为 0.3 0.3 0.3, A A A到 B B B的概率为 0.7 0.7 0.7, B B B到 A A A的概率为 0.9 0.9 0.9, B B B到 B B B的概率为 0.1 0.1 0.1,那么它的初始转移矩阵为 ( 0.3 0.7 0.9 0.1 ) \begin{pmatrix} 0.3 & 0.7 \\ 0.9 & 0.1 \end{pmatrix} (0.30.90.70.1)
第二步时的转移矩阵计算如下所示,
初始状态为
A
A
A走两步到
A
A
A的概率为
0.72
0.72
0.72
初始状态为
A
A
A走两步到
B
B
B的概率为
0.28
0.28
0.28
初始状态为
B
B
B走两步到
A
A
A的概率为
0.36
0.36
0.36
初始状态为
B
B
B走两步到
B
B
B的概率为
0.64
0.64
0.64
应用实例
马尔可夫链在生活中被广泛应用,比如语音识别中的声学模型、天气的预测和股票价格的预测等等。与马尔可夫链最相关应用最广泛是隐马尔可夫模型(hidden Markov model,HMM),HMM是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可预测的状态随机序列,再由各个状态生成一个观测从而产生观测随机序列的过程。HMM的具体实现见我的博文隐马尔可夫模型。
参考
- Markov Chains