- 说明:这部分是统计自然语言处理中比较重要的部分,目前作为了解,了解其思想,有时间再补充细节。
- 隐马尔可夫模型(Hidden Markov Model,HMM)
- 可见状态链
- 隐含状态链:隐含状态之间存在转换概率(transition probability),马尔科夫状态链指的是隐含状态链。
- 输出概率(emission probability): 隐含状态和可见状态之间的一个概率。
- HMM模型主要用来求解三类问题:
假设隐含状态的个数为N,可见状态链的长度为T。- (0) 为其他三个问题铺垫,知道隐含状态数量,转换概率,隐含状态链,根据可见状态链,求解出现这个结果的概率。
解决方法:直接计算。 - (1) 预测问题-----知道隐含状态数量,转换概率,根据可见状态链,求解隐含状态链。
解决方法:
a. 通过穷举求解最大似然状态路径,O(NT)O(N^T)O(NT)。
b. 维特比算法(Viterbi algorithm),O(N∗N∗T)O(N*N*T)O(N∗N∗T)。 - (2) 概率计算问题-----知道隐含状态数量,转换概率,根据可见状态链,求解出现这个结果的概率。
解决方法:
a. 穷举遍历,O(NT)O(N^T)O(NT)。
b. 前向算法(forward algorithm),O(N∗T)O(N*T)O(N∗T)。
c. 后向算法(backward algorithm),O(N∗T)O(N*T)O(N∗T)。 - (3) 学习问题-----知道隐含状态数量,不知道转换概率,观测到很多可见状态链,想反推出每个转换概率。
解决方法:鲍姆-韦尔奇算法(Baum-Welch Algo),即EM算法。
- (0) 为其他三个问题铺垫,知道隐含状态数量,转换概率,隐含状态链,根据可见状态链,求解出现这个结果的概率。
- 形式化定义中的概念
- 状态序列,即隐含状态序列,设QQQ是所有可能状态的集合Q=q1,q2,…,qNQ=q_1,q_2,\dots,q_NQ=q1,q2,…,qN,III是长度为TTT的状态序列I=i1,i2,…,iTI=i_1,i_2,\dots,i_TI=i1,i2,…,iT。
- 观测序列,即可见状态序列,设VVV是所有可能观测的集合V=v1,v2,…,vMV=v_1,v_2,\dots,v_MV=v1,v2,…,vM,OOO是III对应的观测序列O=o1,o2,…,oTO=o_1,o_2,\dots,o_TO=o1,o2,…,oT。
- 状态转移矩阵:A=[aij]N×NA=[a_{ij}]_{N\times N}A=[aij]N×N
- 观测概率矩阵:B=[bjk]N×MB=[b_{jk}]_{N\times M}B=[bjk]N×M
- 初始状态概率向量:π=(πi)\pi=(\pi_{i})π=(πi), πi=P(i1=qi)\pi_i=P(i_1=q_i)πi=P(i1=qi)
- 隐马尔可夫模型的三要素:λ=(A,B,π)\lambda=(A,B,\pi)λ=(A,B,π)
引用
https://www.zhihu.com/question/20962240
https://applenob.github.io/hmm.html