Graph Neural Networks with Generated Parameters for Relation Extraction
—-本文发表于2019年ACL会议。
本文提出了基于生成参数的图神经网络模型(GP-GNNs),利用图神经网络来解决自然语言的关系推理问题。首先利用文本中的实体构建一个全连接的图,然后使用3个模块去处理关系推理:1)一个编码模块用来使边中包含文本信息;2)一种传播模块,它在各个节点之间传播关系信息;3)一个分类模块用来进行预测。
Graph Neural Network with Generated Parameters(GP-GNNs)
GP-GNNs首先构建一个全连接的图G=(V,E),其中V是顶点的集合,对于边(vi,vj)属于E,对应于一个从文本中抽取的序列$s=x_{0}^{i,j},x_{1}^{i,j},…,x_{l-1}^{i,j}$。
整体框架图如下所示:
Encoding Module
编码模块将序列转换为与边对应的转换矩阵,即传播模块的参数。
$A_{i,j}^{(n)}=f(E(x_{0}^{i,j}),E(x_{1}^{i,j}),…,E(x_{l-1}^{i,j});\theta_{e}^{n})$
其中f可以是LSTM等,E(.)表示嵌入函数,$\theta_{e}^{n}$表示第n层编码模块的参数。
PropagationModule
传播模块一层一层地学习节点的表示。节点的初始嵌入,即第0层的表示,是与任务相关的,可以是编码节点特征的嵌入,也可以只是one-hot嵌入。给定层n的表示,通过计算层n+1的表示:
$h_{i}^{n+1}=\sum_{v_j \in N(v_i)}\sigma(A_{i,j}^{(n)}h_{j}^{(n)})$
其中N(vi)是节点vi的邻居节点,$\sigma(.)$是非线性激活函数。
Classification Module
通常,分类模块将节点表示作为输入并输出预测。因此,GP-GNNs的损失可以定义为:
$L=g(h_{0:|V|-1}^{0},h_{0:|V|-1}^{1},…,h_{0:|V|-1}^{K},Y;\theta_c)$
其中$\theta_c$为分类模块的参数,Y是真实标签。GP-GNNs中的参数使用梯度下降训练。
Relation Extraction with GP-GNNs
对于句子s=(x0,x1,…,xl-1),关系集合R和实体集合$V_{s}={v_{1},v_{2},…}$
Encoding Module
为了对实体对(或图中的边)的上下文进行编码,我们首先将position embeddings与word embeddings连接起来:
$E(x_{t}^{i,j})=[x_{t};p_{t}^{i,j}]$
接着,有:
$A_{i,j}^{(n)}=[MLP_{n}(BiLSTM_{n}((E(x_{0}^{i,j}),E(x_{1}^{i,j}),…,E(x_{l-1}^{i,j}))]$
其中[.]表示把向量reshape成矩阵。
Propagation Module
使用$h_{i}^{n+1}=\sum_{v_j \in N(v_i)}\sigma(A_{i,j}^{(n)}h_{j}^{(n)})$去传播信息。
- 节点的初始嵌入:假设我们专注于提取实体vi和实体vj之间的关系,其初始嵌入$h_{v_i}^{(0)}=a_{subject},h_{v_j}^{(0)}=a_{object}$,其他实体初始化为0,我们为head和tail实体的初始嵌入设置了特殊的值,作为一种“标记”消息,我们希望通过传播传递这些消息。注释器asubject和aobject还可以携带关于主题实体和对象实体的先验知识。在实验中,我们推广了门控图神经网络的想法,将asubject设置为[1;0]T,aobject设置为[0;1]T。
- 层数:在我们的上下文中,由于图是紧密连接的,深度被简单地解释为赋予模型更强的表达能力。我们将K作为一个超参数,我们将详细讨论它的有效性。
Classification Module
输出模块将目标实体对(vi,vj)的嵌入作为输入,通过下式计算:
$r_{v_i,v_j}=[[h_{v_i}^{(1)} \circ h_{v_j}^{(1)}]^{T};[h_{v_i}^{(2)} \circ h_{v_j}^{(2)}]^{T};…;[h_{v_i}^{(K)} \circ h_{v_j}^{(K)}]^{T}]$
其中,$\circ$是element-wise乘法。基于此,有:
$P(r_{v_i,v_j}|h,t,s)=softmax(MLP(r_{v_i,v_j}))$
损失函数为交叉熵损失函数。
在实践中,我们将每个目标实体对的嵌入项堆叠在一起,以推断每一对实体之间的潜在关系。我们使用PyTorch来实现我们的模型。