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

来源:互联网 发布:foursqure 数据集下载 编辑:程序博客网 时间:2024/04/29 21:08

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)中的求和。

阅读全文
0 0
原创粉丝点击