雷锋网 ai 科技评论:iclr 2020 正在进行,但总结笔记却相继出炉。我们曾对 iclr 2020 上的图机器学习趋势进行介绍,本文考虑的主题为知识图谱。
作者做波恩大学2018级博士生 michael galkin,研究方向为知识图和对话人工智能。在aaai 2020 举办之际,他也曾对发表在aaai 2020上知识图谱相关的文章做了全方位的分析,具体可见「知识图谱@aaai2020」。
本文从五个角度,分别介绍了 iclr 2020上知识图谱相关的 14 篇论文。五个角度分别为:
1)在复杂qa中利用知识图谱进行神经推理(neural reasoning for complex qa with kgs)
2)知识图谱增强的语言模型(kg-augmented language models)
3)知识图谱嵌入:循序推理和归纳推理(kg embeddings: temporal and inductive inference)
4)用gnn做实体匹配(entity matching with gnns)
5)角色扮演游戏中的知识图谱(bonus: kgs in text rpgs!)
话不多说,我们来看具体内容。
注:文中涉及论文,可关注「ai科技评论」微信公众号,并后台回复「知识图谱@iclr2020」打包下载。
今年iclr2020中,在复杂qa和推理任务中看到越来越多的研究和数据集,very good。去年我们只看到一系列关于multi-hop阅读理解数据集的工作,而今年则有大量论文致力于研究语义合成性(compositionality)和逻辑复杂性(logical complexity)——在这些方面,知识图谱能够帮上大忙。
keysers等人研究了如何测量qa模型的成分泛化,即训练和测试 split 对同一组实体(广泛地来讲,逻辑原子)进行操作,但是这些原子的成分不同。作者设计了一个新的大型kgqa数据集 cfq(组合式 freebase 问题),其中包含约240k 个问题和35k sparql查询模式。
intuition behind the construction process of cfq. source: google blog
这里比较有意思的观点包括:1)用el description logic 来注释问题(在2005年前后,dl的意思是description logic,而不是deep learning );2)由于数据集指向语义解析,因此所有问题都链接到了freebase id(uri),因此您无需插入自己喜欢的实体链接系统(例如elasticsearch)。于是模型就可以更专注于推断关系及其组成;3)问题可以具有多个级别的复杂性(主要对应于基本图模式的大小和sparql查询的过滤器)。
作者将lstm和transformers基线应用到该任务,发现它们都没有遵循通用标准(并相应地建立训练/验证/测试拆分):准确性低于20%!对于kgqa爱好者来说,这是一个巨大的挑战,因此我们需要新的想法。
cohen等人延续了神经查询语言(neural query language,nql)和可微分知识库议程的研究,并提出了一种在大规模知识库中进行神经推理的方法。
作者引入了reified kb。其中事实以稀疏矩阵(例如coo格式)表示,方式则是对事实进行编码需要六个整数和三个浮点数(比典型的200浮点kg嵌入要少得多)。然后,作者在适用于多跳推理的邻域上定义矩阵运算。
这种有效的表示方式允许将巨大的kg直接存储在gpu内存中,例如,包含1300万实体和4300万事实(facts)的webquestionssp 的 freebase转储,可以放到三个12-gb 的 gpu中。而且,在进行qa时可以对整个图谱进行推理,而不是生成候选对象(通常这是外部不可微操作)。
作者在文章中对reifiedkb进行了一些kgqa任务以及链接预测任务的评估。与这些任务当前的sota方法相比,它的执行效果非常好。
事实上,这项工作作为一个案例,也说明sota不应该成为一篇论文是否被接收的衡量标准,否则我们就错失了这些新的概念和方法。
文章链接:
dhingra等人的工作在概念矿建上与上面cohen等人的工作类似。他们提出了drkit,这是一种能用于在索引文本知识库上进行差分推理的方法。
drkit intuition. source: dhingra et al
这个框架看起来可能会有些复杂,我们接下来将它分成几个步骤来说明。
1)首先,给定一个question(可能需要多跳推理),实体链接器会生成一组 entities(下图中的z0)。
2)使用预先计算的索引(例如tf-idf)将一组实体扩展为一组mentions(表示为稀疏矩阵a)。
3)在右侧,question 会通过一个类似bert的编码器,从而形成一个紧密向量。
4)所有mentions 也通过一个类似bert的编码器进行编码。
5)使用mips(maximum inner product search)算法计算scoring function(用来衡量mentions, entities 和 question相关分数),从而得到top-k向量。
6)矩阵a乘以top-k 选项;
7)结果乘以另一个稀疏的共指矩阵b(映射到一个实体)。
这构成了单跳推理步骤,并且等效于在虚拟kb中沿着其关系跟踪提取的实体。输出可以在下一次迭代中进一步使用,因此对n跳任务会重复n次!
此外,作者介绍了一个基于wikidata的新的插槽填充数据集(采用sling解析器构造数据集),并在metaqa、hotpotqa上评估了 drkit,总体来说结果非常棒。
文章链接:
asai等人的工作专注于hotpotqa,他们提出了recurrent retriever的结构,这是一种开放域qa的体系结构,能够以可区分的方式学习检索推理路径(段落链)。
recurrent retrieval architecture. source: asai et al
传统上,rc模型会采用一些现成的检索模型来获取可能的候选者,然后才执行神经读取pipeline。这篇工作则希望让检索具有差异性,从而将整个系统编程端到端的可训练模型。
1)整个wikipedia(英语)都以图谱的形式组织,其边表示段落和目标页面之间的超链接。例如对于natural questions,大小约为3300万个节点,边有2.05亿个。
2)检索部分采用的rnn,初始化为一个隐状态h0,这是对问题 q 和候选段落p编码后获得的。这些候选段落首先通过tf-idf生成,然后通过图谱中的链接生成。(上图中最左侧)
3)编码(q,p)对的bert [cls]令牌会被送到rnn中,rnn会预测下一个相关的段落。
4)一旦rnn产生一个特殊的[eoe]令牌,读取器模块就会获取路径,对其重新排序并应用典型的提取例程。
作者采用波束搜索和负采样来增强对嘈杂路径的鲁棒性,并很好地突出了路径中的相关段落。重复检索(recurrent retrieval )在hotpotqa的 full wiki测试设置上的f1分数获得了惊人的73分。这篇工作的代码已发布。
文章链接:
文章链接:
我们接下来谈两篇复杂数字推理的工作。
在数字推理中,你需要对给定的段落执行数学运算(例如计数、排序、算术运算等)才能回答问题。例如:
文本:“……美洲虎队的射手乔什·斯科比成功地射入了48码的射门得分……而内特·凯丁的射手得到了23码的射门得分……”问题:“谁踢出最远的射门得分?”
目前为止,关于这个任务只有两个数据集,drop(squad样式,段落中至少包含20个数字)和mathqa(问题较短,需要较长的计算链、原理和答案选项)。因此,这个任务的知识图谱并不很多。尽管如此,这仍然是一个有趣的语义解析任务。
在iclr 2020 上,有两篇这方面的工作。一篇是是chen 等人的工作,提出了一个神经符号读取器nerd(neural symbolic reader);另一篇是gupta等人在神经模块网络nmn(neural module networks)上的工作。
nerd vs other approaches. source: chen et al
两项工作都是由读取器和基于rnn的解码器组成,从预定义的域特定语言(dsl,domain specific language)生成操作(操作符)。从性能上相比,nerd更胜一筹,原因在于其算符的表达能力更强,解码器在构建组合程序上也更简单。另一方面,nmn使用张量交互对每个运算符进行建模,于是你需要手工制定更多的自定义模块来完成具体任务。
此外,nerd的作者做了许多努力,为弱监督训练建立了可能的程序集,并采用了带有阈值的hard em 算法来过滤掉虚假程序(能够基于错误的程序给出正确答案)。nerd 在drop测试集上获得了81.7 的f1 分数,以及78.3 的em分数。
对nmn进行评估,其中月有25%的drop数据可通过其模块来回答,在drop dev测试中获得了77.4 的f1 分数 和74 的em 分数。
将知识融入语言模型,目前已是大势所趋。
文章链接:
今年的iclr上,xiong等人在预测[mask] token之外,提出了一个新的训练目标:需要一个模型来预测entity是否已经被置换。
作者对预训练wikipedia语料库进行处理,基于超链接,将wiki的entity表面形式(标签)替换为相同类型的另一个entity。基于p31的「instance of」关系,从wikidata中获取类型信息。如下图所示,在有关spider-man的段落中,实体 marvel comics 可以替换为 dc comics。
pre-training objective of wklm. source: xiong et al
模型的任务是预测实体是否被替换掉了。
wklm(weakly supervised knowledge-pretrained languge model)使用mlm目标(掩蔽率为5%,而不是bert的15%)进行预训练,每个数据点使用10个负样本,类似于transe的训练过程。
作者评估了10个wikidata关系中的wklm事实完成性能(fact completion performance),发现其达到了约29 hits@10的速率,而bert-large和gpt-2约为16。
随后,作者在性能优于基准的webquestions,triviaqa,quasar-t和search-qa数据集上对wklm进行了微调和评估。
总结一句话,这是一个新颖的、简单的,但却有实质性意义的想法,有大量的实验,也有充分的消融分析。
像wikidata这样的大型知识图谱永远不会是静态的,社区每天都会更新数千个事实(facts),或者是有些事实已经过时,或者是新的事实需要创建新实体。
循序推理。说到时间,如果要列出美国总统,显然triple-base的知识图谱,会把亚当斯和特朗普都列出来。如果不考虑时间的话,是否意味着美国同时有45位总统呢?为了避免这种歧义,你必须绕过纯rdf的限制,要么采用具体化的方式(针对每个具体的歧义进行消除),要么采用更具表现力的模型。例如wikidata状态模型(wikidata statement model)允许在每个statement中添加限定符,以总统为例,可以将在限定符处放上总统任期的开始时间和结束时间,通过这种方式来表示给定断言为真的时间段。循序知识图谱嵌入算法(temporal kg embeddings algorithms)的目标就是够条件这样一个时间感知(time-aware)的知识图谱表示。在知识图谱嵌入中时间维度事实上,只是嵌入字(例如身高、长度、年龄以及其他具有数字或字符串值的关系)的一部分。
归纳推理。大多数现有的知识图谱嵌入算法都在已知所有实体的静态图上运行——所谓的转导设置。当你添加新的节点和边时,就需要从头开始重新计算整个嵌入;但对于具有数百万个节点的大型图来说,这显然不是一个明智的方法。在归纳设置(inductive setup)中,先前看不见的节点可以根据他们之间的关系和邻域进行嵌入。针对这个主题的研究现在不断增加,iclr 2020 上也有几篇有趣的文章。
文章链接:
lacroix等人使用新的正则化组件扩展了complex嵌入模型,这些正则化组件考虑了嵌入模型中的时间维度。
这项工作非常深刻,具体表现在以下几个方面:1)想法是将连续的时间戳(如年,日及其数值属性)注入到正则化器中;2)作者提出tcomplex,其中所有谓词都具有time属性;提出tntcompex,其中对诸如「born in」这样“永久”的属性进行区别对待。实验表明,tntcompex的性能更好;3)作者介绍了一个新的大型数据集,该数据集基于wikidata statements,但带有开始时间和结束时间限定符,该数据集包含约40万个实体和700万个事实。
time-aware complex (tntcomplex) scores. source: lacroix et al
上图中,你可以看到这个模型如何对描述法国总统的事实的可能性进行评分:自2017年以来,伊曼纽尔·马克龙的得分更高,而弗朗索瓦·奥朗德在2012–2017年的得分更高。
文章链接:
再进一步,xu等人提出了临时图注意力机制tgat(temporal graph attention),用于建模随时间变化的图,包括可以将新的先前未见的节点与新边添加在一起时的归纳设置。其思想是基于经典和声分析中的bochner定理,时间维度可以用傅里叶变换的时间核来近似。时间嵌入与标准嵌入(例如节点嵌入)串联在一起,并且全部输入到自注意力模块中。
source: xu et al
作者将tgat在具有单关系图(不是kg的多关系图)的标准转导与归纳gnn任务上进行了评估,tgat显示出了很好的性能提升。个人认为,这个理论应该可以进一步扩展到支持多关系kg。
再回到传统的感应式kg嵌入设置(transductive kg embedding setup):
— gnn?是的!— multi-多关系?是的!— 建立关系的嵌入?是的!— 适合知识图谱吗?是的!— 适用于节点/图形分类任务吗?是的。
文章链接:
vashishth 等人提出的 compgcn体系结构为你带来了所有这些优点。标准的图卷积网络以及消息传递框架在考虑图时,通常认为边是没有类型的,并且通常不会构建边的嵌入。
知识图谱是多关系图,边的表示对链接预测任务至关重要。对于(berlin,?,germany) 的query,你显然是要预测capitalof,而不是childof。
在compgcn中,首先会为输入的 kg 填充反关系(最近已普遍使用)和自循环关系(用来实现gcn的稳定性)。compgcn采用编码-解码方法,其中图编码器构建节点和边的表示形式,然后解码器生成某些下游任务(如链接预测或节点分类)的分数。
compgcn intuition. source: vashishth et al
节点表示是通过聚集来自相邻节点的消息而获得的,这些消息对传入和传出的边(图中的wi,wo以及那些自循环)进行计数,其中交互函数对 (subject, predicate)进行建模。
作者尝试了加法(transe-style),乘法(distmult-style)和圆相关(hole-style)的交互。在汇总节点消息之后,边的表示将通过线性层进行更新。你几乎可以选择任何你喜欢的解码器,作者选择的是 transe,distmult 和 conve 解码器。compgcn在链接预测和节点分类任务方面都比r-gcn要好,并且在性能上与其他sota模型相当。性能最好的compgcn是使用带有conve解码器的基于循环相关的编码器。
文章链接:
last, but not least,tabacoff和costabello考虑了kge模型的概率校准。简单来说,如果你的模型以90%的置信度预测某个事实是正确的,则意味着该模型必须在90%的时间里都是正确的。但是,通常情况并非如此,例如,在下图中,表明transe倾向于返回较小的概率(有点“悲观”)。
source: tabacoff and costabello
作者采用brier评分来测量校准,采用platt缩放和等渗回归来优化校准评分,并提出了在没有给出“hard negatives”的典型链接预测方案中对负样本进行采样的策略。于是,你可以校准kge模型,并确保它会返回可靠的结果。这是一个非常好的分析,结果表明在一些工业任务上,你可以用kge模型来提升你对自己算法/产品的信心。
不同的知识图谱都有他们自己的实体建模的模式,换句话说,不同的属性集合可能只有部分重叠,甚至urls完全不重叠。例如在wikidata中berlin的url是https://www.wikidata.org/entity/q64,而dbpedia中berlin的url是http://dbpedia.org/resource/berlin。
如果你有一个由这些异质url组成的知识图谱,尽管它们两个都是在描述同一个真实的berlin,但知识图谱中却会将它们视为各自独自的实体;当然你也可以编写/查找自定义映射,以显式的方式将这些url进行匹配成对,例如开放域知识图谱中经常使用的owl:sameas谓词。维护大规模知识图谱的映射问题是一个相当繁琐的任务。以前,基于本体的对齐工具主要依赖于这种映射来定义实体之间的相似性。但现在,我们有gnns来自动学习这样的映射,因此只需要一个小的训练集即可。
我们在「知识图谱@aaai2020」的文章中简要讨论了实体匹配的问题。而在iclr 2020 中这方面的研究有了新的进展。
文章链接:
fey 等人推出了dgmc框架(深度图匹配共识,deep graph matching consensus),这个框架包括两大阶段:
deep graph matching consensus intuition. source: fey et al
1)两个图,源图(gs)和目标图(gt),通过相同的gnn(具有相同的参数,表示为ψ_θ1)获得初始节点嵌入。然后通过乘以节点嵌入,并应用sinkhorn归一化来获得软对应矩阵s(soft correspondences matrix s)。这里可以使用任何最适合任务的gnn编码器。
2)随后将消息传递(也可以看做是图形着色)应用到邻域(标注为ψ_θ2的网络),最后计算出源节点和目标节点之间的距离(ψ_θ3),这个距离表示邻域共识。
作者对dgmc进行了广泛的任务评估——匹配随机图、匹配目标检测任务的图,以及匹配英、汉、日、法版的dbpedia。有意思的是,dgmc在删除关系类型时,却能产生很好的结果,这说明源kg和目标kg之间基本上是单一关系。
于是引入这样一条疑惑:如果在hits@10我们已经做到90 %了,真的还需要考虑所有属性类型以及限制语义吗?
文章链接:
yu 等人介绍了他们的深度匹配框架,这个框架具有两个比较鲜明的特征:聚焦在聚合边缘嵌入、引入一个新的匈牙利注意力(hungarian attention)。匈牙利算法是解决分配问题的经典方法,但它不是可微分的。
作者利用一个黑箱(带有匈牙利注意力)的输出来生成网络结构,然后把这个流进一步地传播。匈牙利注意力的方法,直观来理解一下:
1)初始步骤类似于dgmc,一些图编码器生成节点和边嵌入,且相似矩阵通过sinkhorn规范化来传递;
2)不同的是,生成矩阵被返回到匈牙利黑箱(而不是像dgmc中那样传递迭代消息),从而生成离散矩阵;
3)通过注意力机制与基准进行比较,获得激活图,然后对其进行处理,从而获得loss。
作者仅在cv基准上进行了评估,但由于匈牙利算法的时间复杂度是o(n³),所以如果能把runtime 也放出来,可能会更有趣。
互动小说游戏(interactive fiction games,例如rpg zork文字游戏)非常有趣,尤其是你探索完世界,然后输入一段话,等待游戏反馈的时候。
文章链接:
ammanabrolu 和 hausknecht 提出了一项有关 if 游戏中强化学习的新工作。这个工作中使用了 知识图谱来建模状态空间和用户交互。
source: ammanabrolu and hausknecht
例如,词汇表中有数十个模板和数百个单词。尝试所有可能的排列是不可行的。但当你维护一个可见实体的知识图谱时,agent的可选项就会大幅度减少,于是便可以更快地推进游戏。
在他们提出的编码-解码模型 kg-a2c(knowledge graph advantage actor critic)中,编码器采用gru进行文本输入,并使用图注意力网络构建图嵌入。此外,在解码器阶段使用可见对象的图遮掩(graph mask)。在基准测试中,kg-a2c可以玩28个游戏!
soon they will play computer games better than us meatbags.
很快,电子游戏上,他们将比我们这些菜包子们打的更好了。
目前我们看到,知识图谱已经越来越多地应用到 ai的各个领域,特别是nlp领域。
icml 和acl 随后也将到来,届时我们再见。
雷锋网雷锋网
via
专题