目录

概览

训练

预测(维特比算法)


概览

HMM本身也是用于序列标注,为什么需要HMM?

POS 标记,我们按照一句话为一个类别,也就是将该句子中的每个词的对应的类别,连起来作为一个类别,比如NN_V_NN。

这会有什么问题?

  • 组合太多,句子长度为m,tags总共有n种,则组合方式有n的m次方

解决:

标记是一个句子级任务,但作为人类,我们将其分解为小的单词级任务。

这是序列标记的思想,更宽泛来说,是结构化预测。

概率模型:
首先,目标:从句子 w 中获得最佳标签序列 t

上面通过贝叶斯定律可以得到,让我们分解一下:

上面的表示,一个wi单词只依赖于对应的一个tagi

上面的公式表示,当前tag只依赖于前一个tag。

这就是独立性假设,也就是HMM,隐马尔可夫模型。

接下来,思考两个问题:

  1. 为什么是马尔可夫?因为它假设序列遵循马尔可夫链:事件(标签)的概率仅取决于前一个事件(最后一个标签)
  2. 为什么是‘隐’?因为看不到事件(标签):目标是找到最佳序列。

训练

参数就是概率值 和 ,分别是发射概率 O 和 转移概率 A,也比较好理解,从tag->word 是发射概率,从tag->tag 是转移概率。

训练使用最大似然估计。概率通过频率来计算,比如:

以上是中间部分的概率计算,那么第一个tag呢?我们假设<s>代表句子开头

最后一个tag呢?我们假设</s>表示句子的结尾,和上面一样,就不赘述了。

训练的过程就是为了获得我们刚刚说的,发射矩阵和转移矩阵。

预测(维特比算法)

正确的估计是,采取所有的标签组合方式,评估并取最大值。

但是这个问题在于,如果所有的值都遍历的话,这个时间复杂度太高了是指数级别,假设tag种类是N种,句子长度是M,则这种方法的时间复杂度是,O(),因为组合方式有,每种组合计算概率的计算量为M,所以得到了这个结果。

因此为了减少复杂度,需要一种新的算法,于是维特比算法横空出世,它是一种动态规划算法,利用空间换时间的想法,将时间复杂度从指数级降到了平方级别。O(),简单讲解一下:

  1. 比如,我要赚钱。 在计算要这个字对应的tag的时候,我需要P(要|tag(要))发射概率,P(tag(要)|tag(我))转移概率,和s(tag(我)|我)上一轮算的每个我的tag对应我这个字,所计算处理的概率值
  2. 这里面,tag有N种,当计算当前这种tag的概率时,假设当前tag是动词,最终概率就是P(要|动词)*P(动词|tag(我))*s(tag(我)|我),这里面,发现变量就是tag(我),而tag(我)有N种情况,因为tag有N种情况,分别带入,计算获得的最大值,就是当前的s(动词|要)的值了
  3. 因为tag有N种,第二步只是计算了,要对应tag为动词的情况,还有其他N-1种情况,采取和步骤2同样的过程,每个算出来的概率值,这里面叫s也就是score,会记录在表格里面,这也就是空间换时间的思想。
  4. 每一个s都表示当前的概率最大值,并且有路径指向前面的状态,当算到句子末尾时,就可以追溯回去,获得tag序列。

NB:因为分解问题的独立性假设(特别是马尔可夫性质)。 没有这些,我们就不能应用动态规划。

我们看到了基于二元组的 HMM 标记器。 最先进的使用tag三元组。

因此大家可以想想,维特比算法的时间复杂度是O().

通过上面的了解,发现HMM 是生成式的。
允许无监督的 HMM:学习没有任何标记数据的模型!

因为提到了生成式,另外一种类别就是判别式,

判别模型直接描述 P(t | w)
‣ 支持更丰富的特征集,在大型监督数据集上训练时通常具有更好的准确性
‣ 例如,最大熵马尔可夫模型 (MEMM),条件随机场(CRF),联结主义时间分类(CTC)
‣ 大多数序列的深度学习模型都是判别式的(例如,用于翻译的编码器-解码器),类似于 MEMM

最后,HMM除了应用于POS词性标注任务,还有其他领域:

‣ 命名实体识别、浅层解析、对齐……
‣ 其他领域:DNA、蛋白质序列、图像点阵……

好了,今天关于HMM的讲解就到这里了,老规矩,有问题欢迎随时评论交流,辛苦拉~

第五篇:HMM 隐马尔可夫模型相关推荐

  1. 李航《统计学习方法》之HMM隐马尔可夫模型

    李航<统计学习方法>之HMM隐马尔可夫模型 文章目录 前言 一.基本概念 1.语言描述: 2.符号表示 3.基本假设 4.例子 5.隐马尔可夫模型解决的三个基本问题 二.概率计算算法 1. ...

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

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

  3. NLP基础 : HMM 隐马尔可夫模型

    Hidden Markov Model, HMM 隐马尔可夫模型,是一种描述隐性变量(状态)和显性变量(观测状态)之间关系的模型.该模型遵循两个假设,隐性状态i只取决于前一个隐性状态i-1,而与其他先 ...

  4. 《两日算法系列》之第四篇:隐马尔可夫模型HMM

    目录 1. 定义与假设 2. 相关概念的表示 3. 三个基本问题 3.1. 概率计算问题 3.2. 学习问题 3.3. 预测问题 总结 1. 定义与假设 李雷雷所在城市的天气有三种情况,分别是:晴天. ...

  5. 机器学习知识点(二十五)Java实现隐马尔科夫模型HMM之jahmm库

    1.隐马尔可夫模型HMM的应用场景,关乎于序列和状态变化的都可以.    发现java有可库,专为开发HMM,可惜只能在CSDN上有得下载.     2.jahmm是java开发隐马尔科夫模型的一个j ...

  6. 【机器学习基础】数学推导+纯Python实现机器学习算法24:HMM隐马尔可夫模型

    Python机器学习算法实现 Author:louwill Machine Learning Lab HMM(Hidden Markov Model)也就是隐马尔可夫模型,是一种由隐藏的马尔可夫链随机 ...

  7. HMM隐马尔科夫模型 学习总结

    隐马尔可夫模型(Hidden Markov Model,简称HMM)是结构最简单的动态贝叶斯网(dynamic Bayesian network),这是一种著名的有向图模型,主要用于时序数据建模,在语 ...

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

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

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

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

最新文章

  1. throws throw 自定义异常
  2. opencv 罗曼滤波_勒罗曼杜罗伊
  3. The Longest Increasing Subsequence (LIS)
  4. Android AutoFocusCallback is not being called or not returning
  5. SpringBoot 数据验证错误处理
  6. shell 需要注意的点
  7. JavaScript高级程序设计学习(二)之基本概念
  8. Oracle Active database duplication
  9. Java Web第三弹---Tomcat
  10. 原生JavaScript + Canvas实现图片局部放大器
  11. [C语言]切比雪夫多项式,并写入到文件中
  12. 物联网行业系列深度报告 附下载
  13. 浏览器中cookies查看_如何在任何浏览器中阻止Cookies(除了您使用的网站外)
  14. 如何用计算机录制视频教程,电脑怎么利用软件录制视频教程
  15. 大师系列之彼得•林奇层查股
  16. Uncaught TypeError: $(...).modal is not a function
  17. bbed修改表记录内容系列三
  18. pytho_抓取下载音乐歌曲
  19. wordpress文章页面添加字体增大减小链接
  20. 负重下肢外骨骼的运动意图预测和运动状态辨识

热门文章

  1. SpringBoot相关漏洞
  2. 前后端分离开发,RESTful 接口应该这样设计
  3. 一条简单的更新语句,MySQL是如何加锁的?
  4. 机器学习模型调优总结!
  5. 数据竞赛利器XGBoost常见面试题集锦
  6. 【收藏】北美大厂性价比大全
  7. 【WWW2021】高效的非抽样知识图谱嵌入
  8. 学C++,能不能简单点?
  9. CBNet和DetectoRS:COCO数据集霸榜模型
  10. 她92年的,27岁,当上浙大博导。