【intro】Graph Isomorphism Network(GIN)

ops/2024/9/19 3:30:03/ 标签: 神经网络, gin, 人工智能, GNN

论文

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.ppmy.cn/ops/40907.html

相关文章

Linux操作系统基础题库

一. 单选题(共2题,40分) 1. (单选题)Linux操作系统自诞生至今,有数十万的程序开发人员参与到了它的开发与完善中,如今Linux已发展成为是一个成熟、稳定的操作系统。从以下选项中选出关于Linux特点描述完全正确的一项。…

使用vue3+ts+vite从零开始搭建bolg(五):layout(持续更新中)

五、layout搭建 5.1静态搭建 在src下创建如图文件夹 这里用logo举例&#xff0c;在scripts里export <script lang"ts">export default {name: Logo,}</script> 然后在layout里引入 //引入左侧菜单顶部用户信息 import Logo from ./logo/index.vue 接…

Redis缓存双删(使用Redis如何保证数据库和缓存之间的同步)

使用Redis如何保证数据库和缓存之间的同步 通常我们有以下几种策略&#xff1a; 先修改数据库再更新缓存&#xff08;不建议&#xff09;&#xff1a;该策略的问题是如果数据库更新成功了Redis 修改失败了&#xff0c;也会导致不同步的问题 先修改缓存再更新数据库&#xff0…

Vmware 搭建的Ubuntu 24.04 网络配置

Vmware 搭建的Ubuntu 24.04 的Server版本时遇到了无妨访问网络的问题&#xff0c;记录一下 Vmware使用的网络是桥接模式。 编辑 /etc/netplan/50-cloud-init.yaml文件 sudo vi /etc/netplan/50-cloud-init.yaml 50-cloud-init.yaml&#xff1a; network: version: 2 …

python 基础(笔记)

文章目录 1. 环境安装2. 第一个程序 hello word3. 注释4. 变量4.1 变量声明4.2 命名规则4.3 命名规范 5. 运算符5.1 算术运算符5.2 赋值运算符5.3 比较运算符 6. 数据类型6.1 数据类型6.2 数据类型的转换 7. 字符串操作7.1 字符串定义的几种方式7.2 字符串拼接7.3 字符串格式化…

Vue3响应式原理实现与track和trigger依赖收集和触发依赖

前言 Vue的响应式系统是基于数据劫持加发布订阅者模式实现的&#xff0c;数据响应式就是建立响应式数据与依赖的关系 (调用了响应式数据的操作之间的关系) vue2使用Object.defineProperty进行数据拦截,而Vue3使用Proxy进行数据拦截是es6中新加的api,比Object.defineProperty解…

数字革命:Web3如何重塑我们的网络生活

引言 随着信息技术的飞速发展和互联网的普及&#xff0c;我们的生活逐渐进入了数字化时代。然而&#xff0c;传统的互联网架构在数据安全、隐私保护和去中心化等方面存在诸多不足。为了解决这些问题&#xff0c;Web3技术应运而生&#xff0c;以区块链和去中心化技术为基础&…

第2章Spring Boot实践,开发社区登录模块【仿牛客网社区论坛项目】

第2章Spring Boot实践&#xff0c;开发社区登录模块【仿牛客网社区论坛项目】 前言推荐项目总结第2章Spring Boot实践&#xff0c;开发社区登录模块1.发送邮件配置MailClient测试 2.开发注册功能访问注册页面提交注册数据激活注册账号 3.会话管理体验cookie体验session 4.生成验…

Python图形复刻——绘制母亲节花束

各位小伙伴&#xff0c;好久不见&#xff0c;今天学习用Python绘制花束。 有一种爱&#xff0c;不求回报&#xff0c;有一种情&#xff0c;无私奉献&#xff0c;这就是母爱。祝天下妈妈节日快乐&#xff0c;幸福永远&#xff01; 图形展示&#xff1a; 代码展示&#xff1a; …

H3C 开启ssh远程管理

请参考配置手册&#xff0c;https://www.h3c.com/cn/d_201908/1222015_30005_0.htm#_Toc17302887 3.6.2 配置设备作为SSH服务器 以下配置步骤只介绍采用password方式认证SSH客户端的配置方法&#xff0c;publickey方式的配置方法及SSH的详细介绍&#xff0c;请参见“安全配置…

从零学算法994

994. 腐烂的橘子 在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 值 0 代表空单元格&#xff1b; 值 1 代表新鲜橘子&#xff1b; 值 2 代表腐烂的橘子。 每分钟&#xff0c;腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直…

大模型训练框架DeepSpeed使用入门(1): 训练设置

文章目录 一、安装二、训练设置Step1 第一步参数解析Step2 初始化后端Step3 训练初始化 三、训练代码展示 官方文档直接抄过来&#xff0c;留个笔记。 https://deepspeed.readthedocs.io/en/latest/initialize.html 使用案例来自&#xff1a; https://github.com/OvJat/DeepSp…

企业网站HTTP网站业务被慢连接攻击了该怎么办

企业的网站建设中遇到网络攻击会出现哪些问题&#xff1f;一些中小型企业对于网络安全的认知不足&#xff0c;网站建设种类众多&#xff0c;电子商城类&#xff0c;小型游戏&#xff0c;支付类型&#xff0c;H5页面的网站&#xff0c;开发等等&#xff0c;如遇见网络攻击造成的…

51单片机实现俄罗斯方块游戏编程

一、设计要求 &#xff08;1&#xff09;利用51单片机&#xff0c;设计一款俄罗斯方块游戏&#xff0c;完成硬件电路的开发和程序的编写调试&#xff1b; &#xff08;2&#xff09;采用LCD12864液晶作为游戏运行界面&#xff1b; &#xff08;3&#xff09;利用按键输入灵活…

浅谈java,python,c++的差异

Java&#xff0c;Python和C是三种常见的编程语言&#xff0c;它们在很多方面有着不同的特点。以下是它们的一些主要异同点&#xff1a; 宏观应用 语法和风格&#xff1a; Java&#xff1a;Java是一种静态类型语言&#xff0c;语法相对严谨&#xff0c;需要显式声明变量的类型。…

web安全学习笔记(14)

记一下第23-24课的内容。了解越权漏洞分类漏洞的危害定义认识平行越权漏洞&#xff1b;了解垂直越权原理cookie越权漏洞 一、越权漏洞的分类 ①平行越权漏洞——同等级权限下的越权操作称之为平行越权。 ②垂直越权漏洞——由下至上的越权操作称之为垂直越权。 例如&#x…

webpack压缩js代码示例:移除console debug 删除注释 保留函数名 并行压缩 移除指定函数

Webpack 默认的压缩配置&#xff08;即使用内置的 TerserPlugin&#xff09;通常包括类似 terserOptions 中的一些基本设置&#xff0c;但可能不会涵盖所有可用的 Terser 选项。默认的压缩通常会移除未使用的代码&#xff08;tree shaking&#xff09;、删除注释、缩短变量名&a…

visual studio2022 JNI极简开发流程

文章目录 1 创建java类2 生成JNI头文件3 使用visual studio2022创建DLL项目3.1 选择模板中&#xff08;Windows桌面向导&#xff09;3.2 为项目命名3.3 选择应用程序类型为动态链接库3.4 项目概览 4 导入需要的头文件4.1 导入需要的头文件4.2 修改头文件 5 编写C实现6 生成dll文…

GO+树莓派+E53_IA1智慧农业模块

简介 之前手头上有小熊派的开发板&#xff0c; 有一个E53_IA1模块&#xff0c; 刚好用到树莓派上&#xff0c; 使用GO进行控制&#xff0c;实现智慧农业模块功能。 模块介绍 模块电路介绍 按硬件分成五块&#xff0c; 其中四块在本次用上了&#xff0c; 分别是 1. 补光模块&…

正则表达式常用特殊字符(元字符)说明

正则表达式中包含多种特殊字符&#xff08;也称作元字符&#xff09;&#xff0c;它们具有特定的含义&#xff0c;用于构建复杂的匹配模式。以下是一些常用的特殊字符序列及其含义&#xff1a; \d - 匹配任何数字&#xff0c;等同于 [0-9]。\D - 匹配任何非数字字符&#xff0…