2.3 CRF损失函数
CRF损失函数包含了真实路径得分和所有可能路径的总得分,如果预测对的情况下,真实路径在所有可能路径中得分应该是最高的。
举个栗子,假设我们数据的标签如下表所示:
Label | Index |
---|---|
B-Person | 0 |
I-Person | 1 |
B-Organization | 2 |
I-Organization | 3 |
O | 4 |
START | 5 |
END | 6 |
我们有一个含有5个单词的句子,可能的路径为:
- 1)START B-Person B-Person B-Person B-Person B-Person END
- 2)START B-Person I-Person B-Person B-Person B-Person END
- …
- 10)START B-Person I-Person O B-Organization O END
- …
- N) O O O O O O O
假设共有 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.4 真实路径得分
在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”,则操作如下:
- 假设该句子有5个单词组成: w 1 , w 2 , w 3 , w 4 , w 5 w_1,w_2,w_3,w_4,w_5 w1,w2,w3,w4,w5;
- 再额外加两个单词 w 0 , w 6 w_0,w_6 w0,w6分别表示该句子的开头和结果;
- S i S_i Si由两部分计算得到: S i = E m i s s i o n S c o r e + T r a n s i t i o n S c o r e S_i=EmissionScore+TransitionScore Si=EmissionScore+TransitionScore(2.1节介绍了发射得分,2.2节介绍了转移得分)
发射得分
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
- x i n d e x , l a b e l x_{index,label} xindex,label是第 i n d e x index index个词被标记为 l a b e l label label的得分;
- 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_{1,B-Person} ,x_{2,I-Person},x_{3,O},x_{4,B-Organization},x_{5,O} x1,B−Person,x2,I−Person,x3,O,x4,B−Organization,x5,O都是从BiLSTM的输出得到的;
- 对于 x 0 , S T A R T 和 x 6 , E N D x_{0,START}和x_{6,END} x0,START和x6,END,我们可以将他们设为0。
转移得分
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
- t l a b e l 1 − > l a b e l 2 t_{label1->label2} tlabel1−>label2是从 l a b e l 1 label1 label1到 l a b e l 2 label2 label2的转移得分;
- 这些是CRF层的得分,即这些得分其实是CRF层的参数。
总而言之,现在我们可以计算 S i S_i Si和路径得分 e S i e^{S_i} eSi,下一步就是如何计算所有可能路径的总得分。
下一篇博文
下一篇博文,我将会通过一个示例,教您如何一步一步地计算所有可能路径的总得分。
这部分内容比较重要,虽然有点难度,但是不要担心,下一节的示例将会尽可能详细地介绍计算细节。