隐马尔可夫模型(三)

预测算法

还记得隐马尔可夫模型的三个问题吗?本篇介绍第三个问题:预测问题,即给定模型参数和观测序列,求最有可能的状态序列,有如下两种算法。

近似算法

在每个时刻t选出当前最有可能的状态 it,从而得到一个状态序列。

给定隐马尔可夫模型参数 λ 和长度为T的观测序列O,在时刻 t 处于状态qi的概率为

   (1)

其中使用了前向算法和后向算法,于是最有可能的状态的下表 i 为

                                    (2)

于是得到状态序列I*=(i1*,i2*,...,iT*)

近似算法虽然计算简单,但是无法保证状态序列整体是最优的,也就是说在这个模型参数 λ 和观测序列O下,近似算法得到的状态序列可能不是出现概率最大的那个状态序列(即,P(I*|O,λ) 可能不是最大值)

维特比算法

维特比算法实际使用了动态规划(dynamic programming)求概率最大路径(最优路径),这条路径就是这里的状态序列。

根据动态规划原理,如果最优路径在时刻 t 经过结点 it*,那么从结点it*到结点iT*之间的局部路径也是最优的。因为如果it*到iT*之间如果有另一个更优的局部路径,那么将它与i1*到it*之间的最优局部路径连接起来,就形成一条完整的更优路径,这与之前的最优路径矛盾。

上面这段话的意思是,到了时刻t,无论之前的局部路径选择如何,此后时刻t到时刻T之间的选择必须是最优的。

根据这一原理,我们可以从t=1时刻开始,递推计算在时刻t状态为 i 的各条局部路径的最大概率,这意味着最优局部路径经过结点 it*。当t=T时的最大概率即为最优完整路径的概率,最优完整路径的终结点为iT*。因为我们计算的是在时刻 t 状态为 i 的局部概率,时刻t之前的各时刻状态不指定,这是为了减小计算量,在时刻 t 时,共计算 t * N 次概率,其中 N 为所有状态数。得到终结点iT*后,为了找到最优完整路径的其他结点,从终结点iT*开始,由后向前逐步求得节点iT-1*, ... , i1*

引入两个变量

定义时刻 t 状态为i的所有局部路径(i1,i2,...,it)中概率最大值为

      (3)

即,指定 t 时刻的状态为 i,选择不同的状态组合(i1,i2,...,it-1),使得上式中的概率最大,于是递推公式为,

令it=j,于是

   (4)

其中,

仔细研究δt(i)的含义,其实就是到达 t 时刻为止,观测序列已经确定为(o1,o2,...,ot),对应的状态序列(i1,i2,...,it)并且假设 it 的值为 i,O,I联合概率最大的值,设对应的状态为(i1,i2,...it=i),于是这就是到达 t 时刻状态为 i 的局部最优路径,注意 限定了 t 时刻状态为 i。当t=T时,δT(i)就是状态为 i 的O,I联合概率最大值,那么假设 i = m 时δT(i)值达到最大,那么状态序列(i1,i2,...,iT-1,iT=m)就是所求的最有可能出现的状态序列。

好了,给出下图,进行一些可能是无用(然而我就是喜欢啰嗦,摊手~)的分析:

如图,横轴方向表示时刻 t,纵轴方向表示状态 i,结点之间的箭头表示转移,结点(t,j)对应的局部最优概率为δt(j),那么从时刻 t 转移到 时刻 t+1时,如果时刻 t+1 的状态为 i,那么时刻 t 的状态可以是 1<=j<=N,这N个状态到底使用哪个状态呢,不难想到,对时刻 t 来说,某个状态 j 的局部最优概率为δt(j),状态 j 到 状态 i 的转移概率为 aji,自然地,我们对 1<= j<=N,寻找 δt(j)*aji的最大值,比如图中那个红色的箭头对应δt(j)*aji的最大值,t 时刻其他状态转移到 t+1 时刻的 i 状态的箭头全被否定掉,如图中叉叉掉的箭头(注意仅叉掉 到(t+1,i)的结点的连线,到 t+1 时刻其他状态的结点不能这么贸然叉掉,而是同 i 状态下一样的选择)。这样再乘以一个与 t 时刻状态 j 无关的一个值 bi(ot+1)(也就是说无论 t 时刻选择什么状态,这个值都不变),就得到δt+1(i),那么当 t+1 = T 时,即最终时刻,只要遍历一下 t+1 时刻的所有状态 i,找出 max(δt+1(i)) 对应的那个 i 的值就就是完整的最优路径的终结点 (T,i)。倒过来推,那么δt(j)是如何确定的呢?显然类似地,选择结点(t-1,k),使得 δt-1(k)*at-1,t 的值最大,于是就这样一直倒推,直到起始时刻 1,而我们知道 δ1(i)=πibi(o1)。

假设我们每个时刻每个状态形成一个结点,那么每个结点的局部最优概率形成的路线也许就是下图这个样子,

也就是每个结点都有对应的局部最优概率值,且由上一时刻的某个状态转移过来。而上一时刻某个状态的结点也可能转移到下一时刻的多个状态结点。

好吧,费话了一大篇,还不知道讲清楚没,悲催~

定义时刻 t 的状态为 i 的所有局部路径(i1,i2,...,it)中概率最大值对应的那个局部路径的第 t-1 个结点为

                           (5)

即,第 t-1 个结点为 it-1*,t-1时刻的状态就是使上式值最大对应的那个状态下标 j。

为什么这么做就可以呢?

再次看一下上面的那个图,因为图中两相邻时刻标记的是 t 和 t+1 时刻,我就使用图中的标记,其实本质是一样的。

看一下图,从 t 到 t+1 的状态,我们选择的是什么样的转移(什么样的红色箭头)?已知 t+1 时刻的状态为 i,那么转移的选择是根据 δt(j)*aji 的最大值选择的,其中 j 表示 t 时刻的某个状态,自然要求使得 δt(j)*aji 最大所对应的那个 j 作为 t 时刻的状态,依次逆推下去,直到 t = 1,得到第一个观测状态,如此,形成我们要求的概率最大的状态序列。

实际在程序中,上述的这种逆推其实并不需要真正地逆推,只要在递推计算δt(i)的时候,将 max[δt-1(j)aji] 所对应的那个 j 值保存到一个状态下标的列表中即可。

ref

统计学习方法,李航

代码

可参考jieba分词

时间: 2024-08-04 04:03:44

隐马尔可夫模型(三)的相关文章

七月算法-12月机器学习在线班--第十七次课笔记-隐马尔科夫模型HMM

七月算法-12月机器学习--第十七次课笔记-隐马尔科夫模型HMM 七月算法(julyedu.com)12月机器学习在线班学习笔记http://www.julyedu.com 隐马尔科夫模型 三个部分:概率计算,参数估计,模型预测 1,HMM定义 HMM由初始概率分布π.状态转移概率分布A以及观测概率分布B确定. Eg:以中文分词为例子 隐状态为="2",是不是终止字,是/否?(Y/N)即是不是最后一个字. A矩阵:第一个:当前是终止字,下一个也是终止字的概率 B是当前的隐状态是终止词,

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

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

隐马尔科夫模型与三个问题

隐马尔科夫模型定义 隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程. 隐藏的马尔可夫链随机生成的状态的序列,称为状态序列(state sequence);每个状态生成一个观测,而由此产生的观测的随机序列,称为观测序列(observation sequence). 序列的每一个位置又可以看作是一个时刻. 下面我们引入一些符号来表示这些定义: 设Q是所有可能的状态的集合,V是所有可能的观测的集合. 其中,

一文搞懂HMM(隐马尔可夫模型)

本文转自于:http://www.cnblogs.com/skyme/p/4651331.html 隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程.其难点是从可观察的参数中确定该过程的隐含参数.然后利用这些参数来作进一步的分析,例如模式识别. 是在被建模的系统被认为是一个马尔可夫过程与未观测到的(隐藏的)的状态的统计马尔可夫模型. 下面用一个简单的例子来阐述: 假设我手里有三个不同的骰子.第一个骰子是我们平常见的骰子(称这

隐马尔可夫模型(HMM)总结

摘要: 1.算法概述 2.算法推导 3.算法特性及优缺点 4.注意事项(算法过程,调参等注意事项) 5.实现和具体例子 6.适用场合 内容: 1.算法概述 隐马尔科夫模型(Hidden Markov Model)是关于时序的概率模型,描述由一个隐含的马尔科夫链生成不可观测的状态序列,再由状态序列生成观测序列的过程.这种通过观测序列预测隐含的标记序列的问题叫做标注. 下图来自维基百科: 并且本文有如下符号表示: 其中就是我们需要求得的一个三元组:拿中文分词的例子来说,分词中的状态序列是{ Begi

马尔科夫链和隐马尔可夫模型(转载)

马尔可夫模型是由Andrei A. Markov于1913年提出的 ?? 设 SS是一个由有限个状态组成的集合 S={1,2,3,-,n?1,n}S={1,2,3,-,n?1,n} 随机序列 XX 在 tt时刻所处的状态为 qtqt,其中 qt∈Sqt∈S,若有: P(qt=j|qt?1=i,qt?2=k,?)=P(qt=j|qt?1=i)P(qt=j|qt?1=i,qt?2=k,?)=P(qt=j|qt?1=i) aij≥0∑jnaij=1aij≥0∑jnaij=1 则随机序列 XX构成一个一

隐马尔科夫模型—2

二 定义 (1) 基本定义 在上一篇中,我们通过一个给母亲打电话预测天气的例子,来引入隐马尔科夫模型.下面我们将结合一中的例子来形式化的定义隐马尔可夫模型.隐马尔科夫模型是关于时序的概率模型,描述的由一个隐藏的马尔科夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程.在我们这个例子中,就是由一个隐藏的马尔科夫链生成每天的天气(状态),再由每天的天气决定每天母亲下班以后做什么(观测)的随机过程.隐藏的马尔科夫链随机生成的状态的序列,称为状态序列,也就是最近一段时间

隐马尔可夫模型(HMM:Hidden Markov Models)

理论部分转载自:http://blog.csdn.net/likelet/article/details/7056068 手动计算例子转载自:http://blog.sina.com.cn/s/blog_953f8a550100zh35.html 隐马尔可夫模型 (Hidden Markov Model,HMM) 最初由 L. E. Baum 和其它一些学者发表在一系列的统计学论文中,随后在语言识别,自然语言处理以及生物信息等领域体现了很大的价值.平时,经常能接触到涉及 HMM 的相关文章,一直

理论沉淀:隐马尔可夫模型(Hidden Markov Model, HMM)

理论沉淀:隐马尔可夫模型(Hidden Markov Model, HMM) 参考链接:http://www.zhihu.com/question/20962240 参考链接:http://blog.csdn.net/ppn029012/article/details/8923501 本博文链接:http://www.cnblogs.com/dzyBK/p/5011727.html 1 题设 假设有n个骰子(从1~n编号),每个骰子有m面,每面标有一个数字且不重复,数字取值限制在[1,m].(1