【西瓜书笔记】13. 隐马尔科夫模型(3)

近似算法

近似算法思想:在每个时刻t选择在该时刻最有可能出现的状态 i t ∗ i_{t}^{*} it,从而得到一个状态序列 I ∗ = ( i 1 ∗ , i 2 ∗ , … , i T ∗ ) I^{*}=\left(i_{1}^{*}, i_{2}^{*}, \ldots, i_{T}^{*}\right) I=(i1,i2,,iT),将它作为预测的结果。具体算法如下:

给定隐马尔科夫模型 λ \lambda λ和观测序列 O O O, 在时刻t处于状态 q i q_i qi的概率 γ t ( i ) \gamma_{t}(i) γt(i)
γ t ( i ) = α t ( i ) β t ( i ) ∑ j = 1 N α t ( j ) β t ( j ) \gamma_{t}(i)=\frac{\alpha_{t}(i) \beta_{t}(i)}{\sum_{j=1}^{N} \alpha_{t}(j) \beta_{t}(j)} γt(i)=j=1Nαt(j)βt(j)αt(i)βt(i)
在每一时刻t最有可能的状态 i t ∗ i_{t}^{*} it
i t ∗ = arg ⁡ max ⁡ 1 ≤ i ≤ N [ γ t ( i ) ] , t = 1 , 2 , … , T i_{t}^{*}=\arg \max _{1 \leq i \leq N}\left[\gamma_{t}(i)\right], \quad t=1,2, \ldots, T it=arg1iNmax[γt(i)],t=1,2,,T
从而得到状态序列 I ∗ = ( i 1 ∗ , i 2 ∗ , … , i T ∗ ) I^{*}=\left(i_{1}^{*}, i_{2}^{*}, \ldots, i_{T}^{*}\right) I=(i1,i2,,iT)。但是近似算法不能保证计算出来的状态序列是整体最有可能的状态序列。因为它只是计算单个状态的最大可能性,从而有可能预测出相邻状态转化概率为0的序列。

维特比算法

维特比算法实际就是用动态规划解隐马尔科夫模型预测问题。即用动态规划求概率最大路径,这时一条路径对应着一个状态序列。具体算法如下:

定义在时刻t状态为 q i q_{i} qi的所有单个路径 ( i 1 , i 2 , … , i t ) \left(i_{1}, i_{2}, \ldots, i_{t}\right) (i1,i2,,it)中概率最大值为:
δ t ( i ) = max ⁡ i 1 , i 2 , . . , i t − 1 P ( o 1 , … , o t , i 1 , … , i t − 1 , i t = q i ) , i = 1 , 2 , … , N \delta_{t}(i)=\max _{i_{1}, i_{2}, . ., i_{t-1}} P\left(o_{1}, \ldots, o_{t}, i_{1}, \ldots, i_{t-1}, i_{t}=q_{i}\right), \quad i=1,2, \ldots, N δt(i)=i1,i2,..,it1maxP(o1,,ot,i1,,it1,it=qi),i=1,2,,N
由上述定义可知:
δ 1 ( i ) = π i b i o 1 δ 2 ( i ) = max ⁡ 1 ≤ j ≤ N [ δ 1 ( j ) a j i ] b i o 2 δ 3 ( i ) = max ⁡ 1 ≤ j ≤ N [ δ 2 ( j ) a j i ] b i o 3 \begin{aligned} \delta_{1}(i) &=\pi_{i} b_{i o_{1}} \\ \delta_{2}(i) &=\max _{1 \leq j \leq N}\left[\delta_{1}(j) a_{j i}\right] b_{i o_{2}} \\ \delta_{3}(i) &=\max _{1 \leq j \leq N}\left[\delta_{2}(j) a_{j i}\right] b_{i o_{3}} \end{aligned} δ1(i)δ2(i)δ3(i)=πibio1=1jNmax[δ1(j)aji]bio2=1jNmax[δ2(j)aji]bio3
以此类推可得如下递推公式:
δ t ( i ) = max ⁡ 1 ≤ j ≤ N [ δ t − 1 ( j ) a j i ] b i o t \delta_{t}(i)=\max _{1 \leq j \leq N}\left[\delta_{t-1}(j) a_{j i}\right] b_{i o_{t}} δt(i)=1jNmax[δt1(j)aji]biot
定义在时刻t状态为 q i q_i qi的所有单个路径 ( i 1 , i 2 , … , i t − 1 , i t ) \left(i_{1}, i_{2}, \ldots, i_{t}-1, i_{t}\right) (i1,i2,,it1,it)中概率最大的路径的第t-1个结点为
ψ t ( i ) = arg ⁡ max ⁡ 1 ≤ j ≤ N [ δ t − 1 ( j ) a j i ] \psi_{t}(i)=\arg \max _{1 \leq j \leq N}\left[\delta_{t-1}(j) a_{j i}\right] ψt(i)=arg1jNmax[δt1(j)aji]
注意这里是结点,其实表达的意义与i相同,就是第i种状态。

因此,取 i T ∗ = arg ⁡ max ⁡ i [ δ T ( i ) ] i_{T}^{*}=\arg \max _{i}\left[\delta_{T}(i)\right] iT=argmaxi[δT(i)],则 i T − 1 ∗ = ψ T ( i T ∗ ) , i T − 2 ∗ = ψ T − 1 ( i T − 1 ∗ ) , … , i 1 ∗ = ψ 2 ( i 2 ∗ ) i_{T-1}^{*}=\psi_{T}\left(i_{T}^{*}\right), i_{T-2}^{*}=\psi_{T-1}\left(i_{T-1}^{*}\right), \ldots, i_{1}^{*}=\psi_{2}\left(i_{2}^{*}\right) iT1=ψT(iT),iT2=ψT1(iT1),,i1=ψ2(i2)

i T − 1 ∗ = ψ T ( i T ∗ ) i_{T-1}^{*}=\psi_{T}\left(i_{T}^{*}\right) iT1=ψT(iT)表示的就是时刻T状态为概率最大的状态情况下,所有单个路径中概率最大的路径的第T-1个结点。也就是在后一个结点取概率最大时,前一个概率最大的结点是哪个。

《统计学习方法》例10.3

假设有3个盒子,每个盒子里面都装有红白两种颜色的球,盒子里的红白球数如下表所示:
 盒子  1 2 3  红球数  5 4 7  白球数  5 6 3 \begin{array}{|c|c|c|c|} \hline \text { 盒子 } & 1 & 2 & 3 \\ \hline \text { 红球数 } & 5 & 4 & 7 \\ \hline \text { 白球数 } & 5 & 6 & 3 \\ \hline \end{array}  盒子  红球数  白球数 155246373
按照下面的方法抽球,产生一个球的颜色的观测序列:首先以0.2、0.4、0.4的概率从1、2、3号盒子中选取一个盒子,从这个盒子里随机抽出1个球,记录其颜色后放回,接着按一下概率选取下一个盒子
1 2 3 1 0.5 0.2 0.3 2 0.3 0.5 0.2 3 0.2 0.3 0.5 \begin{array}{|c|c|c|c|} \hline & \mathbf{1} & \mathbf{2} & \mathbf{3} \\ \hline 1 & 0.5 & 0.2 & 0.3 \\ \hline 2 & 0.3 & 0.5 & 0.2 \\ \hline 3 & 0.2 & 0.3 & 0.5 \\ \hline \end{array} 12310.50.30.220.20.50.330.30.20.5
确定转移的盒子后,再从盒子里面随机抽取1个球,记录其颜色后放回,如此下去,重复3次,最终得到观测序列O={红,白,红}。记选取的盒子序列为状态序列,试求最优状态序列,即最优路径 I ∗ = ( i 1 ∗ , i 2 ∗ , i 3 ∗ ) I^{*}=\left(i_{1}^{*}, i_{2}^{*}, i_{3}^{*}\right) I=(i1,i2,i3)

解:

该例子是一个典型的隐马尔可夫模型,盒子代表了隐变量状态序列。由题意可得隐马尔可夫模型的参数(三要素)为:
A = [ 0.5 0.2 0.3 0.3 0.5 0.2 0.2 0.3 0.5 ] B = [ 0.5 0.5 0.4 0.6 0.7 0.3 ] π = ( 0.2 , 0.4 , 0.4 ) T A=\left[\begin{array}{lll} 0.5 & 0.2 & 0.3 \\ 0.3 & 0.5 & 0.2 \\ 0.2 & 0.3 & 0.5 \end{array}\right] \quad B=\left[\begin{array}{ll} 0.5 & 0.5 \\ 0.4 & 0.6 \\ 0.7 & 0.3 \end{array}\right] \quad \pi=(0.2,0.4,0.4)^{\mathrm{T}} A=0.50.30.20.20.50.30.30.20.5B=0.50.40.70.50.60.3π=(0.2,0.4,0.4)T
其中B的第1、2列分别代表观测到红、白两球的概率。

按照维特比算法我们可以进行如下计算
δ 1 ( 1 ) = π 1 b 1 o 1 = 0.2 × 0.5 = 0.1 , ψ 1 ( 1 ) = 0 δ 1 ( 2 ) = π 2 b 2 o 1 = 0.4 × 0.4 = 0.16 , ψ 1 ( 2 ) = 0 δ 1 ( 3 ) = π 3 b 3 o 1 = 0.4 × 0.7 = 0.28 , ψ 1 ( 3 ) = 0 \begin{array}{ll} \delta_{1}(1)=\pi_{1} b_{1 o_{1}}=0.2 \times 0.5=0.1 , & \psi_{1}(1)=0 \\ \delta_{1}(2)=\pi_{2} b_{2 o_{1}}=0.4 \times 0.4=0.16 , & \psi_{1}(2)=0 \\ \delta_{1}(3)=\pi_{3} b_{3 o_{1}}=0.4 \times 0.7=0.28 , & \psi_{1}(3)=0 \end{array} δ1(1)=π1b1o1=0.2×0.5=0.1,δ1(2)=π2b2o1=0.4×0.4=0.16,δ1(3)=π3b3o1=0.4×0.7=0.28,ψ1(1)=0ψ1(2)=0ψ1(3)=0

在这里插入图片描述

然后我们计算时刻t=2的路径概率最大值
δ 2 ( 1 ) = max ⁡ 1 ≤ j ≤ 3 [ δ 1 ( j ) a j 1 ] b 1 o 2 = max ⁡ { 0.1 × 0.5 = 0.05 0.16 × 0.3 = 0.048 0.28 × 0.2 = 0.056 } × 0.5 = 0.028 δ 2 ( 2 ) = max ⁡ 1 ≤ j ≤ 3 [ δ 1 ( j ) a j 2 ] b 2 o 2 = max ⁡ { 0.1 × 0.2 = 0.02 0.16 × 0.5 = 0.08 0.28 × 0.3 = 0.084 } × 0.6 = 0.0504 δ 2 ( 3 ) = max ⁡ 1 ≤ j ≤ 3 [ δ 1 ( j ) a j 3 ] b 3 o 2 = max ⁡ { 0.1 × 0.3 = 0.03 0.16 × 0.2 = 0.032 0.28 × 0 − 0.14 } × 0.3 = 0.042 \begin{aligned} &\delta_{2}(1)=\max _{1 \leq j \leq 3}\left[\delta_{1}(j) a_{j 1}\right] b_{1 o_{2}}=\max \left\{\begin{array}{c} 0.1 \times 0.5=0.05 \\ 0.16 \times 0.3=0.048 \\ 0.28 \times 0.2=0.056 \end{array}\right\} \times 0.5=0.028 \\ &\delta_{2}(2)=\max _{1 \leq j \leq 3}\left[\delta_{1}(j) a_{j 2}\right] b_{2 o_{2}}=\max \left\{\begin{array}{c} 0.1 \times 0.2=0.02 \\ 0.16 \times 0.5=0.08 \\ 0.28 \times 0.3=0.084 \end{array}\right\} \times 0.6=0.0504 \\ &\delta_{2}(3)=\max _{1 \leq j \leq 3}\left[\delta_{1}(j) a_{j 3}\right] b_{3 o_{2}}=\max \left\{\begin{array}{c} 0.1 \times 0.3=0.03 \\ 0.16 \times 0.2=0.032 \\ 0.28 \times 0-0.14 \end{array}\right\} \times 0.3=0.042 \end{aligned} δ2(1)=1j3max[δ1(j)aj1]b1o2=max0.1×0.5=0.050.16×0.3=0.0480.28×0.2=0.056×0.5=0.028δ2(2)=1j3max[δ1(j)aj2]b2o2=max0.1×0.2=0.020.16×0.5=0.080.28×0.3=0.084×0.6=0.0504δ2(3)=1j3max[δ1(j)aj3]b3o2=max0.1×0.3=0.030.16×0.2=0.0320.28×00.14×0.3=0.042
可以看出,都是由时刻t=2时,都是从上一时刻t=1时处于状态3(也就是盒子3)出发的路径最大。
ψ 2 ( 1 ) = arg ⁡ max ⁡ 1 ≤ j ≤ 3 [ δ 1 ( j ) a j 1 ] = 3 ψ 2 ( 2 ) = arg ⁡ max ⁡ 1 ≤ j ≤ 3 [ δ 1 ( j ) a j 2 ] = 3 ψ 2 ( 3 ) = arg ⁡ max ⁡ 1 ≤ j ≤ 3 [ δ 1 ( j ) a j 3 ] = 3 \begin{aligned} &\psi_{2}(1)=\arg \max _{1 \leq j \leq 3}\left[\delta_{1}(j) a_{j 1}\right]=3 \\ &\psi_{2}(2)=\arg \max _{1 \leq j \leq 3}\left[\delta_{1}(j) a_{j 2}\right]=3 \\ &\psi_{2}(3)=\arg \max _{1 \leq j \leq 3}\left[\delta_{1}(j) a_{j 3}\right]=3 \end{aligned} ψ2(1)=arg1j3max[δ1(j)aj1]=3ψ2(2)=arg1j3max[δ1(j)aj2]=3ψ2(3)=arg1j3max[δ1(j)aj3]=3
在这里插入图片描述

继续计算下一时刻
δ 3 ( 1 ) = max ⁡ 1 ≤ j ≤ 3 [ δ 2 ( j ) a j 1 ] b 1 o 3 = max ⁡ { 0.028 × 0.5 = 0.014 0.0504 × 0.3 = 0.01512 0.042 × 0.2 = 0.0084 } × 0.5 = 0.00756 δ 3 ( 2 ) = max ⁡ 1 ≤ j ≤ 3 [ δ 2 ( j ) a j 2 ] b 2 o 3 = max ⁡ { 0.028 × 0.2 = 0.0056 0.0504 × 0.5 = 0.0252 0.042 × 0.3 = 0.0126 } × 0.4 = 0.01008 δ 3 ( 3 ) = max ⁡ 1 ≤ j ≤ 3 [ δ 2 ( j ) a j 3 ] b 3 o 3 = max ⁡ { 0.028 × 0.3 = 0.0084 0.0504 × 0.2 = 0.01008 0.042 × 0.5 = 0.021 } × 0.7 = 0.0147 \begin{aligned} &\delta_{3}(1)=\max _{1 \leq j \leq 3}\left[\delta_{2}(j) a_{j 1}\right] b_{1 o_{3}}=\max \left\{\begin{array}{c} 0.028 \times 0.5=0.014 \\ 0.0504 \times 0.3=0.01512 \\ 0.042 \times 0.2=0.0084 \end{array}\right\} \times 0.5=0.00756 \\ &\delta_{3}(2)=\max _{1 \leq j \leq 3}\left[\delta_{2}(j) a_{j 2}\right] b_{2 o_{3}}=\max \left\{\begin{array}{c} 0.028 \times 0.2=0.0056 \\ 0.0504 \times 0.5=0.0252 \\ 0.042 \times 0.3=0.0126 \end{array}\right\} \times 0.4=0.01008 \\ &\delta_{3}(3)=\max _{1 \leq j \leq 3}\left[\delta_{2}(j) a_{j 3}\right] b_{3 o_{3}}=\max \left\{\begin{array}{c} 0.028 \times 0.3=0.0084 \\ 0.0504 \times 0.2=0.01008 \\ 0.042 \times 0.5=0.021 \end{array}\right\} \times 0.7=0.0147 \end{aligned} δ3(1)=1j3max[δ2(j)aj1]b1o3=max0.028×0.5=0.0140.0504×0.3=0.015120.042×0.2=0.0084×0.5=0.00756δ3(2)=1j3max[δ2(j)aj2]b2o3=max0.028×0.2=0.00560.0504×0.5=0.02520.042×0.3=0.0126×0.4=0.01008δ3(3)=1j3max[δ2(j)aj3]b3o3=max0.028×0.3=0.00840.0504×0.2=0.010080.042×0.5=0.021×0.7=0.0147
可以看出,t=3时,状态1、2从上一时刻t=2的状态2转移的概率最大,状态3还是从上一时刻的状态3转移的概率最大。
ψ 3 ( 1 ) = arg ⁡ max ⁡ 1 ≤ j ≤ 3 [ δ 2 ( j ) a j 1 ] = 2 ψ 3 ( 2 ) = arg ⁡ max ⁡ 1 ≤ j ≤ 3 [ δ 2 ( j ) a j 2 ] = 2 ψ 3 ( 3 ) = arg ⁡ max ⁡ 1 ≤ j ≤ 3 [ δ 2 ( j ) a j 3 ] = 3 \begin{aligned} &\psi_{3}(1)=\arg \max _{1 \leq j \leq 3}\left[\delta_{2}(j) a_{j 1}\right]=2 \\ &\psi_{3}(2)=\arg \max _{1 \leq j \leq 3}\left[\delta_{2}(j) a_{j 2}\right]=2 \\ &\psi_{3}(3)=\arg \max _{1 \leq j \leq 3}\left[\delta_{2}(j) a_{j 3}\right]=3 \end{aligned} ψ3(1)=arg1j3max[δ2(j)aj1]=2ψ3(2)=arg1j3max[δ2(j)aj2]=2ψ3(3)=arg1j3max[δ2(j)aj3]=3
在这里插入图片描述

所以,最优状态序列为
i 3 ∗ = arg ⁡ max ⁡ i [ δ 3 ( i ) ] = 3 i 2 ∗ = ψ 3 ( i 3 ∗ ) = ψ 3 ( 3 ) = 3 i 1 ∗ = ψ 2 ( i 2 ∗ ) = ψ 2 ( 3 ) = 3 \begin{aligned} &i_{3}^{*}=\arg \max _{i}\left[\delta_{3}(i)\right]=3 \\ &i_{2}^{*}=\psi_{3}\left(i_{3}^{*}\right)=\psi_{3}(3)=3 \\ &i_{1}^{*}=\psi_{2}\left(i_{2}^{*}\right)=\psi_{2}(3)=3 \end{aligned} i3=argimax[δ3(i)]=3i2=ψ3(i3)=ψ3(3)=3i1=ψ2(i2)=ψ2(3)=3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值