本文共 15936 字,大约阅读时间需要 53 分钟。
2.3 CRF损失函数
CRF损失函数中包含了真实标签序列得分和所有可能标签序列的总得分,正常情况下,真实标签序列得分在所有可能标签序列得分中是最高的。
比如,假设数据集中的标签如下所示:
Label | Index |
---|---|
B-Person | 0 |
I-Person | 1 |
B-Organization | 2 |
I-Organization | 3 |
O | 4 |
START | 5 |
END | 6 |
那么,在第一节中我们假设的句子 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,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表示第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,B−Person,x2,I−Person,x3,O,x4,B−Organization,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} + tSTART→B−Person+tB−Person→I−Person+ 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} tI−Person→O+tO→B−Organization+tB−Organization→O+tO→END其中:
- t l a b e l 1 → l a b e l 2 t_{label1 \rightarrow label2} tlabel1→label2 表示 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})) =−(SRealPath−log(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=1N−1tyiyi+1−log(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 w0→w1的总得分。最后,我们同样使用上一步的总得分计算 w 0 → w 1 → w 2 w_0 \rightarrow w_1 \rightarrow w_2 w0→w1→w2的总得分。最后的总得分就是我们想要的总得分。
很明显,我们每一次计算都需要利用到上一步计算得到的结果,因此,接下来,你将看到两个变量:
- 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 w0→w1:
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 label1→label1,label1→label2,label2→label1,label2→label2)的总得分,其实你主要按照以下计算方式即可;
T o t a l S c o r e ( w 0 → w 1 ) TotalScore(w_0 → w_1) TotalScore(w0→w1)
= 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 previous,obs和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(w0→w1→w2)
= 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://blog.csdn.net/zhang2010hao/article/details/85317411 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!