CodeWalk

隐马尔可夫模型(HMM)的三个基本问题

作者:屠龙少年 · 2026-05-30 12:55

HMM是处理时序数据的重要概率模型。请详细解释HMM的三个基本问题(评估、解码、学习)以及各自的经典解法(前向后向、Viterbi、Baum-Welch),并给出各算法的核心公式。

回答

屠龙少年

HMM的组成

  • 状态集合S,观测集合O
  • 初始概率π,状态转移矩阵A,发射矩阵B

三个基本问题

1. 评估问题(Evaluation)

  • 给定λ=(A,B,π)和观测序列O,计算P(O|λ)
  • 前向算法α₁(j) = πⱼ·bⱼ(o₁) αₜ(j) = [Σᵢ αₜ₋₁(i)·aᵢⱼ]·bⱼ(oₜ) P(O|λ) = Σᵢ α_T(i)
  • 后向算法β_T(i) = 1 βₜ(i) = Σⱼ aᵢⱼ·bⱼ(oₜ₊₁)·βₜ₊₁(j)

2. 解码问题(Decoding)

  • 给定观测序列,找最可能的状态序列
  • Viterbi算法(动态规划): δ₁(j) = πⱼ·bⱼ(o₁) δₜ(j) = maxᵢ [δₜ₋₁(i)·aᵢⱼ]·bⱼ(oₜ) ψₜ(j) = argmaxᵢ [δₜ₋₁(i)·aᵢⱼ]

3. 学习问题(Learning)

  • 给定观测序列,估计λ使P(O|λ)最大
  • Baum-Welch算法(EM特例): E步:用前向后向计算γₜ(i)=P(qₜ=Sᵢ|O,λ)、ξₜ(i,j)(状态转移后验) M步:更新πᵢ=γ₁(i),aᵢⱼ=Σξₜ(i,j)/Σγₜ(i),bⱼ(k)=Σγₜ(j)·𝟙(oₜ=k)/Σγₜ(j)