Viterbi算法

Viterbi算法应用于HMM的识别问题,也称解码问题。它通过应用了动态规划的思想避免了复杂度很高的运算,为识别时效性提供了强有力的支持。这个算法并不难理解,这里只是对其一个细节进行阐述。

Viterbi算法实际上解决 P(I|O,λ) 最大化的问题,给定观测序列求其最可能对应的状态序列。算法首先需要导入两个变量 δ ψ δ 是在时刻t状态为i的所有单个路径 (i1,i2,...,it) 中概率的最大值: 

δt(i)=maxi1,i2,...,it?1P(it=i,it?1,...,i1,ot,...,o1|λ)
由定义可得变量 δ 的递推公式: 
δt+1(i)=maxi1,i2,...,itP(it+1=i,it,...,i1,ot+1,...,o1|λ)
=max1jN[δt(j)aji]bi(ot+1)
算法在设定初始值 δ1(i)=πibi(oi) 之后就不断迭代,终止情况是: 
P?=max1jNδT(i)

算法的主体就是这样,那么现在问题来了。识别问题我们要解决 P(I|O,λ) 最大的问题,到这里Viterbi算法怎么成了 P(I,O|λ)

个人觉得,还是应为 P(I,O|λ)=P(I|O,λ)P(O|λ) ,而 P(O|λ) 相对最大化问题而言是个常数,可以省去。但是为什么要省去呢?这是因为 δt+1(i) 的迭代过程中 δt(i) 要和 aji 相乘,而 aji 是转移概率,表示为: 

aji=P(it+1=qi|it=qj)
再经过齐次马尔科夫假设,可以扩展为: 
aji=P(it+1=qi|it=qj,o1,o2,...,ot)
这样其才能和 δt(j) 相乘。仅此而已。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值