论文阅读 (94):Substructure Aware Graph Neural Networks (SAGNN, AAAI2023)

文章目录

  • 1 要点
    • 1.1 概述
    • 1.2 一些概念
    • 1.3 代码
    • 1.4 引用
  • 2 基础知识
    • 2.1 符号
    • 2.2 信息传递神经网络 (MPNN)
  • 3 方法
    • 3.1 子图提取
      • 3.1.1 基于节点的策略
      • 3.1.2 基于图的策略
    • 3.2 随机游走返回概率编码
    • 3.3 子图信息注入的信息传递

1 要点

1.1 概述

题目子结构感知图神经网络 (Substructure aware graph neural networks, SAGNN)

背景:尽管图神经网络 (GNN) 在图学习方面取得了巨大成就,但由于GNN的传播范式与一阶Weisfeiler-Leman图同构测试算法 (1-WL) 的一致性,导致其难以突破1-WL表达能力的上限。

思路:通过子图更容易区分原始图。

方法:提出子结构感知图神经网络 (SAGNN):

  1. 剪切子图 (Cut subgraph):通过连续且有选择地去除边获得;
  2. 随机游走编码范式扩展到子图上跟节点的返回概率,以捕获结构信息并将其作为节点特征,以提高GNN的表达能力;
  3. 理论证明所提出的SAGNN相较于1-WL的强结构感知能力。

1.2 一些概念

  • 1-WL:一种图同构测试算法,用于判断两个图是否同构。传统GNN的表达能力与1-WL算法相当,也就是说,GNN不能区分1-WL不能区分的图;
  • EgoNetwork:一种图的子结构,它由一个中心节点和它的邻居节点,以及它们之间的边组成;
  • k k k跳内的节点集:与根节点之间的最短路径长度不超过 k k k的所有节点的集合;
  • 边介数中心性 (EBC):通过一条边的最短路径的数量或比例,用于衡量边在图或网络中的重要性;

1.3 代码

https://github.com/BlackHalo-Drake/SAGNN-Substructure-Aware-Graph-Neural-Networks

1.4 引用

@inproceedings{Zeng:2023:1112911137,
author		=	{Ding Yi Zeng and Wan Long Liu and Wen Yu Chen and Li Zhou and Ma Lu Zhang and Hong Qu},
title		=	{Substructure aware graph neural networks},
booktitle	=	{{AAAI}},
pages		=	{11129--11137},
year		=	{2023},
url			=	{https://ojs.aaai.org/index.php/AAAI/article/download/26318/26090}
}

2 基础知识

2.1 符号

G = ( V , E , X ) G=(V,E,\mathbf{X}) G=(V,E,X)表示一个无向连通图,其中 V V V是节点的有限集、 E E E是边的有限集,以及 X = [ x 1 , x 2 , … , x n ⊤ ] \mathbf{X}=[\text{x}_1,\text{x}_2,\dots,\text{x}_n^\top] X=[x1,x2,,xn]是节点特征。

2.2 信息传递神经网络 (MPNN)

MPNN提供了一种通过消息传统机制的统一试图,以抽象GNN。在MPNN中,节点到节点的信息是通过迭代地将相邻节点的信息聚合到中心节点来传播。形式上,给定 G G G中的节点 i i i,其 t t t轮迭代的隐藏表示为 h i t \mathbf{h}_i^t hit、邻居节点为 N ( i ) N(i) N(i)、边 e i j \mathbf{e}_{ij} eij连接了节点 i i i j j j,则标准信息传递范式表示为:
c i t = ∑ j ∈ N ( i ) ϕ t ( h i t , h j t , e i j ) , (1) \tag{1} \mathbf{c}_i^t=\sum_{j\in N(i)}\phi^t(\mathbf{h}_i^t,\mathbf{h}_j^t,\mathbf{e}_{ij}), cit=jN(i)ϕt(hit,hjt,eij),(1) h i t + 1 = σ t ( c i t , h i t ) , (2) \tag{2} \mathbf{h}_{i}^{t+1}=\sigma^t(\mathbf{c}_i^t,\mathbf{h}_i^t), hit+1=σt(cit,hit),(2)其中 ϕ t \phi^t ϕt σ t \sigma^t σt分别表示聚合和更新函数。

3 方法

MPNN在足够深度和宽度的表达能力方面仍然不能超过1-WL,而区分更大的图则需要更强的表达能力。基于子图比原始图更容易区分这一事实,本文讲图同构问题概括为子图同构问题,并依次介绍所提出的SAGNN的三个步骤:a) 子图提取;b) 子图随机游走返回概率编码;以及 c \text{c} c) 子图信息注入。具体如图1。

3.1 子图提取

子图提取是模型表达的关键步骤,其被分为基于节点和基于图的策略。

3.1.1 基于节点的策略

该策略定义为基于单个节点的子图提取,即不需要完整图的信息。通常而言,在当前策略中。子图的数量等于原始图中节点的数量,其中EgoNetwork是最常用的策略。

N ( v ) N(v) N(v)表示根节点 v v v的邻居节点的集合, N k ( v ) N_k(v) Nk(v)表示 k k k跳内节点集。 E g o ( v ) k Ego(v)_k Ego(v)k是以节点 v v v为根节点的的k跳EgoNetwork,其对应节点是根节点 v v v的k跳 N k ( v ) N_k(v) Nk(v)内的邻居。

3.1.2 基于图的策略

该策略需要整张图的信息以获取子图,其子图的数量与原始图中的节点数无直接联系。最简单的策略是随机删除一个边或者一个节点,但这很难提升模型的表示能力,且在高密度强规则图中的性能很差。为了提升GNN的表达能力,本文提出了剪切子图

定义1 C u t ( v ) b Cut(v)_b Cut(v)b子图定义为 b b b个块中包含节点 v v v的块,其通过从原始图中去除边获得:首先计算原始图中所有边的边介数中心性 (Edge betweenness centrality, EBC),并持续去掉图中具有最大EBC的边,直到图被划分为 b b b块。

  1. b = 1 b=1 b=1 C u t ( v ) b Cut(v)_b Cut(v)b等价于原始图。随着 b b b的增加, C u t ( v ) b Cut(v)_b Cut(v)b的大小及其包含的信息级别均下降;
  2. b b b等于节点数时, C u t ( v ) b Cut(v)_b Cut(v)b等价于节点;
  3. C u t ( v ) b Cut(v)_b Cut(v)b是包含节点 v v v的连通图。

3.2 随机游走返回概率编码

在子图中计算返回概率,可以有效应对图编码的随机游走的时间开销大或者表达欠缺的问题。具体地,在子图 G s u b G_{sub} Gsub中,节点 v v v随机游走返回概率编码定义为:
p v G s u b = [ R G s u b 1 ( v , v ) , R G s u b 2 ( v , v ) , … , R G s u b S ( v , v ) ] T , \boldsymbol{p}_v^{G_{sub}}=\left[ \boldsymbol{R}^1_{G_{sub}}(v,v), \boldsymbol{R}^2_{G_{sub}}(v,v),\dots,\boldsymbol{R}^S_{G_{sub}}(v,v) \right]^T, pvGsub=[RGsub1(v,v),RGsub2(v,v),,RGsubS(v,v)]T,其中 R G s u b s ( v , v ) \boldsymbol{R}^s_{G_{sub}}(v,v) RGsubs(v,v) s s s步随机游走在子图 G s u b G_{sub} Gsub中从节点 v v v开始的概率。基于此,分别获得对Ego子图和Cut子图的返回概率 p v E g o \boldsymbol{p}_v^{Ego} pvEgo p v C u t \boldsymbol{p}_{v}^{Cut} pvCut。接下来,使用一个线性层将返回概率编码为子图隐藏表示向量 h v E g o \mathbf{h}_v^{Ego} hvEgo h v C u t \mathbf{h}_v^{Cut} hvCut。注意,单个节点的Ego编码是所有包含当前节点的Ego子图编码的汇聚。

3.3 子图信息注入的信息传递

为了注入子图信息并捕捉全局结构信息,本文同时拼接了子图隐藏表示向量和对应于原始图 G G G的节点 v v v的结构隐藏表示 h v G \mathbf{h}_v^{G} hvG。最终获取的子图信息注入特征定义为:
h v E , 0 = [ x v , h v E g o , h v G ] , h v C , 0 = [ x v , h v C u t , h v G ] . (4) \tag{4} \mathbf{h}_v^{E,0}=[\mathbf{x}_v,\mathbf{h}_v^{Ego},\mathbf{h}_v^G],\mathbf{h}_v^{C,0}=[\mathbf{x}_v,\mathbf{h}_v^{Cut},\mathbf{h}_v^G]. hvE,0=[xv,hvEgo,hvG],hvC,0=[xv,hvCut,hvG].(4)信息传递通道包括Ego通道和Cut通道,分别定义为:
c v E , t = ∑ u ∈ N ( v ) ϕ E t ( h v E , t , h u E , t , e v u ) , (5) \tag{5} \mathbf{c}_{v}^{E,t}=\sum_{u\in N(v)}\phi_E^t(\mathbf{h}_v^{E,t},\mathbf{h}_u^{E,t},\mathbf{e}_{vu}), cvE,t=uN(v)ϕEt(hvE,t,huE,t,evu),(5) c v C , t = ∑ u ∈ N ( v ) ϕ C t ( h v C , t , h u C , t , e v u ) , (6) \tag{6} \mathbf{c}_{v}^{C,t}=\sum_{u\in N(v)}\phi_C^t(\mathbf{h}_v^{C,t},\mathbf{h}_u^{C,t},\mathbf{e}_{vu}), cvC,t=uN(v)ϕCt(hvC,t,huC,t,evu),(6) h v E , t + 1 = σ E t ( c v E , t , h v E , t ) , h v C , t + 1 = σ C t ( c v C , t , h v C , t ) , (7) \tag{7} \mathbf{h}_v^{E,t+1}=\sigma_E^t(\mathbf{c}_v^{E,t},\mathbf{h}_{v}^{E,t}),\mathbf{h}_v^{C,t+1}=\sigma_C^t(\mathbf{c}_v^{C,t},\mathbf{h}_{v}^{C,t}), hvE,t+1=σEt(cvE,t,hvE,t),hvC,t+1=σCt(cvC,t,hvC,t),(7)其中 ϕ t \phi^t ϕt σ t \sigma^t σt分别是汇聚和更新函数。最终,全局图表示 h G \mathbf{h}_G hG通过全局池化获得:
h G = POOL ( { h v E , L , h v C , L ∣ v ∈ V } ) . (8) \tag{8} \mathbf{h}_G=\text{POOL}(\{ \mathbf{h}_v^{E,L},\mathbf{h}_{v}^{C,L}|v\in V \}). hG=POOL({hvE,L,hvC,LvV}).(8)

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

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

相关文章

【随笔】jupyter notebook启动打开文件出现:500 : Internal Server Error

错误: 看log有 module ‘mistune’ has no attribute BlockGrammar’错误 打开文件有500 : Internal Server Error 解决方法: pip install --upgrade jupyterhub pip install --upgrade --user nbconvertconda环境可以: conda install nbc…

linux基础命令总结

目录标题 目录操作1.绝对路径和相对路径2.目录的基本操作3.chomd、chown、chgrp4.cd命令 文件操作1.touch2.more4.cat5.grep6.rm7.cp8.mv9.find 磁盘操作1.df2.du date、passwd1.date2.passwd su、clear、man、who1.su2.man3.clear4.who unameuptimefreepsps与grep、kill1.与gr…

【LeetCode】HOT 100(20)

题单介绍: 精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…

银河麒麟服务器 v10 sp1 安装 .Net6.0

系统版本、架构: 如果系统自带.netcore3,先卸载系统自带的.netcore3: 卸载.netcore3: 我的系统没有自带.netcore3,也没有yum命令。 下载二进制文件安装SDK: 下载 .NET 6.0 (Linux、macOS 和 Windows) 下载…

deeplabv3+源码之慢慢解析main.py(1)--get_argparser函数

deeplab v3源码 慢慢解析系列 本带着一些孩子们做,但本硕能独立看下来的学生不多。和孩子们一起再学一遍吧。希望孩子们和我自己都能坚持写下去吧。网上资料太多了,但不够慢,都是速成,没有足够的解释和补充,希望这次够…

DDR4技术原理详解

DDR4是DDR4-SDRAM的简写,即第4代DDR-SDRAM,DDR-SDRAM全称Double Date Rate Synchronous Dynamic Random Access Memory。本文重点解析DDR4技术规范及其背后的电子电路原理,以及编程使用DDR4过程中需要注意的性能事项。 DDR4数据存储原理 DD…

仙剑风景图片生成【InsCode Stable Diffusion美图活动一期】

一、 Stable Diffusion 模型在线使用地址:https://inscode.csdn.net/inscode/Stable-Diffusion 二、模型版本及相关配置: Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 423016627, Size: 512x512, Model hash: 74c61c3a52, Model: GuoFeng3,…

keil_arm满减栈应用场景

.text .global _start _start:满减压栈使用场景ldr sp,0x40000800mov r0,#0x1mov r1,#0x2bl add1_funcadd r0,r0,r1 r0 r0 r1 0x3b stopadd1_func: 压栈保存现场 r0 0x1 r1 0x2stmfd sp!,{r0,r1,lr}mov r0,#0x3mov r1,#0x4bl add2_funcadd r0,r0,r1 r0 r…

【实战】 六、用户体验优化 - 加载中和错误状态处理(上) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(八)

文章目录 一、项目起航:项目初始化与配置二、React 与 Hook 应用:实现项目列表三、TS 应用:JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理1.给页面添加 …

Observability:Synthetic monitoring - 合成监测入门

从我们的全球测试基础设施监控关键用户旅程,并了解网络和前端性能对用户体验的影响。 全面了解你的网站性能、功能和可用性(从开发到生产),并在客户之前发现问题。合成监测(synthetic monitoring)使你能够模…

SAP 销售订单状态修改

FM: I_CHANGE_STATUS 代码样例: FUNCTION zjkdms003. *"---------------------------------------------------------------------- *"*"本地接口: *" IMPORTING *" VALUE(I_VBELN) TYPE VBELN_VA OPTIONAL *" EX…

解决Python的SyntaxError: Non-UTF-8 code starting with ‘\xbb‘问题

文章目录 一、报错二、分析三、解决3.1 方法一3.2 方法二3.3 方法三 一、报错 在程序中,line 8为含有中文的注释,编译后出现了SyntaxError: Non-UTF-8 code starting with \xbb的报错,具体如下图。 二、分析 这个错误是由于Python解释器无…