Reasoning Through Memorization: Nearest Neighbor Knowledge Graph Embeddings论文阅读

news2024/11/26 12:52:52

研究问题

将基于记忆的方法与预训练语言模型相结合,以完成知识图谱补全任务

背景动机

  • 传统模型无法处理未见实体
  • 记忆增强神经网络的相关进展,即在传统的计算模块之外添加单独的记忆存储模块

模型方法

首先使用预训练语言模型构建实体的知识库,并根据嵌入距离查找其最近邻居,将记忆搜索与语言模型预测的结果插值结合
在这里插入图片描述

Masked Entity Modeling

在这里插入图片描述

对于每个三元组查询 ( e i , r j , ? ) \left(e_i, r_j, ?\right) (ei,rj,?)及实体 e i e_i ei的描述 d d d,获得如下的查询语句:

在这里插入图片描述
接下来计算mask位置对应不同实体的词的概率:
在这里插入图片描述
最终的损失函数即为分类器损失函数:
在这里插入图片描述

Entity Vocabulary Expansion

在这里插入图片描述

这一步其实是对上一步的预处理,因为预训练语言模型在编码阶段会将一个词拆解为若干sub token,因此无法将其输出的token概率与实体完全对齐。为了能让每个实体拥有一个唯一对应的概率,就需要对语料库进行扩展。扩展的方式是加入所谓的special tokens,为了让special tokens有明确的语义,还需要加入以下的预训练任务。

对于每个实体及其描述,获得以下查询语句:

在这里插入图片描述

预训练目标损失:

在这里插入图片描述

词表扩展相关代码

def get_entities(self, data_dir):
        """Gets all entities in the knowledge graph."""
        with open(self.entity_path, 'r') as f:
            lines = f.readlines()
            entities = []
            for line in lines:
                entities.append(line.strip().split("\t")[0])
        ent2token = {ent : f"[ENTITY_{i}]" for i, ent in enumerate(entities)}
        return list(ent2token.values())
        
entity_list = self.processor.get_entities(args.data_dir)        
num_added_tokens = self.tokenizer.add_special_tokens({'additional_special_tokens': entity_list})

Knowledge Store

在这里插入图片描述

从包含语义信息的实体描述和包含结构信息的实体三元组两方面来构建知识库

实体描述部分取的就是Entity Vocabulary Expansion部分学习到的嵌入表示

在这里插入图片描述
三元组部分就是把所有包含目标实体的三元组对应的嵌入加入库中

在这里插入图片描述

知识库中以(k,v)对的形式存储实体与嵌入的关系,其中k是基于描述或三元组的嵌入,v是对应实体的名称,论文使用开源的FAISS来执行高维空间的检索算法。

记忆推理

给定一个三元组查询,通过Masked Entity Modeling方法得到缺失实体的嵌入表示 h [ m a s k ] h_{[mask]} h[mask],嵌入间的距离定义如下:
在这里插入图片描述
knn算法用嵌入距离来表征候选实体为目标实体的概率,注意到由于每个候选实体会有几个不同的嵌入表示,最终只取距离最近的那一个:

在这里插入图片描述
最终结果为二者的加权和
在这里插入图片描述

实验结果

链路预测

在这里插入图片描述
KS即KNN部分

在这里插入图片描述

低资源场景

论文从低到高调整训练样本的比例,并比较加KS部分带来的效果提升,观察其何时能超过sota效果

在这里插入图片描述

长尾实体上的效果比较

在这里插入图片描述
在这里插入图片描述

KNN中K的数目设置

看到这里我才理解整个KNN算法,给定一个最近邻居k,是在知识库中筛选出k个离给定嵌入表示最近的实体,然后用距离表示它们的概率,并与另一种方式计算出来的概率加权。这里有个假设,也就是目标实体就在这k个实体中,不过前面的公式没体现出来这个k。
在这里插入图片描述

插值参数的取值

在这里插入图片描述

可视化

2D t-SNE对距离最近的k个邻居以及其他实体做了可视化,可见语义接近的实体在空间上也更为接近

在这里插入图片描述

模型比较

在这里插入图片描述
规模越大越好,RoBERTa上限最高

案例

在这里插入图片描述

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

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

相关文章

计算机网络第一章 计算机网络与因特网

1.0 目录[TOC]1.1 什么是Internet?1.1.1 最细微:图(Graph)Internet由结点Node和边Edge组成结点Node分为主机结点和交换结点边Edge分为接入网链路Access和主干链路Backbone结构图如下:1.1.2 网络的网络(Netw…

【Python】数值计算基础

note scipy和numpy库可以便捷地进行科学计算,如线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等。 文章目录note一、多项式基础1. 1 多项式表示和拟合1.2 多项式插值二、微积分计算2.1 数值积分2.2 符号积分三、矩阵运算3.1 线性方程组的求解3.2 矩…

PHP代码审计之MVC与ThinkPHP简介

今天继续给大家介绍渗透测试相关知识,本文主要内容是PHP代码审计之MVC与ThinkPHP简介。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严…

文化向技术投降

《技术垄断:文化向技术投降》泼斯曼 技术发展三个阶段 1,工具使用文化 2,技术统治文化 3,技术垄断文化 趣讲大白话:科技是一把双刃剑 泛滥的信息已经把人给弄懵了 *********** 广义上来讲,公司是技术公司 才有可能有更…

Windows压缩工具 “ Bandizip 与 7-zip ”

前言 📜“作者 久绊A” 专注记录自己所整理的Java、web、sql等,IT技术干货、学习经验、面试资料、刷题记录,以及遇到的问题和解决方案,记录自己成长的点滴 目录 前言 一、什么是压缩 二、Bandizip的简介 1、大概介绍 2、详细…

Acwing---1238.日志统计

日志统计1.题目2.基本思想3.代码实现1.题目 小明维护着一个程序员论坛。现在他收集了一份”点赞”日志,日志共有 NNN 行。 其中每一行的格式是: ts id 表示在 tststs 时刻编号 ididid 的帖子收到一个”赞”。 现在小明想统计有哪些帖子曾经是”热帖…

一起自学SLAM算法:9.3 SVO算法

连载文章,长期更新,欢迎关注: 下面将从原理分析、源码解读和安装与运行这3个方面展开讲解SVO算法。 9.3.1 SVO原理分析 前面已经说过,SVO算法是半直接法的典型代表。因此在下面的分析中,首先介绍一下半直接法的基本原…

网络攻防中监控某个IP的流量和数据分析

网络攻防中监控某个IP的流量和数据分析。 Windows 可以使用 tcpview 工具监控某个IP的流量信息,Linux 可以使用iftop 工具。 新版本的 tcpview 带过滤功能,可以对 IP 进行过滤。最后两列显示的是对应程序发送和接收的字节数。 tcpview 工具下载地址&am…

【Quicker】您的指尖工具箱

在日常学习和工作中我们常常用到各种各样的小工具,比如:截图并编辑、取色、文字识别、公式识别等等.   倘若这每一项功能都下载一个程序,则会显得非常冗杂。因此,用一个工具箱将这些功能集合起来,则是一个不错的解决…

机器自动翻译古文拼音 - 十大宋词 - 满江红 怒发冲冠 南宋·岳飞

满江红 怒发冲冠 南宋岳飞 怒发冲冠,凭栏处,潇潇雨歇。 抬望眼,仰天长啸,壮怀激烈。 三十功名尘与土,八千里路云和月。 莫等闲,白了少年头,空悲切。 靖康耻,犹未雪。臣子恨&#x…

点云 3D 分割 - RangeNet++(IROS 2019)

点云 3D 分割 - RangeNet(IROS 2019)摘要1. 引言2. 相关工作3. 我们的方法A. 距离图像点云代理表示B. 完全卷积语义分割C. 基于距离图像的点云重建D. 高效点云后处理4. 实验评价A. RangeNet相对于最新技术的性能B. 消融研究C. 后处理影响D. 运行时5. 结论…

JavaWeb | 预编译SQL及PreparedStatement讲解

本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址:🔥JDBC Java入门篇: 🔥Java基础学习篇 Java进阶学习篇&#x…

JavaSE总结

JavaSE目录初识JavaJava由来main 方法介绍Java程序的运行数据类型和变量数据类型基本数据类型引用数据类型运算符算术运算符关系运算符逻辑运算符移位运算逻辑控制方法方法的重载与重写关于递归数组二维数组类和对象成员变量成员方法对象this 关键字构造方法封装代码块内部类非…

ext文件系统

Ext文件系统 1.文件目录 1.1 文件控制块FCB 文件系统通过文件控制块(File Control Blcok)来维护文件结构,FCB包含有关文件的信息,包括所有者、权限、文件内容的位置等文件目录用于组织文件,每个目录项对应一个FCB文…

(考研湖科大教书匠计算机网络)第三章数据链路层-第三节:差错控制

专栏目录首页:【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一:检错编码(1)奇偶校验码(2)循环冗余检验码(CRC)二:纠错编码(海明校验码&#xff0…

Opencv调参神器——trackBar控件

Opencv调参神器——trackBar控件 调参需求介绍trackBar控件介绍trackBar控件使用函数案例一:trackBar控件调整图片颜色案例二:trackBar控件调整Canny算子参数案例三:trackBar控件调整图像融合参数trackBar控件总结调参需求介绍 想要学好计算机视觉,有一个库必不可少,那就…

ARM Makefile 基础

一、Makefile 的作用和意义 (1) 工程项目中 c 文件太多管理不方便,因此用 Makefile 来做项目管理,方便编译链接过程。 (2) uboot 和 linux kernel本质上都是 C 语言的项目,都由很多个文件组成,因此都需要通过 Makefile 来管理。…

nodejs小区物业管理系统vue前端

目 录 1 概述 1 1.1课题背景及意义 1 1.2 国内外研究现状 1 1.3 本课题主要工作 2 2 系统开发环境 3 前端技术:nodejsvueelementui 前端:HTML5,CSS3、JavaScript、VUE 1、 node_modules文件夹(有npn install产生) 这文件夹就是…

STM32-Modbus-RTU-01-05-15功能码补充-波特率在线修改-断电数据保护

文章目录一、本文主要内容二、使用modbus通信协议在线修改STM32波特率(一)STM32标准库在线修改串口波特率(二)STM32HAL库-485-modbus-rtu通信在线修改串口波特率1、STM32F103ZET6芯片(1)HAL库下参考标准库形式修改波特率(2)直接修…

SNARK+深度神经网络

1. 引言 SNARK深度神经网络,相关开源实现有: 1)Ezkl(Rust):借助Halo2证明系统,实现了50层的MobileNetV2的执行证明。具体见Daniel Kang等人2022年论文Scaling up Trustless DNN Inference with…