作者:哈工大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. CVPR2020:端到端学习三维点云的局部多视图描述符
  2. ZigBee 裸机 uart 配置
  3. JS判断鼠标从哪个方向进入DIV容器
  4. oracle中主键创建的语法,Oracle中主键、外键、索引、序列、唯一性约束的创建
  5. MySQL详细安装(windows)
  6. MFC架构之CWinThread类
  7. oracle复杂密码,如何配置 Oracle 11g 复杂密码校验设置
  8. 狼来了!第一批90后测试员已经开始经历测试行业求职危机……
  9. 单片机输出脉冲的C语言简易程序,单片机简易程序, 电子琴 内附图 有说明...
  10. paip.设置鼠标灵敏度API
  11. paip.asp vbs的代码折叠代码结构查看
  12. 61850协议服务器端开发,IEC61850中报告服务端开发
  13. 三顿半、永璞、时萃,谁能成为下一个咖啡品类之王?
  14. matlab 非线性拟合残差,多元非线性拟合求参数及残差分析
  15. ubuntu分区时主分区和逻辑分区怎么分
  16. 使用matlab绘制世界地图并根据经纬度绘制点位(附m_map的下载与安装说明)
  17. 每日一题——分发糖果
  18. SEO优化转战移动手机站
  19. Unable to instantiate appComponentFactory
  20. 标贝科技登全球语音大赛舞台Blizzard Challenge做精彩开场发言

热门文章

  1. 用汉明距离进行图片相似度检测的Java实现
  2. Android 使用WakeLock
  3. PPC丢失后,手机信息如何保护?(C#)
  4. Flash Memory(一)
  5. 20190823 尚硅谷MySQL核心技术
  6. vue2饿了吗之路第一篇:开发环境准备
  7. 云服务器上搭建hadoop伪分布式环境
  8. HTML中常见元素及格式
  9. 关于ABAP事件的一张图
  10. Admob(6.12.x)符号未定义错误的解决方法(IOS)