Graph Pooling 简析

Graph Pooling 简析

Pooling 是一种用于图表征提取的技术,通常用在图分类上面。

一些记号

我们记一个带有 N N N 个节点的属性图 (attributed graph) 为 G = ( X , E ) \mathcal{G} = (\mathcal X, \mathcal E) G=(X,E)

其中 X = { ( i , x i ) } i = 1 : N \mathcal X =\{(i,x_i)\}_{i=1:N} X={(i,xi)}i=1:N 是节点集, x i x_i xi 是第 i i i 个节点的属性向量

E = { ( ( i , j ) , e i j ) } i , j ∈ 1 : N \mathcal E = \{((i,j), e_{ij})\}_{i,j\in 1:N} E={((i,j),eij)}i,j1:N 是边集,其中 e i j e_{ij} eij 是边的属性向量

我们记这个图的邻接矩阵为 A ∈ { 0 , 1 } N × N A \in \{0,1\}^{N\times N} A{0,1}N×N

借助论文“Understanding Pooling in Graph Neural Networks” 我们使用其中的 SRC 来对Pooling方法进行总结。

Select, Reduce, Connect

对于Pooling,我们可以理解成一个图到图的映射,即: G → G ′ = ( X ′ , E ′ ) \mathcal G \rightarrow \mathcal G' = (\mathcal X', \mathcal E') GG=(X,E)

image-20220217213747408

如上图所示,Select函数会将节点划分成多个节点簇,这些节点簇可以被认为是一个超节点

Reduce函数会将一个超节点(可能包含一个或多个节点)映射到一个属性向量,该属性向量对应Pooling后图的超节点

Connect函数会计算出超节点的边集

image-20220217214217638

在Pooling操作之后,我们将一个N节点的图映射到一个K节点的图

按照这种方法,我们可以给出一个表格,将目前的一些Pooling方法,利用SRC的方式进行总结

image-20220218140909561

这里以 DiffPool 为例,说明一下SRC三个部分:

首先,假设我们有一个N个节点的图,其中节点向量记作 X ∈ R N × d X\in \mathbb R^{N\times d} XRN×d,每个节点向量的维度是 d d d

Select函数会输出一个 N × N ′ ( N < N ′ ) N\times N' (N <N') N×N(N<N) 的映射矩阵 S S S, 也就是将 N N N个点映射成 N ’ N’ N个点

这里面使用了一个GNN来对矩阵 S S S 进行学习

Reduce函数为映射矩阵S乘上一个GNN之后的矩阵,也就是 N ′ × N N'\times N N×N 的矩阵乘上 N × d ′ N\times d' N×d

输出为 N ′ × d N'\times d N×d 的一个向量矩阵,代表Pooling一次之后的这些超节点的节点向量

Connect函数输出邻接矩阵 A ′ ∈ { 0 , 1 } N ′ × N ′ A'\in \{0,1\}^{N'\times N'} A{0,1}N×N

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值