NSCaching: Simple and Efficient NegativeSampling for Knowledge Graph Embedding

摘要

知识图嵌入是数据挖掘研究中的一个基本问题,在现实世界中有着广泛的应用。它的目的是将图中的实体和关系编码到低维向量空间中,以便后续算法使用。负抽样,即从训练数据中未观察到的负三元组中抽取负三元组,是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.mzph.cn/news/772473.shtml

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

相关文章

第四百二十六回

文章目录 1. 概念介绍2. 实现方法2.1 原生方式2.1 插件方式 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何修改程序的桌面图标"相关的内容,本章回中将介绍如何处理ListView中的事件冲突.闲话休提,让我们一起Talk Flutter吧。 1. 概念介…

利用vite创建vue3项目

vue3 项目推荐使用vue官方推荐的vite手脚架创建,vue3项目,使用vue-cli 会存在一些问题 1.node的版本 目前的vue3需要至少需要node18及以上,可以安装nvm node包管理器可以快速切换node版本,因为node的版本的兼容性真是一言难尽。…

第十四届蓝桥杯C++A组(A/B/C/D/E/H)

文章目录 A.幸运数B.有奖问答C.平方差D.更小的数E.颜色平衡树H.异或和之和 A.幸运数 /*纯暴力*/ #include <bits/stdc.h>using namespace std;void solve() {int sum 0;for(int i 1; i < 100000000; i ){int n i;int a[11];int j 1;for(; n ! 0; j ){a[j] n % …

C++ 友元函数

目录 如果觉得有用的话&#xff0c;给小弟点个赞吧&#xff01;哈哈哈哈&#xff0c;谢谢嘞&#xff01; 概念&#xff1a; 如何理解&#xff1f; 概念&#xff1a; 友元&#xff1a;慎用&#xff08;突破封装&#xff09; 友元函数&#xff1a;在函数前加friend的函数称为…

网页代理ip怎么设置的

众所周知&#xff0c;现在网络安全和隐私保护是我们非常关注的问题。为了更好地保护自己的隐私&#xff0c;提高上网的安全性&#xff0c;使用代理IP成为了很多人的首选。 那么&#xff0c;网页代理IP是怎么设置的呢&#xff1f;下面&#xff0c;就让我来一一为大家介绍。 一、…

CMake学习笔记(二)从PROJECT_BINARY_DIR看外部编译和内部编译

目录 外部编译 内部编译 总结 外部编译 看如下例子&#xff1a;我在EXE_OUT_PATH中建立了文件夹build、文件夹src2 和 文件CMakeLists.txt 其中EXE_OUT_PATH/CMakeLists.txt的内容如下&#xff1a; PROJECT(out_path) ADD_SUBDIRECTORY(src2 bin2) MESSAGE(STATUS "m…

(一)whatsapp 语音通话基本流程

经过了一整年的开发测试&#xff0c;终于将whatsapp 语音通话完成&#xff0c;期间主要参考webrtc的源码来实现.下面简要说一下大致的步骤 XMPP 协商 发起或者接受语音通话第一步是发起XMPP 协商&#xff0c;这个协商过程非常重要。下面是协商一个包 <call toxxxs.whatsap…

【大模型基础】什么是KV Cache?

哪里存在KV Cache&#xff1f; KV cache发生在多个token生成的步骤中&#xff0c;并且只发生在decoder中&#xff08;例如&#xff0c;decoder-only模型&#xff0c;如 GPT&#xff0c;或在encoder-decoder模型&#xff0c;如T5的decoder部分&#xff09;&#xff0c;BERT这样…

Protocol Buffers设计要点

概述 一种开源跨平台的序列化结构化数据的协议。可用于存储数据或在网络上进行数据通信。它提供了用于描述数据结构的接口描述语言&#xff08;IDL&#xff09;&#xff0c;也提供了根据 IDL 产生代码的程序工具。Protocol Buffers的设计目标是简单和性能&#xff0c;所以与 XM…

(执行上下文作用域链)前端八股文修炼Day4

一 作用域作用域链 作用域&#xff08;Scope&#xff09;是指程序中定义变量的区域&#xff0c;作用域规定了在这个区域内变量的可访问性。在 JavaScript 中&#xff0c;作用域可以分为全局作用域和局部作用域。 全局作用域&#xff1a;在代码中任何地方都可以访问的作用域&am…

基于Springboot的狱内罪犯危险性评估系统的设计与实现(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的狱内罪犯危险性评估系统的设计与实现&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#…

宝塔部署项目

如何在云服务器上使用宝塔 登录到你的云服务器后&#xff0c;执行宝塔面板安装命令&#xff0c;阿里云服务器网使用的CentOS操作系统&#xff0c;命令如下 yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh …

题。。。。

O - 胜利大逃亡(续) 题目分析 bfs状态压缩&#xff08;在bfs的基础上&#xff0c;存储持有不同钥匙时&#xff0c;此点位是否走过的情况&#xff09;&#xff1b; -----状态压缩使用二进制实现&#xff0c;同时通过位运算修改是否转移至另一状态&#xff08;详情见代码及注释…

解决 Xshell 等工具连接虚拟机失败

这里以 Xshell 等工具连接 Linux 虚拟机为例 对于我们使用 Xshell 等工具连接虚拟机失败&#xff0c;我们可以从以下的几个方面进行检查和解决 检查连接工具中的连接会话配置是否正确 对于这方面&#xff0c;我们要检查连接工具中连接会话配置的虚拟机 IP 地址和端口号是否正…

Postman核心功能解析-参数化和测试报告

一、参数化处理 参数化&#xff1a;针对于某一个接口&#xff0c;有大量的的测试数据需要批量验证&#xff0c;一个一个的更改请求参数太耗时耗力&#xff0c;使用参数化批量处理数据会比较高效&#xff0c;常规通过文档参数化实现。 创建文件 格式CSV 文件内第一行信息 需要…

操作系统的理解|冯·若依曼体系结构|进程的状态

操作系统的理解 冯诺伊曼体系结构为什么必须通过内存然后到cpu存储金字塔冯诺伊曼结构的改进在哪&#xff1f;我们可不可以全部用寄存器来做存储器在硬件数据流动角度学以致用&#xff1a;解释程序运行为什么要加载到内存程序没被运行之前存在哪里&#xff1f; 操作系统概念广义…

应急响应实战笔记04Windows实战篇(2)

第2篇&#xff1a;蠕虫病毒 0x00 前言 ​ 蠕虫病毒是一种十分古老的计算机病毒&#xff0c;它是一种自包含的程序&#xff08;或是一套程序&#xff09;&#xff0c;通常通过网络途径传播&#xff0c;每入侵到一台新的计算机&#xff0c;它就在这台计算机上复制自己&#xff…

第一个C++程序,我也没看明白,暂时。

#include<iostream> using namespace std; int main() { cout << "hello world and you too number!" << endl; system("pause"); return 0; } 运行结果为&#xff1a;

优化生产流程,解决无尘布擦拭留下划痕问题

在现代化工生产中&#xff0c;无尘布被广泛应用于清洁工作&#xff0c;然而&#xff0c;河北一家化工企业在使用无尘布进行擦拭时却发现产品表面留下了划痕&#xff0c;给生产过程带来了不小的困扰。针对这一问题&#xff0c;一家化工企业向供应商优斯特寻求解决方案&#xff0…

AI视频激光综合驱鸟装置:全自动、大范围驱鸟 | 真驱鸟科技

在电力系统中&#xff0c;鸟害事故已成为一个不容忽视的问题&#xff0c;直接威胁到电网的正常运行。但鸟类拥有极强的环境适应能力&#xff0c;它们能够在各种环境中生存和繁衍。这种强大的适应性使得传统的单一功能驱鸟器&#xff0c;在面对鸟类时显得力不从心&#xff0c;无…