GAN Driven Semi-distant Supervision for Relation Extraction
Abstract
远程监督最近已广泛用于非手工标记数据集的关系抽取任务中。但由于知识库的不完整性,自动构建的数据集包含许多错误标记的否定实例,而当前的远程监督方法忽略了这些不正确的阴性实例,这在训练和测试过程中都造成了严重的误导。为了解决这个问题,我们提出了一种新颖的半远程监督方法用于关系抽取,方法是构建一个小且准确的数据集,并适当地利用许多无关系标签的实例。在我们的方法中,我们通过确定知识库和实体描述来构造准确的实例,以避免错误的阴性标记,并使用生成对抗网络(GAN)框架进一步充分利用未标记的实例。在现实数据集上的实验结果表明,我们的方法在远程监督关系抽取方面相比强基准可以取得显著提升。
- 以前:远程监督
- Pros: 使用知识库提供训练数据来取代人工标注获取训练数据。
- Cons: 由于知识库的不完整性,会产生许多错误标签
- 我们: 半远程监督
- 构建一个小且准确的数据集
- 通过确定知识库和实体描述来构造准确的实例,以避免错误的阴性标记
- 适当地利用许多无关系标签的实例
- 使用GAN充分利用未标记的实例
- 在现实数据集上取得良好效果
- 构建一个小且准确的数据集
Introduction
- 关系抽取:旨在识别句子中一对实体的关系以构建三元组比如 [Steve Jobs,Founder,Apple]
- Cons: 人工标注成本太高,并且数量受限,得不到大量的训练数据;
- 远程监督
- 主要思想:如果两个实体是某个关系的参与者,任意的一个包含这两个实体的句子都可能表达了这个关系。若实体对在知识库中不具有已知关系,则将句子视为否定实例,
- Cons: 它假设只要包含两个Entity的句子,都在描述同一种关系,这个假设会产生很多地错误标签。
- 多示例学习+神经网络框架
- Pros: 关注阳性实例,减少远程监督带来的噪音
- Cons: 未解决假阴性实例的问题
- 假阴性实例:它包含真实的关系,由于知识库的不完整性而在被错误分类至否定集中
以下图为例,S1表示关系的出生地,却被标记为否定实例。 其他三个句子的也以相同的方式被错误标记。 知识库中缺失的关系导致自动标记的数据集中产生了许多假阴性实例。
这些情况不仅会误导训练方法到达一个不可靠的收敛,还会使测试标准在测试过程中变得不准确。
Table 1 中,巨大的偏差主要来自测试集中的假阴性实例,这严重限制了关系抽取精确率的上限。 因此,处理假阴性实例是提高远程监督关系抽取性能的关键问题。
- 为减轻假阴性实例的影响,两种可能的方法
- 提高自动标记数据集的准确性
- Pros: 通过过滤确切的否定实例来构建准确的数据集
- Cons: 受到高注释成本和结果数据集大小的限制
- 适当利用无法标记为肯定或否定的未标记实例
- Pros: 训练具有大量未标记实例的关系抽取模型
- Cons: 受到用作基本事实的准确数据集的先决条件的限制
- 提高自动标记数据集的准确性
本文方法:将上述两种方法结合
细节:使用three-player min-max game,以对抗性方式为未标记的实例生成正确的关系表示形式,从而最大程度地减少了标记数据和未标记数据之间的差异,并使同时彼此区分的可能性最大化。
贡献:
- 我们提出了一种新的半远程监督关系抽取方法,以减轻假阴性实例的影响。
- 第一个通过对抗算法为句子生成有效关系表示。许多未标记实例用于提高关系抽取的性能。 此外,我们的生成式对抗训练策略在16个现实数据集的附加情感分类中被证明是有效的。
- 我们构造了一个新的精确数据集,用于从NYT数据集扩展的关系抽取。 我们的方法将基线上的Precision-Recall曲线的面积从0.39增加到0.56。
Method
提出了有关构建准确数据集的方法,用于关系表示的句子编码器以及用于关系抽取的半监督方式。
Dataset Construction
- 我们根据广泛使用的数据集NYT构建了一个新的可靠数据集。 实体描述从Wikipedia中爬取,且实体名称匹配。
我们假设,如果一个实体与另一个实体相关,则在另一个实体的描述中可能会提到其名称。例如,在Steve Jobs的描述中提到了实体Apple Inc。为了验证该假设,我们计算了所有准确的正例数量,这些实例的实体描述提到了NYT语料库中的另一个实体名称。总共有163,108个正例,其中161,392个正例包含至少一次在描述中相互关联的实体对。换句话说,在正集中有超过98.9%的实例符合我们的假设,表明大多数正实例中的实体对在其描述中相互包含。因此,如果之前的否定实例中任何一个实体在另一个实例的描述中未提及,则很可能是确切的否定实例。如果去除包含了彼此相关的实体对的实例,我们可以获得更可靠的否定实例。最后,我们从数据集中过滤出可靠的正例和负例,其他实例是未标记的实例,无法将其标记为正或负。
Sentence Encoder
Input Embedding
与以前的做法无任何区别,词向量与位置向量的结合,细节参见原文
Convolutional Encoder
卷积层:通过长度为
k
k
k(图中
k
k
k=3)的滑动窗口中的卷积核与input tokens进行点乘提取input tokens上的局部特征
- 卷积核:权向量, W ∈ R d × k ( w + p ) W\in R^{d×k(w+p)} W∈Rd×k(w+p),卷积核数量为 d d d
- 卷积操作 f i j = W i ⋅ [ x j − 1 ; x j ; x j + 1 ] ( i ∈ [ 1 , d ] , j ∈ [ 1 , q ] ) f_{ij}=W_i·[x_{j-1};x_j;x_{j+1}](i\in[1,d], j\in[1,q]) fij=Wi⋅[xj−1;xj;xj+1](i∈[1,d],j∈[1,q]), 其中 [ x ; y ] [x;y] [x;y]表示垂直串联, f i j f_{ij} fij表示第 i i i个过滤器的第 j j j个值,另外 x 0 = x q + 1 = 0 x_0=x_{q+1}=0 x0=xq+1=0
- 此处借用了Piecewise CNN的模型,对于句子中的每个词向量都会进行卷积,得到 d d d个 f i j f_{ij} fij,每个 f i j f_{ij} fij长度为 q q q,之后对于每个 f i j f_{ij} fij进行池化,得到其中的最大值 f i ∗ = m a x ( f i j ) f_i^*=max(f_{ij}) fi∗=max(fij), 并形成最终如Figure2 Max pool layer所示的 f ∗ f^* f∗
- 用非线性函数比如双曲正切将 f ∗ f^* f∗变为 h ˉ \bar h hˉ
- 特征向量 h ˉ \bar h hˉ经过softmax激励函数 p ^ = s o f t m a x ( W r h ˉ + b r ) \hat p=softmax(W_r\bar h+b_r) p^=softmax(Wrhˉ+br)再喂入输出层
- p ^ ∈ R z \hat p\in R^z p^∈Rz是每个关系类型的估计概率, z z z是关系的数量。
- 用负对数似然大小计算一个实例的损失
Semi-distant Supervision
上图是半远程监督的框架
- 对抗生成策略
- 通过产生有效的关系表示 x l x_l xl将未标记实例( x u l x_{ul} xul)转化为标记数据 x l x_l xl的空间
- 使关系空间中标记实例的概率分布 p ( x l ) p(x_l) p(xl)等于生成数据的概率分布 p ( x g e n ) p(x_{gen}) p(xgen)
- Three-player min-max game
- 通过Generator(G), Discriminator(D)和Sentence Encoder(SE)三者生成有效的关系表示 p ( x g e n ) p(x_{gen}) p(xgen)
- G减小 p ( x l ) p(x_l) p(xl)与 p ( x g e n ) p(x_{gen}) p(xgen)的差异,使得 p ( x l ) ≈ p ( x g e n ) p(x_l)\approx p(x_{gen}) p(xl)≈p(xgen), 训练G公式为 J G ( c , θ g ) = l o g ( 1 − D ( G ( c ) ) ) J_G(c,\theta_g)=log(1-D(G(c))) JG(c,θg)=log(1−D(G(c)))
- D最大化彼此的差异, 将标记数据与生成数据区分开来, 训练D的公式为 J D ( x , c , θ d ) = l o g D ( x ) + l o g ( 1 − D ( G ( c ) ) ) J_D(x,c,\theta_d)=logD(x)+log(1-D(G(c))) JD(x,c,θd)=logD(x)+log(1−D(G(c)))
- 其中 D ( x ) = σ ( W d h ˉ x ) , D ( G ( c ) ) = σ ( W d ( h ˉ c + W g ) ) D(x)=\sigma(W_d\bar h_x), D(G(c))=\sigma(W_d(\bar h_c+W_g)) D(x)=σ(Wdhˉx),D(G(c))=σ(Wd(hˉc+Wg)),
- SE 从所有训练实例 p a l l p_{all} pall中提取关系特征,并为未标记实例生成预训练的关系表示。训练SE的公式为 J S ( x , c , θ s ) = − 1 z ∑ j = 1 z y l j l o g p ^ ( y j ∣ x ) − 1 z ∑ j = 1 z y g j l o g p ^ ( y j ∣ G ( c ) ) J_S(x,c,\theta s)=-\frac{1}{z}\sum\limits_{j=1}^zy_{lj}log\hat p(y_j|x)-\frac{1}{z}\sum\limits_{j=1}^zy_{gj}log\hat p(y_j|G(c)) JS(x,c,θs)=−z1j=1∑zyljlogp^(yj∣x)−z1j=1∑zygjlogp^(yj∣G(c))
- 三者博弈的公式为
m i n S , G m a x D V ( S , D , G ) = E x ∼ p a l l [ l o g S ( x ) ] + E x ∼ p x l [ l o g D ( x ) ] + E c ∼ p x g e n [ l o g ( 1 − D ( G ( c ) ) ) ] \mathop{min}\limits_{S,G}\mathop{max}\limits_{D}V(S,D,G)=E_{x\sim p_{all}}[logS(x)]+E_{x\sim p_{x_l}}[logD(x)]+E_{c\sim p_{x_{gen}}}[log(1-D(G(c)))] S,GminDmaxV(S,D,G)=Ex∼pall[logS(x)]+Ex∼pxl[logD(x)]+Ec∼pxgen[log(1−D(G(c)))]
整体算法如下
Experiments
方法取得了良好效果,具体可参见原文。由于作者没有放代码,其真实性有待评估。
Conclusions
在本文中,我们提出了一种新颖的半远程监督方法,该方法可以联合利用有限的准确和丰富的未标记实例。 我们首先构建一个具备知识库和附加实体描述的可靠数据集。利用该数据集,对抗式生成训练策略被提出以处理大量未标记的实例,从而生成有效的关系表示。 我们的实验表明,所提出的方法取得了SOTA效果。