作者:哈工大SCIR硕士生 乐远

来自:哈工大SCIR

隐马尔可夫模型(HMM)是可用于标注问题的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型。

说到隐马尔可夫模型(HMM),我们先来了解下马尔可夫模型(Markov模型),Markov模型是一种统计模型,广泛地应用在语音识别,词性自动标注,音字转换,概率文法等各个自然语言处理的应用领域。

一. 马尔可夫模型(Markov模型)

是随机变量序列,其中每个随机变量的取值在有限集,称为状态空间。Markov特征是

  • 有限历史假设

  • 时间不变性

如果 具有这些特征,那么这个随机变量序列称为一个马尔可夫过程(链)。

Markov的形式化表示:一个马尔可夫模型是一个三元组 ,其中 是状态的集合,是初始状态的概率,是状态间的转移概率。具体例子用图形表示如下,

相应的分别是,

隐马尔可夫模型与马尔可夫模型不同的是各个状态(或者状态转移弧)都有一个输出,但是状态是不可见的。

最简单的情形:不同的状态只能有不同的输出,

增加一点灵活性:不同的状态,可以输出相同的输出,

再增加一点灵活性:输出在状态转移中进行,

最大的灵活性:在状态转移中以特定的概率分布输出,

这就得到了我们要讲的隐马尔可夫模型。

二. 隐马尔可夫模型(HMM)

1.HMM的形式化定义

HMM是一个五元组,其中是状态的集合,是输出字符的集合,是初始状态的概率,是状态转移的概率,  是状态转移时输出字符的概率。

一个HMM的例子用图形表示如下,

2. 隐马尔可夫模型的三个基本问题

  • 评估问题:给定一个模型 ,如何高效地计算某一输出字符序列的概率

  • 解码问题:给定一个输出字符序列,和一个模型,如何确定产生这一序列概率最大的状态序列

  • 学习问题:给定一个输出字符的序列,如何调整模型的参数使得产生这一序列的概率最大?

3. 评估问题的解法

已知,计算

我们先来化简一下

  • 方案一:直接计算法

穷举所有可能的的情况,求和得到,但是时间复杂度太高,为

  • 方案二:前向算法(Forward algorithm)

使用动态规划使得算法更高效,定义一个前向变量表示到时刻部分观测序列为且状态为的概率为向前概率,记为,即

则可以递推得到,

前向过程算法如下,

一个简单的前向过程例子如下,

  • 方案三:向后算法(backward algorithm)

同样的道理,我们定义在时刻状态为的条件下,从的部分观测序列为的概率为后向概率,记作,即

直接采用递推即可得到后向算法。

后向算法过程如下,

  • 1. 初始化

  • 2. 推导

  • 3. 总和

4. 解码问题的解法

给定一个输出字符序列,和一个模型,如何确定产生这一序列概率最大的状态序列?

我们定义表示为在时刻到达状态,输出字符时,输出前面个字符的最可能路径的概率,

则有

这样我们就得到了维特比算法(Viterbi Algorithm),算法过程如下:

一个简单的viterbi算法举例如下,

5.  学习问题解法

给定一个输出字符的序列,如何调整模型的参数使得产生这一序列的概率最大?

隐马尔可夫模型的学习,根据训练数据是包括观测数据和对应的状态序列还是只有观测序列,可以分为有监督学习和无监督学习,其中无监督的学习即是利用EM算法思想的Baum-Welch算法。

  • 方案一:有监督学习

假设训练数据包含个长度相同的观测序列和对应的状态序列,那么可以利用极大似然估计法来估计隐马尔可夫模型的参数,具体估计方法如下:

  • 1. 转移概率的估计

设样本中时刻处于状态时刻处于状态的频数为,那么状态转移概率的估计是

  • 2. 观测概率的估计

设样本中状态为并观测为的频数是,那么状态为观测为的概率的估计是

  • 3. 初始状态概率的估计个样本中初始状态为的概率

由于监督学习的方法需要使用训练数据,而人工标注的代价往往很高,有时会采用非监督学习的方法。

  • 方案二:无监督学习——Baum-Welch算法

假设给定的训练数据只包含个长度为的观测序列而没有对应的状态序列,目标是学习隐马尔可夫模型的参数。我们将观测序列数据看做观测数据,状态序列数据看做不可观测数据,那么隐马尔可夫模型事实上是一个包含隐变量的概率模型

它的参数学习可以由EM算法实现。

(算法推导过程)

(1) 确定完全数据的对数似然函数 所有观测数据写成,所有的隐数据写成,完全数据是。完全数据的对数似然函数是

(2) EM算法的E步:求函数的

其中是隐马尔可夫模型参数的当前估计值,是要极大化的隐马尔可夫模型参数。因为,

所以函数可以拆分写成

式中求和都是对所有训练数据的序列总长度进行的。

(3) EM算法的M步:极大化函数,求模型参数

由于要极大化的参数在函数式子中单独的出现在三个项中,所以只需要对各项分别极大化。第一项可以写成,

注意到满足,利用拉格朗日乘子法,写出拉格朗日函数

对其求导数并令结果为0,

得到

求和得到,

再代入上式子得到,

第二项可以写成

类似于第一项,利用具有约束条件的拉格朗日乘子法恶意求出

第三项可以写成,

同样利用拉格朗日乘子法,约束条件是,注意只有在的偏导数才不为0,以表示,得到,

-----

为了简便,我们使用一下式子简化, 给定模型和观测,在时刻处于状态的概率记

有如下公式:

给定模型和观测,在时刻处于状态的概率记 :

有如下推倒:

我们结合上文以及EM算法可以推导如下公式

Baum-Welch算法过程:

输入:观测数据

输出:隐马尔可夫模型参数

1. 初始化。对,选取得到模型

2. 递推。对

3. 终止。得到模型参数


参考资料

[1]公式参考李航《统计学习方法》

[2]图片选自哈尔滨工业大学关毅教授《自然语言处理》课程PPT

本期责任编辑:丁    效

本期编辑:刘元兴


干货推荐:

一大批历史精彩文章啦

刘知远:NLP研究入门之道(一)

刘知远:NLP研究入门之道(二)走近NLP学术界

详解Transition-based Dependency parser基于转移的依存句法解析器

干货 | 找工作的经验总结(一)

经验 | 初入NLP领域的一些小建议

学术 | 如何写一篇合格的NLP论文

干货 | 那些高产的学者都是怎样工作的?

是时候研读一波导师的论文--一个简单有效的联合模型

近年来NLP在法律领域的相关研究工作


好文!我在看!

哈工大学习笔记 | 图文并茂详解隐马尔可夫模型相关推荐

  1. 【深度】从朴素贝叶斯到维特比算法:详解隐马尔科夫模型

    详解隐马尔科夫模型 作者:David S. Batista 选自:机器之心 本文首先简要介绍朴素贝叶斯,再将其扩展到隐马尔科夫模型.我们不仅会讨论隐马尔科夫模型的基本原理,同时还从朴素贝叶斯的角度讨论 ...

  2. 机器学习理论《统计学习方法》学习笔记:第十章 隐马尔可夫模型(HMM)

    第十章 隐马尔可夫模型(HMM) 摘要 隐马尔可夫模型的基本概念 前言 生成模型和判别模型 马尔可夫过程 马尔可夫链 马尔可夫模型 隐马尔可夫模型 隐马尔可夫模型的三个问题 第一 概率计算 第二 学习 ...

  3. 维特比算法详解(隐马尔科夫模型)

    嗯-,在写这个之前看了几篇文章,写的极其学术化,根本就看不懂吗... 我个人认为写文章就是应该写的通俗易懂才好,让别人也能学会,能理解到你想表达的东西. 维特比算法说白了就是动态规划实现最短路径,就是 ...

  4. 机器学习:《统计学习方法》笔记(一)—— 隐马尔可夫模型

    参考:<统计学习方法>--李航:隐马尔可夫模型--码农场 摘要 介绍隐马尔可夫模型的基本概念.概率计算.学习方法.预测方法等内容. 正文 1. 基本概念 隐马尔可夫模型是关于时序的模型,描 ...

  5. 概率图模型笔记(二) 隐马尔科夫模型(Hidden Markov Model)

    写在前面 隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理,模式识别等领域得到广泛的应用.最近入坑NLP,看到好多算法都涉 ...

  6. 隐马尔科夫模型c#语言算法实现,HMM学习最佳范例四:隐马尔科夫模型

    四.隐马尔科夫模型(Hidden Markov Models) 1.定义(Definition of a hidden Markov model) 一个隐马尔科夫模型是一个三元组(pi, A, B). ...

  7. 机器学习笔记(十三)——隐马尔科夫模型

    一.隐马尔科夫模型 在马尔科夫模型中,每一个状态代表了一个可以观察的事件,所以,马尔科夫模型有时称为可视马尔科夫模型(visible Markov model,VMM),这在某种程度上限制了模型的适应 ...

  8. 隐马尔可夫模型之Baum-Welch算法详解

    隐马尔可夫模型之Baum-Welch算法详解 前言 在上篇博文中,我们学习了隐马尔可夫模型的概率计算问题和预测问题,但正当要准备理解学习问题时,发现学习问题中需要EM算法的相关知识,因此,上一周转而学 ...

  9. 从零开始学NLP(八) 隐马尔科夫模型(超详细)

    目录 前言 一.HMM基础 二.HMM定义 三.HMM的三个基本问题 1.概率计算问题 2. 学习问题 3.预测问题 四.HMM中的参数估计 1.前向算法 2.后向算法 五.HMM实例 总结 前言 上 ...

  10. 隐马尔可夫模型(HHM)学习笔记3

    隐马尔可夫模型的训练 Baum-Welch算法 整理了李航书上的内容. 马尔科夫模型是一个含有隐变量的概率模型P(x∣λ)=∑yP(x∣y,λ)P(y∣λ)P\left( {{\bf{x}}|{\bf ...

最新文章

  1. python-oracle,python与oracle(一)基本配置
  2. linux开机自动启动
  3. Mybatis 一对多 结果集映射 简单入门 易懂
  4. 关于中英数字混排的字符串分割问题(转)
  5. 与时俱进:在JAX-RS API中采用OpenAPI v3.0.0
  6. NLP知识包--语义分析-语义角色标注
  7. wps改照片底色有红边_入学攻略丨证件照的三种换底色方式,你知道了吗?
  8. java 9消失_java9增强的自动关闭资源
  9. 苏联W ndows视频,俄罗斯大神win10精简版32位
  10. Mangos与mmorpg(转自百科)
  11. 联邦学习(Federated Learning)学习小记
  12. Oracle 18c十大新特性
  13. C语言判断节日思路,C语言 程序设计 节日查询和任务提醒系统-万年历参考.doc
  14. oracle library is not loaded解决方法
  15. 有理数思维导图,七年级数学思维导图整理
  16. webpack 3/4踩坑,我太难了,从安装、卸载、到使用,各相应的版本号,sass-loader报错-版本的原因,webpack -v 不识别,没卸载干净...
  17. javac的java扩展名_通过命令行方式运行Java程序时,使用的命令是javac,而且要求必须写出该文件的完整文件名,包括扩展名.java。 ( )...
  18. 黑客攻击无孔不入:连电影字幕都能被入侵
  19. 电驴大全为什么下载不了的原因,以及其他下载资源的网站
  20. 人不成熟的五大特征-读后感

热门文章

  1. RestTemplate 发送 get 请求使用误区 多值为null
  2. 数学库及其应用math库与random库
  3. 你为什么用微信,不用 QQ ?
  4. 埃博拉疫情蔓延在进行中
  5. 你不得不知道的流程规范@多方配合的需求质量控制
  6. Windows RPC Demo实现
  7. SWFUpload下载地址
  8. Jquery表单与表格的运用
  9. 视频能力如何应对5G时代的流量爆炸
  10. .net Core 2.*使用autofac注入