笔记:Two are Better than One: Joint Entity and Relation Extraction with Table-Sequence Encoders


Two are Better than One: Joint Entity and Relation Extraction with Table-Sequence Encoders

作者:Wang et al., EMNLP 2020.

目录

  • 简介
  • 方法
  • 实验
  • 参考

1 简介

这篇paper使用填充表格的方式做实体关系的联合抽取,主要改进点在于,不同于以往的table filling方法用一个encoder编码,本文分别使用两个encoder对两个子任务分别编码但一起训练,同时使两者交互,最终得到实体关系的类型。另外一点是加入预训练语言模型的attention权重矩阵到模型中,更好利用context信息。

接下来简单介绍模型,在此之前先简要介绍下table filling方法,如图1,就是将NER和RE看作使一个表格填充的问题,那么我们的任务就是设计一个模型,通过这个模型拿到这\(N \times N\)个向量即表格的填充即可。其中主对角线填的是实体类型,其余填实体之间的关系,含方向即\( and \)。

2 方法

此模型主要由两个不同类型的可以进行交互的encoder构成,分别为Table Encoder、Sequence Encoder,如图2及其中一层的详细步骤图3.

2.1 Text Embedder

输入语句序列embedding化,使用Glove词embedding以及字符级embedding和BERT预训练的词embedding拼接后过linear得到最初的句子表示\(S_0=\mathbf{Linear([x^c;x^w;x^l])},dim=\mathbb{R}^{N \times H}\),其中H为每个词向量维度。

2.2 Table Encoder

如图3左侧部分,我们的目的就是希望通过此结构能够学到一个table即\(N \times N\)个向量,\(N\)为序列长度,先暂时不考虑虚线部分的输入,那么我们先通过对\(S_0\)中每个token向量两两拼接以及线性维度变换,得到一个non-contextualized的table即图中的concat和Linear部分。那么,对于第L层的non-contextualized table则为\(\mathbf{X}_l \in \mathbb{R}^{N \times N \times H}\), 其中,\(S_{l-1,i}\)表示\(l-1\)层的sequence的第\(i\)个token,\(X_{l,i,j}\)表示第\(l\)层的sequence的第\(i,j\)个词对应于表格中的第\(i行,j列\)的填充向量,“这个向量不包含和邻居、和上一层的交互,所以只是一个中间结果,下面要说的 T 才是每一层表格表示的最终结果。\(^{[2]}\)”

之后通过GRU即图中MD-RNN去contextualize中间结果\(\mathbf{X}_l\)。

其中,\(X_{l,i,j}\)为\(l\)层位置(i,j)的填充向量,\(T_{l-1,i,j}\)为上一层同位置的填充向量,\(T_{l,i-1,j},T_{l,i,j-1}\)分别为位置(i,j)上和左侧位置的填充向量,这样就结合了上一层同一位置以及左侧和上侧的结构化上下文信息,如图4(a)。

那么,可以看出在同层的上下左右相邻向量有多种不同上下文组合,如图4(b)(c)(d),但通过作者实验,发现只是用(a)(c)两种结合和使用所有的方向(a)(b)(c)(d)效果差不多,所以最终只考虑(a)(c)组合这种情况,那么我们知道序列标注想要获取上下文信息可以使用Bi-RNN,这里是2D的table而不是1D的sequence,那么有一种模型即MD-RNN获取(a)(c)四个方向结构化的信息。最终表示即为:

2.3 Sequence Encoder

如图3右部分,类似Transformer的encoder部分,唯一不同点就是原来Transformer中encoder的由多个dot-product attention构成的muti-head attention,换成了多个Table-Guided attention构成的多头attention。如图5为普通的点积attention。

\(\mathbf{Q,K}\)计算权重矩阵:

其中,\(U\)为训练中自动学习的参数向量,\(g\)为一个函数将每个query-key对,即\(Q_i,K_j\)(为\(\mathbf{Q,K}\)矩阵中的第\(i,j\)行或列)映射为一个向量(就是相似度矩阵的一行/列吧),就是transformer self-attention中\(\mathbf{Q,K}\)矩阵计算得到相似度矩阵的过程,详细transformer可以看看参考[3]。

自监督注意力机制,Q、K、V都相同,这里使用句子表示\(S_{l-1}\)一个矩阵嘛\(N \times H\)(i.e., \(\mathbf{Q = K = V = S}_{l?1}\)),权重矩阵就是由\(\mathbf{Q,K}\)构成的嘛,而又section 2.1可知\(T_{i,j}\)本质上就是由\(\mathbf{S}_{l-1}\)构成的即\(T_{l,i,j} = g(S_{l?1,i}, S_{l?1,j}) = g(Q_i,K_j)\)。因此我们可以把\(\mathbf{T}_l\)看作是\(\mathbf{Q,K}\)的一个函数,公式7就变成了公式8,最后利用\(\mathbf{T}_l\)得到权重矩阵。

至此完成了table-guided attention,这样做有几点好处:

  • 减少计算,因为已经在table encoder得到\(\mathbf{T}_l\)。
  • \(\mathbf{T}_l\)结合了行、列和层间\(T_{l-1}\)的上下文信息,正好也对应queries、keys、\(g(queries,keys)\)。
  • 交互,使得table encoder参与到sequence encoder,而table encoder的输入之一就是sequence encoder的输出,实现了双向交互。

之后流程和transformer大抵一致,不细说了,如公式9,10以及图3右侧。

那么,最后就只剩下图2图3中虚线部分的输入没说了。

作者认为之前的方法没有很好的利用预训练语言模型如BERT,只是用BERT做编码对输入sequence做个预处理,但作者认为BERT中的attention权重矩阵很重要,含有丰富的词与词之间的语义联系上下文信息。加入attention矩阵后公式2变为:

权重矩阵为\(T^{\ell} \in \mathbb{R}^{N \times N \times(L^{\ell}\times A^{\ell})}\),其中,\(L^{\ell},A^{\ell}\)分别为Transformer的层数以及每层的head数即把Transformer的所有层的所有head堆叠到一起。

2.4 Training and Evaluation

就直接利用两个encoder的输出--\(\mathbf{S}_L,\mathbf{T}_L\)使用softmax分类器预测标签。

两个任务的损失:

最终,训练目标即为最小化\(\mathcal{L}^{NER}+\mathcal{L}_{RE}\),就是尽可能使每个实体或关系标注都正确。

3 实验

  • 模型层数L=3效果最好,即便再加层数效果也几乎没怎么提升,反倒计算量增加了所以选L=3
  • 对比试验,w/o 预训练语言模型attention权重矩阵,表明加入attention 权重矩阵很有用
  • 消融实验做了很多,其中,Loss联合训练还是要比单独训练要好一些,说明学到一个好的表示不仅对本子任务有帮助对另一个子任务也是由帮助的。
  • 去掉两encoder之间的交互详见原文,这里直接说结论效果大幅下降,两者之间的交互还是很重要的。

想法&疑问

  • 看到一篇博客\(^{[2]}\)中,对于“就使得计算的时候可以按照西北 – 东南的顺序,这样同一条(东北-西南)直线上的点就可以并行计算了”这段没理解
  • 以后感觉可以多关注关注这类方法的

参考

[1] Jue Wang1 and Wei Lu2.Two are Better than One:Joint Entity and Relation Extraction with Table-Sequence Encoders.EMNLP 2020.

[2] 论文笔记 – Two are Better than One: Joint Entity and Relation Extraction with Table-Sequence Encoders.https://ivenwang.com/2020/12/12/2better1_table_jere/.

[3] 一步步解析Attention is All You Need.https://www.jianshu.com/p/b1030350aadb.