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


这次学习会讲了隐马尔科夫链,这是一个特别常见的模型,在自然语言处理中的应用也非常多。


常见的应用比如分词,词性标注,命名实体识别等问题序列标注问题均可使用隐马尔科夫模型.


下面,我根据自己的理解举例进行讲解一下HMM的基本模型以及三个基本问题,希望对大家理解有帮助~    


1  隐马尔科夫模型定义


隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。


隐藏的马尔可夫链随机生成的状态的序列,称为状态序列(state sequence);每个状态生成一个观测,而由此产生的观测的随机序列,称为观测序列(observation sequence)。


序列的每一个位置又可以看作是一个时刻。


下面我们引入一些符号来表示这些定义:


设Q是所有可能的状态的集合,V是所有可能的观测的集合。


其中,N是可能的状态数,M是可能的观测数。


状态q是不可见的,观测v是可见的。


应用到词性标注中,v代表词语,是可以观察到的。q代表我们要预测的词性(一个词可能对应多个词性)是隐含状态。


应用到分词中,v代表词语,是可以观察的。q代表我们的标签(B,E这些标签,代表一个词语的开始,或者中间等等)


应用到命名实体识别中,v代表词语,是可以观察的。q代表我们的标签(标签代表着地点词,时间词这些)


上面提到的方法,有兴趣的同学可以再细入查阅相应资料。


I是长度为T的状态序列,O是对应的观测序列。


我们可以看做是给定了一个词(O)+词性(I)的训练集。

或者一个词(O)+分词标签(I)的训练集....有了训练数据,那么再加上训练算法则很多问题也就可以解决了,问题后面慢慢道来~


我们继续定义A为状态转移概率矩阵:


其中,

是在时刻t处于状态qi的条件下在时刻t+1转移到状态qj的概率。


B是观测概率矩阵:


其中,

是在时刻t处于状态qj的条件下生成观测vk的概率(也就是所谓的“发射概率”)。


所以我们在其它资料中,常见到的生成概率与发射概率其实是一个概念。


π是初始状态概率向量:


其中,

隐马尔可夫模型由初始状态概率向量π、状态转移概率矩阵A和观测概率矩阵B决定。π和A决定状态序列,B决定观测序列。因此,隐马尔可夫模型可以用三元符号表示,即


称为隐马尔可夫模型的三要素。


如果加上一个具体的状态集合Q和观测序列V,构成了HMM的五元组,这也是隐马尔科夫模型的所有组成部分。

2  下面介绍一下隐马尔可夫链的三个基本问题:



概率计算问题。


举例来说明一下,例子如下:(例子来源于维基百科)


考虑一个村庄,所有村民都健康或发烧,只有村民医生才能确定每个人是否发烧。医生通过询问患者的感受来诊断发烧。村民只能回答说他们觉得正常,头晕或感冒。(这里的正常,头晕,感冒就是我们前面说的观察序列


医生认为,他的患者的健康状况作为离散的马可夫链。 “健康”和“发烧”有两个状态,但医生不能直接观察他们;健康与发烧的状态是隐藏的(这里的健康与发烧就是我们前面说的隐藏状态)。每天都有机会根据患者的健康状况,病人会告诉医生他/她是“正常”,“感冒”还是“头昏眼花”。


观察(正常,感冒,晕眩)以及隐藏的状态(健康,发烧)形成隐马尔可夫模型(HMM),并可以用Python编程语言表示如下:



在这段代码中,start_probability代表了医生对患者首次访问时HMM所处的状态的信念(他知道患者往往是健康的)。


这里使用的特定概率分布不是平衡的,它是(给定转移概率)大约{'健康':0.57,'发烧':0.43}。(这里代表的就是我们前面说的初始状态概率pi


transition_probability表示基础Markov链中健康状况的变化。在这个例子中,今天只有30%的机会,如果他今天健康,病人会发烧。发射概率表示患者每天感受的可能性。如果他健康,那么有50%的机会感觉正常;如果他有发烧,那么有60%的机会感到头昏眼花。


那么用图来表示上面的例子可以如下表示:


好的,例子我们描述完了,现在我们用人话来继续描述一下第一个问题。


第一个问题是求,给定模型的情况下,求某种观测序列出现的概率。


比如,给定的HMM模型参数已知,求出三天观察是(Dizzy,Cold,Normal)的概率是多少?


对应的HMM模型参数已知的意思,就是说的A,B,pi矩阵是已经知道的。


学习问题

按照上面的例子来对应,第二个问题就是。


我们已经知道了观测序列是(Dizzy,Cold,Normal),需要求出HMM的参数问题(使得我们的观测序列出现概率最大)。也就是我们上面说的A,B,PI三个矩阵参数


预测问题

按照上面的例子来对应,第三个问题就是。


我们知道了观测序列是(Dizzy,Cold,Normal),也知道了HMM的参数,让我们求出造成这个观测序列最有可能对应的状态序列。比如说是(Healthy,Healthy,Fever)还是(Healthy,Healthy,Healthy),等等,这里有3的3次方27种可能~


©著作权归作者所有:来自51CTO博客作者mob604756f42bbf的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 隐马尔科夫模型-前向算法
  2. 函数节流你应该知道的那点事
  3. R语言生存分析入门
  4. R语言通过parallel包实现多线程运行
  5. 黑盒测试需要使用哪些软件?
  6. 本周AI开源项目精选 | 时间序列预测模型、用于对图像进行自我监
  7. 开源项目,动作识别的开源框架Sense + 多对象目标跟踪神器火热出炉
  8. phpstorm激活码 2021年4月phpstorm激活码提前更新啦
  9. 对复杂网络节点重要性的排序方法

随机推荐

  1. Android(安卓)ListView滑动过程中图片显
  2. Android 程式开发:(一)详解Activity —— 1.
  3. Android撬动IT市场的新支点!
  4. Android的init过程详解(一)
  5. 《程序人生 —— Android实现录音、播音
  6. Android 不要把android做成ios!
  7. Android 图片加载Bit地图 OOM异常解决方
  8. Android进程与线程基本知识一
  9. 微软的 Android 计划:邪恶的天才计划或只
  10. android Setting中隐藏项实现原理与代码