【算法】隐马尔科夫HMM之Viterbi维特比算法原理

Viterbi 算法的定义

定义变量δt(i):表示时刻t状态为i的所有路径中的概率最大值,公式如下:

\

过程:

\

上面的符号之前都已经见过,这里不再解释,下面为了更好地理解这几步,我们来举个例子。

例子

还是盒子球模型。

盒子和球模型λ= (A, B,π),状态集合Q={1, 2, 3},观测集合V={红, 白},

\

已知观测序列O=(红,白,红),试求最优状态序列,即最优路径I*= (i1*, i2*, i3*)。

如下图所示(图中的数字在之后的步骤中会一一推导出来)

\

要在所有可能的路径中选择一条最优路径,按照以下步骤出来。

1,初始化

t=1时,对每个状态i, i=1, 2, 3,求状态为i观测o1为红的概率,记此概率为δ1(i),则:

δ1(i) = πibi(o1)=πibi(红), i = 1, 2, 3

代入实际数据

δ1(1) = 0.10,δ1(2) =0.16,δ1(3) = 0.28

记ψ1(i) = 0,i = 1, 2, 3。

2,在t=n时

t=2时,对每个状态i,求在t=1时状态为j观测为红并且在t=2时状态为i观测为白的路径的最大概率,记概率为δ2(t),则根据:

\

同时,对每个状态i, i = 1, 2, 3,记录概率最大路径的前一个状态j:

\

计算:

\

同样,在t=3时

\

3,求最优路径的终点

以P*表示最优路径的概率,则

\

最优路径的终点是i3*:

\

4,逆向找i2*,i1*

在t=2时,i2* = ψ3(i3*) =ψ3(3) = 3

在t=2时,i1* = ψ2(i2*) =ψ2(3) = 3

于是求得最优路径,即最有状态序列I* = (i1*,i2*, i3*) = (3, 3, 3)。


转载自:https://www.2cto.com/kf/201609/544539.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值