隐 Markov 模型的概率结构
层级:B|建议先修:05-08、08-02、08-05
隐 Markov 模型(Hidden Markov Model, HMM)描述这样一类序列:系统内部状态按 Markov 链演化,但状态不可直接观察;我们只能看到由状态随机产生的观测。
1. 两条序列
设时间为 t=1,…,T:
- 隐状态 Zt∈{1,ldots,K};
- 观测 Xt,可以离散,也可以连续。
例如语音识别中,音素状态不可直接看到,声学信号是观测;词性标注中,词性是隐状态,单词是观测。
2. 三组参数
一个基本 HMM 由以下参数组成:
- 初始分布 πi=P(Z1=i);
- 转移概率 Aij=P(Zt=j∣Zt−1=i);
- 发射分布 p(Xt∣Zt),离散时可写 Bik=P(Xt=k∣Zt=i)。
若参数不随时间改变,称为齐次 HMM。
3. 两个核心假设
一阶状态 Markov 假设:
p(zt∣z1:t−1)=p(zt∣zt−1).
观测条件独立假设:
p(xt∣z1:T,x1:t−1)=p(xt∣zt).
即给定当前隐状态后,当前观测不再依赖其他状态和观测。
4. 联合分布因子分解
HMM 的 DAG 是一条状态链,每个状态指向对应观测。因此
p(z1:T,x1:T)=p(z1)p(x1∣z1)t=2∏Tp(zt∣zt−1)p(xt∣zt).
这个分解是所有推断与学习算法的起点。
5. 三类基本问题
5.1 评估
给定模型和观测序列,计算
p(x1:T)=z1:T∑p(z1:T,x1:T).
直接枚举有 KT 条状态路径;前向算法把复杂度降到 O(TK2)。
5.2 解码
寻找最可能的完整状态路径:
z1:T∗=argz1:Tmaxp(z1:T∣x1:T).
Viterbi 算法使用“最大值”动态规划。它与逐时刻选择最大边缘概率的结果并不一定相同。
5.3 学习
给定观测序列估计 π,A,B。状态完全已知时可按频数或极大似然估计;状态隐藏时使用 Baum–Welch 算法,它是 EM 在 HMM 上的特例。
6. 前向变量
定义
αt(i)=p(x1:t,Zt=i).
初始化:
α1(i)=πip(x1∣i).
递推:
αt(j)=p(xt∣j)i∑αt−1(i)Aij.
终止:
p(x1:T)=i∑αT(i).
其本质是把通向同一当前状态的历史路径概率合并。
7. 后向变量与平滑
定义
βt(i)=p(xt+1:T∣Zt=i).
递推为
βt(i)=j∑Aijp(xt+1∣j)βt+1(j),
且 βT(i)=1。前向与后向量结合可求平滑后验:
p(Zt=i∣x1:T)∝αt(i)βt(i).
8. 过滤、预测与平滑
- 过滤:p(Zt∣x1:t),只用截至当前的观测;
- 预测:p(Zt+h∣x1:t),预测未来状态;
- 平滑:p(Zt∣x1:T),用未来观测反推过去状态。
这三类问题在一般状态空间模型中同样存在。
9. Viterbi 递推
定义到达状态 j 的最佳路径分数
δt(j)=z1:t−1maxp(z1:t−1,Zt=j,x1:t).
递推为
δt(j)=p(xt∣j)imax[δt−1(i)Aij].
同时保存取得最大值的前驱指针,终点确定后反向回溯整条路径。
10. Baum–Welch 的统计量
E 步通过前向–后向计算:
γt(i)=p(Zt=i∣x1:T),
以及
ξt(i,j)=p(Zt=i,Zt+1=j∣x1:T).
M 步用这些“软计数”更新初始、转移和发射参数。EM 保证观测数据似然不下降,但只能保证收敛到局部驻点。
11. 数值稳定
长序列中大量小概率相乘会下溢。常见处理:
- 每个时刻对前向、后向量缩放并累计缩放因子;
- 在对数域计算,把乘法变成加法,并用 log-sum-exp 处理求和;
- Viterbi 直接在对数域把乘积最大化改为和最大化。
12. HMM 的局限与扩展
HMM 的状态持续时间隐含几何分布,观测只依赖当前离散状态。扩展包括高阶 HMM、隐半 Markov 模型、线性动态系统、切换状态空间模型以及用神经网络参数化转移和发射分布。
13. 易错点
- 最可能路径不等于每个时刻最可能状态的拼接。
- HMM 的观测序列通常不是独立的;它们通过隐状态相关。
- 状态编号可置换,导致参数标签不可识别,但预测分布不变。
- 零转移概率会永久禁止某些路径,初始化要谨慎。
常见问答
Q1:为什么“隐”状态仍能学习?
不同状态对观测产生不同分布,序列中的统计模式提供间接证据;EM 对状态后验进行软分配。
Q2:前向算法和 Viterbi 有什么本质区别?
前向对所有路径求和以算总概率;Viterbi 对路径取最大值以找最佳路径。
Q3:HMM 能处理连续观测吗?
可以,只需把发射概率表换成高斯、混合高斯等密度模型。
Q4:为什么 Baum–Welch 对初始化敏感?
观测似然通常非凸,EM 可能收敛到不同局部最优或退化解。
练习
- 为两状态、三个时刻的 HMM 写出完整联合概率分解。
- 说明直接求 p(x1:T) 的复杂度为什么是 O(KT),前向算法为何是 O(TK2)。
- 写出 p(Zt=i∣x1:T) 的归一化表达式。
- 比较过滤和平滑所使用的观测范围。
答案与提示
- p(z1)p(x1∣z1)p(z2∣z1)p(x2∣z2)p(z3∣z2)p(x3∣z3)。
- 路径数为 KT;动态规划每个时刻的每个新状态对 K 个旧状态求和,共约 TK2。
- αt(i)βt(i)/∑jαt(j)βt(j)。
- 过滤只用 x1:t,平滑使用完整 x1:T。