机器学习笔记(十五)——HMM序列问题和维特比算法

来源:互联网 发布:打淘宝客服要话费吗 编辑:程序博客网 时间:2024/05/01 11:09

一、引言

    这篇blog主要讲序列问题和其解法——维特比算法。

二、HMM中的第二个基本问题

序列问题:给定一个观察序列O=O1O2OT和模型u=(A,B,π),如何快速有效地选择在一定意义下”最优”的状态序列Q=q1q2qT,使得该状态序列“最好地解释”观察序列?

三、定义最优状态序列

    序列问题的答案并不是唯一的,那是因为它取决于对“最优状态序列的理解”。
定义 最优状态序列 在给定模型u和观察序列O的条件下,使得条件概率P(Q|O,u)最大的状态序列:

Q^=argmaxQP(Q|O,u)

四、维特比算法

    维特比算法运用动态规划的搜索算法求解这种最优状态序列。为了实现这种搜索,首先定义一个维特比变量δt(i)
定义 维特比变量δt(i) 是在时间t时,HMM沿着某一条路径到达状态si,并输出观察序列O1O2Ot的最大概率:

δt(i)=maxq1,q2,,qt1P(q1,q2,,qt=si,O1O2Ot|u)

与前向变量类似,δt(i)有如下递推关系:
δt+1(i)=maxj[δt(j)aji]bi(Ot+1)

     为了记录在时间t时,HMM通过哪一条概率最大的路径到达状态si,维特比算法设置了另外一个变量ψt(i),用于路径记忆,让ψt(i)记录该路径上的状态si的前一个(在时间t1)状态。

维特比算法
1. 初始化

δ1(i)=πibi(O1),1iNψ1(i)=0

2. 归纳计算
δt(j)=max1iN[δt1(i)aij]bj(Ot),2tT;1jN退ψt(j)=argmax1iN[δt1(i)aij]bj(Ot),2tT;1iN

3. 终结
QT^=argmax1iN[δT(i)]P^(QT^)=max1iN[δT(i)]

4. 路径(状态序列)回溯
qt^=ψt+1(q^t+1),t=T1,T2,,1

     维特比算法的时间复杂度也是O(N2T)

0 0
原创粉丝点击