隐马尔可夫模型(HMM)的前向-后向算法原理与计算过程
题目描述
隐马尔可夫模型(HMM)是一种用于建模时序数据的统计模型,包含隐藏状态序列和观测序列。前向-后向算法用于解决HMM的评估问题(Evaluation Problem),即给定模型参数λ=(A, B, π)和观测序列O=(o₁, o₂, ..., o_T),计算该观测序列出现的概率P(O|λ)。该算法通过动态规划高效计算概率,避免直接枚举所有可能的状态路径(计算复杂度指数级增长)。
1. HMM基本概念回顾
- 隐藏状态集:Q={q₁, q₂, ..., q_N},例如天气的“晴、雨”。
- 观测集:V={v₁, v₂, ..., v_M},例如活动的“散步、购物”。
- 状态转移矩阵A:A=[aᵢⱼ],aᵢⱼ=P(qⱼ|qᵢ)表示从状态qᵢ转移到qⱼ的概率。
- 观测概率矩阵B:B=[bⱼ(k)],bⱼ(k)=P(vₖ|qⱼ)表示在状态qⱼ下生成观测vₖ的概率。
- 初始状态分布π:π=[πᵢ],πᵢ=P(qᵢ)表示初始时刻处于状态qᵢ的概率。
2. 前向算法(Forward Algorithm)
目标:计算前向概率αₜ(i)=P(o₁, o₂, ..., oₜ, qₜ=qᵢ|λ),即截止到时刻t、且t时刻状态为qᵢ的联合概率。
步骤详解
-
初始化(t=1):
α₁(i) = πᵢ · bᵢ(o₁), i=1,2,...,N
(解释:初始状态为qᵢ的概率πᵢ,乘以在qᵢ下生成观测o₁的概率bᵢ(o₁)) -
递推(t=2 to T):
αₜ(j) = [∑ᵢ₌₁ᴺ αₜ₋₁(i)·aᵢⱼ] · bⱼ(oₜ)- ∑ᵢ₌₁ᴺ αₜ₋₁(i)·aᵢⱼ:t-1时刻所有可能状态qᵢ转移到qⱼ的概率加权和。
- 乘以bⱼ(oₜ):在状态qⱼ下生成当前观测oₜ的概率。
-
终止:
P(O|λ) = ∑ᵢ₌₁ᴺ α_T(i)
(解释:T时刻所有可能状态的联合概率之和即为观测序列的总概率)
示例:
假设N=2(晴、雨),T=3,观测序列为“散步、购物、散步”。
- t=1:计算α₁(晴)=π(晴)·b(晴|散步),α₁(雨)=π(雨)·b(雨|散步)。
- t=2:α₂(晴)=[α₁(晴)·a(晴→晴) + α₁(雨)·a(雨→晴)] · b(晴|购物)。
- t=3:类似计算α₃(晴)和α₃(雨),求和得P(O|λ)。
3. 后向算法(Backward Algorithm)
目标:计算后向概率βₜ(i)=P(oₜ₊₁, oₜ₊₂, ..., o_T | qₜ=qᵢ, λ),即已知t时刻状态为qᵢ时,后续观测序列的条件概率。
步骤详解
-
初始化(t=T):
β_T(i) = 1, i=1,2,...,N
(解释:T时刻后无观测,概率设为1) -
递推(t=T-1 to 1):
βₜ(i) = ∑ⱼ₌₁ᴺ aᵢⱼ · bⱼ(oₜ₊₁) · βₜ₊₁(j)- aᵢⱼ:从qᵢ转移到qⱼ的概率。
- bⱼ(oₜ₊₁):在qⱼ下生成观测oₜ₊₁的概率。
- βₜ₊₁(j):qⱼ下后续观测序列的概率。
-
应用:
P(O|λ) = ∑ᵢ₌₁ᴺ πᵢ · bᵢ(o₁) · β₁(i)
(与前向算法结果一致,可交叉验证)
4. 前向-后向结合的应用
-
平滑问题:计算某一时刻t处于状态qᵢ的概率γₜ(i)=P(qₜ=qᵢ|O, λ)。
由贝叶斯公式:
γₜ(i) = αₜ(i)βₜ(i) / P(O|λ)
(分子是联合概率P(O, qₜ=qᵢ|λ),分母由前向算法求得) -
参数学习:Baum-Welch算法(EM在HMM中的实现)利用γₜ(i)和相邻时刻的联合概率ξₜ(i,j)重新估计A、B、π。
5. 算法意义与复杂度
- 前向/后向算法将直接计算的复杂度从O(T·Nᵀ)降低到O(T·N²),适用于长序列。
- 核心思想:动态规划通过存储中间结果(αₜ(i)、βₜ(i))避免重复计算。
总结:前向-后向算法是HMM的基石,不仅解决评估问题,还为解码(Viterbi)和学习(Baum-Welch)提供基础。