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

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

乘法公式的推广

在做隐马尔可夫公式推导前,我们需要复习一下概率乘法公式的推广。
P ( A 1 A 2 . . . A n 1 ) > 0 , n 2
P ( A 1 A 2 . . . A n )
= 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 ( A 2 . . . A n | A 1 )
= P ( A n | A 1 A 2 . . . A n 1 ) . . . P ( A 3 | A 1 A 2 ) P ( A 2 | A 1 )
λ O
P ( O , I | λ ) = P ( O | I , λ ) P ( I | λ )

直接计算

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

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

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

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

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

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

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

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

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

前向-后向算法

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

a j k b k ( o t + 1 )

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

前向概率定义

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

第一步:根据这些概率我们可以找到 α t + 1 ( k ) α t ( j ) 的关系
α 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 ( o 1 , o 2 , . . . , o t , i t = q j , i t + 1 = q k | λ )
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 ( o 1 , o 2 , . . . , o t , i t + 1 = q k | λ )
[ j = 1 N α t ( j ) · a j k ] · b k ( o t + 1 )
= P ( o 1 , o 2 , . . . , o t , i t + 1 = q k | λ ) · P ( o t + 1 | i t + 1 = q k )
= P ( o 1 , o 2 , . . . , o t , o t + 1 , i t + 1 = q k | λ ) = α t + 1 ( k )
计算量为 N
第二步:获取初值 α 1 ( j ) 并递推至 α T ( j )
初值: α 1 ( j ) = π j b j ( o 1 ) = P ( i 1 = q j | λ ) · P ( o 1 | i 1 = q j )
递推:对于 t = 1 , 2 , . . . , T 1
α t + 1 ( k ) = [ j = 1 N α t ( j ) · a j k ] · b k ( o t + 1 )
计算量为 1 + T 1 = T
第三步:求 P ( O | λ )
P ( O | λ ) = k = 1 N α T ( k ) = k = 1 N P ( o 1 , o 2 , . . . , o T , i T = q k | λ )
= P ( o 1 , o 2 , . . . , o T | λ ) = P ( O | λ )
计算量为 N

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

与前向算法类似

后向概率定义

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

第一步:根据这些概率我们可以找到 β t ( j ) β t + 1 ( k ) 的关系
β t + 1 ( k ) · b k ( o t + 1 ) · a j k
= 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 ( o t + 1 , o t + 2 , o t + 3 , . . . , o T , i t + 1 = q k | i t = q j , λ )
k = 1 N β t + 1 ( k ) · b k ( o t + 1 ) · a j k
= 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 ( o t + 1 , o t + 2 , o t + 3 , . . . , o T | i t = q j , λ )
= β t ( j )
计算量为 N
第二步:获取初值 β T ( j ) 并递推至 β 1 ( j )
初值: β T ( j ) = 1
递推:对于 t = T 1 , T 2 , . . . , 1
β t ( j ) = k = 1 N β t + 1 ( k ) · b k ( o t + 1 ) · a j k
计算量为 1 + T 1 = T
第三步:求 P ( O | λ )
P ( O | λ ) = j = 1 N β 1 ( j ) · b j ( o t + 1 ) · π j
= 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 = 1 N P ( o 1 , o 2 , o 3 , . . . , o T , i 1 = q j | λ )
= P ( o 1 , o 2 , o 3 , . . . , o T | λ ) = P ( O | λ )
计算量为 N

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

P ( O | λ )
P ( O | λ ) = j = 1 N k = 1 N α t ( j ) a j k b k ( o t + 1 ) β t + 1 ( k )
t = 1 , 2 , . . . , T 1

状态概率

单个状态:
给定模型 λ 和观测序列 O ,在 t 时刻处于状态 q j 的概率记为:
         γ t ( j ) = P ( i t = q j | O , λ )
        
找出其和前向概率 α t ( j ) 和后向概率 β t ( j ) 的关系:
γ 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 时刻处于状态 q j 且在 t + 1 时刻处于状态 q k 的概率记为: ξ t ( j , k ) = P ( i t = q j , i t + 1 = q k | O , λ )

找出其和前向概率 α t ( j ) 和后向概率 β t ( j ) 的关系:
ξ 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 下状态 j 出现的期望值为 t = 1 T γ t ( j )
(2)在观测序列 O 下由状态 j 转移的期望值为 t = 1 T 1 γ t ( j )
(3)在观测序列 O 下由状态 j 转移到状态 k 的期望值为 t = 1 T 1 ξ t ( j , k )

猜你喜欢

转载自blog.csdn.net/u013597931/article/details/80593210