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

一、引言

    这篇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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值