HMM经典介绍论文【Rabiner 1989】翻译(七)——预测问题

3.2 问题2的求解(预测问题)

有多种方法可以求解与观测序列相关的最优状态序列。难度在于最优状态序列的定义,因为有多种优化指标。比如,可以独立地为每个时刻 t 选择最有可能的状态qt。这个优化指标最大化正确状态的期望个数。定义变量

γt(i)=P(qt=Si|O,λ),(26)

即给定模型 λ 和观测序列 O ,在时刻t状态为 Si 的概率。公式(26)可以用前向-后向变量来表示:

γt(i)=αt(i)βt(i)P(O|λ)=αt(i)βt(i)Ni=1αt(i)βt(i).(27)

分母是归一化因子,使得 γt(i) 满足概率性质:

i=1Nγt(i)=1.(28)

利用 γt(i) ,我们可以求解在时刻 t 最有可能的状态qt

qt=argmax1iN[γt(i)],1tT.(29)

尽管(29)最大化正确状态的期望个数,但是得到的状态序列是有问题的。当有些HMM状态转移概率为0时,最优状态序列可能不是一个有效的状态序列。这是因为(29)只简单地确定每个时刻最优可能的状态,没有考虑状态序列出现的可能性。

一个可能的解决方法是修改这个优化指标。比如,通过最大化正确状态对 (qt,qt+1) 的个数来求解状态序列。虽然这类指标对可能对某些应用是合理的,但是使用最广泛的指标是找到最好的状态序列,即最大化 p(Q|O,λ) ,等价于最大化 P(Q,O|λ) 。动态规划可以用于求解这个优化问题,在这里被称为Viterbi算法。

Viterbi算法:为了找到观测序列 O={O1O2OT} 的最优状态序列 Q={q1q2qT} ,我们定义

δt(i)=maxq1,q2,,qt1P[q1q2qt=i,O1O2Ot|λ],(30)

δt(i) 是在时刻 t 状态为Si的且到 t 时刻观测序列为O1O2Ot的所有路径中概率最大的那个。通过递推,可以得到

δt+1(j)=[maxiδt(i)aij]bj(Ot+1).(31)

为了得到状态序列,我们需要保存使(31)最大的参数,即每个时刻 t 对应的j。这可以通过一个数组 ψt(j) 实现。完整Viterbi算法是:

1)初始化:

δ1(i)=πibi(O1),1iN(32a)

ψ1(i)=0.(32b)

2)递归:

δt(j)=max1iN[δt1(i)aij]bj(Ot),2tT,1jN(33a)

ψt(j)=argmax1iN[δt1(i)aij],2tT,1jN..(33b)

3)终止:

P=max1iN[δT(i)](34a)

qT=argmax1iN[δT(i)].(34b)

4)路径回溯:

qt=ψt+1(qt+1),t=T1,T2,,1.(35)

Viterbi算法和前向计算过程有点类似,主要区别在于(33a)中的最大化替代了(20)中的求和。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值