本文介绍的论文是《Self-Attention Graph Pooling》。
该篇文章提出了一种新的图池化方式,该池化方式是基于自注意力机制来计算得分,同时考虑了节点特征和图的拓扑结构,能够实现端到端方式学习图的层次表示。
一、背景 |
近几年图神经网络已被广泛应用于各个领域,并且表现出了很好的性能,但是对于图进行采样操作仍是难以实现,对于图像领域,CNNs已经被广泛应用,主要是对图像的卷积以及池化操作,目前卷积操作已被迁移到了图上,但是池化还是较难。
为了改进池化效果,本文提出了一种新的池化方式,基于自注意力机制方式,这种方式可以同时考虑节点特征以及图拓扑结构。
二、模型方法 |
目前图池化方式主要有三类:
Cangea等人提出了gPool方法,该方法就是一个分层池化方法,利用节点特征进行池化操作,该方法内部有一个可学习的向量 p p p,这个向量会与每个节点特征进行点乘计算得分,然后这样每个节点就会得到一个得分,之后会根据这个得分对所有节点进行排序,然后会根据给定的超参数选择需要保留的节点,其余的节点会使用掩码机制遮盖掉。
但是上面做法也会存在局限性,它单单只考虑了图节点特征,并没有考虑图的拓扑结构,为了进一步改进,作者提出了SAGPool,该方法可以同时使用节点特征和图的拓扑结构产生更加合理的图的层次表示。
1.自注意力掩码
作者采用了下面公式来计算节点的注意力分数,这个公式很容易理解,和GCN的传播公式很像,只不过其中的可学习参数 θ \theta θ 是一个列向量,维度为【F,1】,最终的 Z Z Z 的维度为【N,1】,代表每个节点的注意力得分, X X X 代表节点特征, D D D 代表图的度矩阵, A A A 是图的邻接矩阵,这种做法就同时考虑了节点特征 X X X 和图的拓扑结构利用度矩阵。
之后会根据学习出的Z也就是注意力分数矩阵进行池化操作,这时会定义一个超参数k,代表保留节点的比率,那么【kN】就是最终需要保存节点的个数,我们会根据注意力分数进行排序,保留分数最大的前【kN】个节点。
2.图池化
下面就会根据索引产生掩码,以及进行保留节点处理,下面公式可以参考上面SAGPool层次图进行观看。
3.SAGPool的变体
上面我们使用的是GCN经典架构,其实可以使用其它的图网络结构进而达到更好的效果,下面提出几种方式不仅可以使用邻居节点还可以使用多跳邻居节点来计算注意力得分。
三、实验结果 |
作者将以下四种池化方法作为基线:Set2Set、SortPool、DiffPool和gPool。比较DiffPool、gPool和SAGPoolh采用分级池结构,比较Set2Set、SortPool和SAGPoolg采用全局池结构。
根据图节点的数量增加参数的数量。x轴标签表示输入图节点数,y轴标签表示分层池模型的参数数:输入节点特征数为128,隐藏特征大小为128,类数为2。式(3)作为SAGPool的图卷积。K为池化比,K = 1.0表示池化后保留整个节点。无论输入图的大小和池化比例如何,gPool和SAGPool的参数数量都是一致的。
四、总结 |
本文提出了一种新的基于自注意的图像池方法SAGPool。
该方法具有以下特点:
SAGPool使用一致数量的参数,而不考虑输入图的大小。