隐马尔可夫模型二(公式推导)

本文深入探讨隐马尔可夫模型(HMM),介绍概率问题、前向后向算法、Baum-Welch学习算法以及预测算法。通过公式推导和实例解析,阐述HMM在计算观测序列概率时的动态规划思想,帮助读者理解如何减少计算复杂度并解决解码问题。
摘要由CSDN通过智能技术生成

前面一篇介绍了隐马尔科夫模型的基本的一些概念,篇主要介绍三个问题的具体解决方法。如果对于概念不太理解的可以参考前一篇博客HMM模型基本概念,本篇博客主要介绍对于三个问题的主要推倒,内容主要基于统计学习方法这本书,但是在上面加上了一些自己的理解。下面一一介绍三个问题以及解决的办法。

概率问题

给定模型 λ=(A,B,π) λ = ( A , B , π ) 和观测序列 O=(o1,o2,...,oT) O = ( o 1 , o 2 , . . . , o T ) ,计算在模型 λ λ 下观测序列 O O 出现的概率 P ( O | λ )

直接计算法

直接计算法说白了就是暴力计算每一种情况的可能。对于所有可能的状态序列 I I 求和,得到观测序列 O 的概率 P(O|λ) P ( O | λ ) ,即:

P(O|λ)=IP(O|I,λ)P(I|λ) P ( O | λ ) = ∑ I P ( O | I , λ ) P ( I | λ )

=i1,i2,...,iTπi1bi1(o1)ai1i2bi2(o2)...aiT1iTbiT(oT) = ∑ i 1 , i 2 , . . . , i T π i 1 b i 1 ( o 1 ) a i 1 i 2 b i 2 ( o 2 ) . . . a i T − 1 i T b i T ( o T )

这种计算的缺点在于计算量很大,时间复杂度为 O(TNT) O ( T N T )

前向后向算法

前向后向算法的核心是利用动态规划的思想减少计算的时间复杂度。


图1

前向算法

前向概率 给定隐马尔可夫模型 λ λ ,定义到时刻 t t 部分观测序列为 o 1 , o 2 , . . . , o t 且状态为 qi q i 的概率为前向概率,记作

αt(i)=P(o1,o2,...,ot,it=qi|λ)(1) α t ( i ) = P ( o 1 , o 2 , . . . , o t , i t = q i | λ ) ( 1 )

然后可以递推求出前向概率 αt(i) α t ( i ) 以及观测序列 P(O|λ) P ( O | λ )

盒子 1 2 3 4
红球数 5 3 6 8
白球数 5 7 4 2

那么这个前向概率到底是什么意思呢?估计好多人还是看的一脸懵逼。还是以之前的盒子与球模型,观测序列为 O={ ,,,,} O = { 红 , 红 , 白 , 白 , 红 } ,假设 t=3,i=1 t = 3 , i = 1 ,后面的序列我们不知道,那么 αt(i)=P(O={ ,,},i=1|λ) α t ( i ) = P ( O = { 红 , 红 , 白 } , i = 1 | λ ) 。即前面观测序列为[红,红,白],第三次丑的白色球是从盒子1中抽出的概率。

下面是对前向算法的形式化推导。

输入:隐马尔科夫模型 λ λ ,观测序列为 O O ;

输出:观测序列概率 P ( O | λ ) ;

1.初值

α1(i)=πibi(o1)(2) α 1 ( i ) = π i b i ( o 1 ) ( 2 )

即求第一个观测值对应的状态为 i i 的概率

2.递推,对t=1,2,…,T-1,

α t + 1 ( i ) = [ j = 1 N α t ( j ) a j i ] b i ( o t + 1 ) , i = 1 , 2 , . . . . , N ( 3 )

3.终止

P(O|λ)=i=1NαT(i)(4) P ( O | λ ) = ∑ i = 1 N α T ( i ) ( 4 )

上面这段公式推导的思想为,先求观测值为 o1 o 1 的概率,然后在前面的基础上求观测值为 o2 o 2 对应的概率,依次递推,最后求观测值为 ot o t 的概率。然后每一种概率对应了不同的状态, αt(i) α t ( i ) 则表示在状态为 i i 时的概率,而 P ( o 1 , o 2 , . . . , o t , i T = q i | λ ) ,然后然后对 i i 求和就能够得到上述(3)式。其递推过程图如下:


图2

前向算法就是利用这种方式将时间复杂度从 O ( T N T ) 降低到 O(TN2) O ( T N 2 ) ,至于降低的原因是减少直接利用了前面的计算结果,避免了每一次都需要重新计算。

还是以盒子与球模型为例, λ=(A,B,π) λ = ( A , B , π ) ,状态集合 Q={ 1,2,3} Q = { 1 , 2 , 3 } ,观测集合 V={ ,} V = { 红 , 白 } .

T=3 T = 3 , O={ ,,} O = { 红 , 白 , 红 } ,求 P(O|λ) P ( O | λ )

1.计算初值

α1(1)=π1b1(o1)=0.2×0.5=0.10 α 1 ( 1 ) = π 1 b 1 ( o 1 ) = 0.2 × 0.5 = 0.10

α1(2)=π2b2(o1)=0.4×0.4=0.16 α 1 ( 2 ) = π 2 b 2 ( o 1 ) = 0.4 × 0.4 = 0.16

α1(3)=π3b3(o1)=0.4×0.7=0.28 α 1 ( 3 ) = π 3 b 3 ( o 1 ) = 0.4 × 0.7 = 0.28

2.递推计算

α2(1)=[j=13α1(j)aj1]b1(o2) α 2 ( 1 ) = [ ∑ j = 1 3 α 1 ( j ) a j 1 ] b 1 ( o 2 )

=(0.10×0.5+0.16×0.3+0.28×0.2)=0.154×0.5=0.77 = ( 0.10 × 0.5 + 0.16 × 0.3 + 0.28 × 0.2 ) = 0.154 × 0.5 = 0.77

α2(2)=[j=13α1(j)aj2]b2(o2) α 2 ( 2 ) = [ ∑ j = 1 3 α 1 ( j ) a j 2 ] b 2 ( o 2 )

α2(3)=[j=13α1(j)aj3]b3(o2) α 2 ( 3 ) = [ ∑ j = 1 3 α 1 ( j ) a j 3 ] b 3 ( o 2 )

同理可以得到

α3(1)=[j=13α2(j)aj1]b
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值