前向算法
前向算法与后向算法用来计算观测序列概率P(O∣λ), 即以当前的HMM产生指定的观测序列O的概率.
前向算法
前向概率/部分概率: 对于给定的隐马尔可夫模型λ, 定义为t时刻部分观测序列为o1, o2, ..., ot且当前状态为qi的概率. 即在给定观测序列的情况下, t时刻到达某一中间状态的概率. 记为:
αt(i)=P(o1,o2,...,ot,it=qi∣λ),i=1,2,...,N
观测序列概率的前向算法
初始状态, 对于每一个状态, 都是直接指定的, 没有路径到达, 因此定义初始状态的前向概率为:
α1(i)=πibi(o1),i=1,2,...,N
递推获得中间某一时刻某个状态下的前向概率. 计算方法如下
αt(i)=P(observation∣hidden state is i)∗P(all paths to state i at time t)
前者是从混淆矩阵中得到的, 后者表示到达t时刻状态所经过的所有可能路径之和的概率, 如图所示:
由于我们已经计算得到了t时刻任一状态的前向概率, 因此在计算t+1时刻的某一状态的前向概率只需要考虑t时刻就可以了, 因此有递推公式:
αt+1(i)=[∑j=1Nαt(j)aji]bi(ot+1),i=1,2,...,N
这个式子含义为: 当前观察概率(状态i下, t+1时刻所真正看到的观察状态的概率)乘以此时所有到达该状态的概率和(前一时刻所有状态的概率与相应的转移概率的积).
观测序列的概率
观测序列O的概率P(O∣λ)可以由下式得出:
P(O∣λ)=∑i=1NαT(i)
即最后的T时刻所有状态的前向概率之和. 这是由于:
αT(i)=P(o1,o2,...,oT,iT=qi∣λ)
因此, 将所有的T时刻的概率加起来就有
P(O∣λ)=∑i=1NαT(i)=P(o1,o2,...,oT∣λ)
时间复杂度
HMM的前向算法的时间复杂度为O(N2T), 其中N为状态的数量, T为时序的长度, 前向算法的时间复杂度是T的线性级别.
作用
前向算法可以用来计算观测序列概率P(O∣λ), 因此如第一节HMM作用的第一条评估所说, 根据观测到的序列, 使用不同的已经固定参数的HMM进行评估, 选取观测概率最大的模型. 每个模型都代表着一定的意义, 模型观测序列符合这个HMM代表的某种意义.
最后更新于