GNN Pooling(十一):Edge Contraction Pooling for Graph Neural Networks,2019

本文的作者来自An-Institut Technische Universität München,本文至今好像还未正式发表。
本文提出了EdgePool,其能够学习一个局部和稀疏的硬池变换,并自然地考虑到图结构,确保不会完全删除节点。EdgePool优于其他的池化方法,可以很容易地集成到大多数GNN模型中,并且在节点分类和图分类方面都提高了性能。

EdgePool

Edge contraction

为了实现边池,提出了一种Edge contraction的策略。引入新节点 v e v_e ve和新边,使 v e v_e ve与所有 v i v_i vi v j v_j vj相邻的节点都相邻, v i v_i vi v j v_j vj及其所有边都从图中删除。直观地说,Edge contraction选择一条边合并它的节点至一个新节点,然后,这个新节点连接到合并节点已经连接到的所有节点。我们多次重复这个过程,但是新节点并不包含在Edge contraction的过程中。如图:
在这里插入图片描述

Choosing edges

计算每条边的得分来选择边,然后为得分最高的边(注意这个边必须是在pool之前的原图中存在的,Edge contraction得到的新边并不参与其中)进行Edge contraction。边的score借助对边的节点特征的线性变换得到:
在这里插入图片描述
当然,在计算这分数的时候也可以将边的特征整合进去,也就是做了一个简单的拼接:
在这里插入图片描述

不过,为了使得不同边之间的分数可以相互比较,紧接着做了一个softmax(类似于GAT),然后加了常数0.5:
在这里插入图片描述
这样, s i j s_{ij} sij就是最终的边得分。池化的结果总是大概50%的结点,因此池化比例是不必调节的,不像是topK的池化方法。文中举例一个例子来说明这个过程:
在这里插入图片描述
首先,图(1)中边的分数应该是 e ( r i j ) e(r_{ij}) e(rij),为了方便说明就直接给出了,并且所有方向的边的评分都相同(就是无向图呗)。图(2)开始计算每条边的分数的exp,然后节点的得分是输入的分数的exp的和。比如节点 A A A s c o r e ( A ) = e 1 + e 2 ≈ 10.1 score(A)=e^1+e^2≈10.1 score(A)=e1+e210.1。图(3)是对得分进行归一化,然后选择值最大的边进行缩减,得到了图(4),作为池化之后的结果。

Computing new node features

新节点是由两个不同的节点合并而成的,因此新节点的特征就更新为:
在这里插入图片描述
这样是为了把边的分数信息也考虑进去。

Unpooling EdgePool

对于节点分类来说,还是需要一个解池的操作,因此每个EdgePool层还需要将上一个图的每个节点映射到新池的图的节点。对于解池的操作,结构是已知的了,只需要对新增的节点特征进行还原即可:
在这里插入图片描述
我十分怀疑如此弱智的操作的效果,但是从后续的试验里发现其实还行。

实验

具体的参数如果大家有兴趣复现论文就看一看原文吧,这里直接给出不同的试验结果。
在这里插入图片描述
Table1 中是与其他不同的池化操作的对比,看起来还行哦。
在这里插入图片描述
Table2 是将edgepool技术和其他GNN框架融合之后的效果(图分类),效果也不错。
在这里插入图片描述
Table3 是与其他GNN模型在节点分类任务上结合的效果。
最后是可视化:
在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五月的echo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值