文 | 炼丹学徒
编 | 小轶

开始炼丹以来,估计很多小伙伴都和我一样幻想过直接把数据集做到 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~

多跳问答

任务定义

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

详细定义如下:

记关系图为




,图中实体为




,关系边为




;一共有




个实体。




可以表示为






的矩阵。这个矩阵中的











表示头实体







到尾实体







之间的关系,是标签格式关系图里定义的关系标签,或者文本格式关系图里检索出来的句子。多跳问答则是:给定问句




,从




中的话题实体作为起点,经过某些边,达到目标答案实体


































的过程。

举例说明

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

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

主流做法

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

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

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

TransferNet

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

  • 能否提出一个多跳问答的解法,既可以像第一种做法中预测出来关系路径一样可解释,又像图神经网络一样得到不错的结果

  • 如果可以同时解决标签格式,又可以解决文本格式的关系图问答,就更好了!

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

思路

对于




个实体











的关系




的图




,问题




,首先把起始话题实体的分数置为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:将wiki-movies的单跳问答拓展到多跳问答的数据集,包含400k问题,最多三跳,包含43k实体,9种关系,135k三元组数据图。TransferNet也使用了基于WikiMoviews的文本关系图问答数据集。

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

  • CompWebQ:WebQSP的延伸版本。

标签类型关系图结果

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

文本类型关系图结果

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

可解释性

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

总结

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

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

寻求报道、约稿、文案投放:
添加微信xixiaoyao-1,备注“商务合作”

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

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

  1. java回文数算法for_【Java】【每日算法/刷穿 LeetCode】9. 回文数(简单)

    首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]9. 回文数(简单) 宫水三叶发布于 今天 15:30 题目描述 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从 ...

  2. java输出罗马数字,【Java】【刷穿 LeetCode】13. 罗马数字转整数(简单)

    首页 专栏 java 文章详情 0 [刷穿 LeetCode]13. 罗马数字转整数(简单) 宫水三叶发布于 今天 14:14 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 ...

  3. 整数反转leetcode java_【Java】【每日算法/刷穿 LeetCode】7. 整数反转(简单)

    首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]7. 整数反转(简单) 宫水三叶发布于 今天 12:10 题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数 ...

  4. java编写字母z算法_【Java】【每日算法/刷穿 LeetCode】6. Z 字形变换(中等)

    首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]6. Z 字形变换(中等) 宫水三叶发布于 今天 12:03 题目描述 将一个给定字符串 s 根据给定的行数 numRows , ...

  5. java 最长回文_【Java】【每日算法/刷穿 LeetCode】5. 最长回文子串(中等)

    首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]5. 最长回文子串(中等) 宫水三叶发布于 今天 12:00 题目描述 给你一个字符串 s,找到 s 中最长的回文子串. 示例 ...

  6. 【每日算法/刷穿 LeetCode】25. K 个一组翻转链表(困难)

    题目描述 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序. 示例: ...

  7. 小米9android q测试版,小米9 Android Q Beta优先体验版已推送:新增深色模式

    原标题:小米9 Android Q Beta优先体验版已推送:新增深色模式 7月12日消息,小米MIUI官方微博称,小米9的MIUI Android Q Beta优先体验版现已推送!已获得测试资格的小 ...

  8. 玩客云刷上Armbian的体验

    玩客云刷上Armbian是什么体验 挺好玩的~~哈哈 1.第一步我们先要有一台玩客云,据说有两个版本,我手上的这一台是老版本的.(我是在某鱼购买的48包邮,绑没解绑好像无所谓,直接刷就完了.购买请看准 ...

  9. 刷脸支付随刷随走用户体验更好

    目前不管是商铺还是银行,又或者是交通等领域都已实现刷脸支付应用,我们的社会已经初步进入了靠脸吃饭的时代.相信很多用户都很是好奇,扫码支付才盛行不久,而且也非常的方便实用,为什么刷脸支付才刚入市,就大有 ...

最新文章

  1. 无线AP与无线交换机的区别
  2. ASP.NET的命名空间
  3. ASP.NET的錯誤類型及錯誤處理方式
  4. Ubuntu下增加Python的PATH环境变量
  5. 【持久层】Druid简介
  6. SQL将本地图片文件插入到数据库
  7. JavaScript自学笔记 第5次
  8. 手机修改html离线网页内容,HTML5--离线web应用
  9. 有关睡眠分期规则判读的基础知识整理(基于美国睡眠医学会AASM 判读手册2.3版)
  10. 使用ZUNE从marketplace安装wp7 app的方法
  11. qgridlayout 滚动时固定第一行_滚动轴承组合设计应考虑的问题
  12. IP被封检测和端口被封检测方法分享
  13. 《关于雪糕刺客与雪糕护卫激发中国人的创作灵感这件事》
  14. DNS基础之使用dig查询DNS解析过程
  15. github图书馆座位预约_GitHub上排名前100的图书馆
  16. 使用js的方式设置点击按钮发送短信倒计时并且防止刷新
  17. hadoop SWAP交换空间
  18. 每次需要输入 Enter passphrase for key '/c/Users/Administrator/.ssh/id_rsa'
  19. jQuery实现一个学生成绩单录入系统
  20. MyCat分库分表和读写分离

热门文章

  1. 【海淘域名】GoDaddy账户被锁定后的解决方法
  2. C#操作Excel(1)Excel对象模型
  3. Java内存泄露原因详解
  4. Linux kernel 同步机制(下篇)
  5. 没有梦想,你跟咸鱼有什么分别?
  6. 串口,com口,ttl,max232你应该知道的事
  7. 第一周:深度学习引言(Introduction to Deep Learning)
  8. JavaScript高级之构造函数和原型
  9. LeetCode 2166. 设计位集(Bitset)
  10. LeetCode 2095. 删除链表的中间节点(快慢指针)