论文解读:Reinforcement Learning for Relation Classification from Noisy Data

论文解读:Reinforcement Learning for Relation Classification from Noisy Data

  本文是一篇以强化学习来解决远程监督关系抽取中噪声的问题。强化学习作为一个比较新的机器学习,能够很好的处理一些半监督类问题,强化学习是一种从经验中学习的方法,通过定义策略、状态、动作以及收益来训练智能体与环境的交互,在游戏博弈等场景中很受欢迎。本文则将其与关系抽取相结合,试图来解决远程监督语料中大量噪声。

一、简要信息

序号属性
1模型名称RLRE
2所属领域自然语言处理
3研究内容远程监督关系抽取;强化学习
4核心内容Relation Extraction,Reinforcement Learning
5GitHub源码TensorFlow_RLRE
6论文PDFhttps://arxiv.org/pdf/1808.08013

二、全文摘要翻译

  现有的关系分类方法都依赖于远程监督的假设,如果给定了实体对以及对应的关系,则所有包含这个实体对的句子都能够描述这个关系。有这样一些方法,它们是基于包层面上的分类,并不能有效的学习到句子与关系的映射,而且大量的句子都受到噪声的影响。本文我们提出一种新的方法用于在句子层面上降噪。我们的模型主要包括两个模块:instance selector(示例选择器)和relation classifier(关系分类器)。instance selector使用强化学习方法选择高质量的句子并将其喂入到relation classifier中,relation classifier则进行预测并将结果(回报)返回给instance selector。这两个模块将联合训练,实验表明我们的模型可以很好的处理噪声,并在句子级别的分类上效果良好。

三、相关工作与介绍

  深入了解过关系抽取的都知道,关系抽取是知识图谱构建过程中非常重要的部分,其往往需要大量的语料来支撑训练。也有许多工作通过普通监督来实现关系抽取,一般的做法则是使用CNN或RNN及相关变体对句子进行特征编码。例如常见的SemEval 2010 Task8数据集包含8000个训练句子和2717个测试句子。但事实上,这些数量远远不够。传统的监督语料虽然能够保证正确,但需要大量的人工完成,因此Mintz在09年提出一种半监督的语料生成——远程监督,其从FreeBase知识库中选择相关的实体对,并从纽约时报(New York Times)中提取相关的句子。远程监督旨在根据实体对从这些语料中进行对齐,如果实体对在知识库中标记了关系,则语料中只要出现这些实体对一定表达这个关系;同理只要实体对不在这个知识库中,则这些句子则不会表达相应的关系(无关系NA)。这样强烈的假设能够快速的得到大尺度的样本,但也带来了大量的噪声。
  先前一些工作诸多使用多示例学习和基于句子级别的注意力机制,将相同的实体对对应的句子打包,并训练一个注意力机制为每个句子添加权重,权重高的代表句子质量更好,在预测过程中贡献最大。但事实上这种做法作者觉得存在两个问题:
(1)基于包级别的关系分类会丧失一些句子与关系类之间的映射关系。
(2)有些包中可能没有一个句子是能够表达对应的关系;
事实上,博主也认为存在另外两个问题——有一些由于知识库不完善的原因导致一些实体对不在知识库中,但有些句子却能表达一定的关系,这部分被错标为NA,很少有工作能够解决这样的问题;事实上以NYT为例的数据集的测试集存在大量的错误,导致训练的模型再好,预测的结果也很差。

  如图所示,给定两个示例,Obama和US在知识库中的关系标签为EmployerBy,但有些句子并不能表达这个关系,而表达的是BornIn。基于包的分类可能让一些原本属于BornIn关系的句子,被强行映射到EmployerBy,使得模型建模出现问题。而基于句子级别的分类能够缓解这种映射问题。
在这里插入图片描述
  为了解决这两个问题,比较好的策略是在分类之前就先将噪声过滤掉,这样能够保证分类器学习到的映射关系更加纯正,在处理第二个问题时,作者认为如果模型判定整个包内的句子都不行,则直接过滤掉整个包。作者提出一种新的方法,其包括instance selector(示例选择器)和relation classifier(关系分类器),前者通过策略梯度训练方法训练一个策略分布函数,用于对所给包内的句子进行决策(判断句子是否是true positive);后者则根据包内的已选择的句子喂入分类器中进行分类。二者相互联合学习。

  因此本文的亮点如下所示:
(1)将实体对划分为一个个包,一个包作为一个episode,但分类是基于句子级别进行的;
(2)使用强化学习来训练模型;

四、提出的方法

  问题定义如图所示:
在这里插入图片描述
给定一个包,其含有相同的实体对,目标则是预测对应的关系 P ( r i ∣ x i , h i , t i ) P(r_i|x_i,h_i,t_i) P(rixi,hi,ti),其中 r i r_i ri为某一个关系, x i x_i xi表示其中一个示例, h i , t i h_i,t_i hi,ti分别表示头实体和尾实体。

  模型的框架如图所示:
在这里插入图片描述
模型包括两个模块instance selector(示例选择器)和relation classifier(关系分类器)。

4.1 Instance Selector

  instance selector是一个智能体,负责从给定的一个包中选择出true positive和noisy。instance selector是基于强化学习的模块,根据强化学习可知,其主要包含如下几个元素:
(1)状态State
  状态表示已经选择作为true positive的句子的向量平均值当前待选择的句子的向量和**该包对应的实体对(两个实体向量拼接)**三者拼接得到的向量,状态表征为一个向量 F ( s i ) F(s_i) F(si),作为instance selector的输入。其中已选择的向量通常是根据上一轮classifier分类器中的句子编码向量,两个实体对向量则使用TransE模型预训练,TransE模型博主也讲述过,可参阅:TransE

在这里插入图片描述
上图显示了selector工作过程,图并非论文原图,为博主单独制作。
(2)动作Action
  因为目标是选择出一些true positive,过滤掉noisy,因此对于每一个句子都有两个动作——0和1。其中0表示当前句子是noisy,1表示true positive。因此在当前状态下,根据一定策略可以得到对应的两个动作(或动作的概率分布)。这个策略实际上就是一个神经网络二分类器,策略定义为:

π ( s i , a i ) = P ( a i ∣ s i ) = a i σ ( W ∗ F ( s i ) + b ) + ( 1 − a i ) ( 1 − σ ( W ∗ F ( s i ) + b ) ) \pi(s_i,a_i) = P(a_i|s_i) = a_i\sigma(W*F(s_i) + b) + (1-a_i)(1-\sigma(W*F(s_i) + b)) π(si,ai)=P(aisi)=aiσ(WF(si)+b)+(1ai)(1σ(WF(si)+b))

(3)奖励Reward
  我们思考一个问题,在选择过程中,强化学习是有局部收益的(执行一个动作后的即时奖励),但事实上,对部分已选择的句子参与分类,得到的奖励并不能体现真实价值,例如seqGAN模型采用的策略梯度生成序列模型,对于生成的部分序列没有实际的意义,其做法是引入蒙特卡洛树搜索。本文则直接记做为0,也就是所当且仅当整个包内的所有句子参与选择之后,才获得一个延迟收益。这个收益函数定义为:


其中 B ^ \hat{B} B^表示被选择的true positive的集合, p ( r ∣ x j ) p(r|x_j) p(rxj)则表示当前第 j j j个句子被分类器分类为对应关系 r r r的概率值。对于之前的状态,收益都为0,而最终的收益则是一个均值。

  在训练阶段,使用策略梯度法(REINFORCE),loss1表示为:

l o s s = − ∑ R log ⁡ ( π ( a i ∣ s i ) ) loss = -\sum R \log(\pi(a_i|s_i)) loss=Rlog(π(aisi))

4.2 Relation Classifier

  这一部分则使用CNN编码器,CNN具体的算法不做讲解,其损失函数为:

l o s s 2 = 1 X ^ ∑ i = 1 ∣ X ^ ∣ log ⁡ p ( r i ∣ x i ) loss2 = \frac{1}{\hat{X}}\sum_{i=1}^{|\hat{X}|}\log p(r_i|x_i) loss2=X^1i=1X^logp(rixi)

在这里插入图片描述

  最后我们梳理整个模型的运作流程,如上图所示。首先作者先预训练Relation Classifier的CNN编码器,给定句子并进行分类,其次固定CNN来预训练Instance Selector。最后联合二者训练。特别注意的是,在训练过程中,数据集划分为若干个包,每个包作为一个episode,对于每个包,根据固定的CNN给出reward,并基于策略梯度更新参数。当整个数据集遍历后,再将已选择的示例用于学习CNN。联合学习过程中,有一定概率选择保留梯度,剩下的概率选择更新梯度,对应图中最后两行公式。

五、实验

  在编码环节,作者首先预训练Classifier,获得每个句子的预测结果、embedding以及reward,然后固定Classifier,预训练Selector,此时根据当前的策略对每个包进行选择,由于事先为每个句子计算了reward,因此只需要把所有已选取的所有句子的reward平均即可。在联合训练过程中,首先固定策略和Classifier,使用带有 ϵ − \epsilon- ϵ贪心策略进行蒙特卡洛采样,对一个包进行多次采样获得尽可能多的state-action对以及对应的reward,其次使用策略梯度来训练策略。训练之后再次对当前包进行一次动作执行,此时每次只取概率最大的动作。然后将此时选择的所有句子喂入到Classifier中并训练Classifier,训练完后对整个数据集上进行一遍测试,形成新的预测结果、embedding以及reward。如此往复多次直到迭代终止。对应的流程如下所示:

在这里插入图片描述

  作者在NYT数据集上进行实验,首先作者先与传统的分类方法进行比较,如下图所示:
在这里插入图片描述

其次作者从四个方面分别进行了实验:
在这里插入图片描述
分别是:(1)选择高质量的句子来分类效果如何?(2)选择的精度如何?(3)不同的选择方式有什么差异?(4)是否能够处理整个包中句子都是噪声的情况?下面四张图分别对应解决相关的问题并进行实验。

(1)可发现,不论是CNN还是CNN+ATT,选择高质量的句子后对分类器分类的结果都有明显的提高。
在这里插入图片描述
(2)作者随机从测试集中抽取300个句子,并人工标注判断其是否是噪声,实验发现Selector选择了236个样本作为noise,其中标注的有177个;选择了64个样本作为True positive,其中标注的有45个,因此准确率是74%。事实上这个准确率并不是非常高,但的确给分类器训练提升了样本质量。
在这里插入图片描述
(3)作者将RL与greedy进行比较。greedy是指根据Classifier分类的结果中,取前N个概率值最大的样本,很显然,本文的方法效果最好,这也侧面体现出RL可以很好的选择高质量的句子,或者说能够降噪。

在这里插入图片描述
(4)作者也执行了Case Study来判断是否能够处理全是噪声的包,如图所示,有的包如果全部是噪声,本文的方法也能全部剔除,而不会受到At-least-one约束。
在这里插入图片描述

©️2020 CSDN 皮肤主题: 黑客帝国 设计师:上身试试 返回首页