Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【知识图谱系列】动态时序知识图谱EvolveGCN

【知识图谱系列】动态时序知识图谱EvolveGCN

作者头像
Houye
发布于 2020-12-29 06:41:29
发布于 2020-12-29 06:41:29
4.8K0
举报
文章被收录于专栏:图与推荐图与推荐

EvolveGCN (AAAI 2020) 分享

EvolveGCN汇报ppt版可通过关注公众号后回复关键词:EvolveGCN 来获得,供学习者使用!

背景知识

在上一篇CompGCN中讲解了异质知识图谱在处理复杂实体间多关系类型的方案。本篇分享知识图谱落地时另一重要场景:动态时序知识图谱,下面先给出动态时序知识图谱的基本概念,方便还不熟悉的同学有一个更好的理解。

首先知识图谱本质上就是一个语义网络,由节点Node和边Edge构成,每个Node表示现实世界中存在的实体Entity,而每条边表示实体与实体之间的关系。简单来说,知识图谱就是把所有不同种类的信息连接在一起而得到的关系网络,比如社交网络。由于这种关系网络会随着时间推移,实体以及实体间的关系会不断变化,为了全面获取知识,搭建动态知识图谱,在知识图谱数据中加入时间维度,利用时序分析技术和图相似性技术,分析图谱结构随时间的变化和趋势,从而掌握到关键信息。

上图展示了一下动态图谱,节点和边的颜色代表不同种类,可以看出图谱从时刻t到时刻t+1,图谱的结构有明显变化。比如金融动态知识图谱,学习到图谱间的时序信息便显得十分重要,本篇便介绍AAAI 2020的一篇解决动态图谱的模型EvolveGCN,EvolveGCN思路较为创新但不是目前SOTA的方案,之后会陆续分享TGAT此类解决动态时序图谱的方案。

Motivation

在介绍EvolveGCN之前,对于动态时序图谱,试想一下:我们是不是可以对每个时刻t的图谱用GCN进行建模学习得到Node Embedding,再使用RNN将不同时刻的Node Embedding串联起来学习动态特性,这貌似是一种较为直接简单的方案。但仔细思考,此方案会要求每个时刻node都必须存在,但在有些场景下,每个时刻的Node存在不同。因此EvolveGCN思路便是用RNN去演化每个时刻GCN模型的参数,而不是用RNN串联Node Embedding。

Method

下图便是EvolveGCN模型图,为了实现动态学习主要注意以下三点:

1、每个时间片单独学习一个GCN,每个GCN输入不同体现在图谱的邻接矩阵不同,但在代码实现时必须要求每个时刻的节点是保持一致的,而节点之间的关系存在变动;

2、为了考虑动态图谱联系,用RNN将每个时间片GCN模型参数串起来进行序列学习

3、RNN循环网络采用两种:GRU,LSTM

实现方案一:EvolveGCN-H

EvolveGCN-H版本使用GRU对参数进行串联学习,GUR模型的隐藏状态使用上一时刻的参数

,而GRU的输入当前时刻的节点表征

,更新公式为:

因此Node Embedding

和参数

的更新公式为:

实现方案二、EvolveGCN-O

EvolveGCN-O版本使用LSTM对参数进行串联学习,LSTM模型的隐藏状态使用上一时刻的参数

,同时其输入也是用上一时刻参数的

,更新公式为:

因此Node Embedding

和参数

的更新公式为:

EvolveGCN-H和EvolveGCN-O版本对比

1、串联参数使用的RNN模型不同,EvolveGCN-H使用的是GRU,而EvolveGCN-O使用的是LSTM;2、因为EvolveGCN-O在参数更新时没有使用,因此nodefeature是非常有用时例如人工处理得到的,那使用EvolveGCN-H版本,如果Node feature在图谱结构中不是很重要便可采用EvolveGCN-O版本。

Conclusion

1、实验结果(Link Prediction)

(1)对于数据集SBM、UCI和AS,至少有一个版本的EvolveGCN可以获得最佳结果;

(2)对于数据集BC-OTC和BC-Alpha,EvolveGCN优于GCN和GCN-GRU,但低于DynGEM和Dyngraph2vec

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图神经网络与推荐系统 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用 Delve 工具调试 Golang 程序
Delve 是一个 go 语言的第三方调试器,github 地址是: https://github.com/go-delve/delve 。Delve 是 GDB 调试器的有效替代品。与 GDB 相比,它能更高的理解 Go 的运行时,数据结构以及表达式。Delve 目前支持 Linux,OSX 以及 Windows 的 amd64 平台。
Go学堂
2023/01/31
1.7K0
通过dlv简单分析Go coredump文件
编译构建go程序 禁止优化 go build -gcflags "-N -l" ... 查看详细的编译过程命令 go build -x ... 补充:go build 编译选项:
美团骑手
2022/08/07
2.6K0
Go 语言源码级调试器 Delve
Delve 是一个简单、强大和易用的 Go 语言源代码层级的调试器,也是 Go 官方推荐使用的调试器。
frank.
2022/07/01
2.2K0
go debug工具-dlv
golang debug 工具 dlv 可以非常方便 go 程序做单步调试。 安装 dlv工具安装: $ git clone https://github.com/go-delve/delve $ cd delve $ go install github.com/go-delve/delve/cmd/dlv 使用 三种用法, 直接在代码目录下运行main文件: $ dlv debug 直接 attach 已经运行的目标程序 $ dlv attach <PID> 运行二进制程序: $ dlv exec <目
机械视角
2022/06/28
1.2K0
go语言调试工具--Delve
每个Go程序的入口是main.main函数,我们可以用break在此设置一个断点:
DBA札记
2022/08/16
4410
别再用GDB了,一文掌握Go最好用的调试器Delve
Delve 是 Go 中使用最多的调试器,本文基于 Delve 对 Go 的调试进行了介绍。如果你对基于日志的调试感到无奈,不妨看一下本文。读完全文还可以参加文末龙年红包封面抽奖活动哦!
腾讯云开发者
2024/01/11
3.4K0
别再用GDB了,一文掌握Go最好用的调试器Delve
曹大带我学 Go(3)—— 如何用汇编打同事的脸
今天介绍几个常用的查看 Go 汇编代码、调试 Go 程序的命令和工具,既可以在平时和同事、网友抬杠时使用,还能在关键时刻打他们的脸。
梦醒人间
2021/06/17
9260
Golang程序调试工具介绍(gdb vs dlv)
通过log库输出日志,我们可以对程序进行异常分析和问题追踪。但有时候,我也希望能有更直接的程序跟踪及定位工具能够帮助我们更方便快捷的追踪、定位问题,最直观的感觉还是使用调试器。Linux平台下,原生的C/C++程序,我们往往使用gdb进行程序调试,切换到Golang,我们同样还是可以使用gdb进行调试。同时我们还可以使用golang实现的调试器dlv进行调试。以下内容是我对gdb以及dlv使用及对比总结
sunsky
2020/08/20
5.1K0
Go调试利器,手把手入门dlv (上)
说到调试器,首先让人想到大名鼎鼎的GDB,在mac上对应的有lldb,dlv是针对Go语言单独开发的调试利器,而且dlv也是用go语言开发的。在windows平台也可以同样运行。今天我们简单介绍一下dlv如何调试go程序的。
用户1072003
2022/12/02
2.6K0
Go调试利器,手把手入门dlv (上)
分享如何阅读Go源码
以我个人理解,Go源码主要分为两部分,一部分是官方提供的标准库,一部分是Go语言的底层实现,Go语言的所有源码/标准库/编译器都在src目录下:https://github.com/golang/go/tree/master/src,想看什么库的源码任君选择;
Golang梦工厂
2022/07/11
7970
分享如何阅读Go源码
如何编译调试Go runtime源码
有朋友问我阅读源码,该怎么调试?这次我们简单看看如何编译调试 Go 的 runtime 源码,感兴趣的朋友可以自己手动操作一下。
luozhiyun
2021/03/31
8790
golang调试工具Delve
Devle是一个非常棒的golang 调试工具,支持多种调试方式,直接运行调试,或者attach到一个正在运行中的golang程序,进行调试。
lpxxn
2018/03/07
2.3K0
golang调试工具Delve
Go语言开发调试中阶
几年前,为学习某个开发框架,需要在系统层装一大堆的类库和脚手架(看到nodejs开发者默默点头了),搞得系统越来越臃肿。。。上帝说要有光,于是以docker为代表的容器技术诞生了,通过DIY构建镜像,能够将所有的依赖打包到一起,并且可以到处运行,一切似乎都变得简单了。。。
nevermosby
2020/05/11
1.2K0
Go语言实战笔记(二十三)| Go 调试
对于任何程序员来说,调试程序是必备的技能。当我们的开发好的程序不符合我们的预期时,就需要我们通过调试它找到根本的原因,然后才可以有针对性的解决它。
飞雪无情
2018/08/28
7610
Golang——测试与调试
testing包提供了自动化测试相关的框架,测试源码文件的主名称通常已被测试源码文件的名字作为开头,文件名必须以xx_test.go结尾,例如我们的被测试源码文件名称是demo.go 那么我们测试源码文件名称应该是demo_test.go
羊羽shine
2019/05/29
1.6K0
go程序调试
调试程序是程序猿的一项必备技能,有多种手段可以用来调试程序,如打印控制台输出,日志方式,以及设置断点使用debug做单步跟踪进行调试。这篇文章主要以go的debug使用为题进行展开
暮雨
2019/08/21
1.5K0
Golang 汇编入门知识总结
作者:ivansli,腾讯 IEG 运营开发工程师 在深入学习 Golang 的 runtime 和标准库实现的时候发现,如果对 Golang 汇编没有一定了解的话,很难深入了解其底层实现机制。在这里整理总结了一份基础的 Golang 汇编入门知识,通过学习之后能够对其底层实现有一定的认识。 0. 为什么写本文 平时业务中一直使用 PHP 编写代码,但是一直对 Golang 比较感兴趣,闲暇、周末之余会看一些 Go 底层源码。 近日在分析 go 的某些特性底层功能实现时发现:有些又跟 runtime
腾讯技术工程官方号
2020/09/07
2.6K0
Golang的Debug工具delve介绍
delve 的汉语意思是:钻研、探索;用这个来命名一个debug工具还是非常的形象。
大愚
2020/05/20
1.5K0
曹大带我学 Go(5)—— 哪里来的 goexit
在学员群里,有同学在用 dlv 调试时看到了令人不解的 goexit:goexit 函数是啥,为啥 go fun(){}() 的上层是它?看着像是一个“退出”函数,为什么会出现在最上层?
梦醒人间
2021/06/17
8180
go语言程序调试
调试程序是程序猿的一项必备技能,有多种手段来调试程序,如打印控制台输出,查看日志,以及设置断点,使用debug做单步跟踪进去调试。这篇文章主要从go使用debug为题进行展开。
暮雨
2019/08/07
8290
相关推荐
使用 Delve 工具调试 Golang 程序
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档