基于深度学习的关系抽取发展历程(2014-2018)

Introduction

信息抽取旨在从大规模非结构化或半结构化的自由文本中抽取结构化信息,关系抽取作为其中的一个重要子任务,其目的是从自由文本中识别实体并抽取实体之间的语义关系。近年来,随着深度学习和知识图谱的不断发展,关系抽取这一古老的课题又焕发出新的活力。本文针对关系抽取任务,从 $2014$ 年到 $2018$ 年的人工智能和自然语言处理的顶级会议中选取了十二篇论文进行简单介绍,希望能够从中发现基于深度学习的关系抽取的发展历程和发展趋势。

Define

关系分类和关系抽取是很容易混淆的两个概念,总的来看,关系分类可以理解为关系抽取的一个子任务:

关系分类 $(Relation\;Classification)$:判断一个句子中的两个实体属于哪种关系,属于一个多分类问题。
关系抽取 $(Relation\;Extraction)$:首先需要判断一个句子中的两个实体是否存在关系,随后将其归约到已知的关系中,是多个二分类任务的集合。从广义的角度来看,关系抽取也包括实体对的抽取。

Distant Supervision

$Distant\;Supervision$(远程监督)主要基于以下假设:如果两个实体在知识库中存在某种关系,那么包含该实体对的非结构化句子均能表示出这种关系。例如,Steve JobsApple 在 $Freebase$ 中存在 founder 的关系,则包含这两个实体的非结构文本 Steve Jobs was the co-founder and CEO of Apple and formerly Pixar. 就可以作为一个训练正例来训练模型。这类数据构造方法的具体实现步骤是:

  1. 从知识库中抽取存在关系的实体对
  2. 从非结构化文本中抽取含有实体对的句子作为训练样例

虽然 $Distant\;Supervision$ 的方法从一定程度上减少了模型对人工标注数据的依赖,但也存在着明显的缺点:假设过于强大,会引入大量的噪声数据。如 Steven Jobs passed away the daybefore Apple unveiled iPhone 4s in late 2011. 中并没有表示出 Steven JobsApple 之间存在 founder 的关系。

针对这个问题,目前主要有四类方法:

  • 在构造数据集过程中引入先验知识作为限制;
  • 利用指称与指称间关系用图模型对数据样例打分,滤除置信度较低的句子;
  • 利用多示例学习方法对测试包打标签;
  • 采用注意力机制对不同置信度的句子赋予不同的权值。

Multi-instance Learning

$Multi-instance\;Learning$(多示例学习)可以被描述为:训练数据集中的最小划分单位是包,每个包都是一个示例的集合,每个包都有一个训练标记,而包中的示例是没有标记的。如果包中至少存在一个正标记的示例,则包被赋予正标记,而对于一个有负标记的包,其中所有的示例均为负标记。

通过定义可以看出,与监督学习相比,多示例学习中的样本示例的标签是未知的,而监督学习的训练样本集中,每个示例都有一个已知的标签;与非监督学习相比,多示例学习中包的标签又是已知的,而非监督学习样本所有的数据均没有标签。所以这是一种介于监督学习和无监督学习之间的方法,此类数据也广泛存在于真实的世界中。

Datasets

目前关系抽取领域有两个最常用的数据集,一个是精标的 $SemEval-2010\;Task8$ 数据集,数据量较小,但质量较高。另一个是使用远程监督的方法结合 $FreeBase$ 从纽约时报中标注得到的 $NYT + FreeBase$ 数据集,数据量较大,但存在一些噪声数据。

  • SemiEval 2010 Task8
    • 19 types
    • train data: 8,000
    • test data: 2,717

数据格式:

1
2
3
The <e1>microphone</e1> converts sound into an electrical <e2>signal</e2>.
Cause-Effect(e1,e2)
Comment:

其中,第一行是带有实体标注的句子,第二行是实体关系,第三行是备注。

  • NYT + FreeBase
    • 53 types
    • train data: 522,611 【注意:其中有近 $80\%$ 的句子标签为$NA$】
    • test data: 172,448

数据格式:

1
m.0ccvx    m.05gf08    queens    belle_harbor    /location/location/contains    .....officials yesterday to reopen their investigation into the fatal crash of a passenger jet in belle_harbor , queens...... ###END###

其中,每条数据都为 $6$ 列,依次为两个实体在 $Freebase$ 中的 $mid$、两个实体的实体名、两个实体的关系、有省略的句子。其中,句子都以 ###END### 结尾。

Papers

[COLING 2014] CNN + Position Embedding

Relation Classification via Convolutional Deep Neural Network

这是自动化所刘康老师组的工作,也是近年来最经典的使用卷积神经网络来做关系抽取的文章,模型使用了经典的带有 $max-pooling$ 的 $CNN$ 结构,其中最突出的贡献是设计了 $position\;embedding$。

Methodology

模型的输入是带有实体标记的句子,首先把单词转化为对应的词向量,随后经过两个并列的特征提取模块,得到句子的向量表示,最后使用全连接网络进行关系分类。

在特征提取阶段,模型提取了词汇级别的特征和句子级别的特征。词汇级别的特征包括五个部分:两个实体,实体左右窗口内的词汇,实体在 $WordNet$ 中的上位词。这五部分与词向量首尾相连,就形成了最后的词汇级特征。句子级别的特征是通过卷积操作来实现的,首先,输入的每个单词都由两个部分组成,第一个部分是单词的词向量,第二个部分是单词的位置向量。随后将其输入到一个卷积层和一个最大池化层中,最后再经过一个全连接层就得到了句子级别的特征。


位置向量根据单词距离实体的相对距离得出,例如,下图中单词 $been$ 到实体 $people$ 的距离为 $2$,到实体 $downtown$ 的距离为 $-4$。

这样一来,每个单词都有了两个位置特征,这两个特征也需要使用额外的 $lookup-table$ 来做向量映射,把实值标量映射成稠密的实值向量。所以,位置向量一般都会随机初始化,并随着网络训练不断更新。


最后,每个单词的特征维度为 $d_w+d_p∗2$,其中 $d_w$ 为词向量的维度,$d_p$ 为位置向量的维度。随后将词汇级别的特征和句子级别的特征串联起来组成最终的句子向量,通过一个全连接网络和 $softmax$ 后就得到了关系类别。

Experiments

实验在精标数据集 $SemEval-2010\;Task8$ 上进行,主要和特征工程的方法作比较。

从上图中的两个表格可以看出,模型没有使用复杂的语义特征就取得了 $state-of-art$ 的效果。并且,位置向量对模型性能的提升有着至关重要的作用。

[NAACL 2015] Multi-scale CNN

Relation Extraction: Perspective from Convolutional Neural Networks

这是 $NYU$ 的一个工作,主要针对 $CNN + Position\;Embedding$ 中尺寸单一的问题,使用多尺寸的卷积核,来提取更多的 $N-Gram$ 特征,同时不再使用词汇级别的特征,完全使用句子级别的特征。

Methodology

从模型结构上来看,相对 $2014$ 年刘康的工作来说,最大的区别在于模型使用了多个不同尺度的卷积核,并且在卷积层之后使用了激活函数。

Experiments

实验分关系抽取和关系分类两个部分进行,关系分类所用数据集为 $SemEval-2010\;Task8$,模型在这个任务上取得了 $state-of-art$ 的效果。关系抽取所用数据集为 $ACE\;2005$,此部分实验重点在于比较多尺寸卷积核和不同的初始词向量对性能的影响。

从实验结果可以看出,多尺寸的卷积核对实验效果确实有很大程度上的提升,并且,词向量采用预训练的方式,同时在网络训练中不断更新可以取得更好的效果。

[EMNLP 2015] PCNN + Multi-instance

Distant Supervision for Relation Extraction via Piecewise Convolutional Neural Networks

这是自动化所刘康老师组的工作,主要针对 $CNN + Position\;Embedding$ 中存在的一些问题进行改进,提出了分段池化的思想。并且首次在关系抽取任务中使用多示例学习的方法,把模型的应用场景从精标数据拓展到远程监督标注的低质量数据上。

Methodology

模型主要解决了两个问题,第一个问题是原始的方法大都是基于词法和句法特征的,这种方法在句子变长时正确率明显下降。针对整个问题,论文提出了分段池化的 $PCNN$ 模型。模型的输入依旧是由词向量和位置向量组成的单词向量矩阵,随后进行卷积操作,之后用两个实体来把原始句子分为了三个部分,分别对这三个部分进行局部的最大池化,这样相比传统的直接进行最大池化的操作就可以更加充分地得到句子的特征信息。假设卷积层一共有 $N$ 个卷积核,那么最终池化后得到的句子向量长度就为 $3N$,使用这个句向量进行 $softmax$ 操作,就得到了最终的输出向量。

模型解决的第二个问题就是远程监督标注数据质量较低的问题。在对训练数据的处理上,首先对句子进行分包,每个包对应着一个固定的实体对和关系。这篇论文中,模型对数据的选择基于 $at\;least\;one$ 假设,即因为多示例学习的正例包中的示例至少含有一个正例,那么我们就可以从包中选择一个看起来最正确的示例作为训练样例,多示例学习的步骤如下:

  • $M={M_1,M_2,…,M_T}$ 表示训练数据中的 $T$ 个包,每个包都有一个确定的关系标签
  • $M_i={m_1^i,m_2^i,…,m^{qi}_i}$ 表示第 $i$ 个包中的 $q_i$ 个示例,一个示例也就是一个句子
  • $o$ 表示给定 $m_i$ 的网络模型的输出,其中 $o_r$ 表示第 $r$ 个关系的未归一化得分,这样经过 $softmax$ 就可以得到每个类别的概率

因为我们的目标是得到每个包的关系标签,并不关注包中每个示例的标签,所以按照 $at\;least\;one$ 假设,每个包中都至少有一个标注正确的句子。论文从每个包中选择一个得分最高的句子来表示整个包,这样就可以定义如下的目标函数:

$$ J(\theta) = \sum_{i=1}^T \log p(y_i|m_i^j; \theta) \\
j^* = \arg \max_j p(y_i|m_i^j; \theta) \quad 1 \le j \le q_i $$

Experiments

实验在 $NYT$ 数据集上进行,过滤掉了样本过少的关系,最后使用了 $26$ 个关系,在数据评价上,不同于之前的使用 $F1$ 值的方法,这里采用的是 $PR$ 曲线和 $P@N$ 的评价方法,这也是在使用多示例学习时最常用的一种评价方法。

在这两种评价方法中,$PR$ 曲线越靠上表明模型的性能越好,未召回的数据指的是两个实体原本存在关系,但是在预测时被预测为了 $NA$ 关系的数据。$P@N$ 评价方法是将所有的预测结果按照概率进行排序,计算预测概率值排在 $Top-K$ 的样例包的正确率,显然,该值越大越好。由以上图表可以看出,论文提出的方法不仅仅提高了召回率,还取得了 $state-of-art$ 的效果。

[ACL 2016] Sentence Level Attention

Neural Relation Extraction with Selective Attention over Instances

这是清华大学刘知远老师组的工作,主要为了解决 $PCNN + Multi-instance$ 中训练数据匮乏的问题,因为原始方法只选择了一个置信度最高的示例,这样就丢失了很多信息。因为每个包中都可能存在很多的正确示例,论文使用注意力机制来增强正确示例的权重,减弱噪声数据的干扰,更充分地利用多示例包中的信息。

Methodology

图 $1$ 中的 $m_1$ 表示某一个包中的一个示例,后面的 $CNN$ 模块如图 $2$ 所示,整体结构和 $CNN/PCNN$ 的经典方法相同,最后就得到了每个句子的向量表示 $r_x$,为了能够充分利用包中的信息,模型通过对句子进行加权操作。得到包的向量表示 $ s = \sum_i \alpha_i x_i $,其中 $\alpha_i$ 表示第 $i$ 个句子的权重,$x_i$ 表示第 $i$ 个句子的向量表示。

在对句子的加权上,论文提出了两种加权方法,一种是最简单的取平均操作,这样依旧等权重地利用了全部训练数据,毫无疑问,这种方法会受到噪声数据的影响,另一种就是使用注意力机制的方法来是增加正确示例的权重,降低错误示例的权重。虽然我们不知道每个示例的标记,但是我们知道每个包的关系标签,所以就可以使用示例的向量表示和关系标签的向量表示之间的相关度来作为注意力机制的权重:

$$ e_i = x_i A r \\
\alpha_i = \frac {\exp(e_i)} {\sum_k \exp(e_k)} $$

其中,$A$ 为注意力的对角权重矩阵,$r$ 表示该数据包对应关系标签的向量表示。

在输出关系时,使用包的向量表示和每个关系的向量表示的相似度来作为关系的得分,比如第 $r$ 个关系的得分为 $o_r = v_r s + b$,对所有关系的相似度得分进行 $softmax$ 归一化后就得到关系概率。

需要注意的是,在测试阶段,由于测试数据没有关系标签,所以无法直接使用关系的向量表示来计算注意力权重,论文中给出的方法是遍历所有关系,分别计算关系对应的权重。显然,这种方法复杂度较高,这也是这种方法的不足之处。

Experiments

本文的实验设计很值得学习,实验在 $NYT$ 数据集上进行,同样采样 $PR$ 曲线和 $P@N$ 相结合的方法来展示模型的性能。

实验分为两个部分,第一个部分通过比较包中数据的不同选择方法,来验证注意力机制的普适有效性。

其中,$+ONE$ 表示选择一个置信度最高的数据,$+AVE$ 表示对所有的句子进行平均加权,$+ATT$ 表示利用注意力机制给句子赋予不同的权重。从图 $3$ 可以看出,$+ATT$ 的方法性能最好,$+AVE$ 的方法由于受到噪声数据的影响,性能上低于 $+ONE$ 的方法,这也是符合直觉的一种结果。在此基础上,论文还比较了 $+ATT$ 的方法与传统特征方法的表现性能。

实验的第二个部分通过选择不同数量的数据,来进一步展示注意力机制的卓越性能。因为在测试数据中,有超过四分之三的包只含有一个句子,为了避免这些非多示例数据的干扰,所以在此部分实验中,只使用含有多个句子的示例包来验证模型效果。

其中:

  • $One$: 表示从包中随机选择一个句子进行预测
  • $Two$: 表示从包中随机选择两个句子进行预测
  • $All$: 表示使用包中所有的句子进行预测

显然,不管使用多少数据,加入注意力机制的方法几乎都能够达到最好的效果。

[ACL 2016] Bi-LSTM Attention

Attention-Based Bidirectional Long Short-Term Memory Networks for Relation Classificatio

这是自动化所郝红卫老师组的工作,论文使用 $Bi-LSTM$ 模型结合词汇级的注意力机制,是比较经典的使用循环神经网络来做关系分类的工作。因为通常情况下,我们不知道对当前关系比较重要的单词会出现在句子的那个位置,所以论文的研究重点也就在于如何使用注意力机制给重要的词赋予比较高的权重。

Methodology

模型底层就是基本的 $Bi-LSTM$ 网络,$Bi-LSTM$ 的每个隐层输出都代表着含有上下文信息的单词编码,接下来的注意力层旨在为 $Bi-LSTM$ 的每个隐层输出赋予不同的权重。假设 $H=[h_1, h_2, …, h_T]$ 为 $Bi-LSTM$ 所有隐层输出拼接组成的向量矩阵,模型使用以下方法来计算注意力权重:

$$ M = \tanh(H) \\
\alpha = softmax(w^TM) \\
r = H \alpha^T $$

这里的 $\alpha$ 就是权重向量,$r$ 是句子的向量表示,得到句子的向量表示后,就可以使用全连接网络和 $softmax$ 来进行关系分类。

Experiments

实验在精标数据集 $SemEval-2010\;Task8$ 上进行,重点在于和使用词法或语法特征的深度神经网络方法进行比较。

实验结果表明,在没有使用词法和语法特征的情况下,模型的 $F1$ 值达到了 $84\%$。这就意味着,使用注意力机制可以有效减弱句子中噪声词的影响,增强关键词的作用,提高模型性能。

[ACL 2016] Multi-level Attention

Relation Classification via Multi-Level Attention CNNs

这是清华大学刘知远老师组的工作,论文运用了两个层次的 $Attention$ 机制,第一层 $Attention$ 应应用在输入层上,来计算各个单词对两个实体的相关性,第二层 $Attention$ 应用在混合层上,来确定哪些卷积特征对当前关系更有用。同时论文使用了新的 $margin-based$ 损失函数,该目标函数被认为在抽取任务上具有更好的效果。

Methodology

对整个网络来说,输入的是映射后的句子,对每个单词来说,首先将其词向量和位置向量拼接起来得到这个单词的初始向量表示 $w_i$。在这之后,模型又设置了一个大小为 $k$ 的滑动窗口,以当前单词为中心,左右 $\frac k 2$ 个单词为上下文,将其拼接起来得到单词的进一步向量表示 $z_i = [(w_{i-(k-1)/2})^T, …, (w_{i+(k-1)/2})^T]$。这样,每个单词都融合了句子中的 $N-Gram$ 信息,向量大小都为 $(d_w+2d_p)k$,。

随后,模型使用了两个层次的 $Attention$ 机制,第一层 $Attention$ 基于对角矩阵,旨在重点关注句子中和目标实体对有关的单词。在引入 $Attention$ 机制之前,首先定义两个对角矩阵 $A_1$、$A_2$ 来对应句子的两个实体,然后使用向量的内积运算来衡量每个单词 $w_i$ 和实体 $e_j$ 的相关性,这样就得到了对角矩阵的元素 $A_{1,i}^j = f(e_j, w_i)$,最后再使用 $softmax$ 进行归一化操作,得到每个单词的 $Attention$ 权重:

$$ \alpha_i^j = \frac {\exp(A_{1,i}^j)} {\sum_{i^,=1}^n \exp(A_{i^,,i^,}^j)}$$

经过这样的计算,每个单词对两个实体都分别产生了一个权重 $\alpha_1$,$\alpha_2$,在融合这两个权重上,论文尝试了三种方法:

  • $Average:r_i = z_i \frac {\alpha_i^1+\alpha_i^2} {2}$
  • $Concat:r_i = [(z_i \alpha_i^1)^T,(z_i \alpha_i^2)^T]^T$
  • $Substract:r_i = z_i \frac {\alpha_i^1-\alpha_i^2} {2}$

这样得到的 $r_i$ 就是单词的最终向量表示,将其串联起来就得到了句子的向量表示 $R=[r_1, r_2, …, r_n]$。

之后的网络卷积层就是常规的卷积操作,第二层 $Attention$ 是使用带有 $Attention$ 的池化层来对最大池化进行改进,以期克服最大池化过于简单的弊端,从而从卷积结果中获取到足够多的信息。首先,定义一个关联矩阵 $G = R^{*T}UW^L$ 来表示卷积后的结果 $R^*$ 中元素与关系标签的相关性。其中,$U$ 是 $Attention$ 的权重矩阵,$W^L$ 是关系标签的向量表示,和位置向量相同,关系的向量表示也需要在网络训练中更新。这样一来,$G$ 中的元素 $G_{i,j}$ 表示的就是 $ R^*$ 中第 $i$ 个元素和第 $j$ 个关系的相关性,对 $G$ 进行归一化操作后就可以进行池化操作:

$$ A_{i,j}^p = \frac {\exp(G_{i, j})} {\sum_{i^,=1}^n \exp(G_{i^,,j})} \\
w_i^o = \max_j (R^* A^p)_{i,j} $$

最后,模型还提出了一种新的基于间隔的损失函数,首先定义得分函数来衡量模型的输出 $w^o$ 与正确的关系向量 $ W_y^L$ 之间的相关度:

$$ \delta_{\theta}(S, y) = \left| \frac {w^o} {|w^o|} - W^L_y \right| $$

基于这个距离得分函数来改写损失函数:

$$ \begin{align}
L &= [\delta_{\theta}(S, y) + (1-\delta_{\theta}(S, y^-))] + \beta|\theta|^2 \nonumber \\ &
= \left[ 1 + \left| \frac {w^o} {|w^o|} - W^L_y \right| - \left| \frac {w^o} {|w^o|} - W^L_{y^-} \right| \right]+ \beta|\theta|^2 \nonumber \end{align} $$

Experiments

实验在精标数据集 $SemEval-2010\;Task8$ 上进行,相对 $baseline$ 方法取得了很大程度的性能提升。

由表 $3$ 的结果可以看出,只使用输入层的 $Attention$ 就可以达到很好的效果,再加上 $Attention$ 池化后效果提升不是很大。由表 $4$ 的上半部分可以发现,输入层 $Attention$ 的三种融合方式的性能相差不大。由表 $4$ 的下半部分可以发现,去掉输入层 $Attention$ 和距离函数对模型的性能影响较大。并且从模型的实现来看,$Attention$ 池化相对较复杂,使得模型收敛相对困难,对性能的提升却相对较少。

[COLING 2016] Multi-label Multi-instance

Relation Extraction with Multi-instance Multi-label Convolutional Neural Networks

这是信工所王泉老师组的工作,论文提出了一种新的用于远程监督关系抽取的网络结构,并且将多示例多标签学习应用到关系抽取中,解决了多示例学习中实体对的多关系问题和关系之间的交叉覆盖问题,同时也解决了 $PCNN + Multi-instance$ 论文中只使用一个示例进行训练的问题。

Methodology

论文放宽了 $at\;least\;one$ 的假设,认为两个实体之间的关系可以从所有包含这两个实体的句子中明确或暗示地表达出来。在流程上,模型首先按照实体对来对齐句子,将同一个实体对的所有句子划分到一个包中,主要包括以下三步:

  • 句子级别特征提取
  • 包内句子最大池化
  • 多标签的关系模型

模型以固定实体对的示例包作为输入,使用经典的 $CNN$ 或 $PCNN$ 的方法来得到句子的向量表示,按照放宽的假设,跳过了句子级别的关系抽取,转而直接对实体对进行预测,也就是对包进行预测。接下来的跨句子的融合方式很简单,直接对句子向量的每一个维度取最大值,就可以得到示例包的向量表示:

$$ g_i = \max(p_i^{(1)}, p_i^{(2)}, …,p_i^{(m)}) $$

其中,$g_i$ 表示示例包向量的第 $i$ 维特征,$p_i^{(j)}$ 表示第 $j$ 个句子的第 $i$ 维特征。跨句子的最大池化把所有句子的向量表示融合到一个实体对级别的向量上,这也就意味着最后的实体对向量融合了所有句子的特征,可以直接使用全连接层得到每一个类别的得分。论文使用多标签学习的方法,不能直接用 $softmax$ 直接进行多分类,需要使用 $sigmoid$ 函数来计算每个关系的概率,当概率超过一定阈值时,我们就认为这个实体对具有这个关系。

整体来看,模型是多个二分类器,所以论文尝试了两种损失函数来作为优化目标:

$$ L_{sigmoid} = -\sum_{i=1}^l y_i \log (p_1) + (1-y_i) \log (1 - p_1) \\
L_{squared} = \sum_{i=1}^l (y_i - p_i)^2$$

上面的损失都是以示例包为单位来计算的,其中,$l$ 表示关系的总数。

Experiments

实验数据使用的是过滤后的 $NYT10$ 数据集,共 $26$ 个关系。数据集中删除了重复句子,删除了超过 $40$ 个 $token$ 的句子,删除了那些包含长实体的句子,所谓长实体指的是实体名的子字符串也是实体的实体。

从 $PR$ 曲线和 $P@N$ 指标都可以看出,模型的方法相对 $PCNN$ 方法都具有很大程度的提升。

图 $5(a)$ 展示的是跨句子池化带来的影响,$Mean$ 方法标注的是一个 $baseline$ 方法,直接对所有句子采用平均池化。图 $5(b)$ 的右边表示在使用多标签学习时,两种损失函数的表现性能不相上下。

[AAAI 2017] APCNN + Entity Description

Distant Supervision for Relation Extraction with Sentence-Level Attention and Entity Descriptions

这是自动化所刘康老师组的工作,文章引入了额外的知识图谱信息(实体描述)。因为对 $NYT$ 数据集标注时,就用到了 $Freebase$ 中的相关实体信息,这些实体在知识图谱中都有一段文字描述,这样的描述信息对学习实体的向量表示也是至关重要的。所以论文在之前 $PCNN$ 模型和句子级 $Attention$ 机制的基础上,加强了对实体向量的学习。

Methodology

在输入模块,句子中的每个词的向量表示都由其词向量和位置向量拼接组成,接着是卷积层和分段池化层,最后得到句子的向量表示,到这里都和 $PCNN$ 模型完全一致。接下来模型使用 $Attention$ 机制来解决多示例学习中的错误标签问题,通过计算包中每个示例与关系向量的相关性来得到句子的权重:

$$\omega_i = W_a^T(\tanh[b_i; v_{relation}]) + b_a \\
\alpha_i = \frac {\exp(\omega_i)} {\sum \exp (\omega_i)} \\
b = \sum \alpha_ib_i $$

其中,$b_i$ 表示 $PCNN$ 得到的句子向量,关系向量的计算借鉴了翻译模型的思想: $v_{relation} = e_1 - e_2$。后面接入一个 $softmax$ 层来做多分类,归一化后就得到了示例包对每个关系的概率。

在此基础上,模型把实体描述信息加入到网络的训练中,首先使用一层普通的卷积操作和最大池化层得到实体描述信息的向量表示。论文提出了一个约束:实体的描述向量应当和实体的词向量尽可能的接近,也就是说,实体表示在词向量的基础上,使用实体描述信息来调整实体的初始向量表示,这样也就相当于把实体的描述信息融入到了模型之中。所以,此部分的损失就可以直接使用实体描述向量和实体词向量之间的 $L_2$ 距离来表示。最终的目标函数,就是最小化两个部分的损失函数的和:

$$ \min L = L_A + \lambda L_e $$

其中,$L_A$ 表示 $APCNN$ 的损失,$L_e$ 表示实体描述模块的损失,$\lambda$ 为调整系数。

Experiments

实验在 $NYT$ 数据集上进行,使用 $FreeBase$ 和远程监督标注数据,实体描述来源于 $FreeBase$ 和 $Wikipedia$,实体链指采用现有的开源工具。

图 $4$ 是保留集的自动评价结果,$APCNNs$ 是本文提出的不包含实体描述的模型,$PCNNs+MIL+D$ 在 $PCNN$ 的模型上加入了实体描述的损失,$APCNNs+D$ 是本文提出的包含实体描述的模型。由此可以发现,加入实体描述可以有效提高模型的性能。

表 $2$ 是人工评价结果,选择那些标签为 $NA$ 但是预测结果为非 $NA$ 的数据,人工判断两个实体是否真正具有预测的关系,评价标准使用 $P@N$ 的方法。

[EMNLP 2017] Residual Learning

Deep Residual Learning for Weakly-Supervised Relation Extraction

这是 $UCSB$ 王威廉老师组的工作,论文首次将深度残差网络应用到关系抽取任务中,在远程监督标注的数据集上,不使用注意力机制和分段池化,使用 $9$ 层的残差网络达到了与 $PCNN+ATT$ 相当的性能,从而证明深度残差网络在关系抽取中的应用是完全可行的。

Methodology

首先,模型的输入也是由词向量和位置向量拼接得到的单词的向量表示,随后通过一层卷积层得到句子的向量表示。接下来就进入到残差卷积模块,每一个残差卷积块都由两个相连的卷积层组成,每个卷积层都使用 $ReLU$ 激活函数。卷积核的尺寸都是一样的,模型通过增加 $padding$ 来保证新旧特征尺寸相同。

残差学习将低层网络和高层网络短接,可以解决深度网络的梯度消失问题。残差网络由残差块组成,残差的层数也就是指的残差块的个数,其中,每个残差块都是两个带有 $ReLU$ 激活函数的卷积层,使用 $shortcut\;connection$:

$$ \tilde{c} = f (w_1·c_{i:i+h-1} + b_1) \quad -the\; first\; layer \\
\acute{c} = f (w_2·\tilde{c}_{i:i+h-1} + b_2) \quad -the\; second\; layer \\
c = c + \acute{c} \quad -shortcut\;connection $$

如此循环短接下去,残差卷积块结束之后的 $c$ 就是最终的向量表示,后面经过最大池化和三个全连接网络就可以得到关系的类别。

Experiments

实验采用 $NYT$ 数据集,主要为了探究残差块和全连接层的数量对模型性能的影响,评价标准依旧采用 $PR$ 曲线和 $P@N$ 准确率。

其中,$CNN-B$ 是一层卷积层和一层全连接层,$CNN$ 是一层卷积层和三层全连接层,$CNN-9$ 是九层卷积层和三层全连接层,$ReCNN-9$ 是九层残差卷积和三层全连接层。

从图 $2$ 可以看出,传统的卷积网络在网络层数增加时性能有明显的下降,而残差网络可以解决这一问题。从图 $3$ 可以看出,模型在 $9$ 层残差块的时候达到最好的效果,随着残差块的持续增加,模型性能反而略有下降。论文中给出的一个直观解释是,低层、中层和高层学习到的分别是词汇级、句子级和语义级的特征,有时候忽略语义级的信息,直接使用词汇级和语义级信息也可以达到一定的模型效果。



从表 $2$ 可以看出,使用简单的残差网络可以基本达到使用 $PCNN+ATT$ 的性能,而残差网络的网络结构相对来说简单了很多,同时,这也证明了残差网络可以有效解决远程监督中噪声数据的问题。

[Neurocomputing 2017] Joint Learning

Joint Entity and Relation Extraction Based on a Hybrid Neural Network

这是自动化所郝红卫老师组的工作,也是近年来比较经典的使用联合学习/多任务学习来进行关系抽取的工作。在知识图谱中,实体和关系抽取是知识抽取的一个重要部分。传统的流水线是将这个任务视为两个独立的任务,先识别实体再抽取关系,这种框架的优点是比较简单,并且各个组成部分也比较灵活。但缺点也比较明显:

  1. 错误传播,$NER$ 模块的错误会影响到后面关系分类模块的性能。
  2. 忽视了两个子任务之间的关系,如果两个实体存在 $Country-President$ 关系,那么我们可以知道前一个实体必然属于 $Location$ 类型,后一个实体属于 $Person$ 类型,流水线的方法没法利用这样的信息。
  3. 产生了没必要的冗余信息,由于对识别出来的实体进行两两配对,然后再进行关系分类,那些没有关系的实体对就会带来多余信息,降低准确率。

Methodology

模型的底层使用的是一个共享的 $Bi-LSTM$ 网络来编码输入的句子,然后分别使用一个 $LSTM$ 来进行命名实体识别 $(NER)$ 和一个 $CNN$ 来进行关系分类 $(RC)$。这种通过共享底层网络来实现参数共享的结构在多任务学习和联合学习中十分常见,也被称作为参数硬共享方法。

在命名实体识别模块,相比现在主流的 $Bi-LSTM+CRF$ 模型,模型在得到底层的 $Bi-LSTM$ 的输出后又增加了一个 $LSTM$ 网络把上一个预测标签的向量表示再传入到当前解码器中来解决 $NER$ 的标签依赖问题。在进行关系分类时,需要先根据命名实体识别的结果进行实体配对,然后将实体之间的文本使用一个 $CNN$ 和最大池化的 $softmax$ 进行关系分类。

在训练过程中,两个任务都会通过后向传播算法来更新共享 $Bi-LSTM$ 层的参数,从而实现两个子任务之间的依赖和相互促进。显然,在实际运用场景中,需要先预训练 $NER$ 模块来识别实体并且获得实体的编码信息,再训练 $RC$ 模块使用相应的实体信息来进行关系分类。

Experiments

实验在数据集 $ACE05$ 上面进行,包括十二个有向关系和一个无向关系,通过把流水线的方法作为 $baseline$ 来说明联合学习的有效性。

表$2$:$Pipeline$ 是一个传统的流水线方法,$Joint\;w/Global$ 使用单个模型来抽取实体实体之间的关系,并且定义了一系列全局特征作为约束来实现实体与关系之间的依赖,$SPTree$ 是一种端到端的关系抽取模型。

表 $3$ 单独对 $NER$ 模块的评价,$BiLSTM-ED$ 就是本文中的方法。

表 $4$ 单独对 $RC$ 模块的评价,本文中的关系分类模块使用了两种信息,一个是实体之间的句子,一个实体的编码信息。为了证明这两种信息的有效性,论文也与其他种类的关系分类模块进行比较。可以看出,使用完整句子的性能远远低于只使用子句,说明大多数关系的信息是由实体对之间的子句所表示,并且在关系分类模块加入实体的编码信息可以提高性能。

[AAAI 2018] Reinforcement Learning

Reinforcement Learning for Relation Classification from Noisy Data

这是清华大学黄民烈老师组的工作,同样也是为了解决远程监督标注数据集的错误标签问题。为了减少噪声数据对模型的影响,我们希望能够训练一个模型实现对样本的筛选,从而得到一个高质量的数据集。在对样本进行筛选时,我们无法直接判断每个样本的好坏,只能在全部样本选择完成后,集中评价整个数据集的质量,这种延迟反馈的方法天然适合强化学习的框架。

Methodology



模型框架如图所示,左边是句子选择器,右边是一个经典的基于卷积神经网络的关系分类器。句子选择器根据 $policy$ 函数对样本逐个筛选,每个样本都可以执行选或者不选两种 $action$,筛选完之后会生成一个新的数据集,$policy$ 函数定义如下:

$$ \begin{align}
\pi_{\theta}(s_i, a_i) &= P_{\theta}(a_i|s_i) \nonumber \\
& = a_i\sigma(W·F(s_i) + b) + (1-a_i)(1-\sigma(W·F(s_i) + b)) \nonumber
\end{align} $$

其中 $a_i \in {0,1}$ 表示是否选择当前句子,$s_i$ 是表示当前句子的状态,包括当前句子、已选择的句子和当前包的实体对信息。$F(s_i)$ 是状态特征向量,同样也包括以上三个部分,$\sigma$ 是 $sigmoid$ 函数。

接下来,模型用关系分类器来评价选择的句子集的好坏,并计算出一个 $reward$,再使用 $policy\;gradient$ 来更新 $policy$ 函数的参数。显然,只有当句子的选择状态全都确定后,才能计算 $reward$,所以 $reward$ 定义如下:

$$ r(s_i|B) = \begin{cases} 0 & \text{if i < |B| + 1} \\ \frac 1 {|\hat B|} \sum_{x_j \in |\hat B|} \log p(r|x_j) & \text{if i = |B| + 1} \end{cases} $$

其中,$B$ 代表一个示例包,$|\hat B|$ 表示筛选后得到的新示例包。为了得到更多的反馈,提高训练效率,论文将样本按照实体对分成若干个示例包,每次句子选择器完成一个包的选择后,模型都会用关系分类器来评估这部分数据,并更新 $policy$ 函数的参数。当所有包都训练完成之后,再筛选出所有的样本,来训练更新关系分类器的参数,得到最终的关系输出。

Experiments

实验在 $NYT$ 数据集上进行,通过与当前主流深度神经网络方法的比较,来证明强化学习的方法在数据筛选方面的卓越性能。



从表 $1$ 可以看出,基于强化学习的方法比当前基于池化和注意力机制的方法在性能上都高出很多,需要注意的一点是,这里的评价的是句子级别的准确率。

实验还使用保留集比较了句子质量和句子选择策略对模型效果的影响。由图 $3$ 可以看出,使用句子选择器筛选后的数据集训练出了更好的关系分类模型,这也就意味着强化学习对句子的筛选在提高模型性能方面起到了一定的作用。由图 $5$ 可以看出,在对句子的选择上,强化学习的方法优于使用贪心策略的方法。除此之外,实验还针对具体数据在不同方法下预测结果及其概率值做了 $case\;study$。

[WWW 2018] Pattern-based GAN

Weakly-supervised Relation Extraction by Pattern-enhanced Embedding Learning

这是 $UIUC$ 的一个工作,论文关注使用弱监督的方法从低质量的数据中使用 $pattern$ 的方法来完成关系抽取任务,借助 $GAN$ 的框架改进了之前业界流行的基于 $bootstrapping$ 的方法,但是依旧是一种相对较为工程的思。

Methodology

图 $1$ 表示的就是当前弱监督关系抽取的流程,给定语料集和一个较小的种子集,模型从语料集中抽取得到大规模关系元组。基于 $pattern$ 的 $bootstrapping$ 方法就是使用小规模种子集从语料集挖掘得到一系列的 $pattern$,再基于这些 $pattern$ 挖掘得到大量的新关系元组,以此作为种子再挖掘 $pattern$,如此迭代下去,直到不能挖掘到新关系元组或者挖掘到的新关系元组数量低于设定的阈值。

图 $2$ 表示的是模型的 $GAN$ 框架结构,$pattern\; module$ 作为生成器从目标关系中抽取 $pattern$,并根据这些 $pattern$ 来进一步发现关系样例,$distributional\; module$ 作为判别器,任务是学习实体的向量表示并利用给定的关系样例来训练目标函数,在训练过程中,实体的向量表示被看做一系列特征。如图 $3$ 所示,在模型的训练过程中,生成器和判别器交替进行,在迭代的第一个阶段,判别器来评估生成器生成的实例,并且将结果反馈给生成器以调整生成器抽取 $pattern$ 的方法,在迭代的第二个阶段,生成器将会生成一组高质量的示例,作为额外的种子来改进判别器。显然,这是一种类似于 $bootstrapping$ 的方法,这种交替迭代的方法相对当前完全依赖于种子数据的方法来说有着很大的改进。

图 $4$ 介绍的就是 $pattern\; module$ 的一些实现细节,$pattern\; module$ 首先从目标关系中抽取指定个数的 $pattern$,然后再根据这些 $pattern$ 来进一步发现关系样例。其中,$pattern$ 的抽取依赖于句法依存树,抽取出的 $pattern$ 由两个实体和两个实体在句法依存树中的最近公共父节点组成。在 $pattern$ 的选择上,论文介绍了一个可靠度的指标,$pattern\; \pi$ 的可靠度计算如下所示:

$$ R(\pi) = \frac {|G(\pi) \cap S_{pair}|} {|G(\pi)|} $$

其中,$R(\pi)$ 表示的就是 $pattern\; \pi$ 的可靠度,$G(\pi)$ 表示根据 $pattern\; \pi$ 发现出的所有实体对的集合,$S_{pair}$ 表示当前关系下的种子实体对组成的集合,所以分子表示的就是 $pattern\; \pi$ 发现的种子实体对的个数,分母是 $pattern\; \pi$ 发现的总的实体对的个数。显然,$R(\pi)$ 的值越大,表示当前 $pattern$ 越可靠。例如图 $4$ 中,在 $capital\;of$ 关系上,$pattern$ 发现了两个实体对,其中一个实体对在种子集合中,所以这个 $pattern$ 的可靠度为 $0.5$。

最后,模型的整个训练过程如算法 $1$ 所示:



Experiments

实验在 $Wikipedia+Freebase$ 和 $NYT+Freebase$ 两个数据集上进行,分别在知识库补全和关系抽取两个任务上评价模型的性能。

由上表可以发现,模型在这两个任务上都取得了最好的效果。其中,$REPEL-D$ 表示的是只使用判别器模块,$REPEL-P$ 表示的是只使用生成器模块,$REPEL$ 表示的是完整的模型。

Summary

作为知识抽取的重要组成部分,关系抽取虽然是一个很古老的研究方向,但是近年来知识库和知识图谱以及深度学习的发展,关系抽取又一次进入到大众的视野。纵观基于深度学习的关系抽取从 $2014-2018$ 年的的发展过程,我们可以发现,这几年的工作都具有很强的连贯性和时效性,理论上的根本性创新相对较少,更多的工作是把之前基于特征、基于 $SVM$ 或者基于 $EM$ 的方法使用深度神经网络复现和改进。同时,$Attention$ 机制的出现也让 $2016$ 年的大多数学者都基于 $Attention$ 来做一些相关的研究工作,$2017$ 年以后,关系抽取领域的方法变得更加多种多样,强化学习、生成对抗网络、联合学习以及加入额外先验知识都已经成为了当前自然语言处理领域和关系抽取领域的发展方向。最近公布的 $ACL\; 2018$ 的论文中,就有一些使用强化学习和生成对抗网络来进行关系抽取的文章。总体来看,以合适的方法加入合适的先验知识和使用联合学习来打破当前数据处理的流水线方法是目前较为火热的两个研究方向,和强化学习和生成对抗网络相比,这两种方法也具有相对简单的模型结构和较为优秀的模型性能。


点击这里可下载 $PDF$ 版本