- 统计学习方法(李航)
- HMM RNN LSTM看完神清气爽:https://www.jianshu.com/p/a2755179be5b
- HMM MEMM CRF: https://www.zhihu.com/question/35866596
- HMM:生成式模型
- MEMM:判别式模型,标注偏置问题(特征函数局部最优)
- CRF:判别式模型,特征函数(全局,解决了标注偏置问题)
- LSTM+CRF
既然LSTM都OK了,为啥researchers搞一个LSTM+CRF的hybrid model?
哈哈,因为a single LSTM预测出来的标注有问题啊!举个segmentation例子(BES; char level),plain LSTM 会搞出这样的结果:
input: "学习出一个模型,然后再预测出一条指定"
expected output: 学/B 习/E 出/S 一/B 个/E 模/B 型/E ,/S 然/B 后/E 再/E 预/B 测/E ……
real output: 学/B 习/E 出/S 一/B 个/B 模/B 型/E ,/S 然/B 后/B 再/E 预/B 测/E ……
看到不,用LSTM,整体的预测accuracy是不错indeed, 但是会出现上述的错误:在B之后再来一个B。这个错误在CRF中是不存在的,因为CRF的特征函数的存在就是为了对given序列观察学习各种特征(n-gram,窗口),这些特征就是在限定窗口size下的各种词之间的关系。然后一般都会学到这样的一条规律(特征):B后面接E,不会出现E。这个限定特征会使得CRF的预测结果不出现上述例子的错误。当然了,CRF还能学到更多的限定特征,那越多越好啊!
- 我们从如何进行中文分词的角度来理解HMM
原文:https://www.leiphone.com/news/201704/nT29tSWJlJ0WsWL7.html
根据可观察状态的序列找到一个最可能的隐藏状态序列
中文分词,就是给一个汉语句子作为输入,以“BEMS”组成的序列串作为输出,然后再进行切词,进而得到输入句子的划分。其中,B代表该字是词语中的起始字,M代表是词语中的中间字,E代表是词语中的结束字,S则代表是单字成词。
例如:给个句子
小明硕士毕业于中国科学院计算所
得到BEMS组成的序列为
BEBEBMEBEBMEBES
因为句尾只可能是E或者S,所以得到切词方式为
BE/BE/BME/BE/BME/BE/S
进而得到中文句子的切词方式为
小明/硕士/毕业于/中国/科学院/计算/所
这是个HMM问题,因为你想要得到的是每个字的位置,但是看到的只是这些汉字,需要通过汉字来推出每个字在词语中的位置,并且每个字属于什么状态还和它之前的字有关。
此时,我们需要根据可观察状态的序列找到一个最可能的隐藏状态序列。
五元组,三类问题,两个假设
五元组
通过上面的例子,我们可以知道 HMM 有以下5个要素。
观测序列-O:小明硕士毕业于中国科学院计算所
状态序列-S:BEBEBMEBEBMEBES
初始状态概率向量-π:句子的第一个字属于{B,E,M,S}这四种状态的概率
状态转移概率矩阵-A:如果前一个字位置是B,那么后一个字位置为BEMS的概率各是多少
观测概率矩阵-B:在状态B的条件下,观察值为耀的概率,取对数后是-10.460
备注:示例数值是对概率值取对数之后的结果,为了将概率相乘的计算变成对数相加,其中-3.14e+100作为负无穷,也就是对应的概率值是0
三类问题
当通过五元组中某些已知条