论文报告
Attention Guided Graph Convolutional Networks for Relation Extraction(ACL19)
Motivation
关系抽取的目的是检测文本中实体之间的关系。他是自然语言处理中较为基础的任务,可以应用在生物医学知识发现、数据库检索等多种领域,同样也是智能问答、自然语言生成、阅读理解等领域的基础。
Related Work
现有的大多关系抽取模型可以分为两类,基于序列的和基于依赖的。基于序列的模型只对单词序列起作用,而基于依赖的模型将依赖树(语法树)合并到模型中。与基于序列的模型只能提取表面形式的局部句法关系相比,基于依赖的模型能够捕获较为深层次的非局部句法关系。
基于依赖的模型,如何构造依赖树(语法树)的结构很大程度上影响了语法树最终的性能。有人提出了基于规则的剪枝的方法去掉一些冗余的信息。然而基于规则的剪枝策略可能会消除整个树中的一些重要信息,理想情况下,模型应该学会如何在全树中包含和排除某些信息之间保持平衡。在该文中,提出了一种基于attention的图卷积网络(AGGCNs),他直接作用于全树。开发了一种软修剪的策略,将原始依赖树转换为全连接的加权图。这些权重可以被视为节点之间的关联强度,可以通过使用self-attention的机制进行端到端的方式学习。
How?
GCN
对于一个n个节点的图,我们用A 来表示它的邻接矩阵,如果节点i和节点j之间有边则A i , j = 1 A_{i,j}=1 A i , j = 1 ,对于无向图A j , i = 1 A_{j,i}=1 A j , i = 1 ,无边则为0。则节点i在第l层的卷积运算h i ( l ) \mathbf{h}_{i}^{(l)} h i ( l ) 定义为:
h i ( l ) = ρ ( ∑ j = 1 n A i j W ( l ) h j ( l − 1 ) + b ( l ) )
\mathbf{h}_{i}^{(l)}=\rho\left(\sum_{j=1}^{n} \mathbf{A}_{i j} \mathbf{W}^{(l)} \mathbf{h}_{j}^{(l-1)}+\mathbf{b}^{(l)}\right)
h i ( l ) = ρ ( j = 1 ∑ n A i j W ( l ) h j ( l − 1 ) + b ( l ) )
其中W ( l ) \mathbf{W}^{(l)} W ( l ) ,b ( l ) \mathbf{b}^{(l)} b ( l ) 是模型中的参数,ρ \rho ρ 是激活函数本文用的(RELU),h i ( 0 ) \mathbf{h}_{i}^{(0)} h i ( 0 ) 是初始的输入x i x_i x i ,其中x i ∈ R d \mathbf{x}_{i} \in \mathbb{R}^{d} x i ∈ R d ,d是输入的特征维度。
图1
如图一所示,AGGCN模型由M个相同的block组成,每个block包含三层,Attention Guided Layer、Densely connected layer、linear combination layer。
Attention Guided Layer
如图一所示,传统的基于规则的剪枝方式边的权重只包含0或1,而AGGCN添加attention之后每个单词之间就有了关系。
A ~ ( t ) = softmax ( Q W i Q × ( K W i K ) T d ) V
\tilde{\mathbf{A}}^{(\mathbf{t})}=\operatorname{softmax}\left(\frac{Q \mathbf{W}_{i}^{Q} \times\left(K \mathbf{W}_{i}^{K}\right)^{T}}{\sqrt{d}}\right) V
A ~ ( t ) = s o f t m a x ( d Q W i Q × ( K W i K ) T ) V
其中Q,K都分别表示模型上一层的输出h ( l − 1 ) h^{(l-1)} h ( l − 1 ) ,W i K \mathbf{W}_{i}^{K} W i K 和W i Q \mathbf{W}_{i}^{Q} W i Q 是模型的参数矩阵,W i Q ∈ R d × d \mathbf{W}_{i}^{Q} \in \mathbb{R}^{d \times d} W i Q ∈ R d × d ,W i K ∈ R d × d \mathbf{W}_{i}^{K} \in \mathbb{R}^{d \times d} W i K ∈ R d × d ,A ~ ( t ) \tilde{\mathbf{A}}^{(\mathbf{t})} A ~ ( t ) 是第t层的attention邻接矩阵。
注:此处有N组不同的参数,N是一个超参数,A ~ ( t ) \tilde{\mathbf{A}}^{(\mathbf{t})} A ~ ( t ) 表示第t个attention矩阵
Densely Connected Layer
因为attention层构造了一个完全图,为了在更大的图上捕获更多的节点信息,使我们能够训练一个更加深入的模型。引入densely connected layer。
如图2所示,
g j ( l ) = [ x j ; h j ( 1 ) ; … ; h j ( l − 1 ) ]
\mathbf{g}_{j}^{(l)}=\left[\mathbf{x}_{j} ; \mathbf{h}_{j}^{(1)} ; \ldots ; \mathbf{h}_{j}^{(l-1)}\right]
g j ( l ) = [ x j ; h j ( 1 ) ; … ; h j ( l − 1 ) ]
在实践中,每个Densely Connected Layer都有L个子层。这些子层的尺寸由L和输入特征尺寸d决定。在AGGCN中,使用d hidden = d / L d_{\text {hidden}}=d / L d hidden = d / L 例如如果Densely Connected Layer有3个子层,输入维度是300,则d hidden = d / L = 300 / 3 = 100 d_{\text {hidden}}=d / L =300/3=100 d hidden = d / L = 3 0 0 / 3 = 1 0 0 。然后我们将每个子层的输出链接起来,形成新的表示。
因为有N组不同的attention矩阵,所以需要N个不同的Densely Connected Layer。所以每层的的计算方式为:
h t i ( l ) = ρ ( ∑ j = 1 n A ~ i j ( t ) W t ( l ) g j ( l ) + b t ( l ) )
\mathbf{h}_{t_{i}}^{(l)}=\rho\left(\sum_{j=1}^{n} \tilde{\mathbf{A}}_{i j}^{(t)} \mathbf{W}_{t}^{(l)} \mathbf{g}_{j}^{(l)}+\mathbf{b}_{t}^{(l)}\right)
h t i ( l ) = ρ ( j = 1 ∑ n A ~ i j ( t ) W t ( l ) g j ( l ) + b t ( l ) )
其中t = 1 , … , N t=1, \ldots, N t = 1 , … , N ,t 选择对应的该组的参数。由于Densely Connected Layer,每层获取到前边层传过来的信息所以每层的W维度也逐层增加。
W t ( l ) ∈ R d h i d d e n × d ( l ) \mathbf{W}_{t}^{(l)} \in \mathbb{R}^{d_{h i d d e n} \times d^{(l)}} W t ( l ) ∈ R d h i d d e n × d ( l ) ,d ( l ) = d + d h i d d e n × ( l − 1 ) d^{(l)}=d+d_{h i d d e n} \times(l-1) d ( l ) = d + d h i d d e n × ( l − 1 )
Linear Combination Layer
最后一层用于集成来自N个不同密度连接层的表示。线性组合层的输出定义为:
h c o m b = W c o m b h o u t + b c o m b
\mathbf{h}_{c o m b}=\mathbf{W}_{c o m b} \mathbf{h}_{o u t}+\mathbf{b}_{c o m b}
h c o m b = W c o m b h o u t + b c o m b
其中h out = [ h ( 1 ) ; … ; h ( N ) ] ∈ R d × N \mathbf{h}_{\text {out}}=\left[\mathbf{h}^{(1)} ; \ldots ; \mathbf{h}^{(N)}\right] \in \mathbb{R}^{d \times N} h out = [ h ( 1 ) ; … ; h ( N ) ] ∈ R d × N ,W c o m b ∈ R ( d × N ) × d \mathbf{W}_{c o m b} \in\mathbb{R}^{(d \times N) \times d} W c o m b ∈ R ( d × N ) × d
AGGCNs for Relation Extraction
首先计算出句子的表示h sent \mathbf{h}_{\text {sent}} h sent
h sent = f ( h mask ) = f ( AGGCN ( x ) )
h_{\text {sent}}=f\left(\mathbf{h}_{\text {mask}}\right)=f(\text { AGGCN }(\mathbf{x}))
h sent = f ( h mask ) = f ( AGGCN ( x ) )
其中mask表示我们把句子中要求的实体mask掉,只选择句子中非实体的单词。f函数是max pooling函数,f : R d × n → R d × 1 f: \mathbb{R}^{d \times n} \rightarrow \mathbb{R}^{d \times 1} f : R d × n → R d × 1
对于第i个实体,他的表示h e i h_{e_i} h e i 可以被计算为
h e i = f ( h e i )
h_{e_{i}}=f\left(\mathbf{h}_{\mathbf{e}_{\mathbf{i}}}\right)
h e i = f ( h e i )
将句子表示和实体表示连接起来形成新的表示,使用前馈神经网络FFNN得到最后的向量:
h final = FFNN ( [ h sent ; h e 1 ; … h e i ] )
h_{\text {final}}=\operatorname{FFNN}\left(\left[h_{\text {sent}} ; h_{e_{1}} ; \ldots h_{e_{i}}\right]\right)
h final = F F N N ( [ h sent ; h e 1 ; … h e i ] )
最后使用逻辑回归对h final h_{\text {final}} h final 进行分类。
Proof
在跨句的n元关系提取和句子级的关系提取上进行了实验。
跨句n元关系提取
对于跨句n元关系提取任务,数据集包含从PubMed中提取的6,987个三元关系实例和6,087个二元关系实例。大多数实例包含多个句子,每个实例都有五个标签,包括“resistance
or nonresponse”、“sensitivity”、“response”、“resistance”和“none”。本文考虑两个具体的评价任务,即:二类n元关系提取和多类n元关系提取。如之前人们做的工作,本文同样对多类标签进行二值化,将前四个关系类分组为“yes”,将“none”分组为“no”。
我们首先关注二元类n元关系的提取任务。对于三元关系提取(表1中的前两列),AGGCN模型分别在单个句子(single)和所有实例(Cross)中的实例上实现了87.1和87.0的准确性,这优于其他所有模型。与GCN模型相比,我们的模型比最优的修剪树模型(K=1)高1.3和1.2个百分点。对于二进制关系提取(表1中的第三和第四列),AGGCN的性能始终优于GS GLSTM和GCN。
句子级的关系抽取
logistic回归分类器(LR)的精度得分最高。本文认为这是由于数据不平衡的问题。这种基于特征的方法倾向于非常频繁预测一个的标签。
消融实验:
不同超参数
不同句子长度的F1score
不同数据集大小比较两个模型
Summary
将attention+GCN应用于关系抽取,学习一种“软修剪”策略,通过权重来学习如何选择和丢弃信息。再结合Densely Connected Layer,提升了关系抽取的性能。
该篇论文做的实验非常全,不仅有三个数据集,而且对各个方面都进行了实验。比如数据集的大小,不同的句子长度,不同超参数,不同的关系抽取任务等方面。