图神经网络池化方法

图神经网络池化方法


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 图神经网络池化方法
  • 前言
  • 一、扁平图池化
  • 二、分层图池化
    • 1.节点聚类池化
    • 2.节点丢弃池化
  • 参考文献


前言

图池化操作根据其池化策略的差异,可细分为扁平图池化分层图池化两大类:

  1. 如下图(a)所示,扁平图池化(Flat Graph Pooling)技术通过一步操作对图中节点进行降维或聚合,直接获得整体图的表征。这一过程旨在快速提取出图的全局表示,适用于那些需要快速获得全局图表示的场景。
  2. 如下图(b)所示,分层图池化(Hierarchical Graph Pooling)则通过一个分阶段的策略来逐步简化图结构,即在图的每一层上通过减少节点的数量,逐步构建图的更高层次的表征。这种分层的方法允许模型在每一步中细致地捕获和保留图的重要结构信息,适合于需要深层次理解图结构特征的复杂任务。两种池化策略各有优势,选择哪一种依赖于特定任务的需求和目标。

在这里插入图片描述

一、扁平图池化

扁平图池化是一种图池化策略,其特点在于对图中的节点进行一次性的降维或聚合操作,从而简化图的整体结构并直接提取出图级别的特征表示。这种池化技术的核心在于直接从整个图中聚合信息,而非通过对图结构进行多层递归简化来实现。该方法的主要优势在于其简单直接的处理方式,能够在不引入额外计算复杂度的情况下,为下游任务提供有力的图级别特征。

对于给定的图 G = { A , X } \mathcal{G}=\{A,X\} G={A,X},其中 A A A 是图的邻接矩阵,用于描述图中各个节点之间的连接情况; X X X是节点的特征矩阵,包含了与每个节点相关的属性或特征信息。扁平图池化可以定义为如下过程:
X ( l ) = GNN ( l ) ( G ) , h G = Pool f l a t ( X ( l ) ) , X^{(l)}=\text{GNN}^{(l)}(\mathcal{G}),\\ h_{\mathcal{G}}=\text{Pool}_{flat}(X^{(l)}), X(l)=GNN(l)(G),hG=Poolflat(X(l)),
这里GNN指的是任意图神经网络,经过 l l l 层的图神经网络之后,得到图中全部节点的特征表示矩阵 X ( l ) X^{(l)} X(l) h G h_{\mathcal{G}} hG表示经过图池化后得到的图最终表征向量, Pool f l a t \text{Pool}_{flat} Poolflat表示扁平图池化函数,它需要具备以下两个特点:1)对于不同大小的输入图,输出固定大小的图表示;2)在输入图的节点顺序改变时,输出相同的表示。基于以上讨论,几种最常见的扁平池化方法是均值池化(Mean-Pool)、最大值池化(Max-Pool)和求和池化(Sum-Pool),即通过所有节点特征取平均、求最大值以及求和得到。

近期,研究者们通过融入注意力机制,赋予了模型在构建图级别表示时更大的适应性和灵活性。这种机制允许模型动态地为每个节点分配权重,从而更细致地揭示节点间的相对重要性。例如,一些研究工作[1-3]在他们的池化框架中嵌入了软注意力机制,旨在精确地捕捉并表达节点之间的微妙关系。此外,Bai等人[4]采纳了一种创新策略,将卷积神经网络应用于已排序的节点表示上,通过这种方式,他们能够依据节点特征的排序顺序来挖掘图的关键信息。与传统依赖于节点特征一阶统计信息的方法不同,Wang等人[5]引入了二阶池化(Second-order Pooling,SOPool),其主要思想是利用节点特征的二次方来提取图的二阶统计信息。这种方法通过捕获图节点特征的相互关系,能够提供更丰富和深入的图表示,从而增强模型对图结构复杂性的理解和表达能力。

这里,向大家推荐一下我们组的一种扁平的图池化方法,DKEPool [6](Distribution Knowledge Embedding for Graph Pooling)通过引入分布信息的表征,在确保不丢失任何节点信息的前提下,使用非线性的高斯分布信息去拟合非欧几何的图结构数据,从而提升图结构数据的表征能力以及相应的分类效果。

二、分层图池化

分层池化方法的目的是通过将图迭代地粗化为更小尺寸的新图,以保留图的层次结构信息。根据粗化图的方式,分层池化大致可以分为节点聚类池化、节点丢弃池化以及其他类型的池化。节点聚类池化和节点丢弃池化方法都对原始图结构进行了修改,但它们各自采用了不同的策略来保留图的关键信息。节点聚类池化通过合并节点来形成新的节点结构,这样不仅保留了原始图的信息,还在一定程度上维护了图的结构完整性。相反,节点丢弃池化方法着重于抛弃不重要的节点,仅保留那些被认为是图核心结构的一小部分节点。值得注意的是,尽管分层池化方法在概念上设计为在多个层次上粗化图结构,分层池化方法在技术上仍然使用扁平池化方法来获得粗化后图的表示。

1.节点聚类池化

节点聚类池[7-10]将图池化视作一个节点聚类问题,其核心思想是将图中的节点根据相似性或其他准则映射到若干个簇中。
为了全面阐释这种方法,这里提供了一个通用的分解框架,主要由以下两个主要模块来实施节点聚类池化:1)簇分配矩阵(Cluster Assignment Matrix, CAM)生成器:给定一个输入图,CAM根据输入图计算节点到簇的分配,这一步骤可能产生每个节点到簇的硬/软分配。2) 图粗化(Graph Coarsening)模块:该模块利用上述簇分配矩阵,通过提取新的特征表示和更新邻接矩阵,转换原始图为一个粗化的简化版本。这一粗化过程旨在保留图的核心结构特性,同时减小了图的规模,从而在保持图的关键信息的同时提高了计算效率。

对于给定的图 G = { A , X } \mathcal{G}=\{A,X\} G={A,X},其中 A A A 是图的邻接矩阵, X X X是节点的特征矩阵。节点聚类池化过程可以如下表述:
C ( l ) = CAM ( X ( l ) , A ( l ) ) , X ( l + 1 ) , A ( l + 1 ) = Coarsen ( X ( l ) , A ( l ) , C ( l ) ) , C^{(l)}=\text{CAM}(X^{(l)},A^{(l)}),\\ X^{(l+1)},A^{(l+1)}=\text{Coarsen}(X^{(l)},A^{(l)},C^{(l)}), C(l)=CAM(X(l),A(l)),X(l+1),A(l+1)=Coarsen(X(l),A(l),C(l)),
其中, CAM \text{CAM} CAM Coarsen \text{Coarsen} Coarsen 分别指的簇矩阵生成和图粗化操作。 CAM \text{CAM} CAM 以第 l l l 层的邻接矩阵和节点特征矩阵为输入,输出第 l l l 层的簇矩阵 C ( l ) ∈ R n l × n l + 1 C^{(l)}\in\mathbb{R}^{n_l\times n_{l+1}} C(l)Rnl×nl+1 n l n_l nl 是第 l l l 层的节点个数。 Coarsen \text{Coarsen} Coarsen 以第 l l l 层邻接矩阵、节点特征矩阵和簇矩阵为输入,输出第 l + 1 l+1 l+1 层的邻接矩阵和节点特征矩阵。

2.节点丢弃池化

节点丢弃池化[11-16]策略通过采用可学习的评分机制来识别并剔除相对不重要的节点,有效地简化图结构。
为了深入理解节点丢弃池化的过程,我们构建了一个由三个独立模块组成的通用框架,旨在清楚地说明其工作原理:1)分数生成器(Score Generator):针对输入图的每个节点,该模块负责生成一个反映节点重要性的分数。(2)节点选择器(Node Selector):根据生成的重要性分数,此模块负责挑选出分数最高的前 k k k个节点。(3)图粗化(Graph Coarsen):利用所选节点来构建一个新的粗化图,即新的特征矩阵和邻接矩阵。通过这个分模块的框架,节点丢弃池化过程的每个环节都被结构化地展现出来,,从而为优化图结构提供了清晰的路径。

对于给定的图 G = { A , X } \mathcal{G}=\{A,X\} G={A,X},其中 A A A 是图的邻接矩阵, X X X 是节点的特征矩阵。节点丢弃池化过程可以如下表述:
S ( l ) = Score ( X ( l ) , A ( l ) ) , idx ( l + 1 ) = Top-k ( S ( l ) ) , X ( l + 1 ) , A ( l + 1 ) = Coarsen ( X ( l ) , A ( l ) , S ( l ) , idx ( l + 1 ) ) , S^{(l)}=\text{Score}(X^{(l)},A^{(l)}),\\ \text{idx}^{(l+1)}=\text{Top-k}(S^{(l)}),\\ X^{(l+1)},A^{(l+1)}=\text{Coarsen}(X^{(l)},A^{(l)},S^{(l)},\text{idx}^{(l+1)}), S(l)=Score(X(l),A(l)),idx(l+1)=Top-k(S(l)),X(l+1),A(l+1)=Coarsen(X(l),A(l),S(l),idx(l+1)),
这里,函数Score,Top-k和Coarsen分别表示的是分数生成器,节点选择器和图粗化。
Score以第 l l l层的邻接矩阵和节点特征矩阵为输入,输出 S l ∈ R n l × 1 S^{l}\in \mathbb{R}^{{n_l}\times 1} SlRnl×1 表示节点重要性分数,其中 n l n_l nl是第 l l l层的节点个数。 Top-k将分数从大到小排列并提供 S l S^{l} Sl中最大的 k k k个值的索引, idx ( l + 1 ) \text{idx}^{(l+1)} idx(l+1)指示新图中保留节点的索引。与节点聚类池化中Coarsen不同,这里在以第 l l l 层邻接矩阵、节点特征矩阵和簇矩阵为输入的同时,需要额外使用 idx ( l + 1 ) \text{idx}^{(l+1)} idx(l+1) 信息。


参考文献

  1. Fan X, Gong M, Xie Y, et al. Structured self-attention architecture for graph-level representation learning[J]. Pattern Recognition, 2020, 100: 107084.
  2. Itoh T D, Kubo T, Ikeda K. Multi-level attention pooling for graph neural networks: Unifying graph representations with multiple localities[J]. Neural Networks, 2022, 145: 356-373.
  3. Yunsheng B, Ding H, Qiao Y, et al. Unsupervised inductive graph-level representation learning via graph-graph proximity[C]//Proceedings of the 28th International Joint Conference on Artificial Intelligence. 1988, 1994.
  4. Bai L, Jiao Y, Cui L, et al. Learning graph convolutional networks based on quantum vertex information propagation[J]. IEEE Transactions on Knowledge and Data Engineering, 2021, 35(2): 1747-1760.
  5. Wang Z, Ji S. Second-order pooling for graph neural networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2020, 45(6): 6870-6880.
  6. Chen K, Song J, Liu S, et al. Distribution Knowledge Embedding for Graph Pooling[J]. IEEE Transactions on Knowledge and Data Engineering, 2023, 35(08): 7898-7908.
  7. Khasahmadi A H, Hassani K, Moradi P, et al. Memory-Based Graph Networks[C]//International Conference on Learning Representations.
  8. Yuan H, Ji S. Structpool: Structured graph pooling via conditional random fields[C]//Proceedings of the 8th international conference on learning representations. 2020.
  9. Liu N, Jian S, Li D, et al. Hierarchical adaptive pooling by capturing high-order dependency for graph representation learning[J]. IEEE Transactions on Knowledge and Data Engineering, 2021, 35(4): 3952-3965.
  10. Wu J, Chen X, Xu K, et al. Structural entropy guided graph hierarchical pooling[C]//International conference on machine learning. PMLR, 2022: 24017-24030.
  11. Lee J, Lee I, Kang J. Self-attention graph pooling[C]//International conference on machine learning. pmlr, 2019: 3734-3743.
  12. Ranjan E, Sanyal S, Talukdar P. Asap: Adaptive structure aware pooling for learning hierarchical graph representations[C]//Proceedings of the AAAI conference on artificial intelligence. 2020, 34(04): 5470-5477.
  13. Zhang L, Wang X, Li H, et al. Structure-feature based graph self-adaptive pooling[C]//Proceedings of The Web Conference 2020. 2020: 3098-3104.
  14. Ma Z, Xuan J, Wang Y G, et al. Path integral based convolution and pooling for graph neural networks[J]. Advances in Neural Information Processing Systems, 2020, 33: 16421-16433.
  15. Gao H, Liu Y, Ji S. Topology-aware graph pooling networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2021, 43(12): 4512-4518.
  16. Shu D W, Kwon J. Hierarchical bidirected graph convolutions for large-scale 3-D point cloud place recognition[J]. IEEE Transactions on Neural Networks and Learning Systems, 2023.

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

windows C++-并行编程-并行算法(四)- 并行排序

并行模式库 (PPL) 提供了对数据集合并行地执行工作的算法。这些算法类似于 C 标准库提供的算法。并行算法由并发运行时中的现有功能组成。 PPL 提供三种排序算法:concurrency::parallel_sort、concurrency::parallel_buffered_sort 和 concurrency::parallel_radix…

志邦家居CIO吴俊涛谈转型:天润融通如何赋能家居行业未来

根据国家统计局、住建部等各部门综合数据显示,2024年国内泛家居全渠道销售额在预计将超过4.7万亿元,并且在存量房需求释放与智能家居品类创新的推动下,预计2027年将突破5.3万亿元,展现出强劲的增长弹性。 然而,家居行…

【Mysql】为modified_time和created_time设置默认值

建立表SQL: CREATE TABLE your_table_name (id int(11) NOT NULL AUTO_INCREMENT,/* 其他字段 */created_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT 创建日期,modified_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 修改…

如果 Linux 这么好,为什么没有更多的人使用它呢?

原文:DHH - 2024.09.02 几周前,我在推特上看到一个问题:“如果 Linux 这么好,为什么没有更多的人使用它呢?” 这是一个很合理的问题!在你仔细考虑之前,直觉上这是正确的。Linux 甚至是免费的&a…

neo4j关系的创建删除 图的删除

关系的创建和删除 关系创建 CREATE (:Person {name:"jack"})-[:LOVE]->(:Person {name:"Rose"})已有这个关系时,merge不起效果 MERGE (:Person {name:"Jack" })-[:LOVE]->(:Person {name:"Rose"})关系兼顾节点和关…

10_Python流程控制_循环

循环 循环是控制程序重复执行特定代码块的关键结构。Python提供了几种不同的循环结构,以满足不同的编程需求。 While循环 while 循环会重复执行一个代码块,只要指定的条件为真。 适用情况:不清楚具体的循环次数,或者当条件一直…

“科学突破奖”获得者连续两篇Nature,成功绘制人类主要激酶底物特异性图谱

激酶研究进展 近期Nature期刊发表关于酪氨酸激酶的研究文章。这是威尔康奈尔医学癌症中心Jared L. Johnson和Lewis C. Cantley团队自2023年成功绘制丝/苏氨酸激酶底物特异性图谱后,时隔一年后再次成功绘制酪氨酸激酶底物特异性图谱,为理解激酶在信号传导…

MyBatis 分批次执行(新增,修改,删除)

import com.google.common.collect.Lists;import java.util.Iterator; import java.util.List; import java.util.function.Consumer;/*** Description mybatis分批插入数据使用* Author WangKun* Date 2024/9/19 11:20* Version*/ public class MyBatisSqlUtils {/*** param d…

Linux进阶命令-scp

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 经过上一章Linux日志的讲解,我们对Linux系统自带的日志服务已经有了一些了解。我们接下来将讲解一些进阶命令&am…

快速编写一款python漏洞批量检测工具

一、前言 以下列检测脚本示列: import requestsimport urllib3import re,string,randomfrom urllib.parse import urljoinimport argparseimport timeimport sslssl._create_default_https_context ssl._create_unverified_contexturllib3.disable_warnings(urllib…

如何给zip文件设置自动加密,保护压缩包不被随意打开

ZIP是日常生活和工作中经常用到的压缩文件格式,对于重要的文件,我们往往还会设置打开密码,保护压缩包不被随意打开。 如果每次压缩文件都要设置一次密码,操作久了还是有点麻烦,那有没有一种方法,只要压缩文…

usemeno和usecallback区别及使用场景

1. useMemo 用途: useMemo 用于缓存计算结果。它接受一个函数和依赖项数组,只有当依赖项发生变化时,才会重新计算该函数的返回值。否则,它会返回缓存的值。 返回值: useMemo 返回的是函数执行后的结果。 使用场景: 当一个计算量大的函数在每…

openCV3.0 C++ 学习笔记补充(自用 代码+注释)---持续更新 三(61-)

环境&#xff1a;OpenCV3.2.0 VS2017 61、轮廓集合重排序(按轮廓面积从小到大) //对轮廓集合面积从大到小排序 bool compareValue_bs(const std::vector<cv::Point> & c1, const std::vector<cv::Point> & c2) {int area1 cv::contourArea(c1);int area…

【Python进阶】requests库有哪些常用的参数和方法?一篇文章带你详细了解!!!附带源码

常用的requests库参数和方法 常用方法 requests库中定义了多个常用的请求方法&#xff0c;其中requests.get()和requests.post()是最常用的方法。这些方法对应于HTTP协议中的GET和POST方法。 requests.get(url, paramsNone, **kwargs): 用于发送GET请求。requests.post(url…

116页可编辑PPT全面了解数据治理体系、平台,数据质量数据标准

概览 《行业大数据治理平台》是一个全面深入探讨大数据治理的PPT文档&#xff0c;共116页&#xff0c;涵盖了建设背景、解决方案、核心功能以及实际应用案例等多个方面。 核心议题 数据作为资产的重要性和全生命周期管理。信息系统建设方案的演变及其面临的问题。数据资产运营…

鸿蒙Harmony-Next 徒手撸一个日历控件

本文将介绍如何使用鸿蒙Harmony-Next框架实现一个自定义的日历控件。我们将创建一个名为CalendarView的组件&#xff08;注意,这里不能叫 Calendar因为系统的日历叫这个&#xff09;,它具有以下功能: 显示当前月份的日历支持选择日期显示农历日期可以切换上一月和下一月 组件…

[译] Go语言的源起,发展和未来

本篇内容是根据2019年9月份Creating the Go programming language音频录制内容的整理与翻译, 两位主持人与Go 的创始人 Rob Pike 和 Robert Griesemer谈论了 Go 的起源、发展、影响和未来。这是一个史诗般的剧集&#xff0c;深入探讨了 Go 的历史和详细信息&#xff0c;以及他们…

web基础—dvwa靶场(十一)CSP Bypass

CSP Bypass(CSP 绕过) 内容安全策略&#xff08;CSP&#xff09;用于定义脚本和其他资源可以从何处加载或执行&#xff0c;本模块将指导您根据开发人员犯下的常见错误来绕过该策略。 这些漏洞都不是 CSP 中的实际漏洞&#xff0c;它们都是实现 CSP 的方式中的漏洞。 绕过内容安…

JAVA——IO_缓冲流

目录 一、字节缓冲流 二、字符缓冲流 字符缓冲输入流( BufferedReader ) 字符缓冲输出流&#xff08; BufferedWriter ) 缓冲流作用&#xff1a;对原始流进行包装&#xff0c;以提高原始流读写数据的性能 一、字节缓冲流 1. 作用&#xff1a;提高字节流读写数据的性能 2…

使用scp命令从本地往服务器传输文件失败

解决办法&#xff1a; 找到这个文件&#xff0c;打开&#xff0c;将里面的服务器ip对应的一行数据删掉即可。