NSCaching: Simple and Efficient NegativeSampling for Knowledge Graph Embedding

news2024/11/22 7:43:07

摘要

知识图嵌入是数据挖掘研究中的一个基本问题,在现实世界中有着广泛的应用。它的目的是将图中的实体和关系编码到低维向量空间中,以便后续算法使用。负抽样,即从训练数据中未观察到的负三元组中抽取负三元组,是KG嵌入的重要步骤。近年来,生成对抗网络(GAN)被引入到负采样中。这些方法通过对分数较大的负三元组进行采样,避免了梯度消失的问题,从而获得了更好的性能。然而,使用GAN会使原始模型变得更加复杂和难以训练,因此必须使用强化学习。在本文中,由于观察到具有大分数的负三元组很重要但很少见,我们提出使用缓存直接跟踪它们。然而,如何从缓存中采样和更新缓存是两个重要的问题。我们精心设计了解决方案,不仅效率高,而且在勘探和开采之间取得了良好的平衡。通过这种方式,我们的方法作为先前基于gan的方法的“提炼”版本,它不会浪费训练时间在附加参数上以拟合负三元组的完整分布。大量的实验表明,我们的方法可以在各种KG嵌入模型上获得显著的改进,并且优于基于GAN的最先进的负采样方法。

1.介绍

均匀采样因其简单、高效而被广泛应用于KG嵌入中[40]。然而,这是一个固定的方案,忽略了训练过程中负三元组分布的变化。因此,它严重地受到梯度消失问题的困扰。具体而言,如文献[39]所观察到的,样本集中大多数阴性三胞胎都是易于分类的三胞胎。由于评分函数倾向于给观察到的(正的)三元组很大的值,随着训练的进行,大多数未观察到的(可能是负的)三元组的分数(从评分函数中评估)变得更小。因此,当负三元组被均匀采样时,我们很可能会选择一个梯度为零的三元组。因此,KG嵌入的训练过程将受到这种消失梯度的阻碍,而不是优化算法的阻碍。这样的问题阻碍了KG嵌入获得理想的性能。一种更好的抽样方案,即伯努利抽样,在[42]中被引入。通过考虑头尾之间的一对多、多对多和多对一的映射关系,改进了均匀采样。然而,它仍然是一个固定的采样方案,受到梯度消失的影响。

因此,高质量的负三胞胎应该有较大的分数。为了在训练过程中有效地捕获它们,我们对负采样有两个主要挑战:(i)如何捕获和建模负三联体的动态分布?(ii)我们如何以一种有效的方式对负三联体进行采样?最近,有两个开创性的作品,即IGAN[39]和KBGAN[9],试图解决这些挑战。他们的想法都是用生成对抗网络(GAN)取代固定的采样方案[16]。然而,基于gan的解决方案仍然存在许多问题。首先,由于引入了一个额外的生成器,GAN增加了训练参数的数量。其次,GAN训练可能存在不稳定性和退化性[1],[18],并且已知IGAN和KBGAN中使用的强化梯度[44]具有高方差。这些缺点导致不同评分函数的性能不稳定,因此对于IGAN和KBGAN都必须进行预训练。

在本文中,为了解决高质量负采样的挑战,同时避免使用GAN带来的问题,我们提出了一种新的基于缓存的负采样方法,称为NSCaching通过实证研究负样本的得分分布,我们发现得分分布是高度偏态的,即只有少数负三胞胎得分大,其余的都是无用的。这一观察结果促使我们在训练过程中只维护高质量的负三联体,并动态更新所维护的三联体。首先,我们将高质量的负三元组存储在缓存中,然后设计重要性采样(IS)策略来更新缓存。IS策略既能捕捉到分布的动态特征,又能提高nscing的效率。此外,我们还很注意“探索和开发”,它平衡了探索所有可能的高质量负三联体和从缓存中的几个大分数负三联体中采样。我们的工作贡献总结如下:

  1. 我们提出了一种简单有效的负采样方案——NSCaching。它是一种通用的负抽样方案,可以注入到所有常用的KG嵌入模型中。与IGAN和KBGAN相比,nscach具有更少的参数,并且可以像原始的KG嵌入模型一样使用梯度下降进行训练。
  2. 在NSCaching中,我们提出了统一的缓存采样策略和IS策略来更新缓存,同时要注意“探索和开发”。
  3. 我们分析了NSCaching与self-paced learning之间的联系[3],[24]。我们证明NSCaching可以先学习容易分类的样本,然后逐渐切换到更难分类的样本。
  4. 我们对四个流行的数据集WN18和FB15K,以及它们的变体WN18RR和FB15K237进行了实验。实验结果表明,我们的方法是非常有效的,并且比目前最先进的方法,即IGAN和KBGAN更有效。

III. PROPOSED MODEL

在本节中,我们首先描述我们在第III-A节中的关键观察结果,这些观察结果被现有作品所忽略,但却是我们工作的主要动机。在第III-B节中描述了所提出的方法,其中我们展示了如何通过缓存解决负采样中的挑战。最后,我们在Section III-C中展示了NSCaching和self-pace learning之间有趣的联系[24],这进一步解释了良好的性能。

A. Closer Look at Distribution of Negative Triplets

•阴性三胞胎的得分分布高度倾斜。

•无论训练(图1(a))和正三胞胎的选择(图1(b))如何,只有少数负三胞胎得分高。

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

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

相关文章

Open CASCADE学习|显示文本

目录 1、修改代码 Viewer.h: Viewer.cpp: 2、显示文本 OpenCasCade 你好啊 霜吹花落 1、修改代码 在文章《Open CASCADE学习|显示模型》基础上,增加部分代码,实现对文本显示的支持,具体如下: Viewer…

随机链表的深拷贝

目录 一、何为深拷贝? 二、题目 三、思路 1.拷贝节点插入到原节点后面 2.控制拷贝节点的random 3.脱离原链表 : 尾插的思想 四、代码 五、附加 一、何为深拷贝? 一个引用对象一般来说由两个部分组成:一个具名的Handle,也就…

cinder学习小结

1 官方文档 翻译官方文档学习 链接Cinder Administration — cinder 22.1.0.dev97 documentation (openstack.org) 1.1 镜像压缩加速 在cinder.conf配allow_compression_on_image_upload True可打开开关 compression_format xxx可设置镜像压缩格式,可为gzip 1.2 …

SPP和SPPF的比较

SPP的结构是将输入并行通过多个不同大小的MaxPool层,然后做进一步融合,能在一定程度上解决多尺度问题。 而SPPF结构则是讲输入串行通过多个5*5的MaxPool层,这里需要注意两个5*5的MaxPool层和一个9*9的MaxPool的计算结果是一样的,而…

[蓝桥杯 2022 省 A] 求和

[蓝桥杯 2022 省 A] 求和 题目描述 给定 n n n 个整数 a 1 , a 2 , ⋯ , a n a_{1}, a_{2}, \cdots, a_{n} a1​,a2​,⋯,an​, 求它们两两相乘再相加的和,即 S a 1 ⋅ a 2 a 1 ⋅ a 3 ⋯ a 1 ⋅ a n a 2 ⋅ a 3 ⋯ a n − 2 ⋅ a n − 1 a n − 2 ⋅ a…

3、创建项目,什么是路由

一、创建项目 第一次全局安装脚手架 npm install -g vue/clivue create 项目名 二、什么是路由? 路由就是一组 key-value 的对应关系多个路由,需要经过路由器的管理 1、后端路由: 每个url地址都对应着不同的静态资源对于普通的网站。所有…

记录整合ssm项目时的报错java: Compilation failed: internal java compiler error

启动的时候报错java: Compilation failed: internal java compiler error,这说明是内部编译器错误。如下图所示: 大概率是jdk版本不兼容的问题,也有IDEA初始划分的堆内存不够的原因。 查阅了很多博客的解决方法也都是上述两种,但…

C++引用学习day2

思维导图 定义一个矩形类(Rectangle),包含私有成员:长(length)、宽(width), 定义成员函数: 设置长度:void set_l(int l) 设置宽度:void set_w(int w) 获取长度&#…

vscode 配置c++环境——3个文件搞定!!!

前提: 在vscode中安装了c扩展 创建文件settings.json {"files.associations": {"string": "cpp","vector": "cpp","array": "cpp","atomic": "cpp","*.tcc"…

Springboot快速整合bootstrap-table使用,接口对接

这个表格加持还是不错了,自带了全局搜索,分页,数据导出,卡片视图,等,本次整合添加了数据添加弹窗和编辑数据回显弹窗,附完整页面代码,只需要拿过来替换自己实际的接口即可。 效果图 …

轻松掌握C语言中的sqrt函数,快速计算平方根的魔法秘诀

C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程…

ES6 字符串/数组/对象/函数扩展

文章目录 1. 模板字符串1.1 ${} 使用1.2 字符串扩展(1) ! includes() / startsWith() / endsWith()(2) repeat() 2. 数值扩展2.1 二进制 八进制写法2.2 ! Number.isFinite() / Number.isNaN()2.3 inInteger()2.4 ! 极小常量值Number.EPSILON2.5 Math.trunc()2.6 Math.sign() 3.…

力扣hot100:207. 课程表

这是一道拓扑排序问题,也可以使用DFS判断图中是否存在环。详情请见:官方的BFS算法请忽略,BFS将问题的实际意义给模糊了,不如用普通拓扑排序思想。 数据结构:图的拓扑排序与关键路径 拓扑排序: class Sol…

详解:写作和赚钱的 4 个关系!看完你一定会忍不住想开始写!

飞书文档的加密很强,也没有和自家的豆包大模型融合,所以只能通过其他方式获取文档的内容。 (1)将飞书文档转换为PDF,要用到浏览器插件: GoFullPage - Full Page Screen Capture - Microsoft Edge Addons …

ElasticSearch启动报错:Exception in thread “main“ SettingsException

Exception in thread "main" SettingsException[Failed to load settings from [elasticsearch.yml]]; nested: ParsingException[Failed to parse object: expecting token of type [START_OBJECT] but found [VALUE_STRING]]; 这个报错说明elasticsearch.yml这个配…

垃圾回收:垃圾回收器

目录 垃圾回收器 评估GC的性能指标 7种典型的垃圾回收器 Serial回收器:串行回收 ParNew回收器:并行回收 Parallel回收器:吞吐量优先 CMS回收器:低延迟 G1回收器:区域化分代式 G1回收过程1-年轻代GC G1回收过程…

Java代码基础算法练习-报数问题-2024.03.26

任务描述: 有n个人围成一个圆圈分别编号1~n,从第1个到m循环报数,凡是报到m者离开,求n个 人离开圆圈的次序。 任务要求: 代码示例: package M0317_0331;import java.util.ArrayList; import java.util.List; import j…

档案室升级改造基建方面需要考虑哪些问题

升级和改造档案室可能需要以下材料: 1. 墙壁和地板材料:选择耐用、易于清洁的材料,如瓷砖、大理石、地板、木材或维护低的地毯等。 2. 墙体材料:可能需要新的墙壁材料来分隔出更多的空间,例如石膏板、砖块或玻璃隔断等…

基于RAG的大模型知识库搭建

什么是RAG RAG(Retrieval Augmented Generation),即检索增强生成技术。 RAG优势 部分解决了幻觉问题。由于我们可以控制检索内容的可靠性,也算是部分解决了幻觉问题。可以更实时。同理,可以控制输入给大模型上下文内容的时效性&#xff0c…

【Java程序设计】【C00369】基于(JavaWeb)Springboot的笔记记录分享平台(有论文)

[TOC]() 博主介绍:java高级开发,从事互联网行业六年,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,博客中有上百套程序可供参考,欢迎共同交流学习。 项目简介 项目获取 🍅文末点击…