笔记:Extracting Relational Facts by an End-to-End Neural Model with Copy Mechanism


Extracting Relational Facts by an End-to-End Neural Model with Copy Mechanism

作者:Xiangrong Zeng et al.,ACL 2018.

目录

  • 简介
  • 模型
  • 实验
  • 总结

1 简介

发现问题:近期之前的联合抽取,如(zheng et al., 2017)的工作是假设每个实体只对应一种关系,但在实际生活中每个实体可能参与到多个关系中即关系重叠问题。
本文主要贡献:

  • 基于sequence to sequence学习模型,结合copy机制提出了一种端到端的模型来联合抽取句子中的实体和关系。
  • 此模型可以考虑到三元组关系重叠问题。
  • sota在NYT10。

2 模型

大致步骤就是encoder将变长sentence编码为定长向量表示,之后decoder解码结合copy机制获取三元组。同时解码器作者设计了两种--OneDecoder、MultiDecoder。

2.1 OneDecoder Model

2.1.1 Encoder

先简要说明以下编码器,便于后续的说明。

就是普通的BLSTM,将sequence进行embedding后作为lstm的输入,得到输出,如下Eq (1),\(\mathbf{E}\)表示Encoder。

其中,\(o_t^E,h_t^E\)为时间步为t时的输出和hidden state,\(x_t\)为t时刻的输入--句子\(\mathbf{X}=\{x_1,...,x_n\}\)。
最后,我们用\(\mathbf{O^E}=[o_1^E,...,o_n^E]\)表示最后的输出,其中\(o_t^E=[\overrightarrow{o_t^E};\overleftarrow{o^E_{n-t+1}}]\)表示第t个词,同时使用最后的hidden state表示sentence即\(\mathbf{s=[\overrightarrow{h_n^E};\overleftarrow{h_n^E}]}\)。

2.1.2 OneDecoder

如下图Figure 2所示为OneDecoder整体结构。

单编码模型整个结构的大致流程为:使用编码器的输出\(o_i^E\)作为解码器的输入,利用解码器的输出\(o_t^D\),根据时间步t(t%3 = 1 为预测关系,t%3=2为copy第一个实体,t%3=0为copy第二个实体)来分别copy实体或预测关系,最后预测如图Figure 2的两个暗红色框。

同时实体的copy是根据计算句子中每个词的概率后取最大概率的词作为预测值,因此实体是可以复用的,那么也就是说一个实体是可能参与多个关系的,即一定程度上解决了关系重叠的问题。下面具体展开解码的每一个步骤,下图Figure 3 (a)为单解码的过程。

循环解码

便于后续说明,上标\(E,D\)分别代表编码器和解码器。

解码是按照时间步t每三步一循环,即每三个时间步一个元组,直到decoder生成NA三元组代表此句子所有有效的三元组均已生成完毕,这样在T时间内就会生成多组三元组。如下图为时间步为t解码器的输出。

其中,\(o_t^D,h_t^D\)分别为解码器的输出和hidden state,\(g(\cdot)\)为解码器函数(本文实验中用的都是lstm cell作为model的cell),\(h_{t-1}^D\)为上一次的hidden state,对于\(h_0^D\)我们使用Encoder中提到的句子的表示\(\mathbf{s=[\overrightarrow{h_n^E};\overleftarrow{h_n^E}]}\)来初始化,\(u_t\)为解码器输入。

对于t时刻的输入\(u_t\)是由两个向量的拼接而成,如下Eq (3)。这里\(v_t\)没写错就是\(v_t\)而不是\(v_{t-1}\),文中描述的是上一步t-1的预测作为这一步t的输入\(v_t\)。

其中,\(c_t\)为attention 向量,它的计算则是由如下Eq (4) (5) (6)计算得来的。

其中,\(\mathbf{w}^c\)为权重矩阵,说白了就是为了把维度变成计算时我们需要的维度乘了个矩阵而已。
我们要明白这三个公式是如何对应到Figure 2中的,对于decoder每一步的输入\(u_t\)的获取需要\(c_t\),\(c_t\)又取决于\(o_i^E\)(i,也是时间步为了与t区分罢了)和\(h_{t-1}^D\),\(o_i^E\)是不变的,那么每一步的c的获取就是让每个词对应的输出\(o_i^E\)分别与\(h_{t-1}^D\)拼接乘w维度变换得到一个标量,最后就会得到一个向量\(\pmb{\beta}=\{\beta_1,...,\beta_n\}\), n为句子长度,之后做softmax后得到\(\pmb{\alpha}\),再去对\(O^E\)attention求和得到向量\(\mathbf{c_t}\),每个时间步都不断重复此过程。

对于,\(v_t\)为预测的关系或实体,取决于t。

预测关系

假设我们有m个有效的关系,那么我们使用一个全连接层来计算这个confidence vector(不知道怎么翻译好反正就是包含所有有效关系的向量,其中每个维度的值都可以看作是一个关系的得分)\(\mathbf{q^r}=[q_1^r,...,q_m^r]\), 如下Eq (7)。

其中,\(o_t^D\)为t时刻解码器的输出,\(W^r,b^r\)就是权重矩阵用于维度变换和偏置向量。同时,我们还有个NA三元组如下Eq (8)。

最后拼接两个向量后做softmax得到分布式概率,\(p^r=[p_1^r,...,p_{m+1}^r]\),如下Eq (9)。

最后,我们使用概率最大的关系作为预测关系,正如Figure 2中的Prediction Relation。同时我们使用这个预测关系的embedding向量作为下一个时间步的输入\(\mathbf{v_{t+1}}\)。这个关系的embedding哪来的没搞懂?

预测第一个实体

t时刻,我们使用\(o_t\)和每个\(o_i^E\)拼接后做线性变换调整维度,后做非线性变换得到,\(q_i^e\),最后得到实体的confidence vector \(\mathbf{q}^e=[q_1^e,...,q_n^e]\)。上标\(e\)代表entity,\(r\)代表relation。

同样类似关系预测,也要拼接NA三元组里的NA实体后softmax得到关于整个句子每个词的概率分布,取概率最大的作为预测实体(这里有一点不明白,实体可能包含多个词,虽然后面实验说明了copy实体时只copy最后一个词,但怎么保证概率最大的就是最后一个词呢?),之后用这个词的embedding向量作为下一次的输入\(\mathbf{v_{t+1}}\)。

预测第二个实体

第二个实体的预测和预测第一个实体基本一致,但有一点,由于三元组中两个实体不能相同,所以这里加了个mask向量做掩码,来计算如下公式。

其中,\(\bigotimes\)为矩阵element-wise相乘。

小结

有了以上概念,基于上面的公式重新对Figure 2说明一下。

句子经过lstm编码后得到每个词的输出交给解码器作为输入,解码器结合\(h_{t-1}^D\)、\(O^E=\{o_i^E\},i=1,...,n\)得到\(c_t\)之后拼接通过\(o_{t-1}^D\)得到的\(v_t\)得到最终的输入\(u_t\)。根据时间步t%3=1,2,0,三步一循环分别预测关系和实体得到一个三元组,循环往复。其中对于每个时间步t的实体的copy,当前时间步t下,将\(o_t^D\)依次与每个\(o_i^E\)拼接计算得到copy的实体,如Figure 2中Entity Copy蓝绿箭头表结合拼接计算。对于每个时间步t的关系的预测仅使用\(o_t\)做变换得到维度为m的向量,依次对应一种关系如Figure 2中的\(r_1,r_2,r_3,r_4\)...蓝色箭头表关系对应。最后将暗红色框中的预测值的embedding向量作为下一个时间步的输入\(v_{t+1}\)。

同时有几个问题,(1) decoder为什么要用\(\{v_{t};c_t\}\)拼接计算输入;(2) 为什么要用\(\{h_{t-1}^D;o_i^E\}\)的拼接计算\(c_t\);(3) 为什么用decoder的输出\(o_t^D\)就可以预测关系;(4) 为什么用\(\{o_t^D;o_i^E\}\)的拼接预测要copy的实体;(3)(4)即为什么\(v_t\)这么算?

个人感觉可能有误,对于(1)由于我们要预测下一个时间步的关系或实体就肯定需要context信息,同时实验中model cell用的都是lstm,那么把上一步的预测值与c(为整个句子信息的attention集成)结合使用作为输入也合理;对于(2)由于每一时间步都需要进行依次预测一般也不同包括对实体关系的预测,那么对于输入或者说句子信息集成的侧重点应该也不同即每个词的attention 权重每个时间步的侧重不同,那么如何知道该侧重哪部分词,就需要之前的信息,所以结合上一个时间步的hidden state也合理;对于(3) t%3=1时是预测关系,\(o_t\)已经吸收了那么多的输入信息,直接用它预测可能就足够了也算合理?像实体copy一样再拼接一下之前的信息会更好么?不太懂;对于(4) 不同于关系预测,实体预测需要copy原句中的实体,所以,也确实应该再加上原来实体的编码信息,所以可能只用\(o_t\)或许信息不足?

2.1.3 MutilDecoder

如图Figure 2 (b),与单解码基本一致,唯一不同就在于,单解码器一直使用同一个解码器三步一小循环不断生成三元组,而多解码器则是依据时间步t的不同,不同时刻使用不同的解码器,但这多个解码器结构都一样,怎么就不是一个解码器呢,区分在于几个解码器输入不同,如下公式。

其中,上标\(D_i\)代表第i个解码器。

2.1.4 Training

输入一个batch的数据,大小为B,根据已知的每个输入句子的目标结果即预测输出(也就是每个句子包含的实体及关系),计算损失,网络目标最小化损失进行训练。

其中,T代表时间步,实验中取T=15,也就是说最多能预测三个三元组(一个时间步根据输出预测一个关系或实体嘛)。

但没看懂这个损失函数。这句话也没看懂,根据实验中描述用了NYT10数据集,但NYT10没有这种形式的训练数据标签啊,它是以(e1, e2, relation, sentence)类似这种形式的数据一行代表一条数据,这个损失到底啥意思??不像是那种多分类的损失的计算,用标签和预测标签之间差值差异之类的???没看懂。

3 实验结果

设置 T=15,即最多预测五个三元组。

  1. 比不考虑复用的模型总体好,在复用问题上更是大幅领先
  2. 在 Normal 问题上,不如不考虑复用的模型,这说明我们模型判断三元组对数的能力还有待提升(要能判断出只有一对,那就不会落后了)
  3. 一句话的复用越多,效果越差
  4. 多解码器模型好于单解码器模型。这个结论作者是通过文本生成的任务判断的,我没看懂。\(^{[2]}\)

4 总结

真的强!

可以看看参考!理解的确实更深感觉,也很强,值得学习!

参考

【1】Xiangrong Zeng, Daojian Zeng, Shizhu He1, Kang Liu, Jun Zhao.Extracting Relational Facts by an End-to-End Neural Model with Copy Mechanism.ACL 2018.

【2】论文笔记 – Extracting Relational Facts by an End-to-End Neural Model with Copy Mechanism.https://ivenwang.com/2020/08/10/copymec/.