用简单易懂的例子解释隐马尔可夫模型
隐含的身体状态 = { 健康 , 发烧 }
可观察的感觉状态 = { 正常 , 冷 , 头晕 }
预判的身体状态初始概率分布 = { 健康:0.6 , 发烧:0.4 }
身体健康状态的转换概率分布 = {
健康->健康:0.7 ,
健康->发烧:0.3 ,
发烧->健康:0.4 ,
发烧->发烧:0.6
}
在相应健康状况条件下,感觉状态的概率分布 = {
健康,正常:0.5 ,冷 :0.4 ,头晕: 0.1 ;
发烧,正常:0.1 ,冷 :0.3 ,头晕: 0.6
}
连续三天的身体感觉依次是: 正常、冷、头晕 。
求:这三天的身体健康状态变化的过程是怎么样的?
(1) 初始情况:
P(第一天健康) = 0.6,P(第一天发烧)=0.4。
(2) 求第一天的身体情况:
计算在感觉正常的情况下最可能的身体状态:
P(第一天健康,感觉正常) = P(正常|第一天健康) * P(第一天健康) = 0.5 * 0.6 = 0.3
P(第一天发烧,感觉正常) = P(正常|第一天发烧) * P(第一天发烧) = 0.1 * 0.4 = 0.04
那么就可以认为第一天最可能的身体状态是:健康。
(3) 求第二天的身体状况:
计算在感觉冷的情况下最可能的身体状态。
P(第二天健康,感觉冷) = P(感觉冷|第二天健康) * P(第二天健康|第一天健康) * P(第一天健康) + P(感觉冷|第二天健康) * P(第二天健康|第一天发烧) * P(第一天发烧) = 0.4 * 0.7 * 0.6 + 0.4 * 0.4 * 0.4 = 0.232
P(第二天发烧,感觉冷) = P(感觉冷|第二天发烧) * P(第二天发烧|第一天健康) * P(第一天健康) + P(感觉冷|第二天发烧) * P(第二天发烧|第一天发烧) * P(第一天发烧) = 0.3 * 0.3 * 0.6 + 0.3 * 0.6 * 0.4 = 0.126
那么可以认为,第二天最可能的状态是:健康。
(4) 求第三天的身体状态:
计算在感觉头晕的情况下最可能的身体状态。
P(第三天健康,感觉头晕) = P(感觉头晕|第三天健康) * P(第三天健康|第二天健康) * P(第二天健康|第一天健康) * P(第一天健康) + P(感觉头晕|第三天健康) * P(第三天健康|第二天健康) * P(第二天健康|第一天发烧) * P(第一天发烧) + P(感觉头晕|第三天健康) * P(第三天健康|第二天发烧) * P(第二天发烧|第一天健康) * P(第一天健康) + P(感觉头晕|第三天健康) * P(第三天健康|第二天发烧) * P(第二天发烧|第一天发烧) * P(第一天发烧) = 0.1 * 0.7 * 0.7 * 0.6 + 0.1 * 0.7 * 0.4 * 0.4 + 0.1 * 0.4 * 0.3 * 0.6 + 0.1 * 0.4 * 0.6 * 0.4 = 0.0574
P(第三天发烧,感觉头晕) = P(感觉头晕|第三天发烧) * P(第三天发烧|第二天健康) * P(第二天健康|第一天健康) * P(第一天健康) + P(感觉头晕|第三天发烧) * P(第三天发烧|第二天健康) * P(第二天健康|第一天发烧) * P(第一天发烧) + P(感觉头晕|第三天发烧) * P(第三天发烧|第二天发烧) * P(第二天发烧|第一天健康) * P(第一天健康) + P(感觉头晕|第三天发烧) * P(第三天发烧|第二天发烧) * P(第二天发烧|第一天发烧) * P(第一天发烧) = 0.6 * 0.3 * 0.7 * 0.6 + 0.6 * 0.3 * 0.4 * 0.4 + 0.6 * 0.6 * 0.3 * 0.6 + 0.6 * 0.6 * 0.6 * 0.4 = 0.2556
那么可以认为,第三天最可能的状态是:发烧。
用数学公式表达
初始概率分布:
π ( 0 ) = [ 0.6 0.4 ] T \pi(0) = \left[ \begin{array}{cc} 0.6 & 0.4 \end{array} \right]^T π(0)=[0.60.4]T
状态转移概率矩阵:
A = [ 0.7 0.3 0.4 0.6 ] A = \left[ \begin{array}{cc} 0.7 & 0.3 \\ 0.4 & 0.6 \end{array} \right] A=[0.70.40.30.6]
观测概率矩阵:
B = [ 0.5 0.4 0.1 0.1 0.3 0.6 ] B = \left[ \begin{array}{ccc} 0.5 & 0.4 & 0.1 \\ 0.1 & 0.3 & 0.6 \end{array} \right] B=[0.50.10.40.30.10.6]
实际运算:
π ( i + 1 ) = A π ( i ) B ( i + 1 ) = A B ( i ) \pi(i+1) = A \pi(i) \\ B(i+1) = A B(i) π(i+1)=Aπ(i)B(i+1)=AB(i)
例:
π ( 1 ) = A π ( 0 ) = [ 0.7 0.3 0.4 0.6 ] [ 0.6 0.4 ] = [ 0.54 0.48 ] π ( 2 ) = A π ( 1 ) = [ 0.7 0.3 0.4 0.6 ] [ 0.54 0.48 ] = [ 0.522 0.504 ] π ( 3 ) = A π ( 2 ) = [ 0.7 0.3 0.4 0.6 ] [ 0.522 0.504 ] = [ 0.5166 0.5112 ] \pi(1) = A \pi(0) = \left[ \begin{array}{cc} 0.7 & 0.3 \\ 0.4 & 0.6 \end{array} \right] \left[ \begin{array}{c} 0.6 \\ 0.4 \end{array} \right] =\left[ \begin{array}{cc} 0.54 \\ 0.48 \end{array} \right] \\ \pi(2) = A \pi(1) = \left[ \begin{array}{cc} 0.7 & 0.3 \\ 0.4 & 0.6 \end{array} \right] \left[ \begin{array}{c} 0.54 \\ 0.48 \end{array} \right] =\left[ \begin{array}{cc} 0.522 \\ 0.504 \end{array} \right] \\ \pi(3) = A \pi(2) = \left[ \begin{array}{cc} 0.7 & 0.3 \\ 0.4 & 0.6 \end{array} \right] \left[ \begin{array}{c} 0.522 \\ 0.504 \end{array} \right] =\left[ \begin{array}{cc} 0.5166 \\ 0.5112 \end{array} \right] π(1)=Aπ(0)=[0.70.40.30.6][0.60.4]=[0.540.48]π(2)=Aπ(1)=[0.70.40.30.6][0.540.48]=[0.5220.504]π(3)=Aπ(2)=[0.70.40.30.6][0.5220.504]=[0.51660.5112]
和
B ( 1 ) = A B ( 0 ) = [ 0.7 0.3 0.4 0.6 ] [ 0.5 0.4 0.1 0.1 0.3 0.6 ] = [ 0.38 0.37 0.25 0.26 0.34 0.4 ] B ( 2 ) = A B ( 1 ) = [ 0.7 0.3 0.4 0.6 ] [ 0.38 0.37 0.25 0.26 0.34 0.4 ] = [ 0.344 0.361 0.295 0.308 0.352 0.34 ] B ( 3 ) = A B ( 2 ) = [ 0.7 0.3 0.4 0.6 ] [ 0.344 0.361 0.295 0.308 0.352 0.34 ] = [ 0.3332 0.3583 0.3085 0.3224 0.3556 0.322 ] B(1) = A B(0) = \left[ \begin{array}{cc} 0.7 & 0.3 \\ 0.4 & 0.6 \end{array} \right] \left[ \begin{array}{ccc} 0.5 & 0.4 & 0.1 \\ 0.1 & 0.3 & 0.6 \end{array} \right]= \left[ \begin{array}{cc} 0.38 & 0.37 & 0.25 \\ 0.26 & 0.34 & 0.4 \end{array} \right] \\ B(2) = A B(1) = \left[ \begin{array}{cc} 0.7 & 0.3 \\ 0.4 & 0.6 \end{array} \right] \left[ \begin{array}{cc} 0.38 & 0.37 & 0.25 \\ 0.26 & 0.34 & 0.4 \end{array} \right] =\left[ \begin{array}{cc} 0.344 & 0.361 & 0.295 \\ 0.308 & 0.352 & 0.34 \end{array} \right] \\ B(3) = A B(2) = \left[ \begin{array}{cc} 0.7 & 0.3 \\ 0.4 & 0.6 \end{array} \right] \left[ \begin{array}{cc} 0.344 & 0.361 & 0.295 \\ 0.308 & 0.352 & 0.34 \end{array} \right] =\left[ \begin{array}{cc} 0.3332 & 0.3583 & 0.3085 \\ 0.3224 & 0.3556 & 0.322 \end{array} \right] B(1)=AB(0)=[0.70.40.30.6][0.50.10.40.30.10.6]=[0.380.260.370.340.250.4]B(2)=AB(1)=[0.70.40.30.6][0.380.260.370.340.250.4]=[0.3440.3080.3610.3520.2950.34]B(3)=AB(2)=[0.70.40.30.6][0.3440.3080.3610.3520.2950.34]=[0.33320.32240.35830.35560.30850.322]
状态集合 Q = { 1 , 2 , 3 } Q=\{1,2,3\} Q={ 1,2,3},观测集合 V = { 红 , 白 } V=\{红,白\} V={ 红,白}。
初始概率分布:
π ( 0 ) = [ 0.2 0.4 0.4 ] T \pi(0) = \left[ \begin{array}{cc} 0.2 & 0.4 & 0.4 \end{array} \right]^T π(0)=[0.20.40.4]T
状态转移概率矩阵:
A = [ 0.5 0.2 0.3 0.3 0.5 0.2 0.2 0.3 0.5 ] A = \left[ \begin{array}{cc} 0.5 & 0.2 & 0.3 \\ 0.3 & 0.5 & 0.2 \\ 0.2 & 0.3 & 0.5 \end{array} \right] A=⎣⎡0.50.30.20.20.50.30.30.20.5⎦⎤
观测概率矩阵:
B = [ 0.5 0.5 0.4 0.6 0.7 0.3 ] B = \left[ \begin{array}{ccc} 0.5 & 0.5 \\ 0.4 & 0.6 \\ 0.7 & 0.3 \end{array} \right] B=⎣⎡0.50.40.70.50.60.3⎦⎤
设 T = 3 T=3 T=3, O = ( 红 , 白 , 红 ) O=(红,白,红) O=(红,白,红),试用前向算法计算 P ( O ∣ λ ) P(O|\lambda) P(O∣λ)。
前向算法计算:
第一个观测值是红,计算在初始概率分布下,三个状态观测到红的概率分别是:
α 1 ( 1 ) = π 1 b 1 ( o 1 ) = 0.2 ∗ 0.5 = 0.1 α 1 ( 2 ) = π 2 b 2 ( o 1 ) = 0.4 ∗ 0.4 = 0.16 α 1 ( 3 ) = π 3 b 3 ( o 1 ) = 0.4 ∗ 0.7 = 0.28 \alpha_1(1) = \pi_1 b_1(o_1) = 0.2 * 0.5 = 0.1 \\ \alpha_1(2) = \pi_2 b_2(o_1) = 0.4 * 0.4 = 0.16 \\ \alpha_1(3) = \pi_3 b_3(o_1) = 0.4 * 0.7 = 0.28 α1(1)=π1b1(o1)=0.2∗0.5=0.1α1(2)=π2b2(o1)=0.4∗0.4=0.16α1(3)=π3b3(o1)=0.4∗0.7=0.28
P ( 第 一 个 观 测 值 是 红 , 初 始 状 态 1 ) = P ( 第 一 个 观 测 值 是 红 ∣ 初 始 状 态 1 ) P ( 初 始 状 态 1 ) = P ( 观 测 值 是 红 ∣ 状 态 1 ) P ( 初 始 状 态 1 ) P ( 第 一 个 观 测 值 是 红 , 初 始 状 态 2 ) = P ( 第 一 个 观 测 值 是 红 ∣ 初 始 状 态 2 ) P ( 初 始 状 态 2 ) = P ( 观 测 值 是 红 ∣ 状 态 2 ) P ( 初 始 状 态 2 ) P ( 第 一 个 观 测 值 是 红 , 初 始 状 态 3 ) = P ( 第 一 个 观 测 值 是 红 ∣ 初 始 状 态 3 ) P ( 初 始 状 态 3 ) = P ( 观 测 值 是 红 ∣ 状 态 3 ) P ( 初 始 状 态 3 ) P(第一个观测值是红,初始状态1) = P(第一个观测值是红|初始状态1) P(初始状态1) = P(观测值是红|状态1) P(初始状态1) \\ P(第一个观测值是红,初始状态2) = P(第一个观测值是红|初始状态2) P(初始状态2) = P(观测值是红|状态2) P(初始状态2) \\ P(第一个观测值是红,初始状态3) = P(第一个观测值是红|初始状态3) P(初始状态3) = P(观测值是红|状态3) P(初始状态3) P(第一个观测值是红,初始状态1)=P(第一个观测值是红∣初始状态1)P(初始状态1)=P(观测值是红∣状态1)P(初始状态1)P(第一个观测值是红,初始状态2)=P(第一个观测值是红∣初始状态2)P(初始状态2)=P(观测值是红∣状态2)P(初始状态2)P(第一个观测值是红,初始状态3)=P(第一个观测值是红∣初始状态3)P(初始状态3)=P(观测值是红∣状态3)P(初始状态3)
P ( 第 一 个 观 测 值 是 红 ) = ∑ i = 1 3 P ( 第 一 个 观 测 值 是 红 , 初 始 状 态 i ) = 0.54 P(第一个观测值是红) = \sum_{i=1}^3 P(第一个观测值是红,初始状态i) = 0.54 P(第一个观测值是红)=i=1∑3P(第一个观测值是红,初始状态i)=0.54
在第一个观测值为红的前提下,转为状态1的概率:
β 1 ( 1 ) = ∑ i = 1 3 α 1 ( i ) a i 1 = 0.1 ∗ 0.5 + 0.16 ∗ 0.3 + 0.28 ∗ 0.2 = 0.154 \beta_1(1) = \sum_{i=1}^3 \alpha_1(i) a_{i1} = 0.1 * 0.5 + 0.16 * 0.3 + 0.28 * 0.2 = 0.154 β1(1)=i=1∑3α1(i)ai1=0.1∗0.5+0.16∗0.3+0.28∗0.2=0.154
P ( 第 一 个 观 测 值 是 红 , 第 一 个 状 态 是 1 ) = ∑ i = 1 3 P ( 第 一 个 观 测 值 是 红 ∣ 第 一 个 状 态 是 1 ) P ( 第 一 个 状 态 是 1 ∣ 初 始 状 态 i ) P ( 初 始 状 态 i ) = ∑ i = 1 3 P ( 第 一 个 观 测 值 是 红 ∣ 第 一 个 状 态 是 1 ) P ( 初 始 状 态 i ) P ( 第 一 个 状 态 是 1 ∣ 初 始 状 态 i ) = ∑ i = 1 3 P ( 观 测 值 是 红 ∣ 状 态 1 ) P ( 初 始 状 态 i ) P ( 下 一 个 状 态 是 1 ∣ 状 态 i ) = ∑ i = 1 3 P ( 观 测 值 是 红 , 初 始 状 态 i ) P ( 下 一 个 状 态 是 1 ∣ 状 态 i ) \begin{aligned} P(第一个观测值是红,第一个状态是1) &= \sum_{i=1}^3 P(第一个观测值是红|第一个状态是1) P(第一个状态是1|初始状态i) P(初始状态i) \\ &= \sum_{i=1}^3 P(第一个观测值是红|第一个状态是1) P(初始状态i) P(第一个状态是1|初始状态i) \\ &= \sum_{i=1}^3 P(观测值是红|状态1) P(初始状态i) P(下一个状态是1|状态i) \\ &= \sum_{i=1}^3 P(观测值是红, 初始状态i) P(下一个状态是1|状态i) \end{aligned} P(第一个观测值是红,第一个状态是1)=i=1∑3P(第一个观测值是红∣第一个状态是1)P(第一个状态是1∣初始状态i)P(初始状态i)=i=1∑3P(第一个观测值是红∣第一个状态是1)P(初始状态i)P(第一个状态是1∣初始状态i)=i=1∑3P(观测值是红∣状态1)P(初始状态i)P(下一个状态是1∣状态i)=i=1∑3P(观测值是红,初始状态i)P(下一个状态是1∣状态i)
P ( 第 一 个 观 测 值 是 红 , 初 始 状 态 i ) P ( 第 一 个 状 态 是 1 ∣ 初 始 状 态 i ) = P(第一个观测值是红,初始状态i) P(第一个状态是1|初始状态i) = P(第一个观测值是红,初始状态i)P(第一个状态是1∣初始状态i)=
在第一个观测值为红的前提下,转为状态2的概率:
β 1 ( 2 ) = ∑ i = 1 3 α 1 ( i ) a i 2 = 0.1 ∗ 0.2 + 0.16 ∗ 0.5 + 0.28 ∗ 0.3 = 0.184 \beta_1(2) = \sum_{i=1}^3 \alpha_1(i) a_{i2} = 0.1 * 0.2 + 0.16 * 0.5 + 0.28 * 0.3 = 0.184 β1(2)=i=1∑3α1(i)ai2=0.1∗0.2+0.16∗0.5+0.28∗0.3=0.184
在第一个观测值为红的前提下,转为状态3的概率:
β 1 ( 2 ) = ∑ i = 1 3 α 1 ( i ) a i 2 = 0.1 ∗ 0.3 + 0.16 ∗ 0.2 + 0.28 ∗ 0.5 = 0.202 \beta_1(2) = \sum_{i=1}^3 \alpha_1(i) a_{i2} = 0.1 * 0.3 + 0.16 * 0.2 + 0.28 * 0.5 = 0.202 β1(2)=i=1∑3α1(i)ai2=0.1∗0.3+0.16∗0.2+0.28∗0.5=0.202
所以
π ( 1 ) = [ 0.154 0.184 0.202 ] T \pi(1) = \left[ \begin{array}{cc} 0.154 & 0.184 & 0.202 \end{array} \right]^T π(1)=[0.1540.1840.202]T
第二个观测值为白,计算在上述概率分布下,三个状态观测到白的概率分别是:
α 2 ( 1 ) = β 1 ( 1 ) b 1 ( o 2 ) = 0.154 ∗ 0.5 = 0.077 α 2 ( 2 ) = β 1 ( 2 ) b 2 ( o 2 ) = 0.184 ∗ 0.6 = 0.1104 α 2 ( 3 ) = β 1 ( 3 ) b 3 ( o 2 ) = 0.202 ∗ 0.3 = 0.0606 \alpha_2(1) = \beta_1(1) b_1(o_2) = 0.154 * 0.5 = 0.077 \\ \alpha_2(2) = \beta_1(2) b_2(o_2) = 0.184 * 0.6 = 0.1104 \\ \alpha_2(3) = \beta_1(3) b_3(o_2) = 0.202 * 0.3 = 0.0606 α2(1)=β1(1)b1(o2)=0.154∗0.5=0.077α2(2)=β1(2)b2(o2)=0.184∗0.6=0.1104α2(3)=β1(3)b3(o2)=0.202∗0.3=0.0606
在第一、二个观测值为红、白的前提下,转为状态1的概率:
β 2 ( 1 ) = ∑ i = 1 3 α 2 ( i ) a i 1 = 0.077 ∗ 0.5 + 0.1104 ∗ 0.3 + 0.0606 ∗ 0.2 = 0.08374 \beta_2(1) = \sum_{i=1}^3 \alpha_2(i) a_{i1} = 0.077 * 0.5 + 0.1104 * 0.3 + 0.0606 * 0.2 = 0.08374 β2(1)=i=1∑3α2(i)ai1=0.077∗0.5+0.1104∗0.3+0.0606∗0.2=0.08374
在第一、二个观测值为红、白的前提下,转为状态2的概率:
β 2 ( 2 ) = ∑ i = 1 3 α 2 ( i ) a i 2 = 0.077 ∗ 0.2 + 0.1104 ∗ 0.5 + 0.0606 ∗ 0.3 = 0.08878 \beta_2(2) = \sum_{i=1}^3 \alpha_2(i) a_{i2} = 0.077 * 0.2 + 0.1104 * 0.5 + 0.0606 * 0.3 = 0.08878 β2(2)=i=1∑3α2(i)ai2=0.077∗0.2+0.1104∗0.5+0.0606∗0.3=0.08878
在第一、二个观测值为红、白的前提下,转为状态3的概率:
β 2 ( 2 ) = ∑ i = 1 3 α 2 ( i ) a i 2 = 0.077 ∗ 0.3 + 0.1104 ∗ 0.2 + 0.0606 ∗ 0.5 = 0.07548 \beta_2(2) = \sum_{i=1}^3 \alpha_2(i) a_{i2} = 0.077 * 0.3 + 0.1104 * 0.2 + 0.0606 * 0.5 = 0.07548 β2(2)=i=1∑3α2(i)ai2=0.077∗0.3+0.1104∗0.2+0.0606∗0.5=0.07548
所以
π ( 2 ) = [ 0.08374 0.08878 0.07548 ] T \pi(2) =\left[ \begin{array}{cc} 0.08374 & 0.08878 & 0.07548\end{array} \right]^T π(2)=[0.083740.088780.07548]T
第三个观测值为红,计算在上述概率分布下,三个状态观测到红的概率分别是:
α 3 ( 1 ) = β 2 ( 1 ) b 1 ( o 1 ) = 0.08374 ∗ 0.5 = 0.04187 α 3 ( 2 ) = β 2 ( 2 ) b 2 ( o 1 ) = 0.08878 ∗ 0.4 = 0.03551 α 3 ( 3 ) = β 2 ( 3 ) b 3 ( o 1 ) = 0.07548 ∗ 0.7 = 0.05284 \alpha_3(1) = \beta_2(1) b_1(o_1) = 0.08374 * 0.5 = 0.04187 \\ \alpha_3(2) = \beta_2(2) b_2(o_1) = 0.08878 * 0.4 = 0.03551 \\ \alpha_3(3) = \beta_2(3) b_3(o_1) = 0.07548 * 0.7 = 0.05284 α3(1)=β2