前言:
本文翻译,原文地址:https://createmomo.github.io/2017/09/23/CRF_Layer_on_the_Top_of_BiLSTM_2/
上一节中《BiLSTM中的CRF层(一)简介》,CRF层可以加入一些约束来保证最终预测结果是有效的。这些约束可以在训练数据时被CRF层自动学习得到。
约束一般有如下:
- 句子的开头应该是“B-”或“O”,而不是“I-”。
- “B-label1 I-label2 I-label3…”,在该模式中,类别1,2,3应该是同一种实体类别。比如,“B-Person I-Person” 是正确的,而“B-Person I-Organization”则是错误的。
- “O I-label”是错误的,命名实体的开头应该是“B-”而不是“I-”。
- ...
有了这些约束,非法的预测序列将会被减少。
下面将会介绍为什么CRF能够学习到这些约束。
二、CRF层
在CRF层损失函数中,有两种类型的分数,这两种是理解CRF的关键。
1. Emission score(发射分数)
Emission score(发射分数)来自BiLstm层。如下图所示,被预测为B-Person的分数是1.5
为了更方便的解释,我们给每个类别一个索引,如下表所示:
Label | Index |
B-Person | 0 |
I-Person | 1 |
B-Organization | 2 |
I-Organization | 3 |
O | 4 |
我们使用表示发射分数。
是单词索引,
是标签索引。例如,上图中,
表示单词
被预测为B-Organization的分数是0.1。
2. Transition Score(转移分数)
我们使用代表转移分数。比如,
表示由标签B-Person到标签I-Person的转移分数是0.9。因此,我们有一个所有类别间的转移分数矩阵。为了使转移分数矩阵更具鲁棒性,我们加上START 和 END两类标签。START代表一个句子的开始(不是句子的第一个单词),END代表一个句子的结束。
下表是加上START和END标签的转移分数矩阵例子。
如上表格所示,转移矩阵已经学习到一些有用的约束条件:
- 句子的第一个单词应该是“B-” 或 “O”,而不是“I”。(从“START”->“I-Person 或 I-Organization”的转移分数很低)
- “B-label1 I-label2 I-label3…”,在该模式中,类别1,2,3应该是同一种实体类别。比如,“B-Person I-Person” 是正确的,而“B-Person I-Organization”则是错误的。(“B-Organization” -> “I-Person”的分数很低)
- “O I-label”是错误的,命名实体的开头应该是“B-”而不是“I-”。
那么要如何才能得到这个转移矩阵呢?
实际上,转移矩阵是BiLSTM-CRF模型的一个参数。在训练模型之前,你可以随机初始化转移矩阵的分数。这些分数将随着训练的迭代过程被更新,换句话说,CRF层可以自己学到这些约束条件。
下一篇:
下一篇将会介绍CRF的Loss函数
参考文档:
[1] Lample, G., Ballesteros, M., Subramanian, S., Kawakami, K. and Dyer, C., 2016. Neural architectures for named entity recognition. arXiv preprint arXiv:1603.01360.