论文浅尝|简单高效的知识图谱表示学习负样本采样方法

笔记整理 | 陈名杨,浙江大学在读博士生,主要研究方向为知识图谱表示学习

Introduction

研究知识图谱表示学习(KnowledgeGraph Embedding)可以解决当前很多应用的基本问题,这些方法旨在将知识图谱中的实体(Entity)和关系(Relation)都映射到低维向量空间中,并且捕获实体和关系之间的语义信息。当前很多知识图谱表示学习的方法都着重于设计新的得分函数(Score Function)从而可以捕获实体和关系之间复杂的交互。

然而在知识图谱表示学习的过程中,一个重要的部分——负采样(Negative Sampling)并没有被足够的重视。在知识图谱中,负样本采样的需求来源于KG中仅包含真实的正样本三元组,而在训练知识图谱表示的过程中,每个正样本需要对应相应的负样本。当前很多方法都使用均匀采样(Uniform Sampling)的方式,然而这样的方式很容易造成训练过程中的梯度消失,也就是很多负样本都是很容易被划分为负样本的简单样例,得分函数很自然的对这一类负样本给出较低的分数,从而导致训练过程中梯度为零。

所以高质量的负样本应该是得分函数给出较高分数(被误认为是正样本)的负样本,这篇文章探讨了在知识图谱表示学习模型的学习过程中(1)如何捕获并且建模负样本的动态分布,以及(2)如何有效地进行负样本的采样。

作者发现负样本的分数分布是高度偏斜的(Skewed),也就是说只有少量的负样本的分数较高,其余的分数较低的负样本的对后续的训练几乎无用。这个发现促使作者设计模型来维护这部分高质量的负样本三元组,并且在训练的过程中动态地更新。

Proposed Model

图1. 负样本的分数分布举例

图1(a)中展示了某一个三元组在训练过程中,负样本分布的变化;图1(b)中展示了在训练完成后,不同三元组的负样本分布情况。最终得出的结论是,负样本分数的分布是高度偏斜的,并且只有很少一部分的负样本有较大的分数。是否可以设计一个模型直接监控那些分数较高的负样本。这篇文章提出了NSCaching的方法,该方法只要解决了以下两个问题:

1、如何建模负样本的动态分布?

2、如何有效的采样负样本?

模型设计了一个缓存机制,保存了知识图谱中每个三元组对应的分数较高的负样本三元组,Algorithm2中展示了基于该缓存机制的知识图谱表示学习模型的学习过程。

具体来说,缓存分为头实体缓存(head-cache)和尾实体缓存(tail-cacahe),其中头实体缓存利用(r, t)进行索引,尾实体缓存利用(h, r)进行索引,他们分别存储的是知识图谱中的头实体和尾实体。在算法中,首先会确定一个正样本,然后得到该正样本在缓存中对应的部分(步骤5),然后会根据相应的缓存构造负样本(步骤6-7),最后更新缓存(步骤8)。

考虑模型的具体细节,这里如何从缓存中采样负样本(步骤6)以及如何更新缓存(步骤8)呢?

对于步骤6,作者采用的是从缓存中进行均匀采样。利用均匀采样的原因是该方法简单高效,虽然另一个看起来更好的方法可能是利用负样本的分数进行采样,但作者认为该方法不仅需要更多的空间存储三元组的分数,并且会因为负样本分布变化和假负样本引入更多偏差。

对于步骤8,这里采用重要性采样(Importance Sampling,IS)。首先从所有的三元组中均匀采样一部分实体,然后把这部分实体和原本缓存的实体放在一起,并计算分数,利用如下公式计算每个负样本三元组的重要性,也就是被采样进入更新后的缓存的概率。

 完整的缓存更新算法如下:

Experiments

作者在多个标准数据集上进行了实验,如下图是在利用TransE,在不同标准数据集上,和其他负采样方法对比的结果(更多利用其余KGE的实验结果请参考原文),可以看出这里提出的NSCacheing优于其他的负采样方法。

图2. 在不同标准数据集上的结果

更多的,作者还探讨了缓存的更新和采样机制的不同选择带来的不同结果,具体实验结果请参考原文。

OpenKG

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

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

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

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

相关文章

常见性能优化策略的总结

本文要感谢我职级评定过程中的一位评委,他建议把之前所做的各种性能优化的案例和方案加以提炼、总结,以文档的形式沉淀下来,并在内部进行分享。力求达到如下效果: 1. 形成可实践、可借鉴、可参考的各种性能优化的方案以及选型考虑…

微软中山大学开源超强的视觉位置编码,涨点显著

文 | 小马源 | 极市平台1.写在前面由于Transformer对于序列数据进行并行操作,所以序列的位置信息就被忽略了。因此,相对位置编码(Relative position encoding, RPE)是Transformer获取输入序列位置信息的重要方法,RPE在自然语言处理任务中已被…

LeetCode 63. 不同路径 II(DP)

1. 题目 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 现在考虑网格中有障碍物。那么从左上角到…

技术动态 | 去中心化知识图谱协作平台建设实践

转载公众号 | DataFunTalk文章作者:Epik 铭识协议出品平台:DataFunTalk导读:1月10日,由EpiK铭识协议主办的“2021开源知识运动”主题活动为业界带来了一场知识图谱开放与互联的智慧盛宴。活动吸引了包括清华大学信息技术研究院副…

权威赛事来了!千言-文本生成评测启动,聚焦NLG技术痛点

自然语言生成是人工智能的重要前沿技术,该技术在落地时会面临一个难题:如何保证模型生成的文本与输入具有事实层面的一致性,即避免生成错误、臆想的信息?为推动相关研究,中国中文信息学会自然语言生成专委会与千言开源…

CRM系统新思维

客户关系管理系统(CRM系统)是管理公司当前以及未来潜在客户的系统,其主要目的是通过优化客户关系实现公司销售业绩的长期增长,它是企业信息系统的核心之一。目前,移动互联网、大数据以及人工智能技术发展日新月异&…

LeetCode 980. 不同路径 III(DFS+回溯)

1. 题目 在二维网格 grid 上,有 4 种类型的方格: 1 表示起始方格。且只有一个起始方格。2 表示结束方格,且只有一个结束方格。0 表示我们可以走过的空方格。-1 表示我们无法跨越的障碍。 返回在四个方向(上、下、左、右&#x…

开源开放 | 开源网络通信行业知识图谱(新华三)

转载公众号 | 数字化领航OpenKG地址:http://openkg.cn/dataset/network-communication文章作者:新华三集团出品平台:数字化领航OpenKG是中国中文信息学会语言与知识计算专业委员会所倡导的开放知识图谱社区项目。旨在推动以中文为基础的知识图…

我删了这些训练数据…模型反而表现更好了!?

文 | Severus编 | Sheryc_王苏预训练语言模型的训练语料是全网数据,其来着不拒,只要喂过来的数据,统统吃掉,尽可能消化掉。而统计模型,除泛化能力外,另一个重要的能力就是记忆能力。我们知道,人…

会议交流 | CAAI BDSC2021大会专题七:社会计算与开放知识图谱

CAAI第六届全国大数据与社会计算学术会议(China National Conference on Big Data & Social Computing,简称BDSC)将于8月21-22日在重庆召开。早鸟注册开始了,截止时间为7月30日,注册链接:http://bdsc20…

高性能队列——Disruptor

背景 Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后&…

哈工大SCIR出品《自然语言处理》新书,无套路送5本!

自然语言处理面临着8个难点,即语言的抽象性、组合性、歧义性、进化性、非规范性、主观性、知识性及难移植性。正是由于这些难点的存在,导致自然语言处理任务纷繁复杂。不过,虽然自然语言处理任务多种多样,却可以被归为三大类常见的…

OpenKG开源系列|开源知识图谱融合工具OpenEA (南京大学)

OpenKG地址:http://openkg.cn/tool/openeaGitHub地址:https://github.com/openkg-org/OpenEAGitee地址:https://gitee.com/openkg/OpenEA开放许可协议:GPL 3.0贡献者:南京大学(胡伟、孙泽群、张清恒、王成名…

领域应用 | 美团商品知识图谱的构建及应用

转载公众号 | DataFunTalk分享嘉宾:曹雪智博士 美团 技术专家编辑整理:陈维美出品平台:DataFunTalk导读:在互联网新零售的大背景下,商品知识图谱作为新零售行业数字化的基石,提供了对于商品相关内容的立体化…

LeetCode 131. 分割回文串(回溯)

文章目录1. 题目2. 回溯1. 题目 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 示例: 输入: "aab" 输出: [["aa","b"],["a","a","b"] ]来…