论文精读-ASAP-2020


ASAP: Adaptive Structure Aware Pooling for Learning Hierarchical Graph Representations

  • 杂志: AAAI
  • IF: None
  • 分区: None

Introduction

  1. 在使用GNNs进行graph classification的时候,学习graph-level representation是重要的。其中以hierarchical的方式来学习representation是非常有实际意义的,其可以捕捉local substructures(比如一个大分子中的分子集团)。

  2. 为了能够进行层次地学习,众多的graph pooling methods被提出:

    • DiffPool,得到的assignment matrix 是dense的,无法扩展到大图。
    • TopK,无法学习到足够丰富的graph structure。
    • SAGPool,无法有效确定pooled graph的连通性。
  3. 本研究提出一种新的graph sparse pooling operation,叫做Adaptive Structure Aware Pooling(ASAP),来解决上面的limitations。

相关工作

  • GNNs

  • Pooling

    • 早期聚焦于确定性的graph clustering algorithm【Defferrard, Bresson, and Vandergheynst 2016; Fey et al. 2018; Simonovsky and Komodakis 2017】
    • pooling方法也可分为spectral【Ma et al. 2019; Dhillon, Guan, and Kulis 2007】和non-spectral的。因为spectral一般需要进行特征值分解,对于大图来说这个计算量太大,所以这里只聚焦于non-spectral的方法。
    • pooling方法也可以分为global和hierarchical两种。

global pooling直接将整个graph的信息提取,相关方法有Set2Set【Vinyals, Bengio, and Kudlur 2016】、global-attention【Li et al. 2016】和SortPool【Zhang et al. 2018】。

hierarchical pooling则层次地进行节点信息的聚合,相关方法有DiffPool、TopK、SAGPool。这里注意,TopK和SAGPool都是直接将节点丢弃,其没有将节点的信息进行聚合,所以其丢失了大量的信息。

以下是几种方法的特点的总结:


Methods

因为这个方法比较复杂,这里对其进行一下总结,叙述一下其总体的思路。

首先是TopkPool的问题:

  • 其在计算node score(看自己是不是重要)的时候,只考虑到自己这个节点的特征,既没有看到更大的感受野,也没有考虑到graph的结构信息。
  • 在进行pooling的时候,是直接将排名靠后的节点去掉,这些排名靠后的节点的信息并没有丝毫的保留,也没有将其储存在其他的节点中。
  • (自己的反驳:那我在使用TopKPool之前都先多堆叠基层GNN就好了,这些GNN理论上会解决上面的问题。)

为了能够克服上面的这些缺点,ASAP进行了这些设计(思想如下图所示):

  1. 首先使用self-attention的架构,将每个点的邻域都看到(下图中的b),从而将这些邻域的信息都记录到这个点上去,这样得到的就是后面说所的cluster graph \(G^c\)
  2. 然后根据记录的邻域信息(\(G^c\)的features matrix),使用LEConv来计算cluster score(下图中的c),然后根据这个score进行TopKPool类似的pooling操作。
  3. 然后根据cluster的感受野是否有重合、是否有互为邻居的点分别位于两者之中,为这些cluster之间赋予边。此时,得到的graph是\(G^p\)


自注意力

attention就是计算一个alignment score \(\alpha_{ij}\),来描述candidates \(c_j\)在query \(q_i\)上的重要性。在self-attention上,query和candidates都是input entities。根据query的选择,self-attention可以进一步分为下面两个类别:

  • Token2Token(T2T):candidates和query都是输入特征\(\mathbf{h}\),根据【Bahdanau, Cho, and Bengio 2014】,score的计算方式是:

    \[\alpha_{ij}=softmax(v^T\sigma(Wh_i||Wh_j))\]

  • Source2Token(S2T):不使用query,计算方式:

    \[\alpha_{ij}=softmax(v^T\sigma(Wh_j))\]

感受野

这里将感受野的概念从CNNs中推广到GNNs中。

定义pooling operation的\(RF^{node}\)为覆盖影响特点输出节点的neighborhoods所需要的hops。

定义pooling operation的\(RF^{edge}\)为覆盖影响特定输出节点的neighborhoods的edges所需要的hops。

Cluster Assignment

每个节点\(v_i\)都可以看做是一个cluster \(c_h(v_i)\)的medoid,这个cluster是该节点\(v_i\)的h hops的neighbors,即\(c_h(v_i)=\mathcal{N}_h(v_i)\)

\(x^c_i\)是cluster \(c_h(v_i)\)的feature representation,这时我们可以定义一个新的graph:\(G^c(\mathcal{V},\mathcal{E},X^c)\),其中的features就是cluster的features,其adjacency matrix还是原来的:\(A^c=A\)

接下来,我们定义一个cluster assignment matrix \(S\in\mathbb{R}^{N\times N}\),其中每个元素\(S_{ij}\)表示\(v_i\)属于\(c_h(v_j)\)的“资格”。

Cluster Formation using Master2Token

接下来我们讨论如何通过self-attention来学习该cluster assignment matrix \(S\)

基本思路就是搞一个representation \(m_i\)表示整个cluster \(c_h(v_i)\),这个就作为query。而每个cluster内的元素的表示\(x_j\in c_h(v_i)\)就是一个个candidates。

T2T和S2T都无法满足我们的要求,所以这里提出了一种新的self-attention的variant,Master2Token(M2T)。

  1. 首先,我们先使用一个单独的GCN对节点特征\(x_j\)进行一次变化,得到节点特征\(x'_j\)。这些新的节点特征包含了网络的结构信息,这在后面我们将会用到。

  2. 需要构建master query of cluster,使用下面的方式:

    \[m_i = f_m(\{x'_j|v_j\in c_h(v_i)\})\]

    这里的\(x'_j\)是将\(v_j\)的节点特征。

    \(f_m\)可以使用\(max\)

    \[m_i = max_{v_j\in c_h(v_i)}(x'j)\]

  3. 然后将master query \(m_i\)作为query,构建标准的attention模块即可:

    \[\alpha_{ij}=softmax(w^T\sigma(Wm_i||x'j))\]

    这里\(s_{ij}=\alpha_{ij}\),这样我们得到了cluster assignment matrix \(S\)

    注意,\(S\)并不是dense的。对于指定的节点\(v_i\),只有在其感受野内的节点(和其在\(h\) hops之内的节点)才会被赋予score。

  4. 然后计算cluster representation \(x_i^c = \sum_{j=1}^{|c_h(v_i)|}(\alpha_{ij}x_j)\)

Cluster Selection using LEConv

类似TopKpool的思想,这里也是为每一个cluster(这是实际上是将一个感受野的信息都收集到一个节点上去了)计算一个scalar——cluster fitness score \(\phi_i\),然后选择保留前\(\lceil kN\rceil\)的cluster作为pooled graph。

这里,提出了Local Extreme Convolution(LEConv),一个新的graph convolution method可以捕捉局部的极端信息。其计算score的方式为:

\[\phi_i=\sigma(x^c_iW_i+\sum_{j\in\mathcal{N}(i)}{A^c{ij}(x^c_iW_2-x_j^cW_3)})\]

其中\(W_i,i=1,2,3\)是可学习的参数,\(\mathcal{N}(i)\)是graph \(G^c\)的第\(i\)个节点的neighborhood。

在本文的公式中,\(\sigma\)表示的是激活函数,而不是sigmoid函数。

Fitness vector \(\Phi=[\phi_1,\phi_2,\dots,\phi_N]^T\),乘上cluster feature matrix,以便上面的LEConv可以学习:

\[\hat{X}^c=\Phi\odot X^c\]

然后我们根据fitness scores来选择出前面的nodes进行保留,其他删除:

\[\begin{aligned} \hat{i} &= TOP_k(\Phi,\lceil kN\rceil) \\ \hat{S} &= S(:,\hat{i})\in\mathbb{R}^{N\times\lceil kN\rceil} \\ \hat{X^p} & = \hat{X}^c(\hat{i},:) \end{aligned}\]

其中\(\hat{S}\)是裁剪过后的cluster assignment matrix,之后还会用到。

Maintaining Graph Connectivity

根据【Ying et al. 2018】,我们可以用下面的方式来计算\(G^p\)的adjacency matrix:

\[A^p=\hat{S}^T\hat{A}^c\hat{S}\]

其中\(\hat{A}^c=A^c+I\),这保证了如何只要两个cluster有共有的节点、存在节点是邻居则就会被相连。

因为\(\hat{S}\)\(\hat{A}^c\)都是sparse,所以这个操作是高效的。

理论分析

这里主要由3个定理构成:

  • GCN无法进行local extremas的学习

    这里我们使用世界上的高山进行比喻理解。

    我们的任务是得到一系列的代表,能够代表整个世界的高山的特征。自然的一个想法是选择世界上海拔最高的N个地点作为整个世界上高山的代表。但这里存在的问题在于,很多时候高山是一起存在的,比如青藏高原附近的海拔都明显高,如果我们单纯以海拔来选择的话,青藏高原会把世界上其他地区的高山都给挤掉。这带来了两个问题:青藏高原其实不是高山,它可以看做是喜马拉雅山附件的高地;我们这样得到的代表会只局限于局部,无法窥探整个世界的高山的特征。

    用更加数学的语言来说,我们现在认为极值点可以用来描述整个graph的信息。每个极值点都可以看做是一座山。但有些山(最值点)的山坡位置也比其他极值点高,所以如果单纯进行“高度”的比较来选择,就会选择更多的点在最值点附近,无法更广的涉及到整个graph的极值点。

    当使用GCN进行scores的计算,其将所有邻接点的特征进行一次weighted average的操作,所以score最高的node周围的nodes的scores也会非常高(喜马拉雅山的周围是青藏高原,最值点及其附近)。如果这个时候,我们再按照score的高低选择点的话,则我们只会选择到这个nodes及其周围,无法触及到这个graph的广泛的局部极值点信息。

    而使用LEConv,因为其使用的是neighborhoods和中心节点的差值进行的学习,所以其发现极值点的能力应该是强于GCN,这里的定理就是来论述这个问题。


  • graph的连通性

    这里证明了经ASAP pooling后,pooled graph拥有更好的连通性,相比于TopK和SAGPool。


  • ASAP是一个graph permutation equivariant操作


Results

实验设置

数据集


基线方法

  • hierarchical methods:DiffPool、TopK、SAGPool
  • global methods:Set2Set、Global-Attention、SortPool

模型设置

  • 网络架构来自【Cangea et al.2018; Lee, Lee, and Kang 2019】,在fig1中有展示。

    • 其中的readout是mean和max的concat(SAGPool的文章中使用过)

    • 对于global pooling,其只在所有的GCN后使用,并且也不再用readout(global pooling本身就是一个readout)。然后各种方法有一些超参数,这些超参数会进行调整:


  • 对于ASAP,使用\(k=0.5\)\(h=1\)

  • 使用10-fold CV,然后重复20次,将200次test的结果取平均。

实验结果

  1. 在graph classification tasks上的性能比较:


    ASAP效果更好,而且训练时更加稳定。

  2. 探索“聚集整个cluster的节点特征”所产生的作用

    ASAP在两个地方用到了这个:计算fitness scores和计算pooled graph的特征时

    • FITNESS:表示使用了整个cluster节点的信息,否则只使用medoid的特征。
    • CLUSTER:表示使用整个cluster节点的信息来更新特征,否则只是用medoid的特征作为pooled graph的特征。

    则据此,我们设计了3种情形:


    然后其结果如下:


    发现这种聚集cluster节点特征的方式确实对T型能的提升有帮助。

  3. 探索M2T Attention的效果


  4. 探索LEConv的效果

    这里使用GCN和Basic-LEConv(3个参数矩阵都使用同一个)作为对照,效果如下:


    LEConv带来的提升还是很大的。

  5. 探索保留edge weights的效果


    发现保留edge weights带来显著的性能提升,所以保留edge information在pooled graph上是非常必要的。

Discussion

和其他pooling方法的比较

  • DiffPool和ASAP都是去试图构建一个cluster,区别在于DiffPool会考虑所有的节点,而ASAP只考虑h-hop的neighborhoods。

    所以DiffPool可能会导致很远的节点(拥有相似的特征)也会被聚集到一起,为了减轻这个趋势,其专门使用了一个辅助的regularization。而ASAP不需要。

    DiffPool计算的cluster assignment matrix是dense的,而ASAP是sparse的。

    DiffPool必须预先确定好pooled graph的节点数,而ASAP需要给出的是比例,所以更加易于操作。

  • TopK没有考虑到structure information,SAGPool考虑到了,但两者都没有使用cluster assignment matrix,而是直接丢弃节点,这可能造成信息的丢失。

    ASAP因为构建cluster来提取cluster的信息,所以其能够捕捉更加丰富的graph structure information。

    相比于TopK和SAGPool,ASAP可以使得pooled graph拥有更好的connectivity,从而更加有利于信息的流动。

    另外,ASAP使用了LEConv,其保留的cluster更加合理。

self-attention变体间的比较

实际上,GAT用的就可以认为是T2T的attention。

如果我们从cluster中移除一个非medoid节点,对T2T和S2T并没有什么影响,也就是说两者都没有捕捉到cluster内部的关系。

还有一些细节,需要参考文章的appendix部分。


Questions

  1. \(RF^{edge}\)\(RF^{node}\)不太懂其具体含义。

文章作者: Luyiyun
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Luyiyun !
评论
评论
 上一篇
论文精读-HetSANN-2019 论文精读-HetSANN-2019
本研究通过对GAT模型的进一步细化和改进,提出了一种专门对异质图(拥有不同类型的节点和边)进行特征学习的图神经网络。
2020-09-05
下一篇 
论文精读-EdgePool-2019 论文精读-EdgePool-2019
一种新的graph pooling方法,其不再将焦点放在node而是edge上,通过收缩edge来将两个nodes聚合从而完成graph的pooling。
2020-09-01
  目录