隐马尔可夫模型:观察序列概率估计(前向后向算法)
解码(decoding)问题(估计问题):给定观察序列O=O1O2⋯OT和模型μ=(A,B,π),计算观察序列O的概率,即P(O∣μ)。
穷举法:对于任意的状态序列Q=q1q2⋯qT,有
P(O∣Q;μ)=t=1∏T−1P(Ot∣qt,qt−1;μ)=bq1(O1)bq2(O2)⋯bqT(OT)(6-8)
P(Q;μ)=πq1aq1q2aq2q3⋯aqT−1qT(6-9)
P(O;μ)=Q∑P(O,Q;μ)=Q∑P(O∣Q;μ)P(Q;μ)=Q∑(πq1bq1(O1)t=1∏T−1aqtqt+1bqt+1(Ot+1))(6-11)
该方式的问题是计算时间复杂度呈指数增长,假高模型μ=(A,B,π)有N个不同的状态,时间长度为T,则可能状态序列数量为NT。前向算法(前向计算过程,forward procedure)通过动态规划方式使“指数爆炸”问题可以在时间复杂度为O(N2T)的范围内解决。HMM的动态规划问题–般用格架[Manning、Schitze,1999](trellis,lattice)组织形式描述。对于一个在某一时间结束在一定状态的HMM,每一个格(结点)记录该HMM所有输出符号的概率,较长子路径的概率可以由较短子路径的概率计算出来。
定义6-1(前向变量αt(i)):在t时刻,HMM输出序列为O=O1O2⋯Ot,并且状态为si的概率:
αt(i)=P(O1O2⋯Ot,qt=st;μ)(6-12)
由于P(O;μ)是在所有状态qT下观察到序列O=O1O2⋯OT的概率:
P(O;μ)=si∑P(O1O2⋯OT,qt=si;μ)=i=1∑NαT(i)(6-13)
因此,对P(O;μ)的计算可转变为前向变量αt(i)的快速计算。
在格架结构中,αt+1(j)存放在结点(sj,t+1)处,表示在已知观察序列O=O1O2⋯Ot+1的情况下,从t时刻到达t+1时刻的状态为sj的概率。从初始时刻到t+1时刻,HMM到达状态sj,并且输出观察序列为O=O1O2⋯Ot+1的过程可以分解为两个步骤:
-
从初始时刻到t时刻,HMM到达状态si并输出观察序列O=O1O2⋯Ot,概率为αt(i);
-
从状态si转移到状态sj,并在状态sj输Ot+1,概率为aijbj(Ot+1)。
由于HMM可以从N个不同的si转移到sj,因此,t+1时刻的前向变量可由t时刻前向变量αt(1),αt(2),⋯,αt(N)归纳计算:
αt+1(j)=(i=1∑Nαt(i)aij)bj(Ot+1)(6-14)
前向变量αt(i)可采用动态规划方法计算。
算法6-1(前向算法,forward procedure):
- 初始化
α1(i)=πibi(O1),1≤i≤N
- 归纳计算
αt+1(j)=(i=1∑Nαt(i)aij)bj(Ot+1), 1≤t≤T−1
- 求和:
P(O∣μ)=i=1∑NαT(i)
前向算法总体时间复杂度为O(N2T)。
P(O;μ)还可以转变为后向变量βt(i),通过动态规划快速计算。
定义6-2(后向变量βt(i)):给定模型μ=(A,B,π),并且在t时刻状态为si的条件下,HMM输出观察序列O=Ot+1Ot+2⋯OT的概率:
βt(i)=P(Ot+1Ot+2⋯OT∣qt=st;μ)(6-15)
在t时刻状态为si的条件下,HMM输出观察序列为O=Ot+1Ot+2⋯OT的过程可以分解为两个步骤:
-
从t时刻到t+1时刻,HMM由状态si转移至状态sj,并从状态sj输出Ot+1,概率为aijbj(Ot+1);
-
在t+1时刻、状态sj的条件下,HMM输出观察序列O=Ot+2⋯OT,概率为βt+1(j)。
因此:
βt(i)=j=1∑Naijbj(Ot+1)βt+1(j)(6-16)
算法6-2(后向算法,backward procedure):
- 初始化
βT(i)=1,1≤i≤N
- 归纳计算
βt(i)=j=1∑Naijbj(Ot+1)βt+1(j), T−1≥t≥1
- 求和:
P(O∣μ)=i=1∑Nπibi(O1)β1(i)
后向算法的时间复杂度为O(N2T)。
一般采用前向、后向算法结合的方法计算观察序列的概率:
P(O,qt=si;μ)=P(O1O2⋯OT,qt=si;μ)=P(O1O2⋯Ot,qt=si,Ot+1Ot+2⋯OT;μ)=P(O1O2⋯Ot,qt=si;μ)P(Ot+1Ot+2⋯OT∣O1O2⋯Ot,qt=si;μ)=P(O1O2⋯Ot,qt=si;μ)P(Ot+1Ot+2⋯OT∣qt=si;μ)=αt(i)βt(i)(6-17)
因此
P(O;μ)=i=1∑Nαt(i)βt(i), 1≤t≤T(6-18)