强化学习应用:实体关系提取

2018-06-15

之前调研过几天的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(s_i), F为一个映射函数,可以为一个神经网络:
状态s_i为:

  • 分类器(论文中使用cnn模型)的非线性层输出的当前句子的向量表示。
  • 已经选择的句子的向量表示的平均。
  • 句子两个实体的预训练向量(TransE方法在知识图谱中获得)
    action:
    一个逻辑回归函数,当前策略下是否选择当前句子的概率,参数为W和b。
    image.png
reward:

image.png

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

策略优化:

蒙特卡洛采样方式的策略梯度下降方法:
image.png
其中v_i为bag_i的期望回报。

relation classification

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

训练过程:

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

小结:

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

  • 弱监督信号(关系分类器的预测置信度)和 trail-and-error search迎合了RL的特点和使用场景;
  • 除了关系分类,类似方法也可以用在其他远程监督带来的噪声问题。
  • 更新instance selector的reward信号是否可以尝试即时回报或者TD方式。

原创文章,转载注明出处
更多关注公众号:
wechat