CRF损失函数包含了真实路径得分和所有可能路径的总得分,如果预测对的情况下,真实路径在所有可能路径中得分应该是最高的。
举个栗子,假设我们数据的标签如下表所示:
Label | Index |
---|---|
B-Person | 0 |
I-Person | 1 |
B-Organization | 2 |
I-Organization | 3 |
O | 4 |
START | 5 |
END | 6 |
我们有一个含有5个单词的句子,可能的路径为:
假设共有 N N N种可能路径,每一种可能的路径都有一个得分 P i P_i Pi,所有路径的总得分为 P t o t a l = P 1 + P 2 + . . . + P N = e S 1 + e S 2 + . . . + e S N P_{total} = P_1+P_2+...+P_N = e^{S_1}+ e^{S_2} +...+e^{S_N} Ptotal=P1+P2+...+PN=eS1+eS2+...+eSN,其中 e e e就是我们常用的指数常量 e e e。(在2.4节,我们将介绍如何计算 S i S_i Si, S i S_i Si也可以看作是路径的得分。)
假设,在所有可能路径中,第10条路径是真实路径,也就意味着,第10条路径对应的预测标签序列是对的,因此, P 10 P_{10} P10得分应该是最高的。
下式即为损失函数,在训练过程中,BiLSTM-CRF模型将会不断的更新,从而使真实路径得分占比越来越大:
L o s s F u n c t i o n = P R e a l P a t h P 1 + P 2 + . . . + P N LossFunction = \frac{P_{RealPath}}{P_1+P_2+...+P_N} LossFunction=P1+P2+...+PNPRealPath
现在要解决的问题就是:
1)如何定义一个路径的得分;
2)如何计算所有可能路径的总得分;
3)当我们计算总得分时,我们需要列出所有可能路径吗(提前回答:当然不需要列出所有可能路径)
接下来,我们将介绍如何解决上述问题。
在2.3节中,我们假设共有 N N N种可能路径,每一种可能的路径都有一个得分 P i P_i Pi,所有路径的总得分为 P t o t a l = P 1 + P 2 + . . . + P N = e S 1 + e S 2 + . . . + e S N P_{total} = P_1+P_2+...+P_N = e^{S_1}+ e^{S_2} +...+e^{S_N} Ptotal=P1+P2+...+PN=eS1+eS2+...+eSN,其中 e e e就是我们常用的指数常量 e e e, e S i e^{S_i} eSi为第 i i i条路径的得分。
显然,在所有可能路径中,肯定有一条真实路径(命名实体识别中,就是说这句话所有可能标签序列中,肯定有一个标签序列是对的),再举个栗子,1.2节中那句话的真实路径就是“START B-Person I-Person O B-Organization O END”,而其他的如“START B-Person B-Organization O I-Person I-Person B-Person”就是错误的。
在训练过程中,CRF损失函数只需要两个得分:真实路径得分和所有可能路径总得分,真实路径得分的比例应随着训练不断增加。
真实路径得分 e S i e^{S_i} eSi的计算是非常直接的,接下来,我们介绍如何计算 S i S_i Si。
如前所述,假设真实路径为:“START B-Person I-Person O B-Organization O END”,则操作如下:
发射得分
E m i s s i o n S c o r e = x 0 , S T A R T + x 1 , B − P e r s o n + x 2 , I − P e r s o n + x 3 , O + x 4 , B − O r g a n i z a t i o n + x 5 , O + x 6 , E N D EmissionScore=x_{0,START}+x_{1,B-Person}+x_{2,I-Person}+x_{3,O}+x_{4,B-Organization}+x_{5,O}+x_{6,END} EmissionScore=x0,START+x1,B−Person+x2,I−Person+x3,O+x4,B−Organization+x5,O+x6,END
转移得分
T r a n s i t i o n S c o r e = t S T A R T − > B − P e r s o n + t B − P e r s o n − > I − P e r s o n + t I − P e r s o n − > O + t 0 − > B − O r g a n i z a t i o n + t B − O r g a n i z a t i o n − > O + t O − > E N D TransitionScore=t_{START−>B−Person}+t_{B−Person−>I−Person}+t_{I−Person−>O}+t_{0−>B−Organization}+t_{B−Organization−>O}+t_{O−>END} TransitionScore=tSTART−>B−Person+tB−Person−>I−Person+tI−Person−>O+t0−>B−Organization+tB−Organization−>O+tO−>END
总而言之,现在我们可以计算 S i S_i Si和路径得分 e S i e^{S_i} eSi,下一步就是如何计算所有可能路径的总得分。
下一篇博文,我将会通过一个示例,教您如何一步一步地计算所有可能路径的总得分。
这部分内容比较重要,虽然有点难度,但是不要担心,下一节的示例将会尽可能详细地介绍计算细节。