隐马尔可夫模型HMM是序列标注模型最基础的一种,由字构词是序列标注模型的一种应用。序列标注指的就是给定一个序列x=x1x2…xn,找出序列中每个元素对应标签y=y1y2…yn,其中y所有可能的取值集合称为标注集(在NLP,x通常是字符或词语,y则是待预测的组词角色或词性等标签)。例如,输入一个自然数序列,输出它们的奇偶性。

中文分词、词性标注以及命名实体识别,都可以转化为序列标注问题。

本文按照隐马尔可夫模型需要的理论来逐步讲解HMM,基础知识(比如随机过程)大概理解一下就好,因为理论知识是循序渐进的,如果跳过了前面的铺垫知识后面理解不了的话,可以再跳回来看一下。

一、隐马尔可夫模型理论知识

1. 随机过程

其实简单理解就是随着时间t的发展,检测到的一系列值X(t)。

随机过程中有平稳随机过程,马尔可夫随机过程。

2. 平稳随机过程

类似于某一时间段的分布函数和另一时间段的分布函数是一样的。

3. 隐马尔可夫模型的两个假设前提

我删去了原本的隐马尔可夫模型的描述,这里用自己的语言尝试去描述这个模型。

隐马尔可夫模型常用作序列标注类的问题。这里首先提出一个问题,它是如何用某一模型去描述序列标注的问题呢?

我们思考一下序列标注是做什么的,它是把一个句子中所有的词都标注上词性之类的tag,像是NER(命名实体识别)的话,就是把一个句子中所有的词分类成人物、地点、时间之类的tag。所以我们可以简化描述一下,就是把一个句子中的词都打上它所属的tag。

那么在HMM中认为,某一句话的产生,是由其背后一个个tag所确定的。比如说一句话“我 在 上海”,背后就是由“人称代词 介词 名词”决定的,如果换成“名词 介词 名词”,那可能会产生“书 在 上海”这种句子,但是产生不了“我 在 上海”这类句子了

这是HMM的一个基本框架,在这个基础之上,我们还需要其他的一些限定:这就是必须要记住的HMM的两个假设前提。

隐马尔可夫模型的两个假设前提:

假设一:当前状态Yt仅仅依赖于前一个状态Y(t-1),连续多个状态构成隐马尔可夫链y;

假设二:任意时刻的观测x只依赖于该时刻的状态Yt,与其他时刻的状态或观测独立无关。用箭头表示事件的依赖关系(箭头终点是结果),则隐马尔可夫模型可表示为下图:

这两个假设前提的意思就是说,对于每个隐含状态y,只有前一个隐含状态影响当前隐含状态,而每个观测状态x仅由对应的隐含状态y决定,并不受其他隐含状态的影响。

这里隐含状态就可以理解成tag标签序列,而观测状态就是“我 在 上海”这类的输出。隐含状态之所以叫隐含就是因为词性之类的tag是我们所看不见、观测不到的,我们直接看到的是观测序列。

对于接下来的关于HMM的一系列概念,我这里参考知乎上的回答的例子,用骰子来形象的举例。

4. 隐马尔科夫模型的马尔可夫链、隐含序列、观测序列、转移概率、输出概率

我们假设有三个骰子,骰子D6是六面体,骰子D4是四面体,骰子D8是八面体(如下图):

D4骰子有可能产生的数字是1~4,每个数字产生的概率都是1/4;

D6骰子有可能产生的数字是1~6,每个数字产生的概率都是1/6;

D8骰子有可能产生的数字是1~8,每个数字产生的概率都是1/8。

我们投骰子10次,每次都要先选择骰子(即每个骰子被选择的概率为1/3),选择骰子时我们假设当前选择的骰子只受上一个骰子的影响,这就是转移概率。然后投骰子。假设我们投了10次后的得到的数字为:1 6 3 5 2 7 3 5 2 4,那么这就是可见序列(也叫可见状态链)。

在这个例子里,隐含序列(也叫隐含状态链)就是用的骰子的序列:D6 D8 D8 D6 D4 D8 D6 D6 D4 D8。

一般HMM中说到的马尔可夫链其实就是隐含状态链,因为隐含状态存在转换概率,本例子中每个骰子被转换到的概率都是1/3(那么实际上也可以是不平均的概率值)(上图)。(马尔可夫链实际上就是一个有向图,所以马尔可夫模型也所属于图模型中的有向图模型的动态贝叶斯网络的分类)

每个骰子在被选择后,它的输出会有很多种可能性,比如骰子D4输出1的可能性是1/4,输出2的可能性也是1/4,某一隐含状态到可见状态之间有一个概率叫输出概率,就是指的这个概率。

总的HMM模型如下图:

5. HMM模型表达

HMM可以用五个元素来描述{S,O,π,

隐马尔可夫模型HMM笔记——HMM原理介绍、python hmmlearn库的使用相关推荐

  1. 马尔科夫系列——一、隐马尔可夫模型 - 马尔可夫链、HMM参数和性质

    发现简书上有一个作者写的有关马尔科夫系列的文章写得详细.生动并且系统,特转载过来学习一下.原文地址:隐马尔可夫模型 - 马尔可夫链.HMM参数和性质 目录 一.马尔可夫性质 二.马尔可夫链 例子:假设 ...

  2. Python Train_使用隐马尔可夫模型进行音乐流派分类的Python实现

    音乐类型分类一直是音乐信息检索领域研究的热点问题.在本教程中,我们将尝试使用隐马尔可夫模型对音乐类型进行分类,隐马尔可夫模型非常擅长对时间序列数据进行建模.由于音乐音频文件是时间序列信号,我们希望HM ...

  3. 隐马尔可夫模型的java实现_机器学习——python模拟隐马尔可夫模型

    <统计学习方法> 李航著 第十章 隐马尔可夫模型 我是小白一个:本文代码转载地址文末有注释:有问题请多指教 先看书,看完书,代码就看懂了.程序只是将算法翻译成机器认识的罢了 import ...

  4. 隐马尔可夫模型(HMM)****

    1.cikit-learn 0.17之后就不再支持隐马尔可夫模型,而是将其独立拎出来作为单独的包.其中: hmmlearn:无监督隐马尔可夫模型 seqlearn :监督隐马尔可夫模型 2.一些通用的 ...

  5. HMM隐马尔可夫模型进行中文文本分词

    文章目录 一.HMM简述 1.引入 2.隐马尔科夫模型 (1)定义(Definition of a hidden Markov model) (2)应用 3.前向算法(了解) 4. 维特比算法 5.前 ...

  6. 隐马尔科夫模型 HMM 与 语音识别 speech recognition (1):名词解释

    0.引言 想在 CSDN 上看一下隐马尔科夫模型,简称HMM(Hidden Markov Model)的例子,找了几篇博文,却发现大部分都是转载的,转载的还没有出处,文中的表述与逻辑也看的人晕头转向, ...

  7. 一文读懂NLP之隐马尔科夫模型(HMM)详解加python实现

    一文读懂NLP之隐马尔科夫模型(HMM)详解加python实现 1 隐马尔科夫模型 1.1 HMM解决的问题 1.2 HMM模型的定义 1.2.1HMM的两个假设 1.2.2 HMM模型 1.3 HM ...

  8. 统计学习方法笔记-隐马尔可夫模型(内含Python代码实现)

    一 马尔可夫模型 我们通过一个具体的例子来介绍一下什么是马尔可夫模型 我们假设天气有3种情况,阴天,雨天,晴天,它们之间的转换关系如下: (稍微解释一下这个图,我们可以这样认为,已知第一天是阴天,那第 ...

  9. 《统计学习方法》第10章 隐马尔科夫模型 HMM算法 纯Python代码实现 + 前后向算法矩阵形式 + 课后习题答案

    理论知识:<统计学习方法>第10章 隐马尔科夫模型 一.HMM算法矩阵写法 前向算法 P(O∣λ)=πTBo1ABo2ABo3⋯ABoT(1,1,1)TP(O| \lambda) = \p ...

  10. 【机器学习】隐马尔可夫模型(HMM)

    隐马尔可夫模型(HMM) 1.部分参考内容 2.引言 3.隐马尔可夫模型 3.1 马尔可夫过程 3.2 隐马尔可夫模型 3.3 HMM模型的五元组 4.评估问题 4.1 直接方法 4.2前向算法 4. ...

最新文章

  1. form表单刷新_《大胖 ? 小课》- 不用 js 实现文件无刷新上传
  2. React Hooks-概览
  3. 灵魂拷问,上 Kubernetes 有什么业务价值?
  4. linux mysql 密码文件怎么打开文件,Oracle数据库密码文件创建与使用
  5. 可以代表学计算机的标志,桌面上的图标可以用来表示
  6. Linux——VMware虚拟机安装CentOS步骤
  7. 使用属性升级MyBank >> 掌握自定义方法的定义及调用 1214
  8. CryptoJS DES加密示例
  9. 利用matlab绘制函数图像
  10. CodeForces413E Maze 2D
  11. ASP.NET 批量更新
  12. Libevent源码分析-----日志和错误处理
  13. Windows窗口程序设计入门(C#版)
  14. Matlab2014的下载和安装激活过程
  15. 计算机组老师颁奖词,学校优秀老师颁奖词
  16. 1481c语言合法标识符,c语言试题答案集
  17. 宋佳乐和郭晓婷天津之眼观景照片
  18. Java实现 蓝桥杯VIP 算法训练 调和数列
  19. Java 进口管制限制解除
  20. 爱你的人和你爱的人 你选哪个?

热门文章

  1. 4和2大于号小于号箭头那边_《认识大于号、小于号和等号》课件
  2. LTE(4G) 跟踪区更新流程TAU
  3. Echarts 基本使用五大步骤
  4. Git使用(五):解决冲突以及如何避免冲突
  5. 大学计算机基础2014,大学计算机基础
  6. STARTING POINT TIER 1 Responder
  7. 各类开发工具注册码(持续更新。。。)
  8. Blake2b算法 php,BLAKE及BLAKE2算法详解
  9. 移植要领与策略分析android porting chen,hostapd-0.3.7的移植(Porting hostapd-0.3.7 to arm linu...
  10. 数字信号处理-5-傅里叶分析