【机器学习】隐马尔可夫(二)----概率计算问题

前一篇说到隐马尔可夫有三个基本问题,其中概率计算问题是首当其冲需解决的问题。
概率计算问题就是在给定模型 λ=(A,B,π) λ = ( A , B , π ) 和观测序列 O=(o1,o2,...,oT) O = ( o 1 , o 2 , . . . , o T ) ,计算观测序列 O O 出现的概率P(O|λ)

乘法公式的推广

在做隐马尔可夫公式推导前,我们需要复习一下概率乘法公式的推广。
P(A1A2...An1)>0,n2 P ( A 1 A 2 . . . A n − 1 ) > 0 , n ≥ 2
P(A1A2...An) P ( A 1 A 2 . . . A n )
=P(An|A1A2...An1)...P(A3|A1A2)P(A2|A1)P(A1) = P ( A n | A 1 A 2 . . . A n − 1 ) . . . P ( A 3 | A 1 A 2 ) P ( A 2 | A 1 ) P ( A 1 )
可以写成 P(A2...An|A1) P ( A 2 . . . A n | A 1 )
=P(An|A1A2...An1)...P(A3|A1A2)P(A2|A1) = P ( A n | A 1 A 2 . . . A n − 1 ) . . . P ( A 3 | A 1 A 2 ) P ( A 2 | A 1 )
λO 换 到 此 问 题 中 来 , 我 们 可 以 将 λ 和 O 同 时 出 现 的 联 合 概 率 写 为
P(O,I|λ)=P(O|I,λ)P(I|λ) P ( O , I | λ ) = P ( O | I , λ ) P ( I | λ )

直接计算

直接计算是最简单粗暴的方法,即列举长度为 T T 的状态序列I的所有可能序列,对每一个可能的状态序列 Ix I x 求其与观测序列 O O 的联合概率P(O,Ix|λ),然后对其求和得 xP(O,Ix|λ)=P(O|λ) ∑ x P ( O , I x | λ ) = P ( O | λ )

①列举所有可能的状态序列 Ix=(i1,i2,...,iT) I x = ( i 1 , i 2 , . . . , i T )

状态序列长度为 T T ,即t=1,2,...,T。每个时刻状态 it i t N N 种可取状态,因此所有可能的状态序列数为NT

②计算 O O 和每种状态序列Ix同时出现的联合概率 P(O,Ix|λ) P ( O , I x | λ )

P(O,Ix|λ)=P(O|Ix,λ)P(Ix|λ) P ( O , I x | λ ) = P ( O | I x , λ ) P ( I x | λ )
可以看做分为三步:
第一步:求给定模型 λ λ 条件下出现状态序列Ix的概率
由要求可知,我们需要用到初始状态概率 π π 和状态转移概率矩阵A
P(Ix|λ)=πi1ai1i2ai2i3...aiT1iT P ( I x | λ ) = π i 1 a i 1 i 2 a i 2 i 3 . . . a i T − 1 i T

第二步:对给定的状态序列 Ix I x 和模型 λ λ 的条件下观测序列O的概率
由要求可知,我们需要用到初始状态概率 π π 和观测概率矩阵B
P(O|Ix,λ)=bi1(o1)bi2(o2)...biT(oT) P ( O | I x , λ ) = b i 1 ( o 1 ) b i 2 ( o 2 ) . . . b i T ( o T )

第三步:将前两步得到的相乘
P(O,Ix|λ)=P(O|Ix,λ)P(Ix|λ) P ( O , I x | λ ) = P ( O | I x , λ ) P ( I x | λ )
=πi1bi1(o1)ai1i2bi2(o2)...aiT1iTbiT(oT) = π 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 )
2T 2 T 项相乘

③对所有可能的状态序列 Ix I x 求和,得到 P(O|λ) P ( O | λ )

P(O|λ)=xNTP(O,Ix|λ) P ( O | λ ) = ∑ x N T P ( O , I x | λ )
计算量为 O(2TNT)=O(TNT) O ( 2 T · N T ) = O ( T N T ) ,计算量呈指数级,因此用这种直接计算的方法很困难。

前向-后向算法

利用前向算法和后向算法都可以得到观测序列概率 P(O|λ) P ( O | λ )

ajkbk(ot+1) a j k 和 b k ( o t + 1 )

回忆一下状态转移概率 ajk a j k 和观测概率 bk(ot+1) b k ( o t + 1 ) ,它们会在前向算法和后向算法中用到
ajk=P(it+1=qk|it=qj) a j k = P ( i t + 1 = q k | i t = q j )
bk(ot+1)=P(ot+1|it+1=qk) b k ( o t + 1 ) = P ( o t + 1 | i t + 1 = q k )

前 向 算 法

前向概率定义

给定隐马尔可夫模型 λ λ ,定义到时刻t部分观测序列为 o1,o2,...,ot o 1 , o 2 , . . . , o t 且状态为 qj q j 的概率为前向概率,记作 αt(j)=P(o1,o2,...,ot,it=qj|λ) α t ( j ) = P ( o 1 , o 2 , . . . , o t , i t = q j | λ )

第一步:根据这些概率我们可以找到 αt+1(k) α t + 1 ( k ) αt(j) α t ( j ) 的关系
αt(j)ajk=P(o1,o2,...,ot,it=qj|λ)P(it+1=qk|it=qj) α t ( j ) · a j k = P ( o 1 , o 2 , . . . , o t , i t = q j | λ ) · P ( i t + 1 = q k | i t = q j )
=P(o1,o2,...,ot,it=qj,it+1=qk|λ) = P ( o 1 , o 2 , . . . , o t , i t = q j , i t + 1 = q k | λ )
j=1Nαt(j)ajk=j=1NP(o1,o2,...,ot,it=qj,it+1=qk|λ) ∑ j = 1 N α t ( j ) · a j k = ∑ j = 1 N P ( o 1 , o 2 , . . . , o t , i t = q j , i t + 1 = q k | λ )
=P(o1,o2,...,ot,it+1=qk|λ) = P ( o 1 , o 2 , . . . , o t , i t + 1 = q k | λ )
[j=1Nαt(j)ajk]bk(ot+1) [ ∑ j = 1 N α t ( j ) · a j k ] · b k ( o t + 1 )
=P(o1,o2,...,ot,it+1=qk|λ)P(ot+1|it+1=qk) = P ( o 1 , o 2 , . . . , o t , i t + 1 = q k | λ ) · P ( o t + 1 | i t + 1 = q k )
=P(o1,o2,...,ot,ot+1,it+1=qk|λ)=αt+1(k) = P ( o 1 , o 2 , . . . , o t , o t + 1 , i t + 1 = q k | λ ) = α t + 1 ( k )
计算量为 N N
第二步:获取初值α1(j)并递推至 αT(j) α T ( j )
初值: α1(j)=πjbj(o1)=P(i1=qj|λ)P(o1|i1=qj) α 1 ( j ) = π j b j ( o 1 ) = P ( i 1 = q j | λ ) · P ( o 1 | i 1 = q j )
递推:对于 t=1,2,...,T1 t = 1 , 2 , . . . , T − 1
αt+1(k)=[j=1Nαt(j)ajk]bk(ot+1) α t + 1 ( k ) = [ ∑ j = 1 N α t ( j ) · a j k ] · b k ( o t + 1 )
计算量为 1+T1=T 1 + T − 1 = T
第三步:求 P(O|λ) P ( O | λ )
P(O|λ)=k=1NαT(k)=k=1NP(o1,o2,...,oT,iT=qk|λ) P ( O | λ ) = ∑ k = 1 N α T ( k ) = ∑ k = 1 N P ( o 1 , o 2 , . . . , o T , i T = q k | λ )
=P(o1,o2,...,oT|λ)=P(O|λ) = P ( o 1 , o 2 , . . . , o T | λ ) = P ( O | λ )
计算量为 N N

总的计算量为O(N·T·N)=O(N2T)

后 向 算 法

与前向算法类似

后向概率定义

给定隐马尔可夫模型 λ λ ,定义在时刻t状态为 qj q j 的条件下,从 t+1 t + 1 T T 的部分观测序列为ot+1,ot+2,...,oT的概率为后向概率,记作 βt(j)=P(ot+1,ot+2,...,oT|it=qj,λ) β t ( j ) = P ( o t + 1 , o t + 2 , . . . , o T | i t = q j , λ )

第一步:根据这些概率我们可以找到 βt(j) β t ( j ) βt+1(k) β t + 1 ( k ) 的关系
βt+1(k)bk(ot+1)ajk β t + 1 ( k ) · b k ( o t + 1 ) · a j k
=P(ot+2,ot+3,...,oT|it+1=qk,λ)P(ot+1|it+1=qk)P(it+1=qk|it=qj) = P ( o t + 2 , o t + 3 , . . . , o T | i t + 1 = q k , λ ) · P ( o t + 1 | i t + 1 = q k ) · P ( i t + 1 = q k | i t = q j )
=P(ot+1,ot+2,ot+3,...,oT,it+1=qk|it=qj,λ) = P ( o t + 1 , o t + 2 , o t + 3 , . . . , o T , i t + 1 = q k | i t = q j , λ )
k=1Nβt+1(k)bk(ot+1)ajk ∑ k = 1 N β t + 1 ( k ) · b k ( o t + 1 ) · a j k
=k=1NP(ot+1,ot+2,ot+3,...,oT,it+1=qk|it=qj,λ) = ∑ k = 1 N P ( o t + 1 , o t + 2 , o t + 3 , . . . , o T , i t + 1 = q k | i t = q j , λ )
=P(ot+1,ot+2,ot+3,...,oT|it=qj,λ) = P ( o t + 1 , o t + 2 , o t + 3 , . . . , o T | i t = q j , λ )
=βt(j) = β t ( j )
计算量为 N N
第二步:获取初值βT(j)并递推至 β1(j) β 1 ( j )
初值: βT(j)=1 β T ( j ) = 1
递推:对于 t=T1,T2,...,1 t = T − 1 , T − 2 , . . . , 1
βt(j)=k=1Nβt+1(k)bk(ot+1)ajk β t ( j ) = ∑ k = 1 N β t + 1 ( k ) · b k ( o t + 1 ) · a j k
计算量为 1+T1=T 1 + T − 1 = T
第三步:求 P(O|λ) P ( O | λ )
P(O|λ)=j=1Nβ1(j)bj(ot+1)πj P ( O | λ ) = ∑ j = 1 N β 1 ( j ) · b j ( o t + 1 ) · π j
=j=1NP(o2,o3,...,oT|i1=qj,λ)P(o1|i1=qj)P(i1=qj|λ) = ∑ j = 1 N P ( o 2 , o 3 , . . . , o T | i 1 = q j , λ ) · P ( o 1 | i 1 = q j ) · P ( i 1 = q j | λ )
=j=1NP(o1,o2,o3,...,oT,i1=qj|λ) = ∑ j = 1 N P ( o 1 , o 2 , o 3 , . . . , o T , i 1 = q j | λ )
=P(o1,o2,o3,...,oT|λ)=P(O|λ) = P ( o 1 , o 2 , o 3 , . . . , o T | λ ) = P ( O | λ )
计算量为 N N

总的计算量为O(N·T·N)=O(N2T)

P(O|λ) 利 用 前 向 概 率 和 后 向 概 率 的 定 义 , 可 以 将 观 测 序 列 概 率 P ( O | λ ) 写 成
P(O|λ)=j=1Nk=1Nαt(j)ajkbk(ot+1)βt+1(k) P ( O | λ ) = ∑ j = 1 N ∑ k = 1 N α t ( j ) a j k b k ( o t + 1 ) β t + 1 ( k )
t=1,2,...,T1 t = 1 , 2 , . . . , T − 1

通 过 前 向 、 后 向 概 率 求 状 态 概 率 和 期 望
状态概率

单个状态:
给定模型 λ λ 和观测序列O,在 t t 时刻处于状态qj的概率记为:
         γt(j)=P(it=qj|O,λ) γ t ( j ) = P ( i t = q j | O , λ )
        
找出其和前向概率 αt(j) α t ( j ) 和后向概率 βt(j) β t ( j ) 的关系:
γt(j)=P(it=qj|O,λ)=P(it=qj,O|λ)P(O|λ)=αt(j)βt(j)k=1Nαt(k)βt(k) γ t ( j ) = P ( i t = q j | O , λ ) = P ( i t = q j , O | λ ) P ( O | λ ) = α t ( j ) β t ( j ) ∑ k = 1 N α t ( k ) β t ( k )

两个状态同时:
给定模型 λ λ 和观测序列O,在 t t 时刻处于状态qj且在 t+1 t + 1 时刻处于状态 qk q k 的概率记为: ξt(j,k)=P(it=qj,it+1=qk|O,λ) ξ t ( j , k ) = P ( i t = q j , i t + 1 = q k | O , λ )

找出其和前向概率 αt(j) α t ( j ) 和后向概率 βt(j) β t ( j ) 的关系:
ξt(j,k)=P(it=qj,it+1=qk,O|λ)P(O|λ)=αt(j)ajkbk(ot+1)βt+1(k)j=1Nk=1Nαt(j)ajkbk(ot+1)βt+1(k) ξ t ( j , k ) = P ( i t = q j , i t + 1 = q k , O | λ ) P ( O | λ ) = α t ( j ) a j k b k ( o t + 1 ) β t + 1 ( k ) ∑ j = 1 N ∑ k = 1 N α t ( j ) a j k b k ( o t + 1 ) β t + 1 ( k )

期望

(1)在观测序列 O O 下状态j出现的期望值为 t=1Tγt(j) ∑ t = 1 T γ t ( j )
(2)在观测序列 O O 下由状态j转移的期望值为 t=1T1γt(j) ∑ t = 1 T − 1 γ t ( j )
(3)在观测序列 O O 下由状态j转移到状态 k k 的期望值为t=1T1ξt(j,k)

添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值