第五篇:HMM 隐马尔可夫模型
目录
概览
训练
预测(维特比算法)
概览
HMM本身也是用于序列标注,为什么需要HMM?
POS 标记,我们按照一句话为一个类别,也就是将该句子中的每个词的对应的类别,连起来作为一个类别,比如NN_V_NN。
这会有什么问题?
- 组合太多,句子长度为m,tags总共有n种,则组合方式有n的m次方
解决:
标记是一个句子级任务,但作为人类,我们将其分解为小的单词级任务。
这是序列标记的思想,更宽泛来说,是结构化预测。
概率模型:
首先,目标:从句子 w 中获得最佳标签序列 t
上面通过贝叶斯定律可以得到,让我们分解一下:
上面的表示,一个wi单词只依赖于对应的一个tagi
上面的公式表示,当前tag只依赖于前一个tag。
这就是独立性假设,也就是HMM,隐马尔可夫模型。
接下来,思考两个问题:
- 为什么是马尔可夫?因为它假设序列遵循马尔可夫链:事件(标签)的概率仅取决于前一个事件(最后一个标签)
- 为什么是‘隐’?因为看不到事件(标签):目标是找到最佳序列。
训练
参数就是概率值 和 ,分别是发射概率 O 和 转移概率 A,也比较好理解,从tag->word 是发射概率,从tag->tag 是转移概率。
训练使用最大似然估计。概率通过频率来计算,比如:
以上是中间部分的概率计算,那么第一个tag呢?我们假设<s>代表句子开头
最后一个tag呢?我们假设</s>表示句子的结尾,和上面一样,就不赘述了。
训练的过程就是为了获得我们刚刚说的,发射矩阵和转移矩阵。
预测(维特比算法)
正确的估计是,采取所有的标签组合方式,评估并取最大值。
但是这个问题在于,如果所有的值都遍历的话,这个时间复杂度太高了是指数级别,假设tag种类是N种,句子长度是M,则这种方法的时间复杂度是,O(),因为组合方式有,每种组合计算概率的计算量为M,所以得到了这个结果。
因此为了减少复杂度,需要一种新的算法,于是维特比算法横空出世,它是一种动态规划算法,利用空间换时间的想法,将时间复杂度从指数级降到了平方级别。O(),简单讲解一下:
- 比如,我要赚钱。 在计算要这个字对应的tag的时候,我需要P(要|tag(要))发射概率,P(tag(要)|tag(我))转移概率,和s(tag(我)|我)上一轮算的每个我的tag对应我这个字,所计算处理的概率值
- 这里面,tag有N种,当计算当前这种tag的概率时,假设当前tag是动词,最终概率就是P(要|动词)*P(动词|tag(我))*s(tag(我)|我),这里面,发现变量就是tag(我),而tag(我)有N种情况,因为tag有N种情况,分别带入,计算获得的最大值,就是当前的s(动词|要)的值了
- 因为tag有N种,第二步只是计算了,要对应tag为动词的情况,还有其他N-1种情况,采取和步骤2同样的过程,每个算出来的概率值,这里面叫s也就是score,会记录在表格里面,这也就是空间换时间的思想。
- 每一个s都表示当前的概率最大值,并且有路径指向前面的状态,当算到句子末尾时,就可以追溯回去,获得tag序列。
NB:因为分解问题的独立性假设(特别是马尔可夫性质)。 没有这些,我们就不能应用动态规划。
我们看到了基于二元组的 HMM 标记器。 最先进的使用tag三元组。
因此大家可以想想,维特比算法的时间复杂度是O().
通过上面的了解,发现HMM 是生成式的。
允许无监督的 HMM:学习没有任何标记数据的模型!
因为提到了生成式,另外一种类别就是判别式,
判别模型直接描述 P(t | w)
‣ 支持更丰富的特征集,在大型监督数据集上训练时通常具有更好的准确性
‣ 例如,最大熵马尔可夫模型 (MEMM),条件随机场(CRF),联结主义时间分类(CTC)
‣ 大多数序列的深度学习模型都是判别式的(例如,用于翻译的编码器-解码器),类似于 MEMM
最后,HMM除了应用于POS词性标注任务,还有其他领域:
‣ 命名实体识别、浅层解析、对齐……
‣ 其他领域:DNA、蛋白质序列、图像点阵……
好了,今天关于HMM的讲解就到这里了,老规矩,有问题欢迎随时评论交流,辛苦拉~
第五篇:HMM 隐马尔可夫模型相关推荐
- 李航《统计学习方法》之HMM隐马尔可夫模型
李航<统计学习方法>之HMM隐马尔可夫模型 文章目录 前言 一.基本概念 1.语言描述: 2.符号表示 3.基本假设 4.例子 5.隐马尔可夫模型解决的三个基本问题 二.概率计算算法 1. ...
- HMM隐马尔科夫模型(附维特比代码)
背景知识:马尔科夫模型 1 马尔科夫的局限性 在一些情况下,我们并不能直接得到观测的结果,比如在天气系统中,我们不能直接得到天气的状态,但是我们有一堆蚂蚁,可以从蚂蚁的行为状态找到天气变化的关系规律. ...
- NLP基础 : HMM 隐马尔可夫模型
Hidden Markov Model, HMM 隐马尔可夫模型,是一种描述隐性变量(状态)和显性变量(观测状态)之间关系的模型.该模型遵循两个假设,隐性状态i只取决于前一个隐性状态i-1,而与其他先 ...
- 《两日算法系列》之第四篇:隐马尔可夫模型HMM
目录 1. 定义与假设 2. 相关概念的表示 3. 三个基本问题 3.1. 概率计算问题 3.2. 学习问题 3.3. 预测问题 总结 1. 定义与假设 李雷雷所在城市的天气有三种情况,分别是:晴天. ...
- 机器学习知识点(二十五)Java实现隐马尔科夫模型HMM之jahmm库
1.隐马尔可夫模型HMM的应用场景,关乎于序列和状态变化的都可以. 发现java有可库,专为开发HMM,可惜只能在CSDN上有得下载. 2.jahmm是java开发隐马尔科夫模型的一个j ...
- 【机器学习基础】数学推导+纯Python实现机器学习算法24:HMM隐马尔可夫模型
Python机器学习算法实现 Author:louwill Machine Learning Lab HMM(Hidden Markov Model)也就是隐马尔可夫模型,是一种由隐藏的马尔可夫链随机 ...
- HMM隐马尔科夫模型 学习总结
隐马尔可夫模型(Hidden Markov Model,简称HMM)是结构最简单的动态贝叶斯网(dynamic Bayesian network),这是一种著名的有向图模型,主要用于时序数据建模,在语 ...
- HMM(隐马尔科夫模型)
HMM模型基础 介绍 隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理,模式识别等领域得到广泛的应用.当然,随着目前深度学 ...
- 通过hmmlearn学习使用HMM隐马尔科夫模型
一.了解隐马尔科夫模型(HMM) 具体可参考https://www.zhihu.com/question/20962240,讲得很通俗易懂. 本文使用的是hmmlearn模块,可以使用pip inst ...
最新文章
- throws throw 自定义异常
- opencv 罗曼滤波_勒罗曼杜罗伊
- The Longest Increasing Subsequence (LIS)
- Android AutoFocusCallback is not being called or not returning
- SpringBoot 数据验证错误处理
- shell 需要注意的点
- JavaScript高级程序设计学习(二)之基本概念
- Oracle Active database duplication
- Java Web第三弹---Tomcat
- 原生JavaScript + Canvas实现图片局部放大器
- [C语言]切比雪夫多项式,并写入到文件中
- 物联网行业系列深度报告 附下载
- 浏览器中cookies查看_如何在任何浏览器中阻止Cookies(除了您使用的网站外)
- 如何用计算机录制视频教程,电脑怎么利用软件录制视频教程
- 大师系列之彼得•林奇层查股
- Uncaught TypeError: $(...).modal is not a function
- bbed修改表记录内容系列三
- pytho_抓取下载音乐歌曲
- wordpress文章页面添加字体增大减小链接
- 负重下肢外骨骼的运动意图预测和运动状态辨识