隐马尔可夫模型(Hidden Markov Model,简称HMM)是结构最简单的动态贝叶斯网(dynamic Bayesian network),这是一种著名的有向图模型,主要用于时序数据建模,在语音识别、自然语言处理等领域有广泛应用。
隐马尔可夫模型中的变量可分为两组,第一组是状态变量 {y1,y2,y3,…yn},其中 yi∈Y表示第i时刻的系统状态。通常假定状态变量是隐藏的、不可被观测的,因此状态变量亦称隐变量(hidden variable)。第二组是观测变量{x1, x2,. . . , xn},其中x ∈X表示第i时刻的观测值。在隐马尔可夫模型中,系统通常在多个状态{ s1, s2,…,sN}之间转换,因此状态变量yi的取值范围Y(称为状态空间)通常是有N个可能取值的离散空间。观测变量xi可以是离散型也可以是连续型。

图中的箭头表示了变量间的依赖关系。在任一时刻,观测变量的取值仅依赖于状态变量,即 xt由yt确定,与其他状态变量及观测变量的取值无关。同时,t时刻的状态yt仅依赖于t―1时刻的状态yt-1,与其余n-2个状态无关.这就是所谓的“马尔可夫链”(Markov chain),即:系统下一时刻的状态仅由当前状态决定,不依赖于以往的任何状态。基于这种依赖关系,所有变量的联合概率分布为

除了结构信息,欲确定一个隐马尔可夫模型还需以下三组参数:
状态转移概率:模型在各个状态间转换的概率
输出观测概率:模型根据当前状态获得各个观测值的概率
初始状态概率:模型在初始时刻各状态出现的概率

HMM在序列标注中的应用

序列标注问题的输入是一个观测序列,输出是一个标记序列或状态序列。问题的目标在于学习一个模型,使它能够对观测序列给出标记序列作为预测。

PPT中举了一个例子,人脑产生一段话,是先产生一段基于语法的词性序列,再在这个词性序列的基础上,产生一句话。

“John saw the saw”,这段话的词性是"PN V D N"。那如何由序列{“PN V D N”}到{“John saw the saw”}?

P(x) = P(“John saw the saw”)
P(y) = P(“PN V D N”)
想要得到P(x,y),可由条件概率公式
P(x,y) = P(y) × P(x|y)
先求得 P(y) 和 P(x|y),也就是 P(“PN V D N”) 和 P( “John saw the saw” | “PN V D N” )
而这两个概率,可以从大量语料的训练中得到

将两个公式展开
P(y) = P(“PN V D N”) = P( “PN” | “Start”) × P( “V” | “PN”) × P( “D” | “V”) × P( “N” | “D”) × P( “End” | “N”)

P(x|y) = P( “John saw the saw” | “PN V D N” ) = P( “John” | “PN” ) × P( “saw” | “V” ) × P( “the” | “D” ) × P( “saw” | “N” )

上图是展开后的计算公式
下面分别计算P(y) 和 P(x|y),也就是 P(“PN V D N”) 和 P( “John saw the saw” | “PN V D N” )

第一步:
从大量语料中,得到这四个词性之间的转换概率,可以计算出
P( “PN V D N” ) = P( “PN” | “Start”) × P( “V” | “PN”) × P( “D” | “V”) × P( “N” | “D”) × P( “End” | “N”)

第二步
同样是在大量语料中,可以分别得到
从词性为PN的词中选到"John"的概率 P( “John” | “PN” )
从词性为V的词中选到"saw"的概率 P( “saw” | “V” )
从词性为D的词中选到"the"的概率 P( “the” | “D” )
从词性为N的词中选到"the"的概率 P( “saw” | “N” )
从而可以得到
P( “John saw the saw” | “PN V D N” ) = P( “John” | “PN” ) × P( “saw” | “V” ) × P( “the” | “D” ) × P( “saw” | “N” )

这样就可以计算出P(x,y)

上面的是一个小热身,现在进入正题

在上面的例子中,y是知道的,x是不知道的。
现在,x是知道的,而y是要被找出来的,这就成了词性标注问题。
找出y,就是找出令P(y|x)最大时y的取值,因P(x)的值与y无关,故找出令P(y|x)最大时y的取值,也就是找出令P(x,y)最大时y的取值。

找出P(x,y)最大时的y值有两种方法
第一种方法:穷举法
假设观测序列X长度为L,隐状态序列Y取值有S种状态,那么则需要对每一个隐状态进行S次预测,一共是|S|^L次。
第二种方法:Viterbi算法
时间复杂度为O(L|S|^2)
这是我看到的讲解Viterbi算法很浅显易懂的一篇知乎:
https://www.zhihu.com/question/20136144
维特比算法(Viterbi algorithm)是一种动态规划算法。它用于寻找最有可能产生观测事件序列的-维特比路径-隐含状态序列,特别是在马尔可夫信息源上下文和隐马尔可夫模型中。


下面简单举例说明使用Viterbi算法求S到E的最短路径

对于t时刻的每个状态,记录下前一个时刻也就是t-1时刻的所有状态到每个t时刻状态的最小路径

在A1→B1,A2→B1,A3→B1的这三条路径中,A3→B1路径是最短的,故保留A3→B1,删去其他路径。同理,在A1→B2,A2→B2,A3→B2的这三条路径中,A1→B2路径是最短的,故保留A1→B2,删去其他路径。其他的路径也是同理得到的。

最后发现,S到E只有三条路径,只要从这三条路径中计算出最短的那条就可以得到S→E的最短路径。


但是HMM算法在解决词性标注问题上也存在一些问题(网上拷的)
1、HMM只依赖于每一个状态和它对应的观察对象:
序列标注问题不仅和单个词相关,而且和观察序列的长度,单词的上下文,等等相关。
2、目标函数和预测目标函数不匹配:
HMM学到的是状态和观察序列的联合分布P(Y,X),而预测问题中,我们需要的是条件概率P(Y|X)。

HMM会给训练集语料中出来没有出现过的序列赋予很高的概率。
再举个例子说明
在训练集中
词性N下一个词性接V,V的观测值是词c,这样的一个序列在训练集中出现9次
词性P下一个词性接V,V的观测值是词a,这样的一个序列在训练集中同样出现9次
词性N下一个词性接D,D的观测值是词a,这样的一个序列在训练集中出现1次
P(V|N) = 0.9 ,P(D|N) = 0.1
P(“c”|V) = 0.5 ,P(“a”|V) = 0.5
P(“a”|D) = 1

在预测词为a的词性时,当前一个词性为N,计算概率值
P(“a”,N) = P(“a”|N) × P(N)
P(“a”|N) =P (?|N) × P(“a”|?)
当 ?=V 时,P(“a”,N)概率比 ?=D 时的概率值更大
但是训练集中并没有出现过N→V→"a"
如果依据训练集,此处的隐状态应该是D

对HMM而言,它会觉得语料中没有的N→V→"a"出现的概率比N→D→"a"出现的概率更高。由于这种“脑补”的现象,当训练集很少的时候,HMM的表现比更好一些。但是当训练集很大的时候,HMM的表现就不那么好了。

HMM隐马尔科夫模型 学习总结相关推荐

  1. 通过hmmlearn学习使用HMM隐马尔科夫模型

    一.了解隐马尔科夫模型(HMM) 具体可参考https://www.zhihu.com/question/20962240,讲得很通俗易懂. 本文使用的是hmmlearn模块,可以使用pip inst ...

  2. HMM隐马尔科夫模型(附维特比代码)

    背景知识:马尔科夫模型 1 马尔科夫的局限性 在一些情况下,我们并不能直接得到观测的结果,比如在天气系统中,我们不能直接得到天气的状态,但是我们有一堆蚂蚁,可以从蚂蚁的行为状态找到天气变化的关系规律. ...

  3. HMM(隐马尔科夫模型)

    HMM模型基础 介绍 隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理,模式识别等领域得到广泛的应用.当然,随着目前深度学 ...

  4. 隐马尔科夫模型——学习算法

    前言 隐马尔科夫模型有三个基本问题:概率计算问题,学习问题,预测问题.本博客介绍学习问题的监督学习算法和非监督学习算法(EM算法).阅读本文前请先学习基本概念. 什么是学习问题 学习问题是一直观测序列 ...

  5. 一文讲透:HMM隐马尔科夫模型

    一.马尔科夫模型 1 马尔科夫的几个概念 要想理解隐马尔科夫模型,首先要理解马尔科夫模型. 下面通过一个天气变化的例子来认识马尔科夫模型中的几个重要概念.

  6. HMM隐马尔科夫模型浅析

    http://www.zhihu.com/question/20962240 著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:Yang Eninala 链接:http:/ ...

  7. 强化学习(一)-->隐马尔科夫模型HMM-->HMM模型基础

    隐马尔科夫模型HMM 隐马尔科夫模型算是比较经典的机器学习模型了,在自然语言处理.语言识别.模型识别等这些领域也得到了广泛的应用.在深度学习的崛起,尤其是RNN.LSTM等神经网络序列模型的火热,HM ...

  8. 隐马尔科夫模型HMM详解(1)

    目录 隐马尔科夫模型基本概念 隐马尔科夫模型的三个基本问题 概率计算 预测算法-Viterbi算法 HMM学习算法参考下篇文章 代码地址:https://gitee.com/liangcd/speec ...

  9. 机器学习之概率图模型(贝叶斯概率,隐马尔科夫模型)

    一.贝叶斯公式 在学习概率图模型之前先要了解贝叶斯公式: 由公式(1),(2)可得: 这便是贝叶斯公式,其中条件概率P(A/B)称为后验概率,概率P(A),P(B)称为先验概率,条件概率P(B/A), ...

最新文章

  1. 概率论快速学习03:概率公理补充
  2. 高通加大5G应用力度:发布又一款手机芯片,还推出机器人和无人机5G系统
  3. C#实现web信息自动抓取
  4. hdu 5037 Frog 贪心 dp
  5. iOS中 最新微信支付/最全的微信支付教程详解 韩俊强的博客
  6. 使用WTMPlus快速搭建发卡网
  7. CityEngine生成不等间距桥墩
  8. Spring Cloud Gateway一次请求调用源码解析
  9. c++11 常用语法
  10. LeetCode 106/105 从中序和后序/前序遍历序列构造二叉树
  11. 【EMNLP2020】控制对话生成中的specificity
  12. oracle undo head,一次悬挂事务的处理思路
  13. Onenote 安装GEM 插件 失败~修复
  14. 韩国瑜:打造高雄全台首富 3月内完成施政总体检
  15. YUI3 Overlay的使用
  16. java队列和栈的区别_java队列和栈的区别有哪些?
  17. 2020年(农历庚子鼠年)春联大全(收藏必备)
  18. 手机wap和html有什么区别,解析WEB和WAP之间有什么区别
  19. FAILED: esp-idf/mbedtls/x509_crt_bundle 报错的解决办法及信息来源esp32编译错误
  20. guacamole socket连接拒绝

热门文章

  1. 2060显卡驱动最新版本_2款16系GTX新Max-Q点评新系列笔记本显卡天梯图
  2. 阿里云服务器的领取及静态页面的上传
  3. GPS 校验和 代码_每天学习一点点~每天学习一点点~安全阀安全技术监察规程 安全阀校验与修理...
  4. excel 统计字符出现的次数
  5. script标签type属性详解
  6. 计算机和计算机思维理论考试试题科目一,科目一丨信息处理与逻辑思维
  7. socket.io-client-cpp ios 构建
  8. 快上车 全套Python零基础入门教程免费分享 !
  9. 12 款最棒 Vue 开源 UI 库测评 - 特别针对国内使用场景推荐
  10. 瓦里安将携肿瘤治疗尖峰技术和智慧放疗云生态解决方案亮相进博会