0. 最通俗易懂的BiLSTM-CRF模型中的CRF层介绍(排版不好,不如1,2)
【1】. 通俗易懂!BiLSTM上的CRF,用命名实体识别任务来解释CRF(一) 原文
特征函数仅仅依靠当前单词的标签和它前面的单词的标签对标注序列进行评判,这样建立的CRF也叫作线性链CRF,这是CRF中的一种简单情况。为简单起见,本文中我们仅考虑线性链CRF。
【2】. 通俗易懂!BiLSTM上的CRF,用命名实体识别任务来解释CRF(二)
【3】 https://zhuanlan.zhihu.com/p/47722475 (https://guillaumegenthial.github.io/sequence-tagging-with-tensorflow.html)
Code :
- new tensorflow addons: https://github.com/tensorflow/addons/blob/master/tensorflow_addons/layers/tests/crf_test.py
- old tf code: https://github.com/fzschornack/bi-lstm-crf-tensorflow/blob/master/bi-lstm-crf-tensorflow.ipynb
4. 条件随机场(CRF)和隐马尔科夫模型(HMM)最大区别在哪里?CRF的全局最优体现在哪里?
5. 果壳中的条件随机场(CRF In A Nutshell) + 简明条件随机场CRF介绍(附带纯Keras实现:)
6. 同5《简明条件随机场CRF介绍 | 附带纯Keras实现》 https://zhuanlan.zhihu.com/p/37163081
《An Introduction to Conditional Random Fields》
1.HMM是生成模型,CRF是判别模型
2.HMM是概率有向图,CRF是概率无向图
3.HMM求解过程可能是局部最优,CRF可以全局最优
4.CRF概率归一化较合理,HMM则会导致label bias 问题
Tensorflow 2.0 crf
- def test_crf_multi_tag_sequence_score(dtype):
https://github.com/tensorflow/addons/blob/master/tensorflow_addons/text/tests/crf_test.py
- class ModelWithCRFLoss(tf.keras.Model):
https://github.com/tensorflow/addons/blob/master/tensorflow_addons/layers/tests/crf_test.py
Keras CRF
https://github.com/wenbotse/crf
* https://github.com/Hironsan/keras-crf-layer
线性链CRF
如果没有特别指出,一般CRF都指的是线性链CRF,
在CRF的定义中,我们并没有要求𝑋和𝑌有相同的结构。而实现中,我们一般都假设𝑋和𝑌有相同的结构,即:
𝑋=(𝑋1,𝑋2,...𝑋𝑛),𝑌=(𝑌1,𝑌2,...𝑌𝑛)X=(X1,X2,...Xn),Y=(Y1,Y2,...Yn)
我们一般考虑如下图所示的结构:𝑋和𝑌有相同的结构的CRF就构成了线性链条件随机场(Linear chain Conditional Random Fields,以下简称 linear-CRF)。
在我们的十个词的句子的词性标记中,词有十个,词性也是十个,因此,如果我们假设它是一个马尔科夫随机场,那么它也就是一个linear-CRF。
我们再来看看 linear-CRF的数学定义:
设X=(X1,X2,...Xn),Y=(Y1,Y2,...Yn)均为线性链表示的随机变量序列,在给定随机变量序列X的情况下,随机变量Y的条件概率分布P(Y|X)构成条件随机场,即满足马尔科夫性:
P(Yi|X,Y1,Y2,...Yn)=P(Yi|X,Yi−1,Yi+1)
则称𝑃(𝑌|𝑋)P(Y|X)为线性链条件随机场。
MEMM
MEMM存在着标注偏置问题(label bias problem)
根据上述递推式,则概率最大路径如下:
但是,从全局的角度分析:
- 无论观测值,State 1 总是更倾向于转移到State 2;
- 无论观测值,State 2 总是更倾向于转移到State 2.
MEMM所做的是本地归一化,导致有更少转移的状态拥有的转移概率普遍偏高,概率最大路径更容易出现转移少的状态。因MEMM存在着标注偏置问题,故全局归一化的CRF被提了出来
[1] Lample, G., Ballesteros, M., Subramanian, S., Kawakami, K. and Dyer, C., 2016. Neural architectures for named entity recognition. arXiv preprint arXiv:1603.01360.
https://arxiv.org/abs/1603.01360