BiLSTM-CRF-3

2.3 CRF损失函数

CRF损失函数中包含了真实标签序列得分和所有可能标签序列的总得分,正常情况下,真实标签序列得分在所有可能标签序列得分中是最高的。

比如,假设数据集中的标签如下所示:

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

那么,在第一节中我们假设的句子 x x x,所有可能的标签序列组合为:

  • (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中可能的标签序列组合,且第 i i i个标签序列的得分为 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

按照我们之前的假设,第10个是真实的标签序列,那么,我们想要的结果是第10个标签序列得分在所有可能的标签序列得分中是最高的。

因此,我们可以定义模型的损失函数,在整个模型训练过程中,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

那么,问题就来了:

  • 如何定义一个标签序列的得分?
  • 如何计算所有可能标签序列组合的总得分?
  • 在计算总得分中,一定需要计算每一个可能的标签序列的得分吗?

接下来,我们来解答每一个问题。

2.4 真实标签序列得分

前面我们定义了标签序列得分为 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 S i e^{S_i} eSi表示第i个标签序列得分。

显然,在所有可能的标签序列组合必然存在一个序列是真实标签序列,而剩下的标签序列组合都是错误的,比如序列”**START B-Person I-Person O B-Organization O END **“是正确的,而序列‘START B-Person I-Person B-Person B-Person B-Person END’是错误的。

在整个模型训练过程中,CRF层的损失函数只需要两个得分:

  • 一个是真实标签序列得分
  • 一个是所有可能标签序列组合的总得分

而我们的学习目的是让真实的标签序列得分在总得分中的占比是最高的。

对于真实标签序列的得分 e S i e^{S_i} eSi,我们直接计算 S i S_i Si即可。

我们使用之前的案例,真实的标签序列为“**START B-Person I-Person O B-Organization O END **”,即:

  • 句子 x x x由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主要由第一节中提到的Emission Score和Transition Score组成,即 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 = Emission Score + Transition Score Si=EmissionScore+TransitionScore
2.4.1 Emission Score

Emission Score计算公式如下所示:

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 Emission Score = 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

其中:

  • x i n d e x , l a b e l x_{index,label} xindex,label表示第index个词被标记为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,BPerson,x2,IPerson,x3,O,x4,BOrganization,x5,O 为BiLSTM层的输出
  • 一般 x 0 , S T A R T x_{0,START} x0,START x 6 , E N D x_{6,END} x6,END为0
2.4.2 Transition Score

Transition Score计算公式如下所示:

T r a n s i t i o n S c o r e = Transition Score = TransitionScore=
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_{START \rightarrow B-Person} + t_{B-Person \rightarrow I-Person} + tSTARTBPerson+tBPersonIPerson+
t I − P e r s o n → O + t O → 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 t_{I-Person \rightarrow O} + t_{O \rightarrow B-Organization} + t_{B-Organization \rightarrow O} + t_{O \rightarrow END} tIPersonO+tOBOrganization+tBOrganizationO+tOEND

其中:

  • t l a b e l 1 → l a b e l 2 t_{label1 \rightarrow label2} tlabel1label2 表示 l a b e l 1 label1 label1 l a b e l 2 label2 label2的transition Score。
  • transition Score主要是在CRF层进行计算的,也就是说,transition Score完全是CRF层的参数。

因此,我们通过计算 s i s_i si,可以得到第i条标签序列的得分。

2.5 所有可能标签序列组合的总得分

前面,我们计算了单条标签序列得分,接下来,我们需要计算所有可能标签序列的总得分。由之前内容可知,总得分的计算公式为;

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

很显然,总得分计算方式就是每一条标签序列得分的求和,那么我们能想到的最简单的方法就是先计算每一条的标签序列得分,然后将所有的标签序列得分进行相加得到总得分。虽然计算很简单,但是效率不高,需要很长的训练时间。

接下来,我们将通过公式推导来认识总得分计算过程。

2.6 CRF的损失函数

由前面可知,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 Loss Function = \frac{P_{RealPath}}{P_1 + P_2 + … + P_N} LossFunction=P1+P2++PNPRealPath

我们对其对数化,即:

L o g L o s s F u n c t i o n = log ⁡ P R e a l P a t h P 1 + P 2 + … + P N LogLossFunction = \log \frac{P_{RealPath}}{P_1 + P_2 + … + P_N} LogLossFunction=logP1+P2++PNPRealPath

一般在模型训练过程中,我们希望损失函数最小化,因此,在损失函数添加一个负号,即:

L o g L o s s F u n c t i o n Log Loss Function LogLossFunction
= − log ⁡ P R e a l P a t h P 1 + P 2 + … + P N = - \log \frac{P_{RealPath}}{P_1 + P_2 + … + P_N} =logP1+P2++PNPRealPath
= − log ⁡ e S R e a l P a t h e S 1 + e S 2 + … + e S N = - \log \frac{e^{S_{RealPath}}}{e^{S_1} + e^{S_2} + … + e^{S_N}} =logeS1+eS2++eSNeSRealPath
= − ( log ⁡ ( e S R e a l P a t h ) − log ⁡ ( e S 1 + e S 2 + … + e S N ) ) = - (\log(e^{S_{RealPath}}) - \log(e^{S_1} + e^{S_2} + … + e^{S_N})) =(log(eSRealPath)log(eS1+eS2++eSN))
= − ( S R e a l P a t h − log ⁡ ( e S 1 + e S 2 + … + e S N ) ) = - (S_{RealPath} - \log(e^{S_1} + e^{S_2} + … + e^{S_N})) =(SRealPathlog(eS1+eS2++eSN))
= − ( ∑ i = 1 N x i y i + ∑ i = 1 N − 1 t y i y i + 1 − log ⁡ ( e S 1 + e S 2 + … + e S N ) ) = - ( \sum_{i=1}^{N} x_{iy_i} + \sum_{i=1}^{N-1} t_{y_iy_{i+1}} - \log(e^{S_1} + e^{S_2} + … + e^{S_N})) =(i=1Nxiyi+i=1N1tyiyi+1log(eS1+eS2++eSN))

因此,对于总得分,我们需要一个高效的方法计算:

log ⁡ ( e S 1 + e S 2 + … + e S N ) \log(e^{S_1} + e^{S_2} + … + e^{S_N}) log(eS1+eS2++eSN)

2.6.1 emission Score和transition Score

为了简化公式,我们假设句子的长度为3,即:

x = ( w 0 , w 1 , w 2 ) x = (w_0,w_1,w_2) x=(w0,w1,w2)

假设数据集中只有两个标签,即:

L a b e l S e t = ( l 1 , l 2 ) LabelSet = (l_1,l_2) LabelSet=(l1,l2)

则emission Score矩阵可从BiLSTM层的输出获得,即:

l 1 l_1 l1 l 2 l_2 l2
w 0 w_0 w0 x 01 x_{01} x01 x 02 x_{02} x02
w 1 w_1 w1 x 11 x_{11} x11 x 12 x_{12} x12
w 2 w_2 w2 x 21 x_{21} x21 x 22 x_{22} x22

其中 x i j x_{ij} xij为单元 w i w_i wi被标记为 l j l_j lj的得分。

而且,我们可以从CRF层中得到transition Score矩阵,即:

l 1 l_1 l1 l 2 l_2 l2
l 1 l_1 l1 t 11 t_{11} t11 t 12 t_{12} t12
l 2 l_2 l2 t 21 t_{21} t21 t 22 t_{22} t22

其中 t i j t_{ij} tij为标签 i i i到标签 j j j的得分。

2.6.2 公式推导

记住我们的目标是计算: log ⁡ ( e S 1 + e S 2 + … + e S N ) \log(e^{S_1} + e^{S_2} + … + e^{S_N}) log(eS1+eS2++eSN)

很显然,我们可以使用动态规划思想进行计算(如果你不了解动态规划,没关系,本文将一步一步地进行解释,当然还是建议你学习下动态规划算法)。简而言之,首先,我们计算 w 0 w_0 w0的所有可能序列的总得分。接着,我们使用上一步的总得分计算 w 0 → w 1 w_0 \rightarrow w_1 w0w1的总得分。最后,我们同样使用上一步的总得分计算 w 0 → w 1 → w 2 w_0 \rightarrow w_1 \rightarrow w_2 w0w1w2的总得分。最后的总得分就是我们想要的总得分。

很明显,我们每一次计算都需要利用到上一步计算得到的结果,因此,接下来,你将看到两个变量:

  • obs: 定义当前单元的信息
  • previous: 存储上一步计算的最后结果

备注:以下内容如果看不懂的话,结合上面的emission Score矩阵和transition Score矩阵一起看就明白了

首先,我们计算 w 0 w_0 w0:

o b s = [ x 01 , x 02 ] obs = [x_{01},x_{02}] obs=[x01,x02]
p r e v i o u s = N o n e previous = None previous=None

如果我们的句子只有一个词 w 0 w_0 w0,那么存储上一步结果的 p r e v i o u s previous previous N o n e None None,另外,对于 w 0 w_0 w0而言, o b s = [ x 01 , x 02 ] obs = [x_{01},x_{02}] obs=[x01,x02],其中 x 01 x_{01} x01 x 02 x_{02} x02分别为emission Score(BiLSTM层的输出)。

因此, w 0 w_0 w0的所有可能标签序列总得分为:

T o t a l S c o r e ( w 0 ) = log ⁡ ( e x 01 + e x 02 ) TotalScore(w_0)=\log (e^{x_{01}} + e^{x_{02}}) TotalScore(w0)=log(ex01+ex02)


接着,我们计算 w 0 → w 1 w_0 \rightarrow w_1 w0w1:

o b s = [ x 11 , x 12 ] obs = [x_{11},x_{12}] obs=[x11,x12]
p r e v i o u s = [ x 01 , x 02 ] previous = [x_{01},x_{02}] previous=[x01,x02]

为了计算方便,我们将 p r e v i o u s previous previous转变为:

p r e v i o u s = ( x 01 x 01 x 02 x 02 ) previous = \begin{pmatrix} x_{01} & x_{01} \\ x_{02} & x_{02} \end{pmatrix} previous=(x01x02x01x02)

同样,将 o b s obs obs转变为:

o b s = ( x 11 x 12 x 11 x 12 ) obs = \begin{pmatrix} x_{11} & x_{12} \\ x_{11} & x_{12} \end{pmatrix} obs=(x11x11x12x12)
备注:通过矩阵方式计算更高效

接着,我们将 p r e v i o u s , a b s previous,abs previous,abs和transition Score进行相加,即:
s c o r e s = ( x 01 x 01 x 02 x 02 ) + ( x 11 x 12 x 11 x 12 ) + ( t 11 t 12 t 21 t 22 ) scores = \begin{pmatrix} x_{01}&x_{01}\\ x_{02}&x_{02} \end{pmatrix} + \begin{pmatrix} x_{11}&x_{12}\\ x_{11}&x_{12} \end{pmatrix} + \begin{pmatrix} t_{11}&t_{12}\\ t_{21}&t_{22} \end{pmatrix} scores=(x01x02x01x02)+(x11x11x12x12)+(t11t21t12t22)

接着,可得到:

s c o r e s = ( x 01 + x 11 + t 11 x 01 + x 12 + t 12 x 02 + x 11 + t 21 x 02 + x 12 + t 22 ) scores = \begin{pmatrix} x_{01}+x_{11}+t_{11}&x_{01}+x_{12}+t_{12}\\ x_{02}+x_{11}+t_{21}&x_{02}+x_{12}+t_{22} \end{pmatrix} scores=(x01+x11+t11x02+x11+t21x01+x12+t12x02+x12+t22)
从而我们可得到当前的 p r e v i o u s previous previous为:

p r e v i o u s = [ log ⁡ ( e x 01 + x 11 + t 11 + e x 02 + x 11 + t 21 ) , log ⁡ ( e x 01 + x 12 + t 12 + e x 02 + x 12 + t 22 ) ] previous=[\log (e^{x_{01}+x_{11}+t_{11}} + e^{x_{02}+x_{11}+t_{21}}), \log (e^{x_{01}+x_{12}+t_{12}} + e^{x_{02}+x_{12}+t_{22}})] previous=[log(ex01+x11+t11+ex02+x11+t21),log(ex01+x12+t12+ex02+x12+t22)]

实际上,第二步已经算完了,可能还有人还无法理解如何得到 w 0 w_0 w0 w 1 w_1 w1的所有可能序列组合( l a b e l 1 → l a b e l 1 , l a b e l 1 → l a b e l 2 , l a b e l 2 → l a b e l 1 , l a b e l 2 → l a b e l 2 label_1 \rightarrow label_1, label_1 \rightarrow label_2 , label_2 \rightarrow label_1, label_2 \rightarrow label_2 label1label1,label1label2,label2label1,label2label2)的总得分,其实你主要按照以下计算方式即可;

T o t a l S c o r e ( w 0 → w 1 ) TotalScore(w_0 → w_1) TotalScore(w0w1)

= log ⁡ ( e p r e v i o u s [ 0 ] + e p r e v i o u s [ 1 ] ) =\log (e^{previous[0]} + e^{previous[1]}) =log(eprevious[0]+eprevious[1])

= log ⁡ ( e log ⁡ ( e x 01 + x 11 + t 11 + e x 02 + x 11 + t 21 ) + e log ⁡ ( e x 01 + x 12 + t 12 + e x 02 + x 12 + t 22 ) ) =\log (e^{\log(e^{x_{01}+x_{11}+t_{11}} + e^{x_{02}+x_{11}+t_{21}})}+ e^{\log(e^{x_{01}+x_{12}+t_{12}} + e^{x_{02}+x_{12}+t_{22}})} ) =log(elog(ex01+x11+t11+ex02+x11+t21)+elog(ex01+x12+t12+ex02+x12+t22))

= log ⁡ ( e x 01 + x 11 + t 11 + e x 02 + x 11 + t 21 + e x 01 + x 12 + t 12 + e x 02 + x 12 + t 22 ) =\log(e^{x_{01}+x_{11}+t_{11}}+e^{x_{02}+x_{11}+t_{21}}+e^{x_{01}+x_{12}+t_{12}}+e^{x_{02}+x_{12}+t_{22}}) =log(ex01+x11+t11+ex02+x11+t21+ex01+x12+t12+ex02+x12+t22)

很明显,与 log ⁡ ( e S 1 + e S 2 + … + e S N ) \log(e^{S_1} + e^{S_2} + … + e^{S_N}) log(eS1+eS2++eSN)很相似。

在上述公式中,我们可以看到:

  • S 1 = x 01 + x 11 + t 11 S_1 = x_{01}+x_{11}+t_{11} S1=x01+x11+t11 ( l a b e l 1 label_1 label1 l a b e l 1 label_1 label1)
  • S 2 = x 02 + x 11 + t 21 S_2 = x_{02}+x_{11}+t_{21} S2=x02+x11+t21 ( l a b e l 2 label_2 label2 l a b e l 1 label_1 label1)
  • S 3 = x 01 + x 12 + t 12 S_3 = x_{01}+x_{12}+t_{12} S3=x01+x12+t12 ( l a b e l 1 label_1 label1 l a b e l 2 label_2 label2)
  • S 4 = x 02 + x 12 + t 22 S_4 = x_{02}+x_{12}+t_{22} S4=x02+x12+t22 ( l a b e l 2 label_2 label2 l a b e l 2 label_2 label2)

接着我们计算 w 0 w_0 w0 w 1 w_1 w1 w 2 w_2 w2:

如果你理解了上一步的计算过程的话,其实这一步的计算与上一步类似。即:

o b s = [ x 21 , x 22 ] obs = [x_{21}, x_{22}] obs=[x21,x22]

p r e v i o u s = [ log ⁡ ( e x 01 + x 11 + t 11 + e x 02 + x 11 + t 21 ) , log ⁡ ( e x 01 + x 12 + t 12 + e x 02 + x 12 + t 22 ) ] previous=[\log (e^{x_{01}+x_{11}+t_{11}} + e^{x_{02}+x_{11}+t_{21}}), \log (e^{x_{01}+x_{12}+t_{12}} + e^{x_{02}+x_{12}+t_{22}})] previous=[log(ex01+x11+t11+ex02+x11+t21),log(ex01+x12+t12+ex02+x12+t22)]

类似于第二步,我们将 p r e v i o u s previous previous转化为:

p r e v i o u s = ( log ⁡ ( e x 01 + x 11 + t 11 + e x 02 + x 11 + t 21 ) log ⁡ ( e x 01 + x 11 + t 11 + e x 02 + x 11 + t 21 ) log ⁡ ( e x 01 + x 12 + t 12 + e x 02 + x 12 + t 22 ) log ⁡ ( e x 01 + x 12 + t 12 + e x 02 + x 12 + t 22 ) ) previous = \begin{pmatrix} \log (e^{x_{01}+x_{11}+t_{11}} + e^{x_{02}+x_{11}+t_{21}})&\log (e^{x_{01}+x_{11}+t_{11}} + e^{x_{02}+x_{11}+t_{21}})\\ \log (e^{x_{01}+x_{12}+t_{12}} + e^{x_{02}+x_{12}+t_{22}})&\log (e^{x_{01}+x_{12}+t_{12}} + e^{x_{02}+x_{12}+t_{22}}) \end{pmatrix} previous=(log(ex01+x11+t11+ex02+x11+t21)log(ex01+x12+t12+ex02+x12+t22)log(ex01+x11+t11+ex02+x11+t21)log(ex01+x12+t12+ex02+x12+t22))

同样,将 o b s obs obs转化为:

o b s = ( x 21 x 22 x 21 x 22 ) obs = \begin{pmatrix} x_{21}&x_{22}\\ x_{21}&x_{22} \end{pmatrix} obs=(x21x21x22x22)

p r e v i o u s , o b s previous,obs previousobs和transition Score进行相加,即:

s c o r e s = ( log ⁡ ( e x 01 + x 11 + t 11 + e x 02 + x 11 + t 21 ) log ⁡ ( e x 01 + x 11 + t 11 + e x 02 + x 11 + t 21 ) log ⁡ ( e x 01 + x 12 + t 12 + e x 02 + x 12 + t 22 ) log ⁡ ( e x 01 + x 12 + t 12 + e x 02 + x 12 + t 22 ) ) + ( x 21 x 22 x 21 x 22 ) + ( t 11 t 12 t 21 t 22 ) scores = \begin{pmatrix} \log (e^{x_{01}+x_{11}+t_{11}} + e^{x_{02}+x_{11}+t_{21}})&\log (e^{x_{01}+x_{11}+t_{11}} + e^{x_{02}+x_{11}+t_{21}})\\ \log (e^{x_{01}+x_{12}+t_{12}} + e^{x_{02}+x_{12}+t_{22}})&\log (e^{x_{01}+x_{12}+t_{12}} + e^{x_{02}+x_{12}+t_{22}}) \end{pmatrix} + \begin{pmatrix} x_{21}&x_{22}\\ x_{21}&x_{22} \end{pmatrix} + \begin{pmatrix} t_{11}&t_{12}\\ t_{21}&t_{22} \end{pmatrix} scores=(log(ex01+x11+t11+ex02+x11+t21)log(ex01+x12+t12+ex02+x12+t22)log(ex01+x11+t11+ex02+x11+t21)log(ex01+x12+t12+ex02+x12+t22))+(x21x21x22x22)+(t11t21t12t22)
更新 p r e v i o u s previous previous为:
p r e v i o u s = [ log ⁡ ( e log ⁡ ( e x 01 + x 11 + t 11 + e x 02 + x 11 + t 21 ) + x 22 + t 12 + e log ⁡ ( e x 01 + x 12 + t 12 + e x 02 + x 12 + t 22 ) + x 22 + t 22 ) ] previous = [\log( e^{\log (e^{x_{01}+x_{11}+t_{11}} + e^{x_{02}+x_{11}+t_{21}}) + x_{22} + t_{12}} + e^{\log (e^{x_{01}+x_{12}+t_{12}} + e^{x_{02}+x_{12}+t_{22}}) + x_{22} + t_{22}})] previous=[log(elog(ex01+x11+t11+ex02+x11+t21)+x22+t12+elog(ex01+x12+t12+ex02+x12+t22)+x22+t22)]
= log ⁡ ( ( e x 01 + x 11 + t 11 + e x 02 + x 11 + t 21 ) e x 22 + t 12 + ( e x 01 + x 12 + t 12 + e x 02 + x 12 + t 22 ) e x 22 + t 22 ) ] =\log( (e^{x_{01}+x_{11}+t_{11}} + e^{x_{02}+x_{11}+t_{21}})e^{x_{22} + t_{12}} + (e^{x_{01}+x_{12}+t_{12}} + e^{x_{02}+x_{12}+t_{22}})e^{x_{22} + t_{22}})] =log((ex01+x11+t11+ex02+x11+t21)ex22+t12+(ex01+x12+t12+ex02+x12+t22)ex22+t22)]

当计算到最后一步时,我们使用新的 p r e v i o u s previous previous计算总得分:

T o t a l S c o r e ( w 0 → w 1 → w 2 ) TotalScore(w_0 → w_1 → w_2) TotalScore(w0w1w2)

= log ⁡ ( e p r e v i o u s [ 0 ] + e p r e v i o u s [ 1 ] ) =\log (e^{previous[0]} + e^{previous[1]}) =log(eprevious[0]+eprevious[1])

= log ⁡ ( e log ⁡ ( ( e x 01 + x 11 + t 11 + e x 02 + x 11 + t 21 ) e x 21 + t 11 + ( e x 01 + x 12 + t 12 + e x 02 + x 12 + t 22 ) e x 21 + t 21 ) =\log (e^{\log( (e^{x_{01}+x_{11}+t_{11}} + e^{x_{02}+x_{11}+t_{21}})e^{x_{21} + t_{11}} + (e^{x_{01}+x_{12}+t_{12}} + e^{x_{02}+x_{12}+t_{22}})e^{x_{21} + t_{21}} )} =log(elog((ex01+x11+t11+ex02+x11+t21)ex21+t11+(ex01+x12+t12+ex02+x12+t22)ex21+t21)

+ e log ⁡ ( ( e x 01 + x 11 + t 11 + e x 02 + x 11 + t 21 ) e x 22 + t 12 + ( e x 01 + x 12 + t 12 + e x 02 + x 12 + t 22 ) e x 22 + t 22 ) ) +e^{\log( (e^{x_{01}+x_{11}+t_{11}} + e^{x_{02}+x_{11}+t_{21}})e^{x_{22} + t_{12}} + (e^{x_{01}+x_{12}+t_{12}} + e^{x_{02}+x_{12}+t_{22}})e^{x_{22} + t_{22}})} ) +elog((ex01+x11+t11+ex02+x11+t21)ex22+t12+(ex01+x12+t12+ex02+x12+t22)ex22+t22))

= log ⁡ ( e x 01 + x 11 + t 11 + x 21 + t 11 + e x 02 + x 11 + t 21 + x 21 + t 11 =\log (e^{x_{01}+x_{11}+t_{11}+x_{21}+t_{11}}+e^{x_{02}+x_{11}+t_{21}+x_{21}+t_{11}} =log(ex01+x11+t11+x21+t11+ex02+x11+t21+x21+t11
+ e x 01 + x 12 + t 12 + x 21 + t 21 + e x 02 + x 12 + t 22 + x 21 + t 21 +e^{x_{01}+x_{12}+t_{12}+x_{21}+t_{21}}+e^{x_{02}+x_{12}+t_{22}+x_{21}+t_{21}} +ex01+x12+t12+x21+t21+ex02+x12+t22+x21+t21
+ e x 01 + x 11 + t 11 + x 22 + t 12 + e x 02 + x 11 + t 21 + x 22 + t 12 +e^{x_{01}+x_{11}+t_{11}+x_{22}+t_{12}}+e^{x_{02}+x_{11}+t_{21}+x_{22}+t_{12}} +ex01+x11+t11+x22+t12+ex02+x11+t21+x22+t12
+ e x 01 + x 12 + t 12 + x 22 + t 22 + e x 02 + x 12 + t 22 + x 22 + t 22 ) +e^{x_{01}+x_{12}+t_{12}+x_{22}+t_{22}}+e^{x_{02}+x_{12}+t_{22}+x_{22}+t_{22}}) +ex01+x12+t12+x22+t22+ex02+x12+t22+x22+t22)


到这里,我们就完成 了 log ⁡ ( e S 1 + e S 2 + … + e S N ) \log(e^{S_1} + e^{S_2} + … + e^{S_N}) log(eS1+eS2++eSN)的计算过程。

参考文献

[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

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值