3.2 问题2的求解(预测问题)
有多种方法可以求解与观测序列相关的最优状态序列。难度在于最优状态序列的定义,因为有多种优化指标。比如,可以独立地为每个时刻
t
选择最有可能的状态
即给定模型
λ
和观测序列
O
,在时刻
分母是归一化因子,使得
γt(i)
满足概率性质:
利用
γt(i)
,我们可以求解在时刻
t
最有可能的状态
尽管(29)最大化正确状态的期望个数,但是得到的状态序列是有问题的。当有些HMM状态转移概率为0时,最优状态序列可能不是一个有效的状态序列。这是因为(29)只简单地确定每个时刻最优可能的状态,没有考虑状态序列出现的可能性。
一个可能的解决方法是修改这个优化指标。比如,通过最大化正确状态对 (qt,qt+1) 的个数来求解状态序列。虽然这类指标对可能对某些应用是合理的,但是使用最广泛的指标是找到最好的状态序列,即最大化 p(Q|O,λ) ,等价于最大化 P(Q,O|λ) 。动态规划可以用于求解这个优化问题,在这里被称为Viterbi算法。
Viterbi算法:为了找到观测序列
O={O1O2⋯OT}
的最优状态序列
Q={q1q2⋯qT}
,我们定义
δt(i)
是在时刻
t
状态为
为了得到状态序列,我们需要保存使(31)最大的参数,即每个时刻
t
对应的
1)初始化:
2)递归:
3)终止:
4)路径回溯:
Viterbi算法和前向计算过程有点类似,主要区别在于(33a)中的最大化替代了(20)中的求和。