图神经网络的池化操作

article/2025/6/19 12:39:41

图神经网络有两个层面的任务:一个是图层面(graph-level),一个是节点(node-level)层面,图层面任务就是对整个图进行分类或者回归(比如分子分类),节点层面就是对图中的节点进行分类回归(交通网络道路流量预测)。对于图层面的任务,我们需要聚合图的全局信息(包括所有节点和所有边),并且聚合全局信息得到一个可以表示全图的向量,后续对该向量进行分类回归操作。

如何将全局信息表示为一个向量呢,在图片分类和回归任务中,我们有池化操作,在图数据中,我们一样引入池化操作。

目录

1、全局池化

1.1 readout

1.2 全局虚拟节点

2、层次池化

2.1 基于图坍缩的池化机制

2.2 基于TopK的池化机制

2.3 基于边收缩的池化机制

参考文献

 

1、全局池化

1.1 readout

读出操作(readout)[1]最简单的池化操作,其操作公式为:

\mathbf{y}=R({\mathbf{h}{_{i}}^{(k)}|\forall v_{i}\in V})

其中R可以是max,sum,mean操作,也就是说readout直接对图中所有节点求最大值,求和,求均值,将做得到的值作为图的输出。

1.2 全局虚拟节点

全局虚拟节点[2]就是引入一个虚拟节点,这个虚拟节点和图中所有节点相连,并且也参加整个图的卷积等操作,最后该虚拟节点的隐含特征就是整个图的特征,示意图如下:

引入全局节点e_{0},图中原来的节点为e_{1},e_{2},e_{3}

2、层次池化

层次池化经过K轮消息传递,节点更能够提取全局信息。

2.1 基于图坍缩的池化机制

图坍缩就是将图中的节点划分为几个节点簇,每个节点簇作为下一次图坍缩的节点。

目前DIFFOOL[3]和EigenPooL[4]是两种基于图坍缩的图神经网络算法

2.2 基于TopK的池化机制

TopK[5]对池化机制和上面的图坍缩不同,图坍缩是将图的节点不断聚合成簇的过程,而TopK是一个不断抛弃节点的过程,具体来说就是设置一个超参数k,其中k\in (0,1),接着学习出表示节点重要度的值z并按照重要度对节点进行降序排序,选择最重要的kN个节点,公式表示如下:

i=top\_rank(z,kN)

X{'}=X_{i,:}

A{'}=A_{i,j}

X{'},A{'}表示一个切片操作,就是留下kN个节点以及与其相连的边

如何选择z也是一个可以创新的地方,在论文中,作者引入了一个全局基向量p,将节点向量在该向量上的投影作为重要度:

z=\frac{Xp}{\left \| p \right \|}

其中X为节点特征向量。论文中给出的TopK的模型结构为:

该作者还在每一层池化之后添加读出操作,并在最后最后一层做求和,这样有助于虽有节点的信息融合。

2.3 基于边收缩的池化机制

该方法迭代式的对每一条边的节点进行两两归并并形成新的节点,同时保留合并前的两节点的连接关系到新节点上,EdgePool[6]就是基于边收缩的池化图网络,接下来介绍其相关算法:

首先对于每条边计算一个原始分数:

r_{ij}={\mathbf{w}}^{T}[h_{i}||h_{j}]+b

如下图(左)根据A,B,C,D四个点计算出来的边的原始分数

再根据入度计算每个边的分数:

r_{i}=e^{r_{ij}}

节点分数为边入度边分数之和

如下图(左中),D的值就是:e^{0.5}=1.6, C的值为e^{0.5}+e^1+e^3=1.6+2.7+20=24.5

再计算边对其入度节点的值的归一化

如下图(右中),C->D的边的值为:1.6/1.5=1

最后选择分数最大且未被选中的两个节点进行收缩操作。

 

收缩之后的节点更新方式为:

h_{ij}=s(h_i+h_j)

s可以为求和,求均值,全连接等操作。


参考文献

[1] Gilmer J, Schoenholz S S, Riley P F, et al. Neural message passing for quantum chemistry[J]. arXiv preprint arXiv:1704.01212, 2017.

[2] Pham T, Tran T, Dam H, et al. Graph classification via deep learning with virtual nodes[J]. arXiv preprint arXiv:1708.04357, 2017.

[3] Ying Z, You J, Morris C, et al. Hierarchical graph representation learning with differentiable pooling[C]//Advances in neural information processing systems. 2018: 4800-4810.

[4] Ma Y, Wang S, Aggarwal C C, et al. Graph convolutional networks with eigenpooling[C]//Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2019: 723-731.

[5] Cangea C, Veličković P, Jovanović N, et al. Towards sparse hierarchical graph classifiers[J]. arXiv preprint arXiv:1811.01287, 2018.

[6] Diehl F. Edge contraction pooling for graph neural networks[J]. arXiv preprint arXiv:1905.10990, 2019.

[7] 刘忠雨,李彦霖,周洋,《深入浅出图神经网络:GNN原理解析》


http://chatgpt.dhexx.cn/article/EuhbkCkr.shtml

相关文章

网络图的绘制方法详细讲解

网络拓扑图形如网络结构,并且由箭头线条、节点、路线三个因素组成。网络工程师在绘制网络图时,为了展示网络传输方式和途径,通常将网络节点设备和通信介质进行物理布局。网络拓扑图的结构类型有:星型、环型、树型、总线型、网状、分布式结构、等等。 网络图一般用处 在计算…

网络拓扑图怎么画 详细教程

大数据时代,如何更好地去运营、呈现数据,并从其中发掘出更多信息成为了人们探索的方向。网络拓扑图就是一种非常有用的信息化图表,这种网状关系呈现出来的利器可以使我们把想要传递的信息更加清晰、有逻辑的呈现在别人的眼前。 1. 什么是网络…

图神经网络及其应用

Graph Neural Networks and its applications 摘要 以图形形式构建的数据存在于生物化学、图像处理、推荐系统和社会网络分析等多个领域。利用预处理技术在图结构数据上训练机器学习模型有几种方法,但它们缺乏完全适应数据集和手头任务的灵活性。图神经网络允许创…

[概念]神经网络的种类(前馈神经网络,反馈神经网络,图网络)

随着神经网络的不断发展,越来越多的人工神经网络模型也被创造出来了,其中,具有代表性的就是前馈型神经网络模型、反馈型神经网络模型以及图网络. 1.前馈型神经网络模型 前馈神经网络(Feedforward Neural Network ,FNN&#xff09…

java实现下载网络图片到本地

文章目录 前言一、示例二、代码 1.代码示例2.运行结果总结 前言 当我们在网络上看到自己想要保存的照片,有的网站设置了权限,不能保存情况下,我们可以借助Java的文件流读取网络上的图片,并保存到本地。 一、示例 比如豆瓣话题第…

用python实现数字图片识别神经网络--启动网络的自我训练流程,展示网络数字图片识别效果

上一节,我们完成了网络训练代码的实现,还有一些问题需要做进一步的确认。网络的最终目标是,输入一张手写数字图片后,网络输出该图片对应的数字。由于网络需要从0到9一共十个数字中挑选出一个,于是我们的网络最终输出层…

android中的ImageView,ImageView加载网络图片

android中的ImageView&#xff0c;ImageView加载网路图片 在布局文件中加入标签&#x1f3f7;️ <ImageViewandroid:layout_width"300dp"android:layout_height"200dp"android:background"#111111"android:id"id/imageView_pic1"a…

css用网络图片做背景图片,网络编程css为图片设置背景图片

网络编程css为图片设置背景图片 广告 CSS的功能是非常强大的&#xff0c;对于元素的表现以及页面的布局&#xff0c;都提供了非常强大的功能&#xff0c;这主要在于我们灵活的运行&#xff0c;在这方面提供了丰富且富含价值的各种教程与信息。对于图片的使用&#xff0c;其实更…

硬核!一文梳理经典图网络模型

作者 | Chilia 哥伦比亚大学 nlp搜索推荐 整理 | NewBeeNLP 图神经网络已经在NLP、CV、搜索推荐广告等领域广泛应用&#xff0c;今天我们就来整体梳理一些经典常用的图网络模型&#xff1a;DeepWalk、GCN、Graphsage、GAT&#xff01; 1. DeepWalk [2014] DeepWalk是…

图网络入门

目录 图网络基础知识 Graph Embedding 基础图网络模型 GCN GraphSAGE GAT 其他图网络模型 图网络基础知识 图网络的应用场景有很多&#xff0c;目前在工业界的主要应用是在推荐和风控领域&#xff0c;其他包括社交网络、交通网络、化学分子、3D点云等也都有一些应用。 …

图网络(Graph Network, GN)

目录 什么是图网络&#xff1f; 图网络框架 图网络内容 图的定义 GN块的内部结构 图网络中的关系归纳偏置 什么是图网络&#xff1f; 图网络是2018年由DeepMind、谷歌大脑、MIT和爱丁堡大学等公司和机构的27位科学家共同发表的论文《Relational inductive biases, deep …

图网络分类以及一些通用框架

图网络大体分类 递归图神经网络&#xff08;Recurrent Graph Neural Networks&#xff09;图卷积神经网络&#xff08;Graph Convolution Networks&#xff09;图注意力网络&#xff08;Graph Attention Networks&#xff09;图自编码器&#xff08;Graph Auto-encoder&#x…

泛型的使用和作用

概述 泛型的使用 多态与泛型 两者要一致&#xff0c;Animal 和cat要一致 泛型的作用 提高 Java 程序的类型安全 通过前面的学习我们知道&#xff0c; 在集合中可以添加 Object 类型的对象&#xff0c; 如果在不使用泛型的情况下定义了一个 ArrayList 对象&#xff0c; 那 么各…

java泛型(java泛型的作用)

java泛型的基本使用是什么&#xff1f; add("test1"); String test1 (String)strList。get(0); System。out。println("Test 1 : " test1); } public void testGeneric() { List strList new ArrayList(); strList。 Java泛型的规则和限制有哪些呢&…

java泛型的作用及实现原理

一、泛型的介绍 泛型是Java 1.5的新特性&#xff0c;泛型的本质是参数化类型&#xff0c;也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中&#xff0c;分别称为泛型类、泛型接口、泛型方法。 Java泛型被引入的好处是安全简单。在Java …

泛型(一)--泛型的作用和定义

一、泛型的作用 泛型是.net中十分常见的一种特性。它是在.net 2.0的时候加入。那为什么要在.net 2.0的时候加入泛型这个特性呢&#xff1f;我们首先来看一段代码。 using System;namespace 泛型{class Program{static void Main(string[] args){int iParameter 1;string sPar…

什么叫泛型?有什么作用?

作者&#xff1a;Java3y 链接&#xff1a;https://www.zhihu.com/question/272185241/answer/366129174 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 一、什么是泛型&#xff1f; Java泛型设计原则&#xff1a;…

Java泛型的作用及优点有哪些

Java泛型是J2 SE1.5中引入的一个新特性,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 作用 第一是泛化。可以用T代表任意类型Java语言中引入泛型是一个较大的功能增强不…

第十章 泛型

10.1 泛型的理解和好处 10.1.1使用传统方法的问题分析 1&#xff09;不能加入到集合ArrayList中的数据类型进行约束(不安全) 2&#xff09;遍历的时候&#xff0c;需要进行类型转换&#xff0c;如果集合中的数据量较大&#xff0c;对效率有影响 10.1.2泛型的好处 1)编译时…

简述泛型的基本使用和作用

前言 在上一篇文章中&#xff0c;给大家讲解了泛型的概念、作用、使用场景&#xff0c;以及泛型集合、泛型接口和泛型类的用法&#xff0c;但受限于篇幅&#xff0c;并没有把泛型的内容讲解完毕。所以今天我们会继续学习泛型方法、泛型擦除&#xff0c;以及通配符等的内容&…