马尔可夫链

定义

Markov chain:

image

马尔可夫属性:第 \(n+1\) 步的状态 \(X_{n+1}=x\) 的概率分布只与第 \(n\) 步的状态 \(X_n\) 有关。而与 \(n\) 步之前的所有状态都无关。

\[P\left(X_{n+1}=x \mid X_1=x_1, X_2=x_2, \ldots, X_n=x_n\right) = P\left(X_{n+1}=x \mid X_n=x_n\right) \]

对于一个随机游走得到的马尔可夫链 \(X_1 \to X_2 \to \ldots \to X_n\),我们可以得到某特定事件发生的概率为 \(P(x) = \frac{事件发生次数}{n}\)。当 \(n\to \infty\) 时,这个概率会收敛到一个定值,此时我们说这个马尔可夫链达到了平衡态(Equilibrium State)。

转移矩阵

\[A = \begin{bmatrix} 0.2 & 0.6 & 0.2 \\ 0.3 & 0 & 0.7 \\ 0.5 & 0 & 0.5 \end{bmatrix} \]

\(A\) 的行向量表示从指定状态转移到其他状态的概率。即:\(A_{ij} = P(X_{n+1} = j \mid X_n = i)\)

我们使用一个行向量 \(\pi_i\) 表示第 \(i\) 个时间步下状态的概率分布。

  1. 假设初始状态为 \(1\)\(S = \{0, 1, 2\}\)),那么 \(\pi_0 = \begin{bmatrix}0 & 1 & 0\end{bmatrix}\)
  2. 经过一步随机游走后,可以得到此时的状态分布 \(\pi_1 = \pi_0 A = \begin{bmatrix}0.3 & 0 & 0.7\end{bmatrix}\)
  3. 经过无穷次随机游走后,我们达到平衡态,此时有稳定分布 \(\pi = \lim_{n\to\infty}\pi_0 A^n\)
  4. 在平衡态下,有 \(\pi A = \pi\)
  5. 根据特征向量的定义 \(Av = \lambda v\),可以将 \(\pi\) 看作 \(A\) 的特征值为 \(1\) 的左特征向量。
  6. 因此,通过解联合方程 \(\begin{cases} \pi A = \pi \\ \sum_{i=1}^{n} \pi[i] = 1 \end{cases}\) 就可以求得 \(\pi\)

Markov Chains Clearly Explained!

瞬时态和常返态

image

  1. 观察状态 0。发现从 0 出发,不一定能回到 0(回到 0 的概率不是 1),我们称 0 为瞬时态(Transient State)。
  2. 观察状态 1,发现从 1 出发,一定能回到 1(回到 1 的概率是 1),我们称 1 为常返态(Recurrent State)

通信类

如果从一个状态出发,不能到达所有状态,那么这个马尔可夫链是可约的(Reducible)。即,其状态空间可以划分为多个互不连通的子集。在本例中,马尔可夫链可规约为下面两个子链:

image

另一个例子:

image

对于这个马尔可夫链,可以基于能否双向通信将状态划分为三个通信类(Communicating Class):\(S_0 = \{0\},\ S_1 = \{1, 2\},\ S_2 = \{3\}\)

Markov Chains: Recurrence, Irreducibility, Classes

\(n\) 步转移矩阵

从状态 \(i\) 出发,经过 \(n\) 步,到达状态 \(j\) 的概率 \(P_{ij}(n) = A^n_{ij}\)

\(n\to\infty\) 时,转移矩阵 \(A^n\) 会收敛为如下形式:

\[\lim_{n\to\infty}A^{n} = \begin{bmatrix} \pi_0 & \pi_1 & \pi_2 \\ \pi_0 & \pi_1 & \pi_2 \\ \pi_0 & \pi_1 & \pi_2 \end{bmatrix} \]

也就是说,从任意状态出发,经过无限步,到达状态 \(j\) 的概率都是相同的(即,不依赖起始状态)。

\(A^n\) 收敛的条件:

  1. 不可约性
  2. 周期性

Markov Chains: n-step Transition Matrix

隐马尔可夫模型

条件:

  1. 我们无法观测马尔可夫链的状态序列(隐状态序列) \(X\)
  2. 但是能观测到受马尔可夫状态影响的观测变量的状态序列 \(Y\)
  3. 已知观测变量如何受马尔可夫状态影响(发射分布)。

目标:通过观测序列预测实际的隐状态序列。

转移矩阵与发射矩阵:

\[\begin{bmatrix} 0.5 & 0.3 & 0.2 \\ 0.4 & 0.2 & 0.4 \\ 0.0 & 0.3 & 0.7 \end{bmatrix} \begin{bmatrix} 0.9 & 0.1 \\ 0.6 & 0.4 \\ 0.2 & 0.8 \end{bmatrix} \]

给定观测序列,预测实际的隐状态序列:

\[\begin{aligned} & \underset{X=X_1, X_2, \ldots X_n}{\arg \max } P\left(X=X_1, X_2, \ldots X_n \mid Y=Y_1, Y_2, \ldots Y_n\right) \\ = & \underset{X=X_1, X_2, \ldots X_n}{\arg \max } \frac{P(Y \mid X) P(X)}{P(Y)} \\ = & \underset{X=X_1, X_2, \ldots X_n}{\arg \max } \prod_{i=1}^n P\left(Y_i \mid X_i\right) P\left(X_i \mid X_{i-1}\right) \end{aligned} \]

这里,\(P(X_0)\) 使用稳定分布,即 \(P(X_0) = \pi\)

Hidden Markov Model Clearly Explained!

前向算法

如果用朴素的方式计算 \(\underset{X=X_1, X_2, \ldots X_n}{\arg \max } \prod_{i=1}^n P\left(Y_i \mid X_i\right) P\left(X_i \mid X_{i-1}\right)\),会得到 \(2tn^t\) 的时间复杂度(\(t\) 是观测序列长度,\(n\) 是隐状态数量)。

观察计算过程会发现,有很多重复的计算步骤。可以使用递归的方法(动态规划)来避免重复计算,以降低计算复杂度。

Forward Algorithm Clearly Explained

代码:MarkovChainSimulation | Kaggle

参考:Markov Chains Clearly Explained! | YouTube

posted @ 2025-06-29 06:21  Undefined443  阅读(27)  评论(0)    收藏  举报