用简单易懂的例子解释隐马尔可夫模型

本文通过一个简单的例子,详细解释了隐马尔可夫模型(HMM)的工作原理,包括初始概率分布、状态转移概率和观测概率。通过对连续三天身体感觉的分析,展示了如何运用HMM推断出隐藏的身体状态变化过程。通过前向算法和后向算法,求解观测序列的概率,并找出最优状态序列。HMM在自然语言处理等领域有着广泛应用。
摘要由CSDN通过智能技术生成

用简单易懂的例子解释隐马尔可夫模型

隐含的身体状态 = { 健康 , 发烧 }

可观察的感觉状态 = { 正常 , 冷 , 头晕 }

预判的身体状态初始概率分布 = { 健康: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.20.5=0.1α1(2)=π2b2(o1)=0.40.4=0.16α1(3)=π3b3(o1)=0.40.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=13P(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=13α1(i)ai1=0.10.5+0.160.3+0.280.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=13P(1)P(1i)P(i)=i=13P(1)P(i)P(1i)=i=13P(1)P(i)P(1i)=i=13P(,i)P(1i)

P ( 第 一 个 观 测 值 是 红 , 初 始 状 态 i ) P ( 第 一 个 状 态 是 1 ∣ 初 始 状 态 i ) = P(第一个观测值是红,初始状态i) P(第一个状态是1|初始状态i) = P(i)P(1i)=

在第一个观测值为红的前提下,转为状态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=13α1(i)ai2=0.10.2+0.160.5+0.280.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=13α1(i)ai2=0.10.3+0.160.2+0.280.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.1540.5=0.077α2(2)=β1(2)b2(o2)=0.1840.6=0.1104α2(3)=β1(3)b3(o2)=0.2020.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=13α2(i)ai1=0.0770.5+0.11040.3+0.06060.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=13α2(i)ai2=0.0770.2+0.11040.5+0.06060.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=13α2(i)ai2=0.0770.3+0.11040.2+0.06060.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值