知识图谱(5)知识表示

news2024/11/16 19:30:41

基于Node2Vec补全KG

知识图谱属于异质图,图谱包含三个元素:实体(图中的节点),类型(节点的标识),关系(边的标识)。KG就是把所有不同种类的信息连接在一起而得到的一个关系网络。

KG的schame表示图谱的元信息,即有哪些类型的实体,实体之间的关系,例如下面为关于论文的知识图谱schame:
fig1

假设现在有一个规模较大的知识图谱,难免缺少一些关系和实体,比如给定头节点和关系,如何预测缺少的尾节点(知识表示是为了根据已知KG,利用已知的实体集合和关系集合,补全KG):
fig2
一种办法是采用Node2Vec,将每个节点转换为embedding,然后通过GNN做节点分类。

在KG中,采用三元组表示知识:(h,r,t)即头实体,关系,尾实体。首先,把头实体和关系转为embedding,目标是希望embedding(h,r)接近embedding(t)。因此有两个问题:

  • 如何设计embedding;
  • 如何让两者接近;

在图谱中,关系通常有不同的模式,比如:

  • 对称关系:同学,同事(互为同学,互为同事)
  • 逆向关系:昆凌是周杰伦的老婆,周杰伦是昆凌的老公

TransE从关系模式出发,本质目的是补全三元组,即补全知识图谱。首先,进行node2vec操作,将节点转为embedding(具体如何转embedding可选),如果t(h,r)可以组成三元组,则h+r的embedding等于t的embedding。TransE主要是重新训练类似Word2Vec的embedding,使其有利于通过对隐空间向量分类补全三元组

TransE的算法如下,输入训练集 S = { ( h , l , t ) } S=\left\{(h,l,t)\right\} S={(h,l,t)} l ∈ L l\in L lL为关系, h , t ∈ E h,t\in E h,tE为实体,margin值 γ \gamma γ,embedding维度为 k k k,首先初始化:

  • 对于每个 l ∈ L l\in L lL,首先进行采样 l ∼ u n i f o r m ( − 6 k , 6 k ) l\sim uniform(-\frac{6}{\sqrt{k}},\frac{6}{\sqrt{k}}) luniform(k 6,k 6),并归一化 l = l / ∣ ∣ l ∣ ∣ l=l/||l|| l=l/∣∣l∣∣
  • 对于每个实体 e ∈ E e\in E eE,采样 e ∼ u n i f o r m ( − 6 k , 6 k ) e\sim uniform(-\frac{6}{\sqrt{k}},\frac{6}{\sqrt{k}}) euniform(k 6,k 6)

然后进行循环:

  • e = e / ∣ ∣ e ∣ ∣ e=e/||e|| e=e/∣∣e∣∣,从 S S S中采样batch size为 b b b的子集 S b a t c h S_{batch} Sbatch T b a t c h T_{batch} Tbatch为空集;
  • 对于子集中的每个样本 ( h , l , t ) ∈ S b a t c h (h,l,t)\in S_{batch} (h,l,t)Sbatch,从另一个子集采样一个样本 ( h ′ , l , t ′ ) ∈ S b a t c h ′ (h',l,t')\in S'_{batch} (h,l,t)Sbatch,将样本加入 T b a t c h = T b a t c h ∪ { ( ( h , l , t ) , ( h ′ , l , t ′ ) ) } T_{batch}=T_{batch}\cup\left\{((h,l,t),(h',l,t'))\right\} Tbatch=Tbatch{((h,l,t),(h,l,t))}
  • 更新embedding使得: m i n ∑ [ γ + d ( h + l , t ) − d ( h ′ + l , t ′ ) ] min\sum[\gamma+d(h+l,t)-d(h'+l,t')] min[γ+d(h+l,t)d(h+l,t)]

基于BERT,知识表示得到了进一步加强。KG-BERT用于预测一个样本(h,r,t)是否为一个三元组:
fig3
输入是三元组或包括上下文的三元组,BERT的CLS token用于sigmoid打分,判断输入的三元组是否可以构成三元组(KG-BERT需要在KG数据,即三元组数据上微调)

上面的架构不能分类关系,为了预测关系,可以改变KG-BERT的结构:
fig4

基于GNN补全KG

Node2Vec的方式比较固定,如果新加入节点,这些节点的embedding还是不好表示,因此用GNN的消息传递可以更方便扩展到这些新节点。

对于用随机游走获得Node2Vec的embedding matrix,如果有1B个节点,每个节点的embedding为64维度,则matrix就要变成[1B,64],这明显是不能接受的。因此,GNN被应用到KG的知识表示中,并且使用GNN,可以解决下面的问题:

  • 节点分类,边预测,节点聚类(GNN的pooling),图相似度(判断两个图的相似度)

GNN的种类繁多,比如GraphSAGE,这是一个无监督inductive learning的GNN(见可变图结构下的归纳式学习&图注意力)。

图级别的分类涉及到图上的pooling操作,比如:
fig5

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

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

相关文章

第1篇 目标检测概述 —(2)目标检测算法介绍

前言:Hello大家好,我是小哥谈。目标检测算法是一种计算机视觉算法,用于在图像或视频中识别和定位特定的目标物体。常见的目标检测算法包括传统的基于特征的方法(如Haar特征和HOG特征)以及基于深度学习的方法&#xff0…

C语言指针笔试题讲解

大家好,我们来学习一些C语言的指针笔试题。对于C语言指针的模块想必大家都非常的头疼吧,那么我们就来就来看看一些关于C语言指针的笔试题。 首先让我们看到我们今天的第一题。 int main() { int a[5] { 1, 2, 3, 4, 5 }; int *ptr (int *)(&a 1)…

AUTOSAR RTE介绍(更新版230925)

RTE是什么 AUTOSAR RTE(Run Time Environment)实现了AUTOSAR系统中的虚拟功能总线(VFB),提供了SWC(Software Component)之间的访问接口和SWC对于BSW资源的访问接口。RTE为SWC中的Runnable提供与其他SWC或者BSW模块通信的接口,RTE将Runnable映射到OS Task中,并且管理Runna…

二进制中1的个数 C++实现

题目&#xff1a; 代码&#xff1a; #include<iostream> using namespace std; const int N100010; int a[N]; int n;int lowbit(int x){return x & -x; }int main(){scanf("%d",&n);for(int i0;i<n;i) scanf("%d",&a[i]);for(int i…

抽检监测实施

声明 本文是学习GB-T 42893-2023 电子商务交易产品质量监测实施指南. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件提供了开展电子商务交易的有形产品质量监测的总则&#xff0c;监测准备、监测实施、监测效果评价 与反馈等过程指导…

this.$nextTick()的使用场景

事件循环机制&#xff1a; 同步代码执行->查找异步队列&#xff0c;推入执行栈&#xff0c;执行Vue.nextTick[事件循环1]->查找异步队列&#xff0c;推入执行栈&#xff0c;执行Vue.nextTick[事件循环2]->查找异步队列&#xff0c;推入执行栈&#xff0c;执行Vue.nex…

Win10专业版系统一键重装怎么操作?

Win10专业版系统一键重装怎么操作&#xff1f;与传统的系统重装相比&#xff0c;一键重装不仅省去了繁琐的安装步骤&#xff0c;这一简单操作使得系统维护和恢复变得更加便捷&#xff0c;让用户不再为系统问题而烦恼。下面小编给大家详细介绍关于一键重装Win10专业版系统的操作…

使用bash脚本编译Qt工程

最近在搭建Qt工程的编译服务器&#xff0c;需要通过shell脚本执行工程的编译过程&#xff0c;写在这里&#xff0c;总结最近的工作。 1. 构建过程 以Windows为例&#xff0c;在QtCreator中左侧选择“项目”便可以看到编译的指令和参数&#xff0c;这些操作也会在我们点击“构建…

个人博客系统测试报告(一)

作者&#xff1a;爱塔居 专栏&#xff1a;测试 目录 一、项目背景介绍 二、项目功能 三、测试计划 3.1自动化测试用例 3.2 性能测试 ​​​​​​​&#xff08;未完&#xff09; 一、项目背景介绍 个人博客系统前端由注册页、登录页、列表页、详情页、编辑页、个人博客列…

CompletableFuture-通用异步编程

演示Completable接口完全可以代替Future接口&#xff1a; CompletableFuture减少阻塞和轮询&#xff0c;可以传入回调对象&#xff0c;当异步任务完成或者发生异常时&#xff0c;自动 调用回调对象的回调方法。 package com.nanjing.gulimall.zhouyimo.test;import java.util…

postman接口自动化测试框架实战

什么是自动化测试 把人对软件的测试行为转化为由机器执行测试行为的一种实践。 例如GUI自动化测试&#xff0c;模拟人去操作软件界面&#xff0c;把人从简单重复的劳动中解放出来。 本质是用代码去测试另一段代码&#xff0c;属于一种软件开发工作&#xff0c;已经开发完成的用…

Linux死锁

第三种情况 #include<stdio.h> #include<unistd.h> #include<pthread.h> #include<string.h>pthread_mutex_t mutex1, mutex2; void * workA(void * arg) {pthread_mutex_lock(&mutex1);sleep(1);pthread_mutex_lock(&mutex2);printf("w…

【MySQL】 Java的JDBC编程

文章目录 &#x1f332;数据库编程的必备条件&#x1f38b;Java的数据库编程&#xff1a;JDBC&#x1f38d;JDBC工作原理&#x1f333;建立数据库连接&#x1f4cc;在项目中新建一个包&#xff0c;名字自命名&#x1f4cc;将依赖包导入新建包中&#x1f4cc;DataSource&#xf…

EPLAN_002#常用功能(二)

一、快速添加端子 端子编号 端子定义 批量修改时&#xff0c;当名称出现冲突时&#xff0c;勾选上 端子排排序&#xff0c;可以基于页 二、多层端子的快速建立 有购物车的代表一个端子 三、手动鞍型跳线 标题 四、购物车图标 在导航器中&#xff0c;有购物车是陷进去的表示 在图…

基于微信小程序的线上教育课程付费商城(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

Springboot: Spring Cloud Gateway 使用的基本概念及配置介绍

1. SpringCloud 与 SpringBoot的版本映射关系 在已有的Spring Boot项目中增加Spring Cloud&#xff0c;首先要确定使用的Spring Cloud的版本&#xff0c;这取决于项目使用的Spring Boot的版本 SpringCloud 与 SpringBoot的版本映射关系 如果两者的版本不兼容&#xff0c;再会…

【洛谷 P1644】跳马问题 题解(动态规划)

跳马问题 题目背景 在爱与愁的故事第一弹第三章出来前先练练四道基本的回溯/搜索题吧…… 题目描述 中国象棋半张棋盘如图 1 1 1 所示。马自左下角 ( 0 , 0 ) (0,0) (0,0) 向右上角 ( m , n ) (m,n) (m,n) 跳。规定只能往右跳&#xff0c;不准往左跳。比如图 1 1 1 中所…

【已解决】PDF文件无法编辑怎么办?

打开PDF文件却发现无法编辑&#xff0c;怎么办&#xff1f; 首先&#xff0c;我们要知道&#xff0c;编辑PDF文件需要用到PDF编辑器&#xff0c;用PDF阅读器打开的话是无法编辑的。所以&#xff0c;先要确定是否用PDF编辑器打开PDF文件。 如果使用PDF编辑器打开后还是无法编辑…

2023-9-25 JZ25 合并两个排序的链表

题目链接&#xff1a;合并两个排序的链表 import java.util.*;/** public class ListNode {* int val;* ListNode next null;* public ListNode(int val) {* this.val val;* }* }*/public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c…

8.定义算法中的函数

在 algorithm2e 宏包中&#xff0c;您可以使用 \SetKwFunction 命令来定义算法中的函数。这个命令用于指定函数的名称和参数列表。以下是如何在算法中定义一个函数的示例&#xff1a; \documentclass{article} \usepackage[linesnumbered,boxed]{algorithm2e}\begin{document}…