李宏毅机器学习笔记:结构学习,HMM,CRF
- 1、隐马尔可夫模型HMM
- 1.1Sequence2Sequence
- 1.2 HMM
- 1.3 Viterbi算法
- 1.3 HMM模型的缺点
1、隐马尔可夫模型HMM
1.1Sequence2Sequence
什么是Seq2Seq问题呢?简单来说,就是输入是一个序列,输出也是一个序列。输入和输出的序列可以相等,也可以不相等。在本文中,可以先假设输入输出序列相等。
1.2 HMM
这里用了一个通俗易懂的例子来解释HMM模型,POS tagging,词性标注。
PN表示专有名词Proper Noun
V表示动词
D 定冠词
N名词
通常情况下,我们要生成1个句子,可以分为2个步骤。
一、根据语法设计好一个词性序列
二、根据字典中的词汇填充生成一个句子。
举例子来说,
图片表示,开始start后面接的词为PN的概率是0.4,接动词V的概率是0.1,接定冠词D的概率是0.5。依次类推。这样,第一步构思的词性顺序为 PN V D N的概率则为0.40.80.250.950.1。
类似地,在词性结构已经是PN V D N的第一步的基础上,生成的句子为 John saw the saw的概率为0.20.170.63*0.17。
那怎么计算第2步的概率呢?
计算方法如上图所示,其中y表示词性,x表示单词。我们是根据词汇x来求目标词性y,目标词性y是隐含的变量,这也是HMM中隐的由来。
现在问题只在于说如何计算。其实很简单,可以直接根据训练数据将这些概率统计出来。
如上图所示,词性 s ′ s' s′接在词性 s s s后面的概率为训练数据中词性s后面出现词性 s ′ s' s′的次数除以词性s出现的总次数。
词性s的单词为特定单词t的概率则为训练数据中所有单词为t且词性属于s的次数除以词性s出现的总次数。
通过对训练数据中的相关词汇和词性进行统计,便可计算出相应的概率。
1.3 Viterbi算法
上述可知,假设有 ∣ S ∣ |S| ∣S∣个词性,序列长度为L。那么该序列的词性可能存在 ∣ S ∣ L |S|^{L} ∣S∣L种答案。计算复杂度很高。而Vertibi算法则是专门解决该问题而衍生出的优化算法。
概括来说,HMM可分为上述3个步骤。
1.3 HMM模型的缺点
举个例子来说,假如训练数据中, y l − 1 y_{l-1} yl−1为名词N,后面接动词V的概率为0.9,接定冠词D的概率为0.1。而在给定词性为动词V的条件下,该单词为单词a的概率为0.5,为单词c的概率为0.5。在给定词性为D的条件下,为单词a的概率为1。
现在我们假设出现了该种场景,第一个单词为N,后一个单词为a,求后一个单词的词性预测。
这个例子比较简单,可以直接穷举出来。假如该单词词性 y l = D y_{l}=D yl=D,那么概率p=0.11=0.1。
假如该单词词性 y l = V y_{l}=V yl=V,p=0.90.5=0.45。因此,答案应该为V。
这个答案V看上去是没有问题的,但是假设我们的训练数据是上述这种情况,完全满足Transition probability 和Emission probability情况。我们预测的最佳答案是N-V-a。
但是,我们的训练数据中原本就出现了N-D-a这种样本。HMM模型所给的答案是训练数据中从未见过的情况,因为其概率最大。这种情况我们认为HMM预测的更好还是原数据更好呢?
答案显然是原数据中出现的样本最好。由此引申出HMM模型的缺陷问题:可能会预测出训练数据中从未出现过的结果。在训练数据为小样本数据集时其实时有一定好处的,因为这样泛化能力更强。
要想解决HMM的缺陷,有2种解决思路,一是使用更为复杂的模型,而是使用条件随机场CRF。