HMM经典介绍论文【Rabiner 1989】翻译(六)——概率计算问题

3. HMM三类问题的求解方法

3.1 问题1的求解方法

给定模型 λ ,希望计算观测序列 O=O1O2OT 的概率,即 P(O|λ) 。最直接的计算方式是枚举所有长度为 T 的状态序列。对某个状态序列

Q=q1q2qT(12)

其中 q1 是初始状态。在上面的状态序列的条件下,观测序列 O 的概率是

P(O|Q,λ)=t=1TP(Ot|qt,λ),(13a)

这里假设观测是独立的。于是

P(O|Q,λ)=bq1(O1)bq2(O2)bqT(OT).(13b)

状态序列 Q 的概率为

P(Q|λ)=πq1aq1q2aq2q3aqT1qT.(14)

于是 O Q的联合概率为

P(O,Q|λ)=P(O|Q,λ)P(Q,λ).(15)

通过对所有可能的状态序列的联合概率进行求和可以得到 O 的概率:

P(O|λ)=QP(O|Q,λ)P(Q|λ)=q1,q2,,qTπq1bq1(O1)aq1q2bq2(O2) aqT1qTbqT(QT).(16)(17)

上面的计算公式可以这样理解:在初始时刻( t=1 ),我们以概率 πq1 选择状态 q1 ,然后以概率 bq1(O1) 生成观测值 O1 。在时刻由 t t+1时,我们从状态 q1 以概率 qq1q2 转移到状态 q2 ,然后以概率 bq2(O2) 生成观测值 O2 。重复这个过程直到生产时刻 T 的观测值OT

根据公式(17)直接计算 P(O|λ) 的时间复杂度是 2TNT 阶的,因为在每个时刻 t=1,2,,T ,都有 N 种可能的状态,即共有NT种可能的状态序列,对每个状态序列需要大概 2T 的计算量。更准确地,我们需要 (2T1)NT 次乘法, NT1 次加法。即使对比较小的 N T,这个计算量也是非常大的,比如 N=5,T=100 ,计算量是 210051001072 阶的。很显然,我们需要一个更有效的方法来解决问题1。这个方法称为前向-后向过程。

事实上,我们只需要前向-后向过程中的前向过程来求解问题1。我们在这节也会介绍后向过程,因为在求解问题3的时候会用到。定义前向变量

αt(i)=P(O1O2Ot,qt=Si|λ),(18)

即给定模型 λ ,到时刻 t 部分观测序列为O1O2Ot t 时刻的状态为Si的概率。我们可以通过归纳计算 αi(i)

1)初始化:

α1(i)=πibi(O1),1iN.(19)

2)归纳计算:

αt+1(j)=[i=1Nαt(i)aij]bj(Ot+1),1tT1,1jN.(20)

3)终止:

P(O|λ)=i=1NαT(i).(21)

步骤1)初始化前向概率为状态 Si O1 的联合概率。归纳过程时前向算法的核心,如图4(a)所示。这个图展示了 t+1 时刻的状态 Sj 可以由 t 时刻的N个可能状态 Si,1iN 到达。由于 αt(i) 是部分观测序列 O1O2Ot qt=Si 的联合概率,所以乘积 αt(i)aij 是部分观测序列为 O1O2Ot 并且 qt=Si,qt+1=Sj 的联合概率。对时刻 t 所有可能的N个状态对应的乘积求和,结果就是观测序列为 O1O2Ot 并且 qt+1=Sj 的联合概率。这个结果与观测概率 bj(Ot+1) 的乘积就是 αt+1(j) 。对给定时刻 t ,计算所有状态j,1jN前向概率;然后对所有 t=1,2,,T1 迭代计算。步骤3)给出了 P(O|λ) 的计算公式。因为

αT(i)=O(O1O2OT,qT=Si|λ),(22)

所以 P(O|λ) αT(i) 的和。

前向概率计算 P(O|λ) 的计算量是 N2T 阶( N(N+1)(T1)+N 次乘法和 N(N1)(T1) )的,而不是直接计算的 TNT 阶。对 n=5,T=100 ,前向算法只需要3000次计算,而不是 1072 次。

前向算法高效的关键在于图4(b)所示的结构。在时刻 t=1 时刻,计算 α1(i),1iN 的。在时刻 t=2,3,,T ,只需要计算 αt(j),1jN ,其中每个值的计算利用了前一时刻的 N αt1(i)

类似地,定义后向变量 βt(i)

βt(i)=P(Ot+1Ot+2OT|qt=Si,λ)(23)

即在 t 时刻的状态为Si和给定模型 λ 的条件下,从 t+1 T 时刻的部分观测序列为Ot+1Ot+2OT的概率。

仍然可以用归纳的方法计算 βt(i) :

1) 初始化:

βT(i)=1,1iN.(24)

2)归纳:

βt(i)=j=1Naijbj(Ot+1)βt+1(j),t=T1,T2,,1,1iN.(25)

如图5所示,为了计算在 qt=Si 的条件下, t+1 时刻后的观测序列为 Ot+1Ot+2OT 的后向概率,需要考虑 t+1 时刻所有可能状态 Sj 的转移概率( aij ),以及此状态下的观测概率( bj(Ot+1) ),然后考虑状态 Sj 之后的观测序列的后向概率( βt+1(j) )。我们后面会看到如何利用前向计算以及后向计算来解决问题2和问题3。

βt(i),1tT,1iN 的计算量是 N2T 阶的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值