《概率统计》14.状态解码:隐马尔科夫模型隐含状态揭秘

隐含状态解码问题的描述

上一篇我们讲完了概率估计问题,这里我们再来讲一下隐马尔科夫模型的状态解码问题。

解码 Decoding,就是给定一个已知的观测序列,求它最有可能对应的状态序列。那么用形式化的语言来说,就是已知模型λ = (A, B, π)和观测序列\(O = (o_{1},o_{2},...,o_{T})\),求使得条件概率P(I|O)最大的隐状态序列I = (\(i_{1},i_{2},...,i_{T}\))

我们一步一步地来,先不考虑输出观测,仅仅只考虑隐状态的转移,来体会一下思路,首先我们的目标是去找到路径概率最大的一条状态序列。

我们对着下面这幅图来说,会让大家更好理解一些:

图中展现的隐马尔科夫模型中的状态序列,其中一共包含 5 种隐含状态,状态序列的长度为 7,那么图中很明显横轴是时间轴,纵轴是状态轴。

最大路径概率与维特比算法

我们从整个隐含状态序列的最后往前面看,在第 7 个时间点,也就是最后一个时间点这,我们要考虑状态序列的最后一个状态是状态 [1,2,3,4,5] 中的哪一个?实质上就是比较路径以谁为结束状态,整个路径的概率最大。

那怎么操作?我们首先关注的是最后一个时间节点 7,问题就落脚在如果状态转移路径以结束于状态 k 的路径概率最大(可以是状态 1 ~ 状态 5 中的任意一个,我们先不管它具体是哪一个了,只知道肯定是其中一个),那么这个概率该怎么表示呢?很显然,它依赖于时间节点 6 可能选取的 5 个状态。

实际上,时间节点 6 取 5 个状态中的任意一个都是有可能的,可能由时间节点 6 处的状态 1 转移到时间节点 7 处的状态 k,也可能由状态 2 转移到时间节点 7 的状态 k,当然也可以是状态 3、状态 4 或者状态 5。最终就看从哪里转移过去的路径概率最大,就选择从哪里转移过去,过程示意如下图所示:

我们令 \(X_{6i}\) 表示到达时间节点 6 时,此时状态为 i 的最大路径概率,当然了,状态 i 可以取 {1,2,3,4,5} 中的任意一个,那么实际上就有 \(X_{61}、 X_{62}、 X_{63}、 X_{64}、 X_{65}\) 五个不同的值。在上面这幅图中,就对应了虚线框中五种颜色示意的到达时间节点 6 的五条路径,它们分别都是在时间节点 6 时到达对应状态 i 的最大概率路径。

那么用它乘以对应的状态转移概率,即 \(X_{6i}A_{ik}\),就前进到第 7 个时间节点了,计算出隐含状态序列 {x,x,x,x,x,i,k} 的路径概率。那么首先我们固定一个第 7 个时间节点结束的状态,比如选取状态 1,那么我们可以分别求出从第 6 个时间节点的状态 1、状态 2、状态 3、状态 4、状态 5 分别转移到第 7 个节点状态 1 的概率:\(X_{61}A_{11}\)、\(X_{62}A_{21}\)、\(X_{63}A_{31}\)、\(X_{64}A_{41}\)、\(X_{65}A_{51}\),我们计算出这 5 个值,取最大的就是我们结束于状态 1 的最大路径概率。

同样地,我们可以分别假设,令第 7 个时间节点的结束状态分别为 2、3、4、5,按照上面的方法,可以分别计算出结束于每一个状态的最大路径概率,我们取最大的一个,就可以真正地定下这条路径最后结束于哪一个状态了。

这里我们补充一点,为什么要强调 \(X_{6i}\) 是表示到达时间节点 6 时,状态为 i 的最大路径概率?最大二字道理何在?因为我们需要 \(X_{6i}A_{ik}\) 最大,由于对于每一个指定的状态 k,\(A_{ik}\) 都是固定的,那么就必须要求 \(X_{6i}\) 是最大的,否则如果有更大的第 6 时间节点到达状态 i 的路径概率 \(X′_{6i}\),那我们就拿它去替换掉原有的 \(X_{6i}\) 就好了,因此 \(X_{6i}\) 表示最大概率的道理就在这。

但是问题来了,每一个\(X_{6i}\) 是多少?它也是未知的,同样的道理,它依赖于第五个时间点的 \(X_{5j}\),即每一个时间点到达某个具体状态的最大路径概率都需要知道前一个时间点的到达各状态的最大路径概率,然后乘以状态转移概率比较而来,那何时是个尽头?走到头就是尽头。对,没错。要走到最早的时间点节点 1,时间点 1 的最大概率我们是可以直接算出来的。

那么我们从时间节点 1 出发,正过来,重新描述一下整个过程:

  • 首先我们在时间节点 1,我们计算出各状态出现的概率,由于只有一个节点,因此这个概率值就是此时的最大路径概率 \(X_{1i}\)。
  • 然后我们再向前前进到时间节点 2,对于每一个状态 j,我们通过利用时间节点 1 的每一个状态的最大路径概率乘以转移概率,会得到 5 个到达时间节点 2,状态 j 的路径概率值,取最大的一个就是此时的最大路径概率 \(X_{2j}\)。
  • 即 \(X_{2j}=max(X_{1i}A_{ij})\),i 遍历 1、2、3、4、5 每一个状态。同时我们还需要记录一下此时在时间节点 2、状态 j 这个节点在获取最大路径概率 \(X_{2j}\) 的情况下,是由时间节点 1 中的哪个状态转移而来的,把状态序号记录下来。

以此类推,我们基于时间节点 t,各状态的最大路径概率,就可以向前计算出 t+1 各状态的最大路径概率,直到最后一个时间节点 T,我们得到时间节点 T 的所有状态的最大概率路径 \(X_{Ti}\),取最大的一个 \(max(X_{Ti})\),i 遍历 1、2、3、4、5,就是我们要求的最大路径概率以及结束的状态,然后依据我们记录的前一状态进行回溯,就能够把整个状态序列给找出来了。

上述,就是求取最大概率路径的过程,也就是大名鼎鼎的维特比算法。

应用维特比算法进行解码

接下来,我们进一步把维特比算法引入到隐马尔科夫模型的解码中来,维特比算法中的最大概率路径就对应着隐马尔科夫模型中要找的那个最有可能的隐状态序列,不过此时在计算的过程中,我们不光要考虑隐状态的状态转移概率,还要考虑观测输出概率。

换句话说,就是我们要寻找一条隐含状态序列\((i_{1},i_{2},i_{3},...,i_{t})\),用它去生成我们指定的观测序列\((o_{1},o_{2},o_{3},...,o_{t})\),使得这个观测序列存在的概率最大?

用公式的语言来描述我们的目标就是:

\(δ_{t}(i) = maxP(i_{t}=i,i_{t-1},...,i_{1},o_{t},...,o_{1}), i=1,2,3,...,N\)

它表示在时刻 t,结束于隐状态 i,同时满足观测序列 \((o_{1},o_{2},o_{3},...,o_{t})\) 的最大路径概率,这个表达式同时考虑了隐状态和输出观测,是一个联合概率,其中 i 取 i=1,2,3,…,N,最终我们也是取 P 值最大的一个。

那么依次类推:

\(δ_{t+1}(i) = maxP(i_{t+1}=i,i_{t},i_{t-1},...,i_{1},o_{t+1},o_{t},...,o_{1}), i=1,2,3,...,N\)

那么,\(δ_{t+1}(i)\) 和 \(δ_{t}(i)\) 的递推关系是怎么样的?我们根据隐马尔科夫模型先进行状态转移,再进行观测输出的过程,不难写出它们的递推关系:

\(δ_{t+1}(i) = max(δ_{t}(j)a_{ji}b_{io_{t+1}}), 1≤j≤N\)

当然,我们也可以证明一下这个过程,其实非常简单,实质上也就是反复使用贝叶斯公式进行概率等式的转换。

\(max(δ_{t}(j)a_{ji}b_{io_{t+1}})\)

=\(max(maxP(i_{t}=j,i_{t-1},...,i_{1},o_{t},...o_{1}))P(i_{t+1}=i|i_{t}=j)P(o_{t+1}|i_{t+1}=i)\)

=\(maxP(i_{t}=j,i_{t-1},...,i_{1},o_{t},...,o_{1})P(i_{t+1}=i|i_{t}=j)P(o_{t+1}|i_{t+1}=i)\)

=\(maxP(i_{t+1}=i,i_{t}=j,i_{t-1},...,i_{1},o_{t},...,o_{1})P(o_{t+1}|i_{t+1}=i)\)

=\(maxP(i_{t+1}=i,i_{t},i_{t-1},...,i_{1},o_{t+1},o_{t},...,o_{1}) =?δ_{t+1}(i)\)

因此,我们回过头来看一下这个递推公式:

\(δ_{t+1}(i) = max(δ_{t}(j)a_{ji}b_{io_{t+1}})\)

和上面维特比算法中的简单路径概率的例子相比,其实就是多了一个观测输出概率\(b_{io_{t+1}}\),这个值是已知的,比单纯的简单路径概率问题多进行一次观测输出概率的相乘运算,因此本质上并无二致。

因此,我们同样地按照维特比算法中的思路从 \(δ_{1}(i)\),一步一步按照之前介绍过的方法推导到\(δ_{T}(i)\),求得最大的概率,同时在递推的过程中,在每一个时间点 t 都记录好上一个时间点 t-1 的隐含状态,以便于我们最后的状态回溯。还是那句话,思路和维特比算法中的最大路径概率计算没有什么大的区别。

原文地址:https://www.cnblogs.com/traditional/p/12620103.html

时间: 2024-08-24 11:41:28

《概率统计》14.状态解码:隐马尔科夫模型隐含状态揭秘的相关文章

隐马尔科夫模型

特征向量:跟踪框位置相对轨迹中心的比值,角度,速度. 马尔科夫模型: State Sequence, q1 q2 ...... qT t个状态之间的转移可见,则这个时间序列的概率是πq1 × aq1q2 × ...... × aqT-1qT 隐马尔科夫模型: 状态不可见(隐藏),只能从观察值推测出,所以由观察值推测该时刻的状态有个观察值概率b. πq1 × bq1( o1 ) × aq1q2 × bq2( o2 ) × ...... × aqT-1qT × bqT( oT ), 三个问题: 1.

隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率

隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列(TODO) 在隐马尔科夫模型HMM(一)HMM模型中,我们讲到了HMM模型的基础知识和HMM的三个基本问题,本篇我们就关注于HMM第一个基本问题的解决方法,即已知模型和观测序列,求观测序列出现的概率. 1. 回顾HMM问题一:求观测序列的概率 首先我们回顾下HMM模型的问题一.这个

隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数

隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列(TODO) 在本篇我们会讨论HMM模型参数求解的问题,这个问题在HMM三个问题里算是最复杂的.在研究这个问题之前,建议先阅读这个系列的前两篇以熟悉HMM模型和HMM的前向后向算法,以及EM算法原理总结,这些在本篇里会用到.在李航的<统计学习方法>中,这个算法的讲解只考虑了单个观测

炎热天气看书还是钓鱼?隐马尔科夫模型教你预测!

高温天气与行为概率 夏季是一年最热的时候,气温普遍偏高,一般把日最高气温达到35℃以上的天气叫作高温天气,但是一般情况下高温天气分为两类.  (1)干热型高温.一般是指气温较高.太阳辐射强而且空气的湿度较小的高温天气.  (2)闷热型高温.一般是指水汽丰富,但是气温相对而言并不算太高,给人感受闷热.  小张在不同类型下的高温天气下会有不同的行为,但是归纳起来为主要为散步.垂钓.看书三类,分别在干热型高温和闷热型高温下对应行为的概率见下表.  假设干热型高温和闷热型高温之间会进行相互转变,每天可能

《统计学习方法》第十章,隐马尔科夫模型

? 隐马尔科夫模型的三个问题 ● 代码 1 import numpy as np 2 import scipy as sp 3 import matplotlib.pyplot as plt 4 from matplotlib.patches import Rectangle 5 6 dataSize = 200 7 trainRatio = 0.3 8 epsilon = 1E-10 9 randomSeed = 109 10 11 def dataSplit(dataX, dataY, pa

隐马尔科夫模型学习笔记

隐马尔科夫模型在股票量化交易中有应用,最早我们找比特币交易模型了解到了这个概念,今天又看了一下<统计学习方法>里的隐马尔科夫模型一章. 隐马尔科夫模型从马尔科夫链的概念而来,马尔科夫链是指下一个状态只和当前的n个状态有关,和历史状态无关的一个时间上的事件链,隐马尔科夫模型在这个状态链的基础上,让每一个状态都能产生观测值,从而可以产生一个可观测的数据链,让原来的状态链变成了幕后产生数据的状态链,称为因马尔科夫链. 隐马尔科夫链应用比较广泛,主要能够处理三类问题:. 一个是给定了马尔科夫模型参数和

隐马尔科夫模型HMM(一)HMM模型

隐马尔科夫模型HMM(一)HMM模型基础 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率(TODO) 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列(TODO) 隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理,模式识别等领域得到广泛的应用.当然,随着目前深度学习的崛起,尤其是RNN,LSTM等神经网络序列模型的火热,HMM的地位有所下

隐马尔科夫模型详解

转载请注明地址(http://blog.csdn.net/xinzhangyanxiang/article/details/8522078) 学习概率的时候,大家一定都学过马尔科夫模型吧,当时就觉得很有意思,后来看了数学之美之隐马模型在自然语言处理中的应用后,看到隐马尔科夫模型竟然能有这么多的应用,并且取得了很好的成果,更觉的不可思议,特地深入学习了一下,这里总结出来. 马尔科夫过程 马尔科夫过程可以看做是一个自动机,以一定的概率在各个状态之间跳转. 考虑一个系统,在每个时刻都可能处于N个状态中

隐马尔科夫模型(HMM)分词研究

第一部分 模型简介 隐马尔可夫模型是马尔可夫链的一种,它的状态不能直接观察到,但能通过观测向量序列观察到,每个观测向量都是通过某些概率密度分布表现为各种状态,每一个观测向量是由一个具有相应概率密度分布的状态序列产生.所以,隐马尔可夫模型是一个双重随机过程 ----具有一定状态数的隐马尔可夫链和显示随机函数集.自20 世纪80年代以来,HMM被应用于语音识别,取得重大成功.到了90年代,HMM还被引入计算机文字识别和移动通信核心技术"多用户的检测".HMM在生物信息科学.故障诊断等领域也