第五篇:HMM 隐马尔可夫模型
Posted flying_1314
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五篇: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 隐马尔可夫模型的主要内容,如果未能解决你的问题,请参考以下文章