- 说明:这部分是统计自然语言处理中比较重要的部分,目前作为了解,了解其思想,有时间再补充细节。
- 隐马尔可夫模型(Hidden Markov Model,HMM)
- 可见状态链
- 隐含状态链:隐含状态之间存在转换概率(transition probability),马尔科夫状态链指的是隐含状态链。
- 输出概率(emission probability): 隐含状态和可见状态之间的一个概率。
- HMM模型主要用来求解三类问题:
假设隐含状态的个数为N,可见状态链的长度为T。- (0) 为其他三个问题铺垫,知道隐含状态数量,转换概率,隐含状态链,根据可见状态链,求解出现这个结果的概率。
解决方法:直接计算。 - (1) 预测问题-----知道隐含状态数量,转换概率,根据可见状态链,求解隐含状态链。
解决方法:
a. 通过穷举求解最大似然状态路径, O ( N T ) O(N^T) O(NT)。
b. 维特比算法(Viterbi algorithm), O ( N ∗ N ∗ T ) O(N*N*T) O(N∗N∗T)。 - (2) 概率计算问题-----知道隐含状态数量,转换概率,根据可见状态链,求解出现这个结果的概率。
解决方法:
a. 穷举遍历, O ( N T ) 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) 为其他三个问题铺垫,知道隐含状态数量,转换概率,隐含状态链,根据可见状态链,求解出现这个结果的概率。
- 形式化定义中的概念
- 状态序列,即隐含状态序列,设 Q Q Q是所有可能状态的集合 Q = q 1 , q 2 , … , q N Q=q_1,q_2,\dots,q_N Q=q1,q2,…,qN, I I I是长度为 T T T的状态序列 I = i 1 , i 2 , … , i T I=i_1,i_2,\dots,i_T I=i1,i2,…,iT。
- 观测序列,即可见状态序列,设 V V V是所有可能观测的集合 V = v 1 , v 2 , … , v M V=v_1,v_2,\dots,v_M V=v1,v2,…,vM, O O O是 I I I对应的观测序列 O = o 1 , o 2 , … , o T O=o_1,o_2,\dots,o_T O=o1,o2,…,oT。
- 状态转移矩阵: A = [ a i j ] N × N A=[a_{ij}]_{N\times N} A=[aij]N×N
- 观测概率矩阵: B = [ b j k ] N × M B=[b_{jk}]_{N\times M} B=[bjk]N×M
- 初始状态概率向量: π = ( π i ) \pi=(\pi_{i}) π=(πi), π i = P ( i 1 = q i ) \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