【intro】Graph Isomorphism Network(GIN)

论文

https://arxiv.org/pdf/1810.00826

abstract

图神经网络(gnn)是一种有效的图表示学习框架。gnn采用邻域聚合方案,通过递归聚合和变换相邻节点的表示向量来计算节点的表示向量。已经提出了许多GNN变体,并在节点和图分类任务上取得了最先进的结果。然而,尽管gnn彻底改变了图表示学习,但人们对其表示特性和局限性的理解有限。->一个理论框架,用来分析GNN捕获不同图结构的能力。

introduction

使用图结构数据进行学习,例如分子、社会、生物和金融网络,需要有效地表示它们的图结构。

GNN广泛遵循递归邻域聚合(或消息传递)方案,其中每个节点聚合其邻居的特征向量以计算其新的特征向量。经过k次聚合迭代后,节点由变换后的特征向量表示,特征向量捕获节点k- hop邻域内的结构信息。然后可以通过池化获得整个图的表示,例如,通过将图中所有节点的表示向量相加。

首先将给定节点的邻居的特征向量集表示为一个multiset,即一个可能含有重复元素的集合。那么,gnn中的邻居聚合可以看作是multiset上的聚合函数。(没明白)因此,为了具有强大的表示能力,GNN必须能够将不同的多集聚合成不同的表示。multiset函数的判别性越强,底层GNN的表示能力就越强。

文章的主要贡献:

  1. 证明了GNN在图结构的识别上最多和WL测试一样强大。
  2. 建立了邻居聚合(neighbor aggregation)和图读出函数(graph readout functions)的条件,在此条件下,所得的GNN与WL测试一样强大
  3. 识别了流行的GNN变体,如gcn 和GraphSAGE无法区分的图结构,并且精确地描述了基于GNN的模型可以捕获的图结构类型。
  4. 图同构网络(GIN),其判别/表征能力等于WL测试的能力。

preliminaries

notation介绍

G=(V,E)表示图,图的节点特征向量被表示为X_v \ for v \in V。有两个task:

  1. node classification。每一个节点v \in V都有一个与之相关的标签y_v。这一个任务的目标是学习一个节点v的向量表示h_v,可以把v的标签预测为y_v = f(h_v)
  2. graph classification。给定一系列图\{ G_1, \cdot \cdot \cdot , G_N \}\subseteq \boldsymbol{G},图的标签为\{y_1,\cdot \cdot \cdot , y_N \} \subseteq \boldsymbol{y},目标是学一个向量表示h_G来帮助预测整张图的标签y_G = g(h_G)

graph neural networks

GNNs使用图结构和节点特征X_v来学习一个节点(h_v)或者整张图(h_G)的向量表示。GNN遵循邻域聚合策略,通过聚合其邻居的表示来迭代更新节点的表示。经过k次聚合迭代后,节点的表示捕获其k-hop网络邻居中的结构信息。GNN的第k层可以表示为:

a_v^{(k)} = AGGREGATE^{(k)}(\{ h_u^{(k-1)}: u \in N(v) \})

h_v^{(k)} = COMBINE^{(k)}(h_v^{(k-1)} , a_v^{(k)})

这里h_v^{(k)}是节点v在第k次迭代(层)的特征向量。我们将第0层初始化h_v^{(0)} =X_vN(v)表示的是一些列邻近v的节点。在GNN中,选择AGGREGATE^{(k)}(\cdot )COMBINE^{(k)}(\cdot )十分重要。

(这一段不翻译了,前面已经在别的论文中看一遍了)

Weisfeiler-Lehman test

图同构问题是指两个图在拓扑上是否相同。除了一些极端情况,图同构的Weisfeiler- lehman (WL)检验是一种有效的、计算效率高的检验,可以区分一大批图(Babai & kuucera, 1979)。它的一维形式,“naïve vertex refinemen”,类似于GNN中的邻居聚合。

wl测试迭代地(1)聚合节点及其邻域的标签,(2)将聚合的标签散列成唯一的新标签。如果在某一次迭代中两个图的节点的标签不同,就认为这两张图是非同构的。

theoretical framework:  overview

GNN递归地更新每个节点的特征向量,以捕获其周围其他节点的网络结构和特征,即其根子树结构(图1)。为了简化标记,我们可以在{a, b, c…}中为每个特征向量分配一个唯一的标签。然后,一组相邻节点的特征向量形成一个multiset(图1):同一元素可以出现多次,因为不同节点可以有相同的特征向量。

定义1 Multiset

multiset是集合的广义概念,它允许其元素有多个实例,即,一个multiset是一个2-tuple(二元)X = (S,m),这里S是由X的离散元(distinct elements,指在集合中不重复的元素)组成的基础集合(underlying set,在数学中,指一个拓扑空间的基本元素组成的集合。)而S\rightarrow \mathbb{N}_{\geq 1}赋予了元素的多重性.

一个最强大的GNN只有在两个节点具有相同的子树结构并在相应节点上具有相同的特征时才能将两个节点映射到相同的位置。由于子树结构是通过节点邻域递归地定义的(图1),我们可以将分析简化为GNN是否将两个邻域(即两个多集)映射到相同的embedding或表示。最强大的GNN永远不会将两个不同的邻域(即多组特征向量)映射到相同的表示,这意味着它的聚合方案必须是注入的(injective)。

building powerful graph neural networks

理想情况下,最强大的GNN可以通过将不同的图结构映射到嵌入空间中的不同表示来区分不同的图结构。然而,这种将任意两个不同的图映射到不同嵌入的能力意味着要解决具有挑战性的图同构问题。也就是说,我们希望同构图映射到相同的表示,而非同构图映射到不同的表示。

lemma 2 

G_1G_2为两个非同构图,若存在一个图神经网络A: \boldsymbol{G} \rightarrow \mathbb{R}^dG_1G_2映射到不同的embedding,Weisfeiler-Lehman图同构检验同样会认为G_1G_2为两个非同构图。

因此,任何基于聚合的gnn在区分不同图方面最多与WL测试一样强大。一个自然的后续问题是,原则上是否存在与WL测试一样强大的gnn?->可,只要邻居聚合和图级读出函数是单射的,那么得到的GNN和WL测试一样强大。

Therorem 3

A: \boldsymbol{G} \rightarrow \mathbb{R}^d为一个图神经网络,在足够的GNN层数下,如果满足以下条件,A将任意Weisfeiler-Lehman检验判定为非同构的图G_1G_2映射到不同的嵌入:

1)A通过h_v^{(k)} = \phi ( h_v^{(k-1)}, f( h_v^{(k-1)}: u \in N_{v} ) )迭代地聚合和更新节点特性,其中f是作用于multiset的函数,\phi是单射的。
2)A的graph-level readout,即在multiset的节点特征\{ h_v^{(k)} \}上做操作的,是单射的。

(稍微断一下,什么是injective,单射, One to one Function

lemma 4

假设输入特征空间\boldsymbol{X}是可数的。令g^{(k)}为GNN的第k层确定参数的函数(k=1,\cdot \cdot \cdot ,L)。其中g^{(1)}是被定义在有固定大小的multisetX\subset \mathbf{X}上的。g^{(k)}的范围,即节点隐藏特征的空间h_v^{(k)},对于k=1,\cdot \cdot \cdot ,L同样也是可数的。

除了区分不同的图之外,GNN还有一个重要的好处值得讨论,即捕获图结构的相似性。注意,WL测试中的节点特征向量本质上是单热编码,因此无法捕获子树之间的相似性。相比之下,满足theorem 3标准的一个GNN通过学习将子树嵌入到低维空间来推广WL检验。这使得GNN不仅可以区分不同的结构,还可以学习将相似的图结构映射到相似的嵌入,并捕获图结构之间的依赖关系。

Graph Isomorphism Network(GIN)

为了对邻域聚集的单射multiset函数建模,提出了“deep multisets”理论,即用用通用的multiset 函数来参数话神经网络。

lemma 5

假设\boldsymbol{X}是可数的。存在一个函数f: \boldsymbol{X} \rightarrow \mathbb{R}^n使得h(X) = \sum_{x\in X}^{} f(x)对于每个固定大小的multi setX\subset \boldsymbol{X}是独特的。此外,任何multiset函数g对于一些函数\phi可以分解为g(X) = \phi(\sum_{x\in X} f(x))

deep multisets和集合之间的一个重要区别是,某些流行的单射集函数,如均值聚集器,不是单射multiset函数。

corollary 6

假设\mathbf{X}是可数的存在一个函数f: \boldsymbol{X} \rightarrow \mathbb{R}^n,因此对于无穷多选择的\epsilon(包含所有无理数),对于每一对(c,X)(这里c \in \boldsymbol{X}, X \subset \boldsymbol{X},是multiset的固定大小),h(c,X) = (1+\epsilon ) \cdot f(c) + \sum_{x \in X}f(x)都是独特的。此外,任何函数g对于一些函数\varphi使用(c,X)对都可以分解成g(c,X) = \varphi ((1+\epsilon ) \cdot f(c) + \sum_{x \in X}f(x))

可以使用多层感知机来学习f\varphi

h_v^{(k)} = MLP^{(k)} ((1+\epsilon ^{(k)}) \cdot h_v^{(k-1)} + \sum_{u \in N(v)} h_u^{(k-1)})

graph-level readout of GIN

通过GIN学习的节点嵌入可以直接用于节点分类和链路预测等任务。对于图分类任务,提出以下“readout”函数,给定单个节点的嵌入,生成整个图的embedding。

随着迭代次数的增加,对应于子树结构的节点表示会变得更加精细和全局。足够的迭代次数是获得良好判别能力的关键。然而,来自早期迭代的特性有时可能会更好地泛化。为了考虑所有的结构信息,使用来自模型的所有深度/迭代的信息。我们通过类似于“Jumping Knowledge Network”的架构来实现这一点。

h_G = CONCAT(READOUT(\{ h_v^{(k)}|v \in G \}) |k=0,1,\cdot \cdot \cdot , K))

Less powerful but still interesting GNNs

与使用mlp的模型不同,1层感知器(即使带有偏置项)不是多集函数的通用逼近器。因此,即使具有1层感知器的gnn可以在某种程度上将不同的图嵌入到不同的位置,这种嵌入可能无法充分捕获结构相似性,并且对于简单分类器(例如线性分类器)来说很难拟合。

平均池化和最大池化不能区分结构。

这一节在描述之前的一些池化trick的使用结论。

下面是其他博客的摘录(老实说,到了图之后,才发现相关的文章少了很多,相比于CV和NLP)

论文阅读_图神经网络GIN - 知乎

之前研究方法着重于表示节点,引文着眼于表征图的结构。作者认为之前方法难以区分不同的图结构,并提出了一种基于GNN的方法GIN,它的区分效果与WL-Test效果相当。

一般情况下一个节点的表式通过聚合它k跳之内的邻近节点计算,而全图的表示则通过对所有节点的池化计算。文中使用了WL-test方法,即图同构测试,它是一个区分网络结构的强效方法,也是通过迭代聚合邻居的方法来更新节点,它的强大在于使用了injective(见后)聚合更新方法。而这里要评测GNN是否能达到类似WL-test的效果。

文中还使用了多合集multiset的概念,指可能包含重复元素的集合。

如图-1所示,有一个图(左图),如果想表征其中的蓝色节点,且只考虑两跳;计算方法如中图所示(子树); 通过迭代,变成了右图所示,每个节点只考虑其邻居,计算邻居时,再考虑邻居的邻居。

算法需要满足injective,injective可译为内射,即可把不同的元素映射成不同输出,在图结构中,不同的邻居结构需要生成不同的节点表征,而max,mean池化显然都不是injective的(后详述)。

平均池化和最大池化都不是内射的。

图-2展示了在多合集情况下,sum的效果最好,mean次之,max最差。

图-3中不同颜色表示不同实体,其中图2-a中两图结构不同,但平均池化和最大池化不能加以区分,而求和可以区分;图-2b中平均池化可区分两图,但最大池化取红与绿中最大值不能区分两图;同理,使用平均池化和最大池化也不能区分图-3c中的两个图。

How Powerful are Graph Neural Networks? GIN 图同构网络 ICLR 2019 论文详解-CSDN博客

文中提出了一个理论框架去分析GNNs的表达能力。在学习表示和区分不同的图结构时,描述了不同GNN变体的表达能力。Weisfeiler-Lehman 图同构测试(1968)(WL)是一种强大的检验方法,可以区分大量的图。与GNNs类似,WL测试通过聚集网络邻居的特征向量迭代地更新给定节点的特征向量。WL测试之所以如此强大,是因为它的单射聚合更新将不同的节点邻居映射到不同的特征向量。作者的主要观点是,如果GNN的聚合方案具有高度表达性,并且能够对单射函数建模,那么GNN可以具有与WL测试同样大的区分能力。

(将节点邻居映射到不同的特征向量,这与之前的很多GNN的目的都差不太多的样子,前面的可能是计算、卷积、这里可能偏重函数形式?)

为了在数学上形式化上述观点,文中提出的框架首先将给定节点的邻居的特征向量集表示为一个multiset,即,一个可能有重复元素的集合。然后,可以将GNNs中的邻居聚合看作是multiset上的聚合函数。因此,为了拥有强大的表示能力,GNN必须能够将不同的multiset聚合到不同的表示中。文中严格地研究了multiset函数的几个变体,并从理论上描述了它们的区分能力,即,不同的聚合函数如何区分不同的multiset。multiset函数的判别能力越强,GNN的表示能力就越强。

(我其实没太明白为什么要使用multiset,是说邻居的聚合方式可能是重复的,如果结构一样的话?)

GNNs的表达能力是捕获图结构的关键。文中通过在图分类数据集上的实验来验证理论,对比了使用各种聚合函数的GNNs的性能。
实验结果表明,在作者的理论中最强大的GNN,即图同构网络(GIN),根据经验判断也具有很高的表示能力,因为它几乎完全适合训练数据,而较弱的GNN变体往往严重不适合训练数据。此外,这种表达能力更强的GNN在测试集精度方面优于其他GNNs,并且在许多图分类benchmarks上实现了最先进的性能。

READOUT表示一个置换不变性函数(permutation invariant function),也可以是一个图级pooling函数。

上图是WL test的例子,请移步原博客看解释。

https://www.cnblogs.com/BlairGrowing/p/15961951.html

_______________________________________

一点题外话啊,读完回忆一下之前读的论文,觉得还有需要关注的疑问,后期会单独写一篇回答自己的疑问(如果能找到答案的话就贴回答)

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

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

相关文章

【RPC】Dubbo接口测试

关于rpc,推荐看看这篇 : 既然有HTTP协议,为什么还要有RPC 一、Dubbo 是一款alibaba开源的高性能服务框架: 分布式服务框架高性能和透明化的RPC远程服务调用方案SOA服务治理方案 二、Dubbo基础架构 三、 Dubbo接口测试 1、jme…

Java转Kotlin

Kotlin 是一种静态编程语言 2011JetBrains开始开发Kotlin,用于多平台应用(能脱离虚拟机,直接编译成可以在win,mac,linux运行的二进制代码) 2017获得谷歌官方支持 语法简洁(减少了大量的样板代码,语法糖&…

一、写给Android开发者之harmony入门

一、创建新项目 对比 android-studio:ability类似安卓activity ability分为两种类型(Stage模型) UIAbility和Extensionability(提供系统服务和后台任务) 启动模式 1、 singleton启动模式:单例 2、 multiton启动模式&#xff1…

Pycharm 执行pytest时,会遇见某些case Empty suite

我这边的情况是有些case就是执行不了,百度了很多,有说设置选pytest的,有命名规范的,都没有成功。后面问了同事之后才发现,pytest 的框架,pytest.ini 执行的时候,加了个标签,主动把某…

在uniapp中如何安装axios并解决跨域问题

目录 1、安装axios 2、导入 3、使用(发请求) 2.解决跨域问题 1.为什么要解决跨域问题? 2.前端如何解决跨域问题? 1、安装axios npm install axios 2、导入 在main.js中导入使用 import axios from axios; // 创建一个名…

【SVN-TortoiseSVN】SVN 的简介与TortoiseSVN 安装使用教程

目录 🌞前言 🌊1. SVN 的简介 🌍1.1 SVN是什么 🌍1.2 SVN 工作原理 🌍1.3 TortoiseSVN 术语及定义 🌊2. TortoiseSVN 安装与汉化 🌊3. SVN 基本操作-TortoiseSVN 🌍3.1 浏览…

AI助力制造行业探索创新路径

近期,著名科技作家凯文凯利(K.K.)来到中国,发表了一场演讲,给广大听众带来了深刻的启示。他在演讲中强调了人工智能(AI)对全球经济的重大影响,并提出了AI发展的多个观点: AI的多样性…

gitee 简易使用 上传文件

Wiki - Gitee.com 官方教程 1.gitee 注册帐号 2.下载git 安装 http://git-scm.com/downloads 3. 桌面 鼠标右键 或是开始菜单 open git bash here 输入(复制 ,粘贴) 运行完成后 刷新网页 下方加号即可以添加文件 上传文件 下载 教程…

记录Postgresql 报错 the database system is in recovery mode

在开发环境中,突然有一天来到公司启动项目的时候报错 看到这个报错肯定是数据库出啥问题了,我们的数据库是部署在docker里面的。 远程服务器之后,使用命令查看容器,发现数据库容器还是启动着的 docker ps 那就进去容器内部看看…

推荐几款国内的AI写作工具,好用免费还能在线生成AI文案

AI写作简介: 在专业领域中,人工智能技术的进步正以前所未有的速度推动着写作行业的革新。当前,我们见证了生成式人工智能(AI)在文本产生领域的广泛应用,其对提升创作效率和拓展创意边界的贡献是显著的。以…

10秒以上无错误!猫态量子比特稳定性达到新水平

内容来源:量子前哨(ID:Qforepost) 文丨 浪味仙 排版丨沛贤 深度好文:1200字丨5分钟阅读 摘要:与涉及超导电路的其他量子比特设计相比,使用猫态量子比特可能会“将用于纠错的量子比特数量减少到…

国外子公司与国内母公司数据文件传输解决方案

在全球化商业运作中,企业常常面临一项关键挑战,即如何实现快速、安全的跨国文件交换。尽管传统的跨国文件传输手段在某些方面带来了便捷,但在处理大型文件时却暴露出其局限性。小编将带大家来分析这些传统方法的不足,并展示镭速为…

5.9学习计划

生成Grove地区osgb筛选IceSat2数据比对GPS数据 leetcode复习5.8 finleetcode新做4道fin数据链路层到2.4复习物理层,看小节 JVM面试题看完 数据链路层以帧为单位传输和处理数据 GCS_WGS_1984 和 WGS_1984_UTM Zone 43S 是两种不同的坐标参考系统(CRS&…

Python专题:十、字典(1)

数据类型:字典,是一个集合性质的数据类型 字典的初始化 字典{关键字:数值} 新增元素 修改元素 字典元素访问 字典[关键字} in 操作符 字典关键字检测 字典元素遍历 ①遍历关键字

JavaWeb--13Mybatis(2)

Mybatis(2) 1 Mybatis基础操作1.1 需求和准备工作1.2 删除员工日志输入参数占位符 1.3 新增员工1.4 修改员工信息1.5 查询员工1.5.1 根据ID查询数据封装 1.5.3 条件查询 2 XML配置文件规范3 MyBatis动态SQL3.1 什么是动态SQL3.2 动态SQL-if更新员工 3.3 …

Disk Doctor for Mac 免激活版:数据安全守卫者

数据丢失是每个人都可能遇到的问题,但Disk Doctor for Mac能让这个问题迎刃而解。这款强大的数据恢复软件,能迅速找回因各种原因丢失的数据。 Disk Doctor采用先进的扫描技术,能深入剖析磁盘,找到并恢复被删除或损坏的文件。同时&…

如何快速实现Java发送邮件功能?

如何使用JAVA发送邮件&#xff1f;&#xff08;不做过多文字解释&#xff0c;详细说明请看代码注释&#xff09; 一&#xff0c;引用相关pom二&#xff0c;实现代码&#xff08;代码参考图片内容&#xff09;三&#xff0c; 接收邮件 一&#xff0c;引用相关pom <dependency…

三级综合医院微信预约挂号系统源码,PC后台管理端+微信公众号+支付宝小程序全套源码

智慧医院预约挂号系统&#xff0c;微信医疗预约挂号小程序源码&#xff0c;实体医院预约挂号支付系统源码 本系统主要面向中大型的医疗机构&#xff0c;适用于各级公立和民营医院&#xff0c;可对接院内his、lis、pacs系统。 PC后台管理端微信公众号支付宝小程序 系统支持当日…

建发弘爱 X 袋鼠云:加速提升精细化、数字化医疗健康服务能力

厦门建发弘爱医疗集团有限公司&#xff08;简称“建发弘爱”&#xff09;创立于2022年&#xff0c;是厦门建发医疗健康投资有限公司的全资子公司&#xff0c;专业从事医疗健康领域的医疗服务。 建发弘爱通过医疗、健康及产业服务三大板块&#xff0c;为百姓提供医疗和健康全生…

Docker Compose常用命令与属性

大家好&#xff0c;今天给大家分享Docker Compose的常用命令&#xff0c;以及docker-compose文件的属性。Docker Compose 是一个用于定义和运行多容器 Docker 应用应用的重要工具。它通过一个配置文件&#xff08;docker-compose.yml&#xff09;来详细定义多个容器之间的关联、…