1. 引言

隐马尔可夫模型(Hidden Markov Model, HMM)是一种经典统计模型,自20世纪60年代提出以来,被广泛应用于多个科学领域,至今仍被广泛用于处理序列建模任务。

最初用于语音识别,后来被用于词性标注、时间序列分析、基因预测、交通优化等多个领域。

✅ HMM之所以有效,是因为它基于坚实的数学原理,结构简单但具有高度通用性。

2. 模型原理

2.1. 一个猜天气的游戏

Alice和Bob每天通过电话聊天,Bob会告诉她当天做了什么活动。Alice的任务是根据这些活动推断天气情况。

简化设定如下:

  • Bob的活动:散步、购物、打扫
  • 天气状态:晴天、雨天

💡 核心思想:观察到的活动依赖于不可见的天气状态,天气本身遵循某种状态转移规律。

2.2. 马尔可夫性质

HMM的一个关键假设是马尔可夫性质(Markov Property):

下一状态只与当前状态有关,与更早的历史无关。

数学表达如下:

$$ p(s_{t+1} \mid s_t, s_{t-1}) = p(s_{t+1} \mid s_t) $$

图示如下:

h1

2.3. 马尔可夫链

根据Alice的经验,她可以构建一个天气状态转移的概率模型:

  • 若昨天是晴天:
    • 今天晴天的概率为 0.6
    • 今天下雨的概率为 0.4
  • 若昨天是雨天:
    • 今天继续下雨的概率为 0.7
    • 今天转晴的概率为 0.3

初始状态概率:

  • 雨天开始:0.6
  • 晴天开始:0.4

图示如下:

h2

状态转移矩阵 A:

$$ A = \begin{bmatrix} 0.6 & 0.4 \ 0.3 & 0.7 \end{bmatrix} $$

初始概率向量 π:

$$ \pi = \begin{bmatrix} 0.4 & 0.6 \end{bmatrix} $$

2.4. 发射概率(Emission Probabilities)

每种天气下,Bob的活动概率不同:

  • 晴天:
    • 散步:0.8
    • 购物:0.1
    • 打扫:0.1
  • 雨天:
    • 散步:0.1
    • 购物:0.4
    • 打扫:0.5

发射概率矩阵 B:

$$ B = \begin{bmatrix} 0.8 & 0.1 & 0.1 \ 0.1 & 0.4 & 0.5 \end{bmatrix} $$

图示如下:

h3

3. 评估问题(Evaluation Problem)

我们的问题是:给定一个观察序列(如:散步、购物、打扫),这个模型生成该序列的概率是多少?

数学表达为:

$$ p(O_T \mid \theta) = ? $$

其中:

  • $ O_T $:观察序列
  • $ \theta $:模型参数(A、B、π)

3.1. 暴力解法

对于每个可能的状态序列 $ S_q $,计算其与观察序列的联合概率,再求和:

$$ p(O \mid \theta) = \sum_{q=1}^{Q} p(O, S_q \mid \theta) $$

但计算复杂度极高,达到 $ O(T \times N^T) $,不可行。

3.2. 前向算法(Forward Algorithm)

通过动态规划优化,使用前向变量 $ \alpha_t(i) $ 表示在时间 t 时处于状态 i 且观察序列匹配的概率。

定义如下:

  • 初始值: $$ \alpha_1(i) = \pi_i b_i(O_1) $$
  • 递归公式: $$ \alpha_{t+1}(j) = \left( \sum_{i=1}^N \alpha_t(i) a_{ij} \right) b_j(O_{t+1}) $$

最终结果:

$$ p(O_T \mid \theta) = \sum_{i=1}^N \alpha_T(i) $$

图示如下:

h4

复杂度优化为 $ O(T \times N^2) $,大幅提升了效率。

3.3. 后向算法(Backward Algorithm)

与前向算法对称,后向变量 $ \beta_t(i) $ 表示在时间 t 时处于状态 i 且后续观察序列匹配的概率。

定义如下:

  • 初始值: $$ \beta_T(i) = 1 $$
  • 递归公式: $$ \beta_t(i) = \sum_{j=1}^N a_{ij} b_j(O_{t+1}) \beta_{t+1}(j) $$

图示如下:

h5

4. 解码问题(Decoding Problem)

核心问题:给定观察序列,最可能的状态序列是什么?

4.1. Viterbi 算法

使用动态规划思想,定义变量 $ \delta_t(i) $ 表示在时间 t 时处于状态 i 且路径最优的概率,同时记录路径来源 $ \psi_t(i) $。

定义如下:

  • 初始值: $$ \delta_1(i) = \pi_i b_i(O_1), \quad \psi_1(i) = 0 $$
  • 递归公式: $$ \delta_t(j) = \max_{1 \le i \le N} \left[ \delta_{t-1}(i) a_{ij} \right] b_j(O_t) $$ $$ \psi_t(j) = \arg\max_{1 \le i \le N} \left[ \delta_{t-1}(i) a_{ij} \right] $$

最终通过回溯重建路径。

图示如下:

h7

5. 总结

  • HMM 是一种基于马尔可夫性质的统计模型,广泛用于序列建模。
  • 包含三个核心参数:状态转移矩阵 A、发射矩阵 B、初始概率 π。
  • 通过 Forward-Backward 算法可以高效评估模型生成观察序列的概率。
  • Viterbi 算法可用于解码隐藏状态序列,是 HMM 实际应用的关键。

💡 踩坑提醒:不要直接暴力枚举所有状态序列,否则在实际应用中根本无法运行。一定要使用动态规划方法如 Forward 和 Viterbi 算法。

✅ HMM 的优势在于模型简洁、数学基础扎实,适合处理具有时序依赖的问题。


原始标题:An Introduction to the Hidden Markov Model