论文信息

论文标题:Self-Attention Graph Pooling
论文作者:Junhyun Lee, Inyeop Lee, Jaewoo Kang
论文来源:2019, ICML
论文地址:download 
论文代码:download

1 Introduction

  图池化三种类型:

    • Topology based pooling;
    • Hierarchical pooling;(使用所有从 GNN 获得的节点表示)
    • Hierarchical pooling;

  关于 Hierarchical pooling 聚类分配矩阵:

    $\begin{array}{j}S^{(l)}=\operatorname{softmax}\left(\mathrm{GNN}_{l}\left(A^{(l)}, X^{(l)}\right)\right) \\A^{(l+1)}=S^{(l) \top} A^{(l)} S^{(l)}\end{array}  \quad\quad\quad\quad(1)$

  gPool 取得了与 DiffPool 相当的性能,gPool 需要的存储复杂度为 $\mathcal{O}(|V|+|E|)$,而 DiffPool 需要 $\mathcal{O}\left(k|V|^{2}\right)$,其中 $V$、$E$ 和 $k$ 分别表示顶点、边和池化率。gPool 使用一个可学习的向量 $p$ 来计算投影分数,然后使用这些分数来选择排名靠前的节点。投影得分由 $p$ 与所有节点的特征之间的点积得到。这些分数表示可以保留的节点的信息量。下面的公式大致描述了 gPool 中的池化过程:

    $\begin{array}{l} y=X^{(l)} \mathbf{p}^{(l)} /\left\|\mathbf{p}^{(l)}\right\|\\ \mathrm{idx}=\operatorname{top}-\operatorname{rank}(y,\lceil k N\rceil)\\A^{(l+1)}=A_{\mathrm{idx}, \mathrm{idx}}^{(l)}\end{array} \quad\quad\quad\quad(2)$

2 Method

  框架如下:

   

2.1. Self-Attention Graph Pooling

Self-attention mask

  本文使用图卷积来获得自注意分数:

    $Z=\sigma\left(\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} X \Theta_{a t t}\right)  \quad\quad\quad\quad(3)$

  其中,自注意得分 $Z \in \mathbb{R}^{N \times 1}$、邻接矩阵 $\tilde{A} \in \mathbb{R}^{N \times N}$、注意力参数矩阵 $\Theta_{a t t} \in \mathbb{R}^{F \times 1}$、特征矩阵 $X \in \mathbb{R}^{N \times F}$、度矩阵 $\tilde{D} \in \mathbb{R}^{N \times N}$。

  这里考虑节点选择方法,即使输入不同大小和结构的图,也会保留输入图的部分节点。

    $\begin{array}{l} \mathrm{idx}=\operatorname{top}-\operatorname{rank}(Z,\lceil k N\rceil)\\Z_{\text {mask }}=Z_{\mathrm{idx}}\end{array}   \quad\quad\quad\quad(4)$

  基于自注意得分 $Z$ ,选择保留前 $ \lceil k N\rceil$ 个节点,其中 $k \in(0,1]$ 代表着池化率(pooling ratio),$Z_{\text{mask}}$ 是 feature attention mask。。

Graph pooling

  接着获得新特征矩阵和邻接矩阵:

     $\begin{array}{l} X^{\prime}=X_{\mathrm{idx},:}\\X_{\text {out }}=X^{\prime} \odot Z_{\text {mask }}\\A_{\text {out }}=A_{\mathrm{idx}, \mathrm{idx}}\end{array} \quad\quad\quad\quad(5)$

  其中,$\odot$  is the broadcasted elementwise product。

Variation of SAGPool

  利用图特征矩阵 $X$ 和拓扑结构 $A$ ,计算注意力得分矩阵 $Z$ 的通用形式:

    $Z=\sigma(\operatorname{GNN}(X, A))  \quad\quad\quad\quad(6)$

  比如 $\text { SAGPool }_{\text {augmentation }}$,加入二跳邻居信息:

    $Z=\sigma\left(\operatorname{GNN}\left(X, A+A^{2}\right)\right)   \quad\quad\quad\quad(7)$

  比如 $\text { SAGPool }_{\text {serial }}$,堆叠多层 GNN:

    $Z=\sigma\left(\mathrm{GNN}_{2}\left(\sigma\left(\mathrm{GNN}_{1}(X, A)\right), A\right)\right)  \quad\quad\quad\quad(8)$

  比如 $\text { SAGPool }_{\text {parallel }}$,平均多重注意力分数。$M$ 个 GNN 的平均注意得分如下:

    $Z=\frac{1}{M} \sum_{m} \sigma\left(\mathrm{GNN}_{m}(X, A)\right) \quad\quad\quad\quad(9)$

2.2 Model Architecture

  本节用来验证模块的有效性。

Convolution layer

  图卷积 GCN:

    $h^{(l+1)}=\sigma\left(\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} h^{(l)} \Theta\right)  \quad\quad\quad\quad(10)$

  与 $\text{Eq.3}$ 不同的是,$\Theta \in \mathbb{R}^{F \times F^{\prime}}$ 。

Readout layer

  根据 JK-net architecture 的思想:

    $s=\frac{1}{N} \sum_{i=1}^{N} x_{i} \| \max _{i=1}^{N} x_{i}   \quad\quad\quad\quad(11)$

  其中:

    • $N$ 代表着节点的个数;
    • $x_{i}$ 代表着第 $i$ 个节点的特征向量;

Global pooling architecture & Hierarchical pooling architecture

  对比如下:

  

3 Experiments

数据集

  

基线实验

  

SAGPool 的变体

  

4 Conclusion

  本文提出了一种基于自注意的SAGPool图池化方法。我们的方法具有以下特征:分层池、同时考虑节点特征和图拓扑、合理的复杂度和端到端表示学习。SAGPool使用一致数量的参数,而不管输入图的大小如何。我们工作的扩展可能包括使用可学习的池化比率来获得每个图的最优聚类大小,并研究每个池化层中多个注意掩模的影响,其中最终的表示可以通过聚合不同的层次表示来获得。

论文解读(SAGPool)《Self-Attention Graph Pooling》的更多相关文章

  1. 论文解读《Deep Attention-guided Graph Clustering with Dual Self-supervision》

    论文信息 论文标题:Deep Attention-guided Graph Clustering with Dual Self-supervision论文作者:Zhihao Peng, Hui Liu ...

  2. 论文解读GALA《Symmetric Graph Convolutional Autoencoder for Unsupervised Graph Representation Learning》

    论文信息 Title:<Symmetric Graph Convolutional Autoencoder for Unsupervised Graph Representation Learn ...

  3. 论文解读(ChebyGIN)《Understanding Attention and Generalization in Graph Neural Networks》

    论文信息 论文标题:Understanding Attention and Generalization in Graph Neural Networks论文作者:Boris Knyazev, Gra ...

  4. 论文解读(GraphMAE)《GraphMAE: Self-Supervised Masked Graph Autoencoders》

    论文信息 论文标题:GraphMAE: Self-Supervised Masked Graph Autoencoders论文作者:Zhenyu Hou, Xiao Liu, Yukuo Cen, Y ...

  5. 论文解读(KP-GNN)《How Powerful are K-hop Message Passing Graph Neural Networks》

    论文信息 论文标题:How Powerful are K-hop Message Passing Graph Neural Networks论文作者:Jiarui Feng, Yixin Chen, ...

  6. 论文解读(SR-GNN)《Shift-Robust GNNs: Overcoming the Limitations of Localized Graph Training Data》

    论文信息 论文标题:Shift-Robust GNNs: Overcoming the Limitations of Localized Graph Training Data论文作者:Qi Zhu, ...

  7. 论文解读(LG2AR)《Learning Graph Augmentations to Learn Graph Representations》

    论文信息 论文标题:Learning Graph Augmentations to Learn Graph Representations论文作者:Kaveh Hassani, Amir Hosein ...

  8. 论文解读(GCC)《Efficient Graph Convolution for Joint Node RepresentationLearning and Clustering》

    论文信息 论文标题:Efficient Graph Convolution for Joint Node RepresentationLearning and Clustering论文作者:Chaki ...

  9. 论文解读(AGC)《Attributed Graph Clustering via Adaptive Graph Convolution》

    论文信息 论文标题:Attributed Graph Clustering via Adaptive Graph Convolution论文作者:Xiaotong Zhang, Han Liu, Qi ...

随机推荐

  1. 面试问题之C++语言:多态

    什么是多态? 概念:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性.简单的说,就是用基类的引用指向子类的对象. 为什么要用多态呢? 原因:封装可以隐藏实现细节,使得代码模 ...

  2. 在 Spring 框架中如何更有效地使用 JDBC?

    使用 SpringJDBC 框架,资源管理和错误处理的代价都会被减轻.所以开发者只 需写 statements 和 queries 从数据存取数据,JDBC 也可以在 Spring 框架提供 的模板类 ...

  3. 4.7 ROS分布式通信

    4.7 ROS分布式通信 ROS是一个分布式计算环境.一个运行中的ROS系统可以包含分布在多台计算机上多个节点.根据系统的配置方式,任何节点可能随时需要与任何其他节点进行通信. 因此,ROS对网络配置 ...

  4. Pycharm使用 Ctrl+滚轮 调整字体大小

    首先,打开File中的Settings 然后,点开Editor内的General 最后,在3 指向的位置勾选:Change font size (Zoom)with Ctrl+Mouse Whel 这 ...

  5. Flutter入门教程(四)第一个flutter项目解析

    一.创建一个Flutter工程 1.1 命令行创建 首先我们找一个空目录用来专门存放flutter项目,然后在路径中直接输入cmd: 使用 flutter create <projectname ...

  6. js 获取和设置css3 属性值的实现方法

    众多周知 CSS3 增加了很多属性,在读写的时候就没有原先那么方便了. 如:<div style="left:100px"></div> 只考虑行间样式的话 ...

  7. H5本地存储:sessionStorage和localStorage

    作者:心叶时间:2018-05-01 18:30 H5提供了二种非常好用的本地存储方法:sessionStorage和localStorage,下面分别介绍一下: 1.sessionStorage:保 ...

  8. Android回到页面并刷新数据

    通过对Android Activity的生命周期的了解,需要在后退页面重写onResume()的方法. 建立自己更新数据的函数,并在onCreate()方法中调用. @Override protect ...

  9. Java中 i++和++i 的区别

    学习目标: 理解i++和++i的区别 学习内容: 1.i++ / i- - i++/i- -:遇到 i++或 i- -,i先参与运算,然后 i 再自加或自减1 代码如下: int a = 1; int ...

  10. vue上拉加载下拉加载

    npm i vue-scroller <scroller :on-refresh="refresh" :on-infinite="infinite" :n ...