Hidden Markov Models: A Probabilistic View of Time Series

Hyacehila

引言:从静态到动态

在上一篇关于贝叶斯网络的讨论中,我们处理的数据大多是静态的 (Static)——即假设样本之间是独立同分布 (i.i.d.) 的。但现实世界里充满序列 (Sequential) 数据:语音是一连串的声波,文本是一连串的单词,股票是一连串的价格。

在这些数据中,前后的观测值往往存在依赖关系。为了给随时间演变的动态系统建模,我们需要引入“时间”维度。隐马尔可夫模型 (Hidden Markov Model, HMM) 正是这类动态贝叶斯网络 (Dynamic Bayesian Network) 的简化且典型的代表。

模型定义:双重随机过程

HMM 描述了一个含有隐含未知参数的马尔可夫过程,其思想集中在双重随机过程

  1. 隐状态序列 (Hidden State Sequence) Q={q1,q2,,qT}Q = \{q_1, q_2, \dots, q_T\}: 这是系统在不同时刻所处的真实状态,但我们无法直接观测到。这些状态的转移满足马尔可夫性
  2. 观测序列 (Observation Sequence) O={o1,o2,,oT}O = \{o_1, o_2, \dots, o_T\}: 这是我们在每个时刻观察到的数据。它仅由当前的隐状态决定。

HMM 的五元组

一个完整的 HMM 由五个要素确定,记为 λ=(N,M,A,B,π)\lambda = (N, M, A, B, \pi)

  • 状态集合 S={s1,,sN}S = \{s_1, \dots, s_N\}:隐状态可能取值的集合(如:天气及其 {晴,雨,阴})。
  • 观测集合 V={v1,,vM}V = \{v_1, \dots, v_M\}:观测值可能取值的集合(如:活动及其 {散步,清洁,购物})。
  • 状态转移矩阵 A=[aij]A = [a_{ij}]aij=P(qt+1=sjqt=si) a_{ij} = P(q_{t+1} = s_j \mid q_t = s_i) 表示从状态 ii 转移到状态 jj 的概率。
  • 观测发射矩阵 (Emission Probability) B=[bj(k)]B = [b_j(k)]bj(k)=P(ot=vkqt=sj) b_j(k) = P(o_t = v_k \mid q_t = s_j) 表示在状态 jj 下观测到符号 kk 的概率。
  • 初始状态分布 π=[πi]\pi = [\pi_i]πi=P(q1=si) \pi_i = P(q_1 = s_i)

两个基本假设

  1. 齐次马尔可夫假设:任意时刻 tt 的状态只依赖于前一时刻 t1t-1 的状态,与更早的状态无关。P(qtqt1,ot1,,q1,o1)=P(qtqt1) P(q_t \mid q_{t-1}, o_{t-1}, \dots, q_1, o_1) = P(q_t \mid q_{t-1})
  2. 观测独立性假设:任意时刻 tt 的观测值只依赖于该时刻的状态 qtq_t,与其他时刻的状态或观测无关。P(otqT,oT,,q1,o1)=P(otqt) P(o_t \mid q_T, o_T, \dots, q_1, o_1) = P(o_t \mid q_t)

HMM 的三个核心问题

HMM 的应用通常围绕三个经典问题展开:

概率计算问题 (Evaluation)

问题:给定模型 λ=(A,B,π)\lambda = (A, B, \pi) 和观测序列 OO,计算该序列出现的概率 P(Oλ)P(O \mid \lambda)

直接计算需要遍历所有可能的隐状态序列 QQ,复杂度高达 O(NTT)O(N^T \cdot T),计算上不可行。这里采用动态规划思想的前向算法 (Forward Algorithm)

定义前向概率 αt(i)\alpha_t(i):时刻 tt 观测序列为 o1,,oto_1, \dots, o_t 且状态为 sis_i 的概率。

αt(i)=P(o1,,ot,qt=siλ) \alpha_t(i) = P(o_1, \dots, o_t, q_t = s_i \mid \lambda)

递推公式

  1. 初值α1(i)=πibi(o1) \alpha_1(i) = \pi_i b_i(o_1)
  2. 递推:(对于 t=1,,T1t = 1, \dots, T-1)αt+1(j)=[i=1Nαt(i)aij]bj(ot+1) \alpha_{t+1}(j) = \left[ \sum_{i=1}^N \alpha_t(i) a_{ij} \right] b_j(o_{t+1})
  3. 终值P(Oλ)=i=1NαT(i) P(O \mid \lambda) = \sum_{i=1}^N \alpha_T(i)

该算法将复杂度降低到了 O(N2T)O(N^2 \cdot T)

解码问题 (Decoding)

问题:给定模型 λ\lambda 和观测序列 OO,寻找最有可能产生该观测序列的隐状态序列 QQ^*。即求 argmaxQP(QO,λ)\arg\max_Q P(Q \mid O, \lambda)

这是典型的最优路径规划问题,可用维特比算法 (Viterbi Algorithm) 求解。

定义 δt(i)\delta_t(i):在时刻 tt 状态为 sis_i 的所有路径中,概率最大的那条路径的概率。

递推公式

  1. 初值δ1(i)=πibi(o1),ψ1(i)=0 \delta_1(i) = \pi_i b_i(o_1), \quad \psi_1(i) = 0
  2. 递推:(寻找到达状态 jj 的最大概率来源)δt(j)=max1iN[δt1(i)aij]bj(ot) \delta_t(j) = \max_{1 \le i \le N} [\delta_{t-1}(i) a_{ij}] b_j(o_t) ψt(j)=argmax1iN[δt1(i)aij] \psi_t(j) = \arg\max_{1 \le i \le N} [\delta_{t-1}(i) a_{ij}] (记录路径回溯点)
  3. 回溯: 最优路径终点 P=maxiδT(i)P^* = \max_i \delta_T(i),终点状态 qT=argmaxiδT(i)q_T^* = \arg\max_i \delta_T(i)。 从 t=T1t=T-111 倒推:qt=ψt+1(qt+1)q_t^* = \psi_{t+1}(q_{t+1}^*)

学习问题 (Learning)

问题:已知观测序列 OO,估计模型参数 λ=(A,B,π)\lambda = (A, B, \pi) 使得 P(Oλ)P(O \mid \lambda) 最大化。

由于包含隐变量,无法直接使用 MLE。这是 EM 算法 (Expectation-Maximization) 的经典应用场景;在 HMM 中,该算法被称为 Baum-Welch 算法

E 步 (Expectation): 计算两个统计量(利用前向变量 α\alpha 和后向变量 β\beta):

  • ξt(i,j)\xi_t(i, j):时刻 tt 处于状态 ii 且时刻 t+1t+1 处于状态 jj 的概率。 ξt(i,j)=P(qt=i,qt+1=jO,λ)=αt(i)aijbj(ot+1)βt+1(j)k=1Nl=1Nαt(k)aklbl(ot+1)βt+1(l) \xi_t(i, j) = P(q_t=i, q_{t+1}=j \mid O, \lambda) = \frac{\alpha_t(i) a_{ij} b_j(o_{t+1}) \beta_{t+1}(j)}{\sum_{k=1}^N \sum_{l=1}^N \alpha_t(k) a_{kl} b_l(o_{t+1}) \beta_{t+1}(l)}
  • γt(i)\gamma_t(i):时刻 tt 处于状态 ii 的概率。 γt(i)=j=1Nξt(i,j) \gamma_t(i) = \sum_{j=1}^N \xi_t(i, j)

M 步 (Maximization): 更新参数:

  • 状态转移概率a^ij=t=1T1ξt(i,j)t=1T1γt(i) \hat{a}_{ij} = \frac{\sum_{t=1}^{T-1} \xi_t(i, j)}{\sum_{t=1}^{T-1} \gamma_t(i)} (直观理解:从 ii 转移到 jj 的期望次数 / 从 ii 出发的期望总次数)
  • 观测概率b^j(k)=t=1,ot=vkTγt(j)t=1Tγt(j) \hat{b}_j(k) = \frac{\sum_{t=1, o_t=v_k}^T \gamma_t(j)}{\sum_{t=1}^T \gamma_t(j)}

案例:词性标注 (Part-of-Speech Tagging)

HMM 在自然语言处理中应用广泛,词性标注即为一例。

  • 观测值:单词序列(如 “I love data”)。
  • 隐状态:词性标签(如 “Pronoun”, “Verb”, “Noun”)。
  • 目标:给定句子,推断最可能的词性序列(解码问题)。

通过在大规模标注语料库上统计单词与词性的共现频率(估计 BB)以及词性间的转移频率(估计 AA),即可利用维特比算法从新的句子中恢复出词性结构。

总结

隐马尔可夫模型通过引入隐状态和两个独立性假设,处理了时间序列建模问题。前向算法负责概率计算,维特比算法负责解码,Baum-Welch 算法负责无监督学习。

尽管现代深度学习(如 RNN, LSTM, Transformer)在许多任务上已经超越 HMM,但 HMM 提供的概率图框架和动态规划思想仍是理解序列模型的基础。

在下一篇文章中,我们将把视线从有向图移开,探讨马尔可夫随机场 (MRF),看看当箭头消失、图结构变为无向时,概率图模型又展现出怎样的特性。

  • Title: Hidden Markov Models: A Probabilistic View of Time Series
  • Author: Hyacehila
  • Created at : 2026-02-10 04:00:00
  • Link: https://hyacehila.github.io//blog/2026/02/10/hidden-markov-model/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments