论文地址:https://aclanthology.org/2020.coling-main.341/
代码地址:
数据集:TACRED,SemEval
本文提出了一种新的体系结构,称为动态剪枝图卷积网络(DP-GCN),该网络以端到端的方式学习通过重新思考来剪枝依赖树。在DP-GCN的每一层中,我们使用一个选择模块,集中于用一组二进制门表示目标关系的节点,然后用一个剪枝语义图扩充剪枝树,以确保连通性。之后,我们引入了一种反思机制,通过反复反馈高级学习特征来指导和细化修剪操作。
依赖树:
“Eugene”和“New Fabris”之间的关系。请注意,即使是最宽松的修剪规则LCA子树(以粗体突出显示)仍然排除关系标记“Founded”,从而导致关键信息的丢失。
动态剪枝图卷积网络(Dynamically Pruned Graph Convolutional Network,DP-GCN)将完整的依赖树作为输入,并以端到端的训练方式通过重新思考学习修剪树。DP-GCN的核心是一个选择模块,该模块动态识别依赖树中的关键节点子集,这些节点提供足够的信息来提取两个实体之间的关系。该模块考虑每个节点和目标实体的语义,并生成一组与输入相关的二进制门,以确定是否应保留每个节点。动态剪枝的一个问题是,直接从依赖树中选择子结构可能会导致拓扑断开,因为依赖树是稀疏的,这会阻碍节点之间的消息传播。为了解决这个问题,我们通过自我注意机制生成的修剪语义图来增强修剪树。然后,在生成的图的顶部,利用GCN模块(Kipf and Welling,2016)更新实体特定的上下文表示,这样的删减-然后更新过程可以叠加在L层上。此外,我们引入了反馈连接,并通过将高级特征转移到每一层的选择模块中,赋予网络“重新思考”修剪操作的能力,而不是基于通过网络传递的数据来修剪树。得益于重新思考机制,该模型能够在考虑之前修剪信息的情况下重新选择节点,并在高层语义的指导下提取更具区分性的目标特定特征。
3个贡献:
1)我们提出了一种新的用于关系提取的动态剪枝图卷积网络,该网络能够在不依赖预定义规则的情况下剪枝目标实体的依赖树。
2)我们引入了一种反思机制,通过利用高级反馈语义来指导和细化剪枝操作,从而增强剪枝能力。
3)SOTA
模型图:
x1和x4分别表示主体实体和客体实体。该模型首先对上下文信息进行编码,然后部署DP-GCN的L层。在每一层中,选择模块将节点表示和反馈的高级实体特定特征作为输入,以选择相关节点并修剪依赖关系图(为了简化,省略了自循环)。为了保证图的连通性,还引入了一个由自我注意生成的剪枝语义图。然后,生成的图形被传递到GCN模块以传播消息。最后,利用池模块聚合信息。将得到的关系特征反馈给各层的选择模块,以调整剪枝操作。
该架构可分为三个部分:
1)左面板是一个BiLSTM编码器,它将输入单词转换为上下文表示。
2)中间部分是整个模型的核心,包含L层DP-GCN,将实体信息纳入图形建模过程,过滤给定实体的无用信息。
3)右面板是一个池模块,用于聚合由前DP-GCN层导出的节点表示。接下来,我们从左到右依次详细介绍所有组件。
Contextual Encoder
原文\(X=\left[x_{1}, \ldots, x_{n}\right]\)由BiLSTM编码为\(\mathbf{H}=\left[\mathbf{h}_{1}, \mathbf{h}_{2}, \cdots, \mathbf{h}_{n}\right]\)
\(\mathbf{h}_{i}=\left[\overrightarrow{\operatorname{LSTM}}\left(\mathbf{x}_{i}\right) ; \overleftarrow{\operatorname{LSTM}}\left(\mathbf{x}_{i}\right)\right], i \in[1, n]\)
Dynamically Pruned GCN
GCN有自循环,图卷积运算:
\(\mathbf{h}_{i}^{l}=g\left(\sum_{j=1}^{n} \mathbf{A}_{i j} \mathbf{W}^{l} \mathbf{h}_{j}^{l-1}+\mathbf{b}^{l}\right)\)
A作为邻接矩阵,一般是非1即0的。直接使用A作为关系提取的输入不是最优的,因为它包含许多与目标实体对无关的节点。因此,在每个\(l\)层,我们设计了一个选择模块来理解特定于实体的上下文,并从图中动态地选择关键的目标相关节点。这是通过引入一组二进制门\(\left\{z_{1}^{l}, \cdots, z_{n}^{l}\right\}, z_{i}^{l} \in\{0,1\}\)来实现与每个节点关联。当\(z_{i}^{l}=1\)时,第\(l\)层的第\(i\)栅极打开,当\(z_{i}^{l}=0\)时,第\(i\)栅极关闭。它控制是否应在图中传播和聚合来自当前节点的信息。根据这一定义,我们将A修改如下:
\(\hat{\mathbf{A}}_{i j}^{l}=\frac{z_{j}^{l} \cdot \mathbf{A}_{i j}}{\epsilon+\sum_{m=1}^{n} z_{m}^{l} \cdot \mathbf{A}_{i m}}\)
\(\hat{\mathbf{A}}^{l}\)表示第\(l\)层的修剪依赖矩阵,\epsilon添加到分母中以避免数值不稳定性。对于具有闭合门(\(z_{j}^{l}=0\))的每个节点,我们有\(\hat{\mathbf{A}}_{* j}^{l}=0\)和相应的隐藏状态\(h_j^{l-1}\)不包括在第\(l\)层的聚合中。 只有具有打开门(\(z_{j}^{l}=1\))的选定节点才能传递消息,以更新其他节点及其自身的表示。
不幸的是,\(\hat{\mathbf{A}}^{l}\)很难保证ˆAl可以表示为一个图,因为删除稀疏依赖图上的边可能会将原始图分割成几个不相连的图,这对GCN的消息传递过程极为不利。
为了增强连通性,受(Guo et al., 2019)的启发,我们用一个由自我注意机制构建的图来扩充\(\hat{\mathbf{A}}^{l}\)。公式可以写成:
\(\mathbf{E}^{l}=\frac{\left(\mathbf{K}^{l} \mathbf{W}_{k}^{l}\right)\left(\mathbf{Q}^{l} \mathbf{W}_{q}^{l}\right)^{\top}}{\sqrt{d}}\)
\(\tilde{\mathbf{A}}_{i j}^{l}=\frac{z_{j}^{l} \cdot \exp \left(\mathbf{E}_{i j}^{l}\right)}{\sum_{m=1}^{n} z_{m}^{l} \cdot \exp \left(\mathbf{E}_{i m}^{l}\right)}\)
\(\overline{\mathbf{A}}_{i j}^{l}=\frac{\hat{\mathbf{A}}_{i j}^{l}+\tilde{\mathbf{A}}_{i j}^{l}}{2}\)
\(\mathbf{E}_{i j}^{l}\)是从节点\(j\)到节点\(i\)的边的注意权重\(\mathbf{K}^{l}\)与\(\mathbf{Q}^{l}\)为上一层的集体表示\(\mathbf{H}^{l-1}\),两个\(W\)矩阵为可训练的参数矩阵。这些注意力权重与选择结果进行归一化,以表示相对重要性。所获得的注意得分矩阵\(\tilde{\mathbf{A}}^{l}\)可被视为修剪语义图的邻接矩阵。
请注意,除非所有节点都被移除,否则\(\tilde{\mathbf{A}}^{l}\)始终是连接的,因为\(\mathbf{E}^{l}\)是完全连接的,所以增广augmented修剪依赖关系图\(\overline{\mathbf{A}}^{l}\)可以满足连接要求。然后我们在\(\overline{\mathbf{A}}^{l}\)上应用GCN模块来传播消息。此外,我们还利用剩余连接来允许高级网络将低级网络的隐藏状态作为额外输入。也就是说,第l层的节点i的输出状态是\(g\left(\sum_{j=1}^{n} \overline{\mathbf{A}}_{i j}^{l} \mathbf{W}^{l} \mathbf{h}_{j}^{l-1}+\mathbf{b}^{l}\right)+\mathbf{h}_{i}^{l-1}\)。这些连接可以作为捷径,创建更紧密耦合、更高效的模型。
为了生成二进制门,我们构建了一个语义决策方案,该方案评估每个节点的贡献,用一组概率\(\left\{p_{1}^{l}, \cdots, p_{n}^{l}\right\}\)表示目标实体对之间的关系。具体公式如下:
\(p_{i}^{l}=\sigma\left(\mathbf{v}_{l}^{\top} \tanh \left(\mathbf{W}_{h}^{l} \mathbf{h}_{i}^{l-1}+\mathbf{W}_{p}^{l}\left[\mathbf{m}^{l} ; \mathbf{s}^{l} ; \mathbf{o}^{l}\right]\right)\right)\) (7)
\(p_{i, 0}^{l}=1-p_{i}^{l}, \quad p_{i, 1}^{l}=p_{i}^{l}\)
\(z_{i}^{l}=f_{\text {binarize }}\left(p_{i}^{l}\right)=\underset{t}{\arg \max } p_{i, t}^{l}, t=0,1\) (9)
\(p_{i}^{l}\)为在第\(l\)层(\(z_{i}^{l}=1\))选择第\(i\)个节点的概率,\(f_{\text {binarize }}:[0,1] \rightarrow\{0,1\}\)对输入值进行二值化,\(\mathbf{m}^{l}\)是关于整个图形的摘要向量编码信息summary vector encoding information,\(\mathbf{s}^{l}\),\(\mathbf{o}^{l}\)分别表示主语实体,宾语实体。\([\cdot ; \cdot]\)是连接运算符。\(W\)是参数矩阵。\(\mathbf{v}_{l} \in \mathbb{R}^{d}\)是在训练期间学习的上下文向量。我们将\(f_{\text {binarize }}\)实现为确定性阶跃函数\(z_{i}^{l}=\operatorname{round}\left(p_{i}^{l}\right)\),同时也可以从伯努利分布进行随机抽样。
请注意,除了\(f_{\text {binarize }}\)之外,整个模型是可微的,因为argmax操作是一个艰难的决策过程,并且门具有0和1的离散值。因此,误差不能通过梯度下降反向传播。优化涉及离散变量的模型的常用方法是Enhanced(Williams,1992)。然而,强化算法存在模型不稳定和训练困难的问题(Maddison等人,2016年)。相反,我们使用Gumbel Softmax分布(Gumbel,1948;Jang等人,2016)来近似方程式9(\(z_{i}^{l}\)),如下所示:
\(z_{i}^{l}=\frac{\exp \left(\left(\log \left(p_{i, 1}^{l}\right)+\epsilon_{1}\right) / \tau\right)}{\left.\sum_{t=0}^{1} \exp \left(\left(\log \left(p_{i, t}^{l}\right)+\epsilon_{t}\right) / \tau\right)\right)}\) (10)
其中\(\epsilon_{t}\)是来自Gumbel(0,1)[Gumbel \((0,1)=-\log (-\log (\) Uniform \((0,1)))\)]的随机样本,\(\tau\)是一个temperature系数
当\(\tau \rightarrow 0\)等式10接近argmax运算。在训练期间,我们使用Gumbel-Softmax的梯度作为误差反向传播的替代梯度。在测试时,不需要替代项,生成的门是二进制的,如等式9所示。
Pooling
池模块的作用是聚合这些向量,以生成信息量最大的特征,如关系表示。具体而言,采用线性组合来集成不同层的表示,从而捕获丰富的局部和非局部信息:
\(\mathbf{h}_{i}^{c o m b}=\mathbf{W}_{c o m b}\left[\mathbf{h}_{i}^{1} ; \cdots ; \mathbf{h}_{i}^{L}\right]+\mathbf{b}_{c o m b}\)
\(\mathbf{h}_{i}^{c o m b}\)为token \(i\)的组和特征向量,\(W\)为参数矩阵,\(b\)为偏差
max pooling操作(表示为\(\mathcal{F}\))进一步用于捕获整个句子最重要的语义特征:\(\mathbf{h}_{\text {sent }}=\mathcal{F}\left(\mathbf{h}_{1: n}^{\text {comb }}\right)\),同样得到主语与宾语特征:\(\mathbf{h}_{\text {subj }}=\mathcal{F}\left(\mathbf{h}_{s_1: s_2}^{\text {comb }}\right)\),\(\mathbf{h}_{\text {obj }}=\mathcal{F}\left(\mathbf{h}_{o_1: o_2}^{\text {comb }}\right)\)。我们通过连接句子和实体表示来获得用于分类的关系表示:
\(r = [\mathbf{h}_{\text {sent }};\mathbf{h}_{\text {subj }};\mathbf{h}_{\text {obj }}]\)
Rethinking Mechanism 反思机制
在上述框架下,方程7中的\(m\)、\(s\)和\(o\)在动态修剪过程中起着不可或缺的作用。因为这些特征决定了选择模块对目标实体对和整个句子的感知。随着实体和句子理解的进步,选择模块将产生更精确的修剪结果。基于这种直觉,在这项工作中,我们开发了反思机制,在考虑学习信息的情况下密切关注最重要的节点。具体来说,如图2所示,我们将池模块的输出视为高级功能,并使用这些功能通过向每个DP-GCN层引入反馈连接来调整选择模块的门值,这样的重新思考过程可以重复执行。换言之,我们在当前步骤的每一层选择模块中将上一个重新思考步骤的\(\mathbf{h}_{\text {sent }}\)、\(\mathbf{h}_{\text {subj }}\)、\(\mathbf{h}_{\text {obj }}\)重用为\(m^l\)、\(s^l\)、\(o^l\)。通过这种方式,网络能够自适应地优化剪枝操作,以更好地理解特定目标的语义。对于第一步无法提供\(\mathbf{h}_{\text {sent }}\)、\(\mathbf{h}_{\text {subj }}\)、\(\mathbf{h}_{\text {obj }}\)的,我们将所有门设置为打开(\(z=1\)),而不进行节点选择。
模型训练
最后一个反思机制步骤产生的关系表示\(r\)被输入前馈神经网络(FFNN),然后是Softmax归一化层,以在关系决策空间上产生概率分布:
\(p(\hat{y}|r)=Softmax(FFNN(r))\)
式中,\(\hat{y}\)是预测的关系分布。在训练过程中,我们优化了整个网络的参数,以最小化交叉熵损失:
\(J(\theta)=-\frac{1}{N} \sum_{i=1}^{N} \mathbf{y}_{i} \log p\left(\hat{\mathbf{y}}_{i} \mid \mathbf{r}_{i}\right)\)
\(y_i\)表示第\(i\)个实例的one-hot向量,\(N\)表示训练实例的数量
实验
Micro-F1 on TACRED
Optimizer:SGD,
lr:0.7,
weight decay:0.9,
Glove300维词向量,
斯坦福依赖标注工具
Gumbel-Softmax from the set {0.1, 0.3, 0.5, 0.7},
the rethinking times from {1, 2, 3, 4, 5}
drop
3层DP-GCN,为了完全捕获依赖信息,在第一层,我们直接将原始的依赖树提供给GCN模块,而不进行任何修剪。为了避免删除图中的所有节点,我们在训练和测试期间将目标实体节点的门设置为打开。BiLSTM和DP-GCN的隐藏状态大小都设置为300。
消融实验
剪枝分析
为了更好地验证DP-GCN的剪枝能力,我们使用相同的剪枝规则对C-GCN和DP-GCN的输入语句进行预处理,该规则只保留LCA子树中距离SDP达K的标记,并且在使用完整树时也包含结果。K=0对应于将树向下修剪到SDP,K=∞ 保留整个LCA子树。如图3所示,C-GCN在TACRED dev集合上的性能在K=1时达到峰值,优于其基于完整树的对应项。这证实了之前研究(Xu等人,2015a;Zhang等人,2017)中的假设,即并非依赖树中的所有标记都需要表达目标关系,移除与目标无关的标记可以提高性能。然而,对于我们的DP-GCN模型,将修剪过的树作为输入是无效的,更积极的修剪可能会导致更糟糕的结果。这些观察结果表明,我们的模型已经学会了动态修剪目标实体对的依赖树,因此任何预定义的修剪规则都可能会错误地删除有用的信息,并影响DP-GCN的性能。
为了深入了解我们模型的行为,我们进行了一个案例研究,如表4所示。如第一个示例所示,我们的DP-GCN模型成功地识别了与目标相关的线索“销售”,而硬删减策略则关注于一些不重要的代币。因此,C-GCN无法捕获移除的令牌和实体之间的交互,因为这些令牌不在结果结构中。因此,C-GCN错误地将该实例标记为“无关联”并不奇怪。在第二个例子中,C-GCN预测的关系是每:个孩子,而不是每:个配偶。我们假设原因是修剪后的树包含一些噪声目标无关的标记(即“儿子”和“女儿”),这会混淆分类。因此,C-GCN很难区分每名子女和每名配偶之间的关系。多亏了动态选择模块,DP-GCN成功地识别了关键令牌,这些令牌提供了足够的信息来提取两个实体之间的关系。从这些例子中,我们可以观察到,所提出的模型能够学习以特定于实体的方式修剪依赖树以执行关系提取。
反思机制分析
在本小节中,我们将研究我们提出的模型在不同反思时间下的性能。TACRED dev集合的详细结果如图4所示。我们可以发现,随着反思次数从0(w/o)增加到3,F1分数从68.2增加到69.1。这验证了重新思考机制可以通过允许底层接收更丰富的自上而下信息来增强剪枝能力。当反思次数超过3次时,我们观察到绩效反而在一定程度上下降。一个可能的原因是,随着反思次数的增加,模型可能会更加关注目标实体,而忽略其他关键的关系特征。此外,很明显,反复反思不可避免地会增加运行时间(当反思次数从0增加到3时,每个训练批次的时间从0.08s增加到0.17s)。为了权衡时间成本和最终性能,我们选择在实验中重新思考两次。