知行编程网知行编程网  2022-02-09 16:00 知行编程网 隐藏边栏 |   抢沙发  40 
文章评分 0 次,平均分 0.0
把数据集刷穿是什么体验?MetaQA已100%准确率

文 | 炼丹学徒
编 | 小轶

开始炼丹以来,估计很多小伙伴都和我一样幻想过直接把数据集做到 100% 准确率,然后大吼一声:这数据集,我做到头了!

然而愿望终究是愿望。大多时候,看着自己手头上用了浑身解数才提了零点几个点的数据集,只想把它换掉。体谅到我们没吃过猪肉——最近清华大学李涓子组发表了一篇多跳问答工作TransferNet,怕是可以带大家看看猪跑了。

把数据集刷穿究竟是一种什么体验?出于好奇心,炼丹学徒带大家一起看一看。

论文题目
TransferNet: An Effective and Transparent Framework for Multi-hop Question Answering over Relation Graph

论文链接:
https://arxiv.org/pdf/2104.07302.pdf

Arxiv访问慢的小伙伴也可以在 【夕小瑶的卖萌屋】订阅号后台回复关键词 【0518】 下载论文PDF~

把数据集刷穿是什么体验?MetaQA已100%准确率多跳问答把数据集刷穿是什么体验?MetaQA已100%准确率

任务定义

简单来说多跳问答是指:针对一个文本问题,在给定关系图上通过多个关系边找到答案的过程

详细定义如下:

记关系图为 ,图中实体为 ,关系边为 ;一共有 个实体。 可以表示为 的矩阵。这个矩阵中的 表示头实体 到尾实体 之间的关系,是标签格式关系图里定义的关系标签,或者文本格式关系图里检索出来的句子。多跳问答则是:给定问句,从中的话题实体作为起点,经过某些边,达到目标答案实体 的过程。

举例说明

把数据集刷穿是什么体验?MetaQA已100%准确率

这个例子里,提问“ 比尔盖茨的夫人创建了哪个组织 ”(醒醒,比尔盖茨和夫人已经离婚了)。我们首先定位到话题实体“ 比尔盖茨 ”,然后通过“ 的夫人 ”找到实体“ 梅琳达”,再通过“ 创建 ”关系找到答案“ 比尔及梅琳达·盖茨基金会 ”。

我们看到:关系图里左边的例子是标签格式的关系图(也称作知识图谱,是人工定义的实体和关系图),右边的例子是文本格式的关系图,可以从文本库中通过实体名字的共现检索出来。标签格式的更准确,标注代价更大,文本格式的则相反。

主流做法

常见的多跳问答有两个主流做法。

第一种主流做法,是从起始的实体开始预测 关系-实体序列 ,最终得出答案。好处是:从起点实体到目标回答实体的关系路径是显式预测出来的,推理过程可解释。坏处是:我们的监督语料只有答案的目标实体,而从起点实体到目标实体的路径是没有的,因此是弱监督问题,搜索空间太大,存在收敛问题,因此虽然预测结果可解释,但是可能效果不如第二种主流做法。其次,第一种主流做法往往针对标签格式的关系图提出,如果给定的知识是检索出来的文本,很多技术无法使用。

第二种主流做法是把起始实体和附近的关系图喂给模型,直接使用 图神经网络 (GNN, Graph Neural Networks)预测目标实体作为回答。好处是:监督学习的场景,直接让模型去从附近的关系网络预测目标答案,效果比较好。目前SOTA的方法就是这么做的。缺点是:如何从起始实体预测到目标实体的推理过程是黑箱,模型可能在小区域的图关系里进行了复杂的运算。

把数据集刷穿是什么体验?MetaQA已100%准确率TransferNet把数据集刷穿是什么体验?MetaQA已100%准确率

看完主流做法,我们直觉地想到:

  • 能否提出一个多跳问答的解法,既可以像第一种做法中预测出来关系路径一样可解释,又像图神经网络一样得到不错的结果
  • 如果可以同时解决标签格式,又可以解决文本格式的关系图问答,就更好了!

TransferNet就针对这两个痛点设计了模型:

把数据集刷穿是什么体验?MetaQA已100%准确率

思路

对于 个实体 , 的关系 的图 ,问题 ,首先把起始话题实体的分数置为1,其他实体分数置为0,将此分数记为 。在每一跳后都预测当前关系得分,根据关系的预测概率,更新当前第t跳结束后的实体得分,直到最大跳数。预测该问题的跳数,按跳数的概率加权每一跳 得分作为实体的最终得分。

  • 首先把起始话题实体的分数置为1,其他实体分数置为0,将此分数记为
  • 每一跳后都给当前关系打分。根据关系得分,更新当前第t跳结束后的实体得分,直到最大跳数。
  • 预测该问题的跳数,并按跳数的概率加权每一跳 得分作为目标实体的最终得分。

流程

下述所有都是可训的参数

0)初始化:每个实体的分数,初始t=0,只有问题q中的主体实体分数为1,其他实体都为0。并将问题先过一遍编码器获得一个初始问题编码 和单词隐状态序列

 

 

1)问题编码:用 和 获得每一跳时的 ,真正后面用的时候用的每一跳时候的问题编码是这个。

 

 

 

 

可以简单的理解为,第t跳时,用对应的特定函数去计算对的注意力,然后把加权过来代表此跳的问题编码。

3)关系得分:使用当前跳问题的编码 计算关系得分 。对于标签关系图和文本关系图,计算的方法是不一样的。这一步中,其实就是用 去计算每个关系的分数,然后汇总到 所有实体的关系矩阵中:

 

 

4)实体得分:通过3)中计算得到的实体-实体的关系得分,上一条的每个实体分数,计算此跳结束后每个实体的分数。重复上述步骤,直到超参最大跳数。

 

 

5)总路径得分:在4)中,我们得到了每一跳后的实体分数。然后我们预测一下这个问题q是一个几跳的问题。此处跳数的预测也是概率加权使用的。

 

 

 

此处,即为问题跳数的概率分布。最终,里分数最高的实体作为答案进行输出。

细节

  • 在流程4)中,由 和 计算 时,分数可能会超过 1,这会导致梯度爆炸和 错误的优化方向。为了保证 中所有实体的分数都可以保持在 ,TransferNet 采用截断函数 Trunc 施加在每次 的计算之后。

 

 

 

  • 在流程3)中,需要由问题编码 计算关系分数矩阵 。对于标签格式的关系图,因为关系 是固定的,所以可以直接计算每种关系的分数 ,如果关系之间不是互斥的,则可以把 替换为 。则实体关系分数矩阵中实体 和 之间的关系分数由连接他俩之间的所有关系分数求和或者求极大值得到。对于文本格式的关系图,假设实体 和 有 个句子 r,则关系分数矩阵 的计算与标签格式的类似,为:

 

 

 

 

此处,为元素对应位置的点乘。

  • 文本类型的关系图中,可能文本的描述在处理成关系后存在偏差。比如,Harry Potter, <sub> was published in <obj>,XXX文本关系,如果XXX是United Kingdom,那么<sub> was published in <obj>表达的意思是在何处发表;如果XXX是1997,那么<sub> was published in <obj>描述的是在何时发表的关系。为了区分这种相同文本,不同含义的情况,TransferNet提出额外的语言遮盖预测。所提出的遮盖预测分数如下:

 

 

是所提出的遮盖预测分数。在流程5)中,把文本类型的预测结果修改为 。 为元素对应位置的点乘。

把数据集刷穿是什么体验?MetaQA已100%准确率实验把数据集刷穿是什么体验?MetaQA已100%准确率

数据集

  • MetaQA:将wiki-movies的单跳问答拓展到多跳问答的数据集,包含400k问题,最多三跳,包含43k实体,9种关系,135k三元组数据图。TransferNet也使用了基于WikiMoviews的文本关系图问答数据集。

  • WebQSP:基于Freebase,包含一跳和两跳问答,使用标签格式的关系图,1.8m实体,572关系类型,5.7万条关系三元组。

  • CompWebQ:WebQSP的延伸版本。

标签类型关系图结果

把数据集刷穿是什么体验?MetaQA已100%准确率

我们期待的刷穿数据集就出现在上表的TransferNet结果MetaQA多跳问答。

文本类型关系图结果

把数据集刷穿是什么体验?MetaQA已100%准确率

上表中,左侧是纯文本格式,右侧是在纯文本数据基础上,随机选取50%的标签类型数据添加进关系图。所提升的效果,是因为文本数据集中,存在关系的部分缺失。

把数据集刷穿是什么体验?MetaQA已100%准确率可解释性把数据集刷穿是什么体验?MetaQA已100%准确率

把数据集刷穿是什么体验?MetaQA已100%准确率

因为在每一跳的更新里,对目标实体进行0~1的评分,因此分数越高,我们越确定这一跳的实体确信度。其次,每一跳的更新也是通过关系矩阵进行的,其关系路径是可解释的。

把数据集刷穿是什么体验?MetaQA已100%准确率总结把数据集刷穿是什么体验?MetaQA已100%准确率

本篇论文我们一起看了多跳问答的新工作TransferNet。论文思路清楚,效果提升明显。此外,我们跟TransferNet一起体验了一把数据集刷穿的感觉~

希望小伙伴们可以向TransferNet学习,一起刷穿数据集。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享