上篇博文中,我们知道CRF层可以从训练数据中学习到一些约束条件,从而确保最终的预测标签序列是有效的。
约束条件可能是:
在CRF层的损失函数中,有两种类型的得分,这两种类型的得分是CRF层的关键概念。
第一个得分为发射得分,该得分可以从BiLSTM层获得。如图2.1所示, w 0 w_0 w0标记为B-Person的得分是1.5。
Label | Index |
---|---|
B-Person | 0 |
I-Person | 1 |
B-Organization | 2 |
I-Organization | 3 |
O | 4 |
我们采用 x i y j x_{iy_j} xiyj来表达发射矩阵,其中 i i i表示第 i i i单词, y j y_j yj表示标签索引。例如,根据图2.1, x i = 1 , y j = 2 = x w 1 , B − O r g a n i z a t i o n = 0.1 x_{i=1,y_j=2}=x_{w1,B-Organization}=0.1 xi=1,yj=2=xw1,B−Organization=0.1,该表达式的意思是将 w 1 w_1 w1标记为 B-Organization的概率为0.1。
我们采用 t y i y j t_{y_iy_j} tyiyj表示转移得分,例如, t B − P e r s o n , I − P e r s o n = 0.9 t_{B-Person,I-Person}=0.9 tB−Person,I−Person=0.9表示标签B-Person转移到I-Person的得分为0.9,因此,我们将获得一个转移得分矩阵,该矩阵存储着所有标签相互转移之间的得分。
为了使转移得分矩阵的鲁棒性更好,我们将额外再加两个标签:START和END,START表示一句话的开始,注意这不是指该句话的第一个单词,START后才是第一个单词,同样的,END代表着这句话的结束。
下表就是一个转移得分矩阵的示例,该示例包含了START和END标签。
START | B-Person | I-Person | B-Organization | I-Organization | O | END | |
---|---|---|---|---|---|---|---|
START | 0 | 0.8 | 0.007 | 0.7 | 0.0008 | 0.9 | 0.08 |
B-Person | 0 | 0.6 | 0.9 | 0.2 | 0.0006 | 0.6 | 0.009 |
I-Person | -1 | 0.5 | 0.53 | 0.55 | 0.0003 | 0.85 | 0.008 |
B-Organization | 0.9 | 0.5 | 0.0003 | 0.25 | 0.8 | 0.77 | 0.006 |
I-Organization | -0.9 | 0.45 | 0.007 | 0.7 | 0.65 | 0.76 | 0.2 |
O | 0 | 0.65 | 0.0007 | 0.7 | 0.0008 | 0.9 | 0.08 |
END | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
如上表所示,我们能够发现转移矩阵已经学习到了某些有用的约束条件。
现在,你可能比较关心的问题是:怎么得到该转移矩阵?
其实,该矩阵是BiLSTM-CRF模型的一个参数,在训练模型之前,可以随机初始化该转移得分矩阵,在训练过程中,这个矩阵中的所有随机得分将得到更新,换而言之,CRF层可以自己学习这些约束条件,而无需人为构建该矩阵。随着不断的训练,这些得分会越来越合理。
该节会介绍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