COME模型实现常识型知识图谱自动构建,表现接近人类!深度AI

2019-07-09    来源:AI基地    编辑:吉吉吴
常识型知识图谱实现自动构建。

       知识图谱是人工智能研究的热门领域。它能够提供先验知识,使机器学习在常识的基础上更加智能。然而,自动化的知识图谱构建一直是该领域需要解决的难题。传统的抽取方法(extractive method)被认为效果不佳,需要大量人力投入和调整。近期,艾伦人工智能实验室和微软的研究人员提出了一种利用预训练语言模型自动构建常识型知识图谱的方法,已接近人类的表现。论文已被 NLP 顶会 ACL 2019 接收。
 

       链接:https://arxiv.org/pdf/1906.05317v1.pdf
 

       自动知识图谱的构建一般关注百科知识,从而被限定在一个定义好的实体和可建模关系的空间内。但是,常识知识并不能很好地符合「实体 1-关系-实体 2」这样常用的知识图谱构建结构。


       同时,近期深度语境语言模型(即预训练语言模型)的研究进展有助于探索新的模式——一种超越传统抽取方法(extractive method)的常识知识图谱构建方法。这些大规模语言模型在调整底层语言表示来解决末端任务时展现出了卓越性能,在多个复杂问题上达到当前最佳表现。
 

       研究人员将自动知识图谱构建视为常识生成任务,并探索了大型语言模型生成自动构建常识知识图谱所需知识的能力。他们提出了 COMmonsEnse Transformers (COMET),可以根据自然语言生成丰富多样的常识描述。COMET 使用现有的三元组作为知识的种子集进行训练。基于这些种子集,预训练语言模型调整其学得语言表示,用于生成知识,并输出高质量的新型三元组。研究表明,深度预训练语言模型可以生成常识知识图谱所需的显式知识,并取得了很好的结果。实验显示,COMET 可以生成被人类评价为「高质量」的知识,在 ATOMIC 上可以达到 77.5% 的精确度,在 ConceptNet 上可以达到 91.7% 的精确度,已经接近人类在这些资源中的表现。研究结果说明,使用生成常识模型进行自动常识知识图谱补全很快可以成为抽取模型的有效替代方法。
 

图 1:COMET 从一个已有知识图谱中学习(实线),并生成新的节点和边(虚线)
 

模型架构

任务


        COMET 使用知识三元组作为种子集进行预训练,并使用训练好的语言模型构建常识知识图谱。三元组向 COMET 提供知识图谱的结构和关系信息,COMET 则调整预训练语言模型的语言表示,从而在种子知识图谱中添加新的节点和边。
 

        具体来说,假设 COMET 获得的训练知识图谱是自然语言三元组,形式如 {s,r,o}。在这个三元组中,s 是三元组的 subject,r 是实体关系,o 是三元组的 object。例如,和「taking a nap」(睡一小会儿)有关的 ConceptNet 三元组是这样的:s=「take a nap」,r=Causes,o=「have energy」。自动构建知识图谱的任务就是根据 s 和 r 生成 o。
 

Transformer


        研究人员使用 Radford et al. (2018) (GPT) 中的 Transformer语言模型架构,GPT 使用了具备多头缩放点乘注意力机制的多个 transformer 模块。


输入编码


       在模型的输入部分,研究人员将三元组 {s, r, o} 表示为三元组中每一项所包含单词的序列,如下所示(X 表示输入单词):

由于 transformer 中没有 token 顺序的概念,因此,对于序列中每个 token 的绝对位置建模了位置嵌入向量 p_t。对于任意输入词 x_t ∈ X,输入编码是其词嵌入向量 e_t 和在序列中的绝对位置嵌入向量 p_t 的和:

 

COMET 模型架构


       该模型遵循 Radford et al.(2018) 的GPT 模型架构,研究人员用 12 层、768 个隐藏层维度、12 个注意力头初始化 COMET。Dropout率为 0.1,使用 GeLU 作为激活函数。训练批大小为 64。

图 2:模型架构图示。a)多头注意力模块;b)Transformer 模块内部的计算方法;c)对每个 token 进行处理的方式


模型训练
 

       COMET 用于根据给定的 subject s 和关系 r,生成三元组中的 object o。具体来说,给定构成 s 和 r 的 token [X^s,X^r] 作为输入,COMET 模型需要生成所有组成 o 的 token X^o。
 

损失函数


       COMET 需要最大化预测 X^o 的条件似然:
 

下图 3 展示了在不同训练任务中,s、r 和 o 中 token 的组织形式

 

图 3:输入 token 设置对于 ATOMIC 数据集,输入的顺序为:先是三元组 subject 的 token X^s,紧接着是 [MASK] token,然后是关系 token X^r,最后是三元组 object 的 token X^o。对于 ConceptNet 数据集,则需要在关系实体 X^r 和 object token X^o 之间再加入一个 [MASK] token,因为 X^r 在 ConceptNet 中可能有很多个 token。
 

数据集


       COMET 使用现有的三元组作为知识的种子集进行训练,来学习构建常识知识图谱。该研究使用了 ATOMIC 和 ConceptNet 作为知识种子集。
 

       ATOMIC 数据集有 87 万个三元组,包括围绕一些特定事件提示(如「X 去商店」)的大量社会常识知识。具体来说,ATOMIC 将常识分为九个维度,包括事件的起因(例如,「X 需要开车到那里」)、事件对主体的影响(例如,「获得食物」),以及其对另一参与方的直接或间接影响(例如,「其他人可以吃饱」)。
 

      在刚才的例子中(「X 去商店」)是 s,而维度(「X 要...」)是实体关系 r,而起因/影响(「获得食物」)是 o。该研究使用了 710k 个三元组作为训练集,80k 作为验证集,87k 作为测试集。

ConceptNet 是由 Open Mind Common Sense(OMCS)构成的数据集。三元组是典型的「s-r-o」结构(例如,「睡一会儿-导致-获得能量」)。最可信的 1200 个三元组被用于构建测试集,另外 1200 个构成两个验证集,还有 100k 的训练集。这个数据集总共有 34 个关系类型。
 

实验结果

ATOMIC 实验结果

 

表 1:对各个模型生成 ATOMIC 常识的质量和新颖程度进行自动评估的结果
 

表 2:对各个模型生成 ATOMIC 常识的人类打分结果
 


 

表 5:从 ATOMIC 验证集中随机抽取的新生成。新生成指的是不在训练集中的三元组。每个三元组都由人类评估并判断是否合理
 

ConceptNet 实验结果
 

表 6:ConceptNET 生成结果
 

表 7:从 ConceptNet 的验证集随机抽取的新生成

1
3