【异构图笔记,篇章1】RGCN:Modeling Relational Data with Graph Convolutional Networks

news/2024/4/27 9:33:31/文章来源:https://blog.csdn.net/qq_41895003/article/details/129192082

【异构图笔记,篇章1】RGCN:Modeling Relational Data with Graph Convolutional Networks

  • 论文信息
  • 论文要点快览
  • 论文内容介绍
    • 背景任务
    • RGCN Conv的介绍
    • RGCN的trick
    • 论文实验结果
      • 实体分类
      • 链路预测
  • 评价及总结

本文仅供学习,未经同意请勿转载
后期会陆续公开关于图神经网络的相关笔记,感兴趣的可以关注一下喽。

论文信息

在这里插入图片描述

  • paper name:《Modeling Relational Data with Graph Convolutional Networks》
  • 中文简称:关系图卷积网络
  • 原文链接:https://arxiv.org/abs/1703.06103
  • 源码链接:https://link.zhihu.com/?target=https%3A//github.com/tkipf/relational-gcn
  • 来源:ESWC , University of Amsterdam
  • 年限:2018
  • 推荐原因:异构图经典必读模型,baseline
  • 笔记记录时间:2022年8月2日
  • 博客公开笔记时间:2023年2月24日

论文要点快览

  • 驱动数据任务:实体分类,链路预测
  • 核心要点:考虑不同关系对节点的影响,提出了一种异构图中多关系融合的方法,解决了GCN未考虑节点类型的局限性。
  • 做法简述:把每一种关系下的图看成同构图,将多关系图转化为多个同构图特征聚合的问题。也就是不同关系(也就是边)分别做特征融合,然后叠加处理,以此更新节点特征。
  • 应用场景:基于节点同构及边异构(注:这里异构边仅是类型,包括特征)的Graph learning 场景
  • 论文主要贡献点:前面提到的核心要点,此外RGCN还提出了参数共享及稀疏化约束的trick
  • 与GCN的对比:
    • GCN为同构节点同构边,RGCN为同构节点异构边。
    • GCN中边的权重矩阵来源于度矩阵D及邻接矩阵A求,RGCN中边的权重矩阵是可学习的/自学。
  • 局限性:
    • 最主要的局限:未考虑不同的关系之间可能存在相互作用,RGCN把每种关系看成一个同构图,独立学习,最后才做特征融合
    • 无法处理动态图:RGCN只能处理图中的静态部分,即在图结构不变的情况下进行训练和推理,无法处理动态图问题。
    • 只能处理节点含特征的情况
    • 当关系类型增多,模型复杂度较大

论文内容介绍

背景任务

在这里插入图片描述注:虽然上面RGCN论文面向的任务只有两个,一个是节点分类(实体分类),另外一个是边任务(链路预测)。但是它实际上也可以用来做图分类,图分类基本上模型都可以做(相当于在学习图之后,加一个ReadOut层就好)。

  • 节点分类任务:通过RGCN之后得到每个节点的embedding,接着使用softmax分类器对每个节点进行分类即可。

  • 边预测任务:论文中用的DisMult的方法:上面PPT中的f(s,r,o),其中ese_{s}eseoe_{o}eo是使用R-GCN学习到的实体嵌入, RrR_{r}Rr是关系r对应的对角矩阵(可学习参数)
    实际上可以简单理解为:首先通过RGCN得到节点的特征,其次通过节点特征间接生成边的特征(比如拼接,编码器映射等),用一个回归器来对生成的特征进行打分。以此判断该边是否存在。这是链路预测或者说边特征任务中常见的做法,比如TranSE, 计算三元组(s,r,o)得到评分score.【s源节点,r可能的连接,o目标节点】
    虽然论文中只介绍DisMult,但时作者开源代码实际上还用了其他的方式:
    在这里插入图片描述

  • 图分类任务:经过RGCN之后通过一个ReadOut层生成Graph embedding,利用softmax分类器就可以实现图分类。

RGCN Conv的介绍

在这里插入图片描述从上面公式来看,RGCN conv双层循环遍历,遍历每一种关系下,叠加每一个点的邻居点的特征进行融合,最后加上一层的中心节点特征,经过一个激活函数输出作为中心节点的输出特征,其中W为维度转换矩阵,也就是模型参数。

实际上就是将每一种边类型(关系)【这里还包括自环,把自环看成一种关系】下的图看作同构图(值得注意:正向、反向在论文中也是不同类型哦),在每种同构图下进行特征融合。也就是对于每一种关系的邻居引入不同的权重参数,分别对属于同一关系类型的邻居聚合之后,在进行一次总的聚合。

根据上面的介绍,我们可以知道,当关系大量增加时,所需要的权重参数就会越多,这样子RGCN的模型参数量那是顶顶的高啊!而且不同关系的节点数量时不一样的,对于不常见的关系而言,其权重参数对应学习的数据就会非常少,这样子数据少,参数多就可能会导致过拟合。

所以RGCN作者针对上面的情况提出了两种正则化的方法:

  • 权值共享(基函数分解):基函数分解通过共享转化矩阵参数来降低参数量。其可以看作是不同关系类型之间权重共享的一种方式。可以减轻稀有关系(rare relations)数据的过拟合问题,因为稀有关系和更频繁的关系之间共享参数更新。
  • 稀疏化约束(块分解):块分解可以看作是对每个关系类型的权值矩阵的稀疏约束,其核心在于潜在的特征可以被分解成一组变量,这些变量在组内的耦合比在组间的耦合更紧密。块分解通过将大参数量的权重矩阵W转化未小矩阵的拼接,保证W矩阵的稀疏性。
    在这里插入图片描述

RGCN的trick

在这里插入图片描述

论文实验结果

实体分类

实体分类的数据集有:
在这里插入图片描述
对应的效果:
在这里插入图片描述

链路预测

链路预测的数据集有:
在这里插入图片描述

对应的实验结果为:
在这里插入图片描述

评价及总结

综上所述,RGCN适用于处理多边类型(不包括多元边特征,可以包含,但你没有办法直接利用)的静态图数据,能够提供精确的预测结果,但是对于动态图和多关系图的处理存在一定的局限性。值得关注其正则化的训练技巧,是很多模型也会用到的trick.

这里汇总一下别人训练的提问

提问1:RGCN可以用于大图吗?
Ry答:当然可以。比如ICDM 2022 : 大规模电商图上的风险商品检测,【比赛链接,可以拿这个练手RGCN】官方给出的baseline就是RGCN。而且据本人测试,在上面任务上不做任何处理时,RGCN的效果甚至比RGAT、HAN等模型的效果好。而且pyg和dgl等框架可以很好对大图进行采样训练。当然RGCN在训练大图时还是需要考虑大图的实际情况的来选择的。

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

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

相关文章

会声会影2023官方新功能介绍

深入简单直观的视频编辑!使用 Corel VideoStudio会声会影2023,将您最美好的时刻和生活体验变成令人惊叹的电影,这是一款有趣且直观的视频编辑器,包含高级工具和高级效果。从自定义标题和过渡,到 Mask Creator、Color G…

MySQL锁篇

文章目录说明:锁篇一、MySQL有那些锁?二、MySQL 是怎么加锁的?三、update 没加索引会锁全表?四、MySQL 记录锁间隙锁可以防止删除操作而导致的幻读吗?五、MySQL 死锁了,怎么办?六、字节面试&…

自学黑客2年都没入门,从零入门渗透有那么难吗?附入门教程。

最近年底了,不少朋友都是在总结一年的学习成果。最后不少人发现完成情况与自己最初定下的目标相去甚远。 我认识不少人自学大半年了:b站,网盘,各种各样的资源数不胜数,总之只要是跟安全相关的不管学不学,先…

【金三银四系列】Spring面试题-下(2023版)

Spring面试专题 1.介绍下Spring的初始化过程 Spring的初始化过程中会走refresh方法,这是个模板模式的实现,包含有如下的14个方法 每个方法的相关作用 把每个方法的作用按照这个图介绍下就可以了 2.配置文件的加载解析 Spring初始化的时候在obtainFresh…

尚医通 (二十一)预约挂号功能

目录一、预约挂号详情1、需求2、预约挂号详情接口3、预约挂号详情前端二、预约确认1、需求2、预约确认接口3、预约确认前端一、预约挂号详情 1、需求 接口分析 (1)根据预约周期,展示可预约日期数据,按分页展示 (2&…

python+Vue学生作业系统 django课程在线学习网站系统

系统分为学生,教师,管理员三个角色: 学生功能: 1.学生注册登录系统 2.学生查看个人信息,修改个人信息 3.学生查看主页综合评价,查看今日值班信息 4.学生在线申请请假信息,查看请假的审核结果和请…

Linux系统Nginx下载和安装

文章目录golang学习面试网站Linux启动nginxlinux下简单清晰安装Nginx。 一、首先安装编译工具及库文件 [rootlocalhost /]# yum -y install make zlib zlib-devel gcc-c libtool openssl openssl-devel二、然后要安装 PCRE PCRE 作用是让 Nginx 支持 Rewrite 功能。 1、下载 …

三星浏览器高阶使用技巧-修改CountryCode和UA

前言 通过修改浏览器国家代码和UA来实现默认Google搜索、清除国内流氓主页和阻止外链强制跳转到应用商店或者已安装的国内流氓软件(以百度、知乎为例) 1.修改国家代码 作用:修改浏览器的主页,避免捆绑中国流氓页面,增加Google为默认搜索引…

DualCor: Event Causality Extraction with Event Argument Correlations论文解读

Event Causality Extraction with Event Argument Correlations(带有事件论元相关性的事件因果关系抽取) 论文:2301.11621.pdf (arxiv.org) 代码:cuishiyao96/ECE: Dataset and code for COLING2022 paper Event Causality Extraction with Event Argum…

前端借助Canvas实现压缩base64图片两种方法

一、具体代码 1、利用canvas压缩图片方法一 // 第一种压缩图片方法(图片base64,图片类型,压缩比例,回调函数)// 图片类型是指 image/png、image/jpeg、image/webp(仅Chrome支持)// 该方法对以上三种图片类型都适用 压缩结果的图片base64与原类型相同// …

从零开始一文理解Graph Embedding

Graph Embedding基础 图表示学习 什么是Graph Embedding 本文包括 DeepWalk LINE SDNE Node2vec Struc2vec等几个重要的Graph Embedding 方法 先说下不同embedding的区别是什么: DeepWalk:采用随机游走,形成序列,采用skip-gram方…

RocketMQ实现延迟队列精确到秒级实现

前言篇:为了节约成本,决定通过自研来改造rocketmq,添加任意时间延迟的延时队列,开源版本的rocketmq只有支持18个等级的延迟时间,其实对于大部分的功能是够用了的,但是以前的项目,全部都是使用了…

STM32 OTA应用开发——通过USB实现OTA升级

STM32 OTA应用开发——通过USB实现OTA升级 目录STM32 OTA应用开发——通过USB实现OTA升级前言1 环境搭建2 功能描述3 BootLoader的制作4 APP的制作5 烧录下载配置6 运行测试结束语前言 什么是OTA? 百度百科:空中下载技术(Over-the-Air Techn…

【SpringCloud系列】SpringCloudConfig配置中心

前言 我们在开发过程中总是会有各种各样的配置,比较如数据库连接配置,Mybatis配置等等各种组件的配置,这些配置都放在yml中,如果想要变更这些配置,需要修改yml文件,然后重新部署项目才能生效,同…

后端接收格式为x-www-form-urlencoded的数据

1.x-www-form-urlencoded是什么? x-www-form-urlencoded纸面翻译即所谓url格式的编码,是post的默认Content-Type,其实就是一种编码格式,类似json也是一种编码传输格式。form表单中使用 form的enctype属性为编码方式&#xff0…

GoFrame工程目录设计介绍

GoFrame框架针对业务项目的目录设计,主体的思想来源于三层架构,但在具体实现中,对其进行了一定的改进和细化使其更符合工程实践和时代进步。 一.工程目录结构 GoFrame业务项目基本目录结构如下: 二.目录结构解释 对外接口 对…

AWS攻略——使用中转网关(Transit Gateway)连接不同区域(Region)VPC

文章目录Peering方案Transit Gateway方案环境准备创建Transit Gateway Peering Connection接受邀请修改中转网关路由修改被邀请方中转网关路由修改邀请方中转网关路由测试修改Public子网路由知识点参考资料区别于 《AWS攻略——使用中转网关(Transit Gateway)连接同区域(Region…

记录--前端项目中运行 npm run xxx 的时候发生了什么?

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 npm 是 node 捆绑的依赖管理器,常用程度可想而知。那么你每天都在 npm/yarn run 的命令到底是如何运行项目的呢? 前端项目中运行 npm run xxx 的时候发生了什么?大家…

LinkSLA智能运维技术派-Redis的监控

Redis是一个开源,内存存储的数据服务器,可用作数据库、高速缓存和消息队列代理等场景。 首先我们对内存进行监控,主要指标如下: - used_memory:使用内存 - used_memory_rss:从操作系统分配的内存 - mem_fragmentation_ratio:内…

Mac mini 外接移动硬盘无法写入或者无法显示的解决方法

文章目录1. 背景2. 让NTFS格式的移动硬盘正常读写方法3. 打开“启动安全性实用工具”4. 更改“安全启动”设置1. 背景 刚买mac min(2023年2月3日)不久,发现macOS的玩起来并不容易,勇习惯了windows系统的习惯,感觉 mac…