BiLSTM-CRF中CRF层解析-3

2.3 CRF损失函数

CRF损失函数包含了真实路径得分和所有可能路径的总得分,如果预测对的情况下,真实路径在所有可能路径中得分应该是最高的。

举个栗子,假设我们数据的标签如下表所示:

LabelIndex
B-Person0
I-Person1
B-Organization2
I-Organization3
O4
START5
END6

我们有一个含有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

假设共有NNN种可能路径,每一种可能的路径都有一个得分PiP_iPi,所有路径的总得分为Ptotal=P1+P2+...+PN=eS1+eS2+...+eSNP_{total} = P_1+P_2+...+P_N = e^{S_1}+ e^{S_2} +...+e^{S_N}Ptotal=P1+P2+...+PN=eS1+eS2+...+eSN,其中eee就是我们常用的指数常量eee。(在2.4节,我们将介绍如何计算SiS_iSiSiS_iSi也可以看作是路径的得分。)

假设,在所有可能路径中,第10条路径是真实路径,也就意味着,第10条路径对应的预测标签序列是对的,因此,P10P_{10}P10得分应该是最高的。

下式即为损失函数,在训练过程中,BiLSTM-CRF模型将会不断的更新,从而使真实路径得分占比越来越大:
LossFunction=PRealPathP1+P2+...+PNLossFunction = \frac{P_{RealPath}}{P_1+P_2+...+P_N}LossFunction=P1+P2+...+PNPRealPath
现在要解决的问题就是:
1)如何定义一个路径的得分;
2)如何计算所有可能路径的总得分;
3)当我们计算总得分时,我们需要列出所有可能路径吗(提前回答:当然不需要列出所有可能路径)

接下来,我们将介绍如何解决上述问题。

2.4 真实路径得分

在2.3节中,我们假设共有NNN种可能路径,每一种可能的路径都有一个得分PiP_iPi,所有路径的总得分为Ptotal=P1+P2+...+PN=eS1+eS2+...+eSNP_{total} = P_1+P_2+...+P_N = e^{S_1}+ e^{S_2} +...+e^{S_N}Ptotal=P1+P2+...+PN=eS1+eS2+...+eSN,其中eee就是我们常用的指数常量eeeeSie^{S_i}eSi为第iii条路径的得分。

显然,在所有可能路径中,肯定有一条真实路径(命名实体识别中,就是说这句话所有可能标签序列中,肯定有一个标签序列是对的),再举个栗子,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损失函数只需要两个得分:真实路径得分和所有可能路径总得分,真实路径得分的比例应随着训练不断增加。

真实路径得分eSie^{S_i}eSi的计算是非常直接的,接下来,我们介绍如何计算SiS_iSi

如前所述,假设真实路径为:“START B-Person I-Person O B-Organization O END”,则操作如下:

  • 假设该句子有5个单词组成:w1,w2,w3,w4,w5w_1,w_2,w_3,w_4,w_5w1,w2,w3,w4,w5
  • 再额外加两个单词w0,w6w_0,w_6w0,w6分别表示该句子的开头和结果;
  • SiS_iSi由两部分计算得到:Si=EmissionScore+TransitionScoreS_i=EmissionScore+TransitionScoreSi=EmissionScore+TransitionScore(2.1节介绍了发射得分,2.2节介绍了转移得分)

发射得分
EmissionScore=x0,START+x1,B−Person+x2,I−Person+x3,O+x4,B−Organization+x5,O+x6,ENDEmissionScore=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,BPerson+x2,IPerson+x3,O+x4,BOrganization+x5,O+x6,END

  • xindex,labelx_{index,label}xindex,label是第indexindexindex个词被标记为labellabellabel的得分;
  • x1,B−Person,x2,I−Person,x3,O,x4,B−Organization,x5,Ox_{1,B-Person} ,x_{2,I-Person},x_{3,O},x_{4,B-Organization},x_{5,O}x1,BPerson,x2,IPerson,x3,O,x4,BOrganization,x5,O都是从BiLSTM的输出得到的;
  • 对于x0,START和x6,ENDx_{0,START}和x_{6,END}x0,STARTx6,END,我们可以将他们设为0。

转移得分
TransitionScore=tSTART−>B−Person+tB−Person−>I−Person+tI−Person−>O+t0−>B−Organization+tB−Organization−>O+tO−>ENDTransitionScore=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>BPerson+tBPerson>IPerson+tIPerson>O+t0>BOrganization+tBOrganization>O+tO>END

  • tlabel1−>label2t_{label1->label2}tlabel1>label2是从label1label1label1label2label2label2的转移得分;
  • 这些是CRF层的得分,即这些得分其实是CRF层的参数。

总而言之,现在我们可以计算SiS_iSi和路径得分eSie^{S_i}eSi,下一步就是如何计算所有可能路径的总得分

下一篇博文

下一篇博文,我将会通过一个示例,教您如何一步一步地计算所有可能路径的总得分。
这部分内容比较重要,虽然有点难度,但是不要担心,下一节的示例将会尽可能详细地介绍计算细节。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤劳的凌菲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值