隐马尔可夫模型(HMM) - 4 - 预测算法(维特比算法)

声明:

         1,本篇为个人对《2012.李航.统计学习方法.pdf》的学习总结,不得用作商用,欢迎转载,但请注明出处(即:本帖地址)。

         2,由于本人在学习初始时有很多数学知识都已忘记,所以为了弄懂其中的内容查阅了很多资料,所以里面应该会有引用其他帖子的小部分内容,如果原作者看到可以私信我,我会将您的帖子的地址付到下面。

         3,如果有内容错误或不准确欢迎大家指正。

         4,如果能帮到你,那真是太好了。

 

         这里介绍隐马尔可夫模型预测的两种算法:近似算法与维特比算法。

近似算法

         近似算法的想法是:在每个时刻t选择在该时刻最有可能出现的状态it*,从而得到一个状态序列I* = (i1*,i2*, ..., iT*),将它作为预测的结果。

         给定隐马尔可夫模型λ和观测序列O,在时刻t处于状态qi的概率γt(i)是

                  

         在每一时刻t最有可能的状态it*

                  

         从而得到状态序列I* =(i1*, i2*, ..., iT*)。

         近似算法的有点是计算简单,其缺点是不能保证预测的状态序列整体是最有可能的状态序列,因为预测的状态序列可能有实际不发生的部分。

         事实上,上述方法得到的状态序列中有可能存在转移概率为0的相邻状态,即,对某些i, j,aij=0。

         尽管如此,近似算法仍然是有用的。


维特比算法

         维特比算法实际上用动态规划隐马尔可夫模型预测问题,即,用动态规划(dunamic programming)求概率最大路径(最优路径)。这时一条路径对应着一个状态序列。

         根据动态规划原来,最优路径具有这样的特征:如果最优路径在时刻t通过节点it*,那么这一路径中“从节点i1*到终点it*的部分路径”对于“从节点i1*到终点it*的所有可能的部分路径”来说必须是最优的。

         根据这一原理,我们只需从时刻t=1开始,递推的计算在时刻t状态为i的各条部分路径的最大概率,直至得到时刻t=T时状态为i的各条路径的最大概率。时刻t=T的最大概率即为最优路径的概率P*,最优路径的终点it*也就同时得到了。

         之后,为了找出最优路径的各个节点,从终结点iT*开始,由后向前逐步求得节点iT-1*,..., i1*,得到最优路径I* = (i1*, i2*, ..., iT*)。

         这就是维特比算法。

         首先导入两个变量δ和ψ。定义在时刻t状态为i的所有单个路径(i1, i2, ..., it)中概率最大值为:

                  

         由定义可得变量δ的递推公式:

                  

         定义在时刻t状态为i的所有单个路径(i1,i2, ... , it-1, it)中概率最大的路径的第t-1个节点为

                  

         于是维特比算法如下。

 算法(维特比算法):

                   输入:模型λ= (A, B,π)和观测O=(o1,o2, ..., oT);

                   输出:最优路径I* = (i1*,i2*, ..., iT*)。

                   过程

                           

 例子

         考虑盒子和球模型λ=(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, i =1,2,3,求在t=1时状态为j观测为红并在t=2时状态为i观测o2为白的路径的最大概率,记此最大概率为δ2(i),则:

                           

                   同时,对每个状态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)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值