论文浅尝 | 大规模知识图谱中的知识图谱补全和多跳推理

news2024/11/24 1:51:38

4f914156eaf72c2cf90d9290176f8520.png

笔记整理:刘健宇,东南大学硕士,研究方向为知识图谱规则学习与推理

链接:https://dl.acm.org/doi/abs/10.1145/3534678.3539405

动机

知识图谱(KG) 以头-关系-尾三元组的形式捕获知识,是许多人工智能系统中的重要组成部分。KG上有两个重要的推理任务:(1)单跳知识图谱补全,涉及预测 KG 中的各个链接;(2)多跳推理,其目标是预测哪些KG实体满足给定的逻辑查询。基于嵌入的方法通过首先计算每个实体和关系的嵌入,然后使用它们形成预测来解决这两个任务。然而,现有的可扩展KG嵌入框架仅支持单跳知识图谱补全,无法应用于更具挑战性的多跳推理任务。

基于嵌入对KG进行多跳推理存在两个重大挑战:(1)在算法方面,给定一个庞大的 KG(具有数亿个实体),通过实例进行训练不再可行。(2)在系统方面,目前单跳大规模 KG 嵌入框架是基于图分区的,但多跳推理需要遍历图中的多个关系,这通常会跨越多个分区,因而造成推理上的困难。

本文提出Scalable MultihOp REasoning (SMORE)实现在大规模知识图谱上进行单跳和多跳推理,通过对KG进行实例化查询在线生成正负样例,并提出了一种双向拒绝抽样方法有效地为实例化查询获取高质量的负样例。针对挑战2,设计一个异步调度程序,通过重叠采样、异步嵌入读/写、神经网络前馈和优化器更新来最大化 GPU 计算的吞吐量,加速在大规模KG上进行推理。

贡献

本文的主要贡献有:

(1) 提出了一个名为SMORE的框架,是第一个支持知识图谱单跳和多跳推理的通用框架。

(2) 提出了一种新颖的双向拒绝抽样方法,实现了在线训练数据生成复杂度的平方根降低。

(3) 设计了一种分布式训练、异步更新机制,避免繁重的CPU/GPU内存读/写,用于在每个随机梯度更新中对各个阶段进行流水线处理。

方法

1. 训练数据采样

针对无法对大规模知识图谱所有实例进行训练获取嵌入表示的问题,本文提出动态采样、实例化查询获取训练实例以进行多跳推理的对比学习。

为了生成具有一组正实体和负实体的训练示例,首先从一组查询逻辑结构(见图1)中实例化对给定知识图谱的查询。实例化查询的根代表一个已知的肯定(答案)实体,然后反向定向采样使用深度优先搜索 (DFS)对从根(答案)到叶(锚点实体)的查询逻辑结构。在 DFS 期间,查询结构中的每个节点都与知识图谱上的一个实体相对应,并且边与之前关联的实体的关系相对应。在实例化(节点/边缘接地)查询结构后,获得正样本。

76e192ed8b6eddabd4579bb01cc21557.png

图1 不同的查询逻辑结构以及双向拒绝采样使用的最佳节点切割(阴影节点)

对于负样本的获取,本文使用双向拒绝采样。受双向搜索的启发,首先在查询计算计划中获得Node cut,即切割每个叶节点和根节点之间的所有路径的节点子集。然后执行双向搜索:遍历从叶子(锚点)到Node cut,并缓存在遍历中获得的实体——前向缓存。然后对负实体进行采样,从根遍历到Node cut,并通过检查缓存实体和遍历集的重叠来验证它们是否为真负实体——反向验证。

2. 训练策略

SMORE结合了 CPU 和 GPU 的使用,其中密集矩阵计算部署在 GPU 上,采样操作在 CPU 上。

对于拥有超过数百万个实体的大型 KG,嵌入表示不能存储在 GPU 中,SMORE将嵌入矩阵放在共享 CPU 内存上,同时在每个单独的 GPU 中放置其他参数,例如神经逻辑运算符。分布式训练流程如下:

(1) 从采样器  中收集一小批训练样本  。

(2) 将相关实体嵌入从 CPU 加载到 GPU。

(3) 在本地计算梯度,并执行梯度 θ 。更新本地副本 θ 。

(4) 用 θ 异步更新共享 θ 。

其中 θ 是嵌入矩阵, θ 是其他参数的副本。

本文为了避免繁重的CPU/GPU内存读/写,提出一种异步机制,用于在每个随机梯度更新中对各个阶段进行流水线处理,包含四个元线程:

(1) 多线程采样器:每个工作节点维护一个采样器  ,该采样器可以访问共享的KG。采样器包含一个线程池,可以并行地对查询进行采样,并获取相应的正/负答案。

(2) 稀疏嵌入读/写:对于嵌入矩阵 θ ,创建一个单独的后台线程和一个CUDA流用于嵌入读写。当将某些实体的嵌入加载到GPU时,后台线程首先将其加载到固定的内存区域中,然后CUDA异步流将执行固定内存到GPU内存的复制。该读取操作是非阻塞的,只有在主CUDA流中的CUDA运算符请求时才会同步。写操作类似但方向相反。

(3) 稠密计算:当训练数据准备好并将锚实体的嵌入  获取到GPU后,模型开始前馈。在获取局部梯度 θ 和 θ 之后,会首先异步调用 θ 的更新操作,而不会阻塞,同时AllReduce操作将开始,随后是GPU上 θ 的密集参数更新。

(4) 具有异步读写的稀疏优化器:与 θ 不同,每个随机更新中只涉及 θ 的一小部分行。因此,只跟踪 θ,θ, θ 及其梯度,即与正/负实体和锚实体相关的嵌入。

实验

本文在KG完成和KG上的多跳推理任务上评估 SMORE。实验任务是给定一个不完整的 KG,目标是训练查询嵌入方法以发现复杂逻辑查询的缺失答案。数据集采用FB15k、FB15k-237、NELL。

对于算法效率提升的表现,图2结果表明,双向采样器相比遍历能够实现计算成本的平方根降低,验证了所提出的双向采样器相对于朴素的穷举遍历方法的加速。

e74d93862bd2088ed12b1d732aa375b2.png

图2 在不同查询结构上执行 KG 遍历与双向采样的效率比较

由于SMORE采用了查询采样方案,可以为一批采样的查询共享负样本,从而显着提高了各种查询嵌入的端到端训练效率。如表1所示,实验表明SMORE平均提高了119.4%的速度,并减少了30.6%的GPU内存使用率。

3dbf4cae39ec9f61c2acf5e8cdb74ceb.png

表1 SMORE与KGReasoning在小型 KG 上的性能比较

此外还发现,在多卡GPU上进行训练,训练速度随着GPU的数量几乎呈线性增长,这表明异步训练机制的有效性。

8e2243f951e677535a6c5d563dcd66ee.png

表2 各框架在Freebase KG 上运行时的性能

从表2结果分析可知,SMORE在单跳链接预测(KG补全)运行时性能与最先进的大型 KG 框架(包括 Marius、DGL-KE 和 PBG)相比较,SMORE 在 1-GPU 设置中的运行时间明显快于 PBG,但比 Marius 稍慢。它还比其他系统具有更好的扩展性,在多GPU设置中运行速度显著比DGL-KE 和 PBG更快,表明系统在运行效率上的优越性。

对于推理预测方面的表现,实验结果表明,在FB15k上,SMORE在Q2B模型中将MRR提高了3.54%,证明了系统对提升KG推理的有效性。在面对大型 KG 的查询回答,由于 GPU 内存不足和计算量大的详尽查询采样,基线方法无法扩展到如此庞大的 KG,而由于SMORE 使用具有稀疏嵌入和优化器的异步设计,可以轻松地将查询嵌入扩展到这些大型 KG。

此外实验比较了在不同采样器下训练的Q2B模型的性能,结果表明,采用双向采样器(bidirectional)的性能要优于穷举采样器(exhaustive traversal),而随机采样的性能最差,证明了双向采样策略的有效性。

总结

本文研究知识图谱的补全和多跳推理问题。作者提出了一个名为SMORE的框架,它是第一个支持知识图谱单跳和多跳推理的通用框架。SMORE可实现在大规模知识图谱上进行单跳和多跳推理。SMORE的运行时性能关键在于一种新颖的双向拒绝抽样,它实现了在线训练数据生成复杂度的平方根降低。此外,SMORE利用异步调度、重叠CPU数据采样、GPU嵌入计算等策略降低了推理复杂度,在单GPU和多GPU设置下实现了与最先进框架相当甚至更好的运行时性能。


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

72887d5a5abbfde13117556f8dbbc277.png

点击阅读原文,进入 OpenKG 网站。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/575303.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python文件另存为教程:让文件保存到你想要的地方

Python 文件另存为教程:让文件保存到你想要的地方 最近,我看到有人在问如何使用Python来另存文件。对于许多初学者或非技术人员来说,这可能看起来很困难,但实际上,Python 提供了一些非常简单的方法来达到这一目的。下…

产品发布+联合演讲+认证+奖项丨云和恩墨在openGauss Developer Day 2023主论坛大放异彩...

openGauss Developer Day 2023 5月26日,一场数据库开发者年度盛会「openGauss Developer Day 2023」在北京昆泰嘉瑞文化中心成功召开。大会汇聚产学研用各界知名专家分享 openGauss 社区的技术创新、优秀实践和生态成果,吸引了线上线下数千名开发者、技术…

大手笔!微软一口气发布了 3 款开发者工具。。

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 昨天我发了一篇 Build 大会相关的生产力产品,介绍了未来 Windows 将集成的一系列 AI 特性,以及如何帮助人们更好的利用 AI,辅助完成各类繁琐的工作。 今…

Go1.21 速览:正式结束对 macOS 10.13 和 10.14 的支持

大家好,我是煎鱼。 根据 Go 语言的版本发布规律,一般是 2 月份和 8 月份各会发布一个新的版本。当前是 Go1.20。也就是在 8 月份会发布 Go1.21 这一个新版本。 在这个新版本,将会正式的结束对 macOS 10.13 和 10.14 的支持,并禁用…

27 VueComponent 计算属性的实现

前言 这是最近的碰到的那个 和响应式相关的问题 特定的操作之后响应式对象不“响应“了 引起的一系列的文章 主要记录的是 vue 的相关实现机制 呵呵 理解本文需要 vue 的使用基础, js 的使用基础 测试用例 用例如下, 我们这里核心关注 counterPlus100 这个计算变量 问…

JavaScript键盘事件

目录 一、keydown:按下键盘上的任意键时触发。 二、keyup:释放键盘上的任意键时触发。 三、keypress:在按下并释放能够产生字符的键时触发(不包括功能键等)。 四、input:在文本输入框或可编辑元素的内容…

pytroch实战12:基于pytorch的网络结构可视化

基于pytorch的网络结构可视化 前言 ​ 之前实现了一些常见的网络架构,但是有些网络架构并没有细说,并且网络传输过程中shape的变化也很少谈及过。 ​ 除此之外,前面的实现很少涉及到可视化的内容,比如损失值的可视化、网络结构的…

MySQL的下载、安装、配置(图文详解)

MySQL的下载、安装、配置(图文详解) 一、MySQL的4大版本二、软件的下载三、MySQL8.0 版本的安装四、配置MySQL8.0五、配置MySQL8.0 环境变量六、MySQL5.7 版本的安装、配置七、安装失败问题 一、MySQL的4大版本 MySQL Community Server 社区版本&#xf…

专高六第一次项目答辩学到的知识点【未完成】

目录标题 1、animation和traslation定义动画的区别?2、微信小程序的支付流程?3、canvas和svg有什么区别?4、app自定义导航栏,如果说打包成小程序导航栏如何适配?4、express权限,接口权限?5、一键…

如何在Linux系统安装Nginx

博主介绍:✌全网粉丝4W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战、定制、远程,博主也曾写过优秀论文,查重率极低,在这方面…

设计思维及在Thoughtworks的应用

图:史江鸿 第一次听到"设计思维"是在2016年,那时我刚加入Thoughtworks。我总能在各种场合听到这个词,似乎它在Thoughtworks具有不可撼动的地位。然而,作为QA角色,我并没有机会深入了解它。 我曾感到疑惑&…

2-python的变量类型

内容提要 主要介绍了python中的变量类型,之前不经常用的点有: 列表的下标可以是负数,无论正负,都是从左侧开始,从左到右依次递增。 还有截取操作[头:尾:步长),表示连接,*表示重复。 列表与元组…

springboot+vue地方废物回收机构管理(java项目源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的地方废物回收机构管理。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者&#xff1…

leetcode--删除链表的倒数第N个节点(java)

删除链表的倒数第N个节点 Leetcode 19 题解题思路代码演示链表专题 Leetcode 19 题 19 删除链表的倒数第N个节点 -可以测试 题目描述: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点 示例1: 输入:he…

javascript基础五:深拷贝浅拷贝的区别?如何实现一个深拷贝?

一、数据类型存储 JavaScript中存在两大数据类型: 基本类型引用类型 基本类型数据保存在在栈内存中 引用类型数据保存在堆内存中,引用数据类型的变量是一个指向堆内存中实际对象的引用,存在栈中 二、浅拷贝 浅拷贝,指的是创建新…

springcloud分布式架构网上商城(java项目源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的分布式架构网上商城。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:…

LLM时代NLP研究何去何从?一个博士生的角度出发

深度学习自然语言处理 原创作者:Winni 前言 最近,大语言模型(LLMs)在许多任务上表现出接近人类水平的性能,这引发了行业兴趣和资金投入的激增,有关LLMs的论文最近也层出不穷。 看起来,NLP领域似…

博客系统(ssm版本)

在前面的文章中给大家介绍过博客系统的servlet版本,但是servlet的技术非常的老旧,我们在企业中用的都是springboot相关的框架,本章内容就是讲述如何一步一步的利用ssm的技术来实现博客系统。 目录 前期配置 创建数据库 配置文件 公共文件…

30 VueComponent 事件的绑定

前言 这是最近的碰到的那个 和响应式相关的问题 特定的操作之后响应式对象不“响应“了 引起的一系列的文章 主要记录的是 vue 的相关实现机制 呵呵 理解本文需要 vue 的使用基础, js 的使用基础 测试用例 用例如下, 我们这里核心关注 事件的处理流程 问题的调试 整个…

c# cad二次开发 通过选择txt文件将自动转换成多段线

c# cad二次开发 通过选择txt文件将自动转换成多段线,txt样式如下 using System; using System.Collections.Generic; using System.Text; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Runtime; usi…