本文主要针对隐马尔科夫模型的第一个基本问题展开讨论。问题是:给定一个模型 λ ,我们希望估计任意给定观测变量序列 O=O1O2....OT 的概率。
分析:我们是要估计
P(O|λ)
,我们加入状态序列Q,那么就可以得到
P(O|λ)=∑QP(O,Q|λ)(1)
同时我们知道
P(O,Q|λ)=P(O|Q,λ)∗P(Q|λ)
,显然等式的右边是容易知道的,但是问题是对于所有的Q求和,这是相当麻烦的。因此,我们使用正反向过程来求解。
正向过程
我们定义如下的正向变量
αt(i)
,
αt(i)=P(O1,O2,...,Ot,Qt=Si|λ)(2)
同时,我们可以通过迭代的方式得到求解 αt(i) 的方法。
αt(i)=∑jαt−1(j)ajibj(Ot)(3)
那么类似于公式一,我们有
P(O|λ)=∑SiP(O,qT=Si|λ)=∑iαT(i)
反向过程
我们也定义反向过程 βt(i) 如下:
βt(i)=P(Ot,...,OT|qt=Si,λ)
它的解释就是在给定第t时刻的状态为 Si ,那么从第t时刻到第T时刻的观测序列概率。同样我们也可以给出 bt(i) 的迭代求法,如下
βt(i)=∑jaijbj(Ot)βt+1(j)(4)
类似于式(1),我们有
P(O|λ)=∑SiP(O1,...OT|q1=Si,λ)P(q1=Si|λ)=∑iβ1(i)πi
正反过程的时间复杂度分析
观察式3和式4,都相当于两层的for循环,每一层都是N,故为
O(N2)
,但是这是有观测值O是有T个元素,故总体时间复杂度为
O(TN2)
待续。。。