强化学习应用关系提取

之前调研过几天的nlp的关系提取任务,任务可以简单描述为给定一个一句话,包含两个或多个实体,希望输出两个或多个实体之间的关系。前些日子读到一篇利用强化学习解决相应问题的论文,很有意思,打算简单梳理一下其动机和方法。附上论文链接:Reinforcement Learning for Relation Classification from Noisy Data。

经典关系提取方法:

远程监督的方法做关系提取被证明十分有效,大致思路是使用现有的实体关系(可以是现有的知识图谱中的实体关系)对预料库进行自动标注,然后作为训练语料。比如,图谱中“北京”和“中国”存在的是"首都"关系,则对于出现“北京”和“中国”的句子就打上“首都”的标签,如:(北京,首都,中国),然后作为分类任务做监督学习。

这种方法期望利用现在成熟的文本分类方法解决关系提取,但也伴随这一个明显的问题,两个实体不止一个关系,并且包含两个实体的句子也不一定表达了两者有某种关系。而这些bad case同样也会被作为训练语料,从而影响最后的模型效果。

一种有效的解决方法(multi-instance)是将远程标注的数据分成多个bag,每个bag中包含多个instance,可以理解为句子。我们只有bag级别的标签label,而不知道bag级别中的标签。数据的训练同样也是bag级别的。如此缓解了错误标注的问题,基本算法流程:

初始化参数,划分bags为mini-batch

随即选择mini-batch,一个个将batch中的bag送入网络

每个bag中,取网络输出置信度最高的instance做最终使用的样本,多个bag选中的样本交叉熵做目标函数,更新参数。

重复2、3步直到收敛或达到最大epoch数。

multi-instance方法一定程度上缓解了错误标注的问题,但仍无法避免bag中数据全不标注错误的情况,由此,论文提出了强化学习思路来解决远程监督中错误标注的问题,并且解决训练样本粒度的问题,实现了句子级别的训练与预测。

RL 实体关系分类

系统分为两大部分:

实例选择器(instance selection): 给定一个远程标注的有噪音的数据集合: ,选择哪一个句子真正表述了该关系标签,并作为最终的训练数据。

关系分类器(relation classification): 给定一个句子和其中的实体对,预测实体对的关系。

instance selection

agent 在当前状态下(当前待选择的句子,已经选择的句子,当前实体对)遵循当前策略做出action决定是否选择当前的句子做训练语料,并在所有选择结束后从关系分类器获得获得相应奖励。具体做法:将训练句子划分正N个bag,当一个bag里的句子被选择完毕,计算一次reward。从强化学习的关键部分来描述:

policy:

是否选择当前的句子。

state:

一个实数向量F(si), F为一个映射函数,可以为一个神经网络:状态si为:

分类器(论文中使用cnn模型)的非线性层输出的当前句子的向量表示。

已经选择的句子的向量表示的平均。

句子两个实体的预训练向量(TransE方法在知识图谱中获得)

action:

一个逻辑回归函数,当前策略下是否选择当前句子的概率,参数为W和b。

reward:

一个bag选择完毕,计算延迟奖励,被选择的句子的log概率取平均。

策略优化:

蒙特卡洛采样方式的策略梯度下降方法:其中vi为bagi的期望回报。

relation classification

关系分类使用了比较经典的CNN文本分类模型,类别为所有的关系类型。

训练过程:

训练过程为简单的强化学习策略梯度下降方法:

小结:

论文的主要工作是利用RL来处理远程监督的噪声问题:

弱监督信号(关系分类器的预测置信度)和 trail-and-error search迎合了RL的特点和使用场景;

除了关系分类,类似方法也可以用在其他远程监督带来的噪声问题。

更新instance selector的reward信号是否可以尝试即时回报或者TD方式。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180731G1S1Q400?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券