一篇关于渐进式机器学习的文章《IntKB: A Verifiable Interactive Framework for Knowledge Base Completion》

本文摘要:

知识库作为许多下游NLP任务的资源基础,存在的一个普遍缺陷是它的不完整性。目前最好的知识库补全框架则缺乏足够的准确性,无法在脱离人工监督的情况下完全自动化的完成知识补全。因此,作为弥补方案,本文提出了IntKB,一种基于问答pipeline的交互式图谱补全框架。该框架的设计面向“人在回路”范式的特性需求:i. 该系统生成的事实与文本片段一致,可由人类直接验证。ii. 该系统设计为可在知识库补全过程中不断学习,因此能够使zero-或者few-shot的初始状态随着时间推移而显著提升性能。iii. 当且仅当存在足够信息进行正确预测的情况下,才会出发与人的交互。因此,作者采用负例和无答案的fold-option来训练系统。该框架在实验中取得较好的性能:对于初始状态下的未见关系,它实现了29.7%的Hits@1,并且在此基础上,这个结果逐渐提高到46.2%。

方法:

作者使用QA来完整整个框架的大部分内容,主要分为四个模块,分别是句子选择,关系抽取,答案重排序以及答案触发。输入是缺失尾实体的三元组。在每个阶段,作者都会根据补全后的知识库,重新构造训练数据和负样本对QA相关模块进行fine-tuning,并进行迭代多次。

IntKB:一种可以被证实的框架用于交互式知识库补全

  1. 任务定义

    主要任务是知识库全部,具体来讲,聚焦于尾实体的预测。
  2. 用户知识库补全的QA阶段性方法

    1. 句子选择:句子筛选模块的输入是一个不完整的三元组形如[h, r, _](同指查询),针对这个输入,返回一个经过排序的候选句子集(即可能涵盖尾实体(答案)的文本)。在这里,用于检索的文档被约束为与头实体h相关的文档子集,接着作者为每个句子建立基于tf-idf的向量表示(这里只考虑上述文档子集的idf而不是整个文档)。对于查询向量,论文使用关系类型的semantic names,并将每个关系类型转换为对应的tf-idf向量,而后计算每个句子和查询之间的相似性得分。该结果用于步骤2中的关系抽取。
    2. 关系抽取:关系抽取模型的输入是上一步中排序Top-n的句子,以及原始查询[h, r, _],每条句子都被转换成一条查询,而后输入BERT-QA模型,用于返回作为候选答案的文本区间。之后,作者将关系抽取视作阅读理解的一个特例(即“问”未知的尾实体),不同于过去需要构建问题模板的方式,这里通过关系类型的semantic names构建多个噪声关键词查询。因此,本文的知识库补全工作是在数据缺少的情况下进行的,且只使用知识库中的信息无需额外的人工监督。
    3. 答案重排序:从BERT-QA获取到若干候选答案之后,最后一步就是对它们进行重排序。排序前,作者首先汇总所有具有匹配文本的候选答案,例如预测中多次出现了某个关键词,则合并这些候选答案为一个。而后使用前两步得到的候选答案的特征信息做排序(使用Kratzwald et al., 2019提出的方法),最终,得到对于[h, r, _]的预测候选。
  3. 答案触发

    为了减轻人的工作量,因为在开放文本的知识库补全中,很难保证每个答案都存在语料集中。作者提出一种folder机制,首先对语料集中所有的真实答案都删除掉,然后在关系抽取模块设置答案为SEP。在预测阶段,如果[SEP]超出一个阈值,那么就调用folder机制丢掉,否则就交给人类处理。
  4. 实体链接

    作为完整的实现知识库补全,返回的答案必须与知识库中已有的实体匹配上,作者在这里测试了三种实体链接的策略。

面向知识库的渐进式学习(continuous learning,也被翻译成持续学习)

  1. 冷启动:从文本中进行知识补全

    1. 事实对齐:将知识库中事实与语料集中句子进行对齐用于后续的知识迁移。对于每一个三元组<h,r_j,t>\in\varepsilon,检索语料集中包含头实体以及其同义词的文档并进行分句。筛选出其中包含尾实体或者其同义词的句子,对其中相同三元组进行整合并保留所有包含不同尾实体的句子。更多的,可以用关系或者其同义词进行一次强筛选,正式的来说,就是将所有的句子和关系以及其同义词进行分词,接着去除停用词,然后统计每个句子的重叠token数目,去掉哪些没有重叠的句子,对于每个事实来说,保留重叠数最高的句子。
    2. 负训练样本:我们使用如下方法产生负训练样本:对于每个三元组事实<h,r_j,t>\in\varepsilon,检索所有的包含头实体的文档,然后去掉这些这些文档中的尾实体或者其同义词,接着使用前面的句子选择模型对保留句子进行重排序,最后匹配最高得分的句子和三元组,然后标记为无答案。
    3. 知识迁移:我们使用上述两个部分产生的事实-句子对送入我们的QA阶段性方法中。对于关系抽取模块,我们使用其预测的数据对Bert模型进行fine-tuning,我们构建如下输入格式数据:随意选的一个关系名称 + Question mark + 分隔符 + 句子本身,答案使用第一次出现的尾实体或者其同义词,对于负事实,就是都使用[SEP]进行标记。再对关系抽取模块进行fine-tuning后,我们可以将它与句子选择模块进行结合使用来对KB中已知的三元组事实进行预测,这个预测结果可以用于fine-tuning后续的第三个重排序模块。做法是:对知识库中的三元组<h,r_j,t>\in\varepsilon,把他的尾实体进行mask,然后构造问题query<h, r_j, ?>送入整个系统,对于每个输入会产生一系列的答案,但是我们知道真正的答案,所以可以构造噪声(其属于尾实体中的某一个同义词但是不能进行实体链接)。最后这些构造的数据可以用于Re-ranking模块的微调。
  2. 从用户交互中持续提升

    预测训练过程从未出现过的关系类型是很困难的,所以我们使用交互机制来为这些从未出现的关系生成标注。所有得到用户正反馈的三元组事实都会立即加入到知识库中,同时,我们还基于上述的实体对齐产生正负训练样例。最终,在每个批次的成功标注结束后我们都会更新的我们模型。

实验:

  1. 数据集:因为现有的数据集都不能满足实验要求,作者在这里自己构造了数据集。数据集主要分为两个不同的子集:(1)known关系代表初始就在KB中。(2)Zero-shot代表初始时不可以见。同时构建副例。
  2. 实验:作者在这里进行四部分实验,我们着重关心渐进式实验。作者模拟了9000词用户交互,并使用KB中已知的部分作为训练集。接着使用KB中zero-shot那部分作为训练集,并预测到30个queries,同时将每种关系的queries限制到10个,再来调用人来预测。

参考:

https://www.colabug.com/2021/0312/8056676/ 东南大学谭亦鸣博士整理的笔记

原文:https://www.aclweb.org/anthology/2020.coling-main.490.pdf

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值