其他分享
首页 > 其他分享> > EigenPool - Graph Convolutional Networks with EigenPooling KDD 2019

EigenPool - Graph Convolutional Networks with EigenPooling KDD 2019

作者:互联网

文章目录

论文:Graph Convolutional Networks with EigenPooling

作者:Yao Ma , Suhang Wang , Charu C. Aggarwal , Jiliang Tang
密歇根州立大学,宾夕法尼亚州立大学

来源:KDD 2019

论文链接:Arxiv: https://arxiv.org/abs/1904.13107

代码:https://github.com/alge24/eigenpooling

1 前言

作者提出了EigenPool用来进行图的层次化Pooling操作,在图坍缩方面,与DiffPool的图坍缩机制不同的是,EigenPool方法进行图坍缩时不需要引入任何需要训练的参数,而是采用如谱聚类的方式对图进行划分,然后再进行池化操作。谱聚类算法的思想是将图映射到特征空间后再使用聚类算法进行聚类(如Kmeans聚类算法),使得不同的簇之间的相连节点之间的权重尽可能大,而同一个簇之间的节点之间的权重尽可能小。在谱聚类中常用的聚类算法就是谱聚类,那么节点到簇的分配方式就是一种硬分配的方式,这样就保证了每一个节点只能分配的下一层的一个簇中,从而保证了网络连接的稀疏性,大大降低了参数量和计算开销

此外,DiffPool在池化时,采样加和的方式聚合节点特征,这一定程度上丢失了每个簇的结构信息。为了解决结构信息丢失的问题,EigenPool使用谱图理论的知识来整合子图的结构信息和属性信息

EigenPool的优点

EigenPool的缺点:

总的来说,本文有以下4个贡献点

2 图池化相关工作

全局池化方法

这些全局池方法不能分层学习图表示,从而忽略了图结构中的重要信息。

分层池化方法

分层池化的两个步骤

这些方法在生成超节点表示时使用平均池或最大池,忽略了子图中重要的结构信息。

3 EigenPool

EigenPool是一种基于谱图理论的图坍缩方法,EigenPool的思想和DiffPool类似,都是采用层次化的方式提取整个图的特征,在每个图的池化层中都将前一层的一个簇映射到下一层的一个超节点,从而最后用一个超节点的特征向量来表示一个图的全局信息。

EigenPool模型可分成图坍缩和池化操作两个核心部分:

基于硬分配的图坍缩(图粗化)

DiffPool在进行图坍缩时,需要学习一个簇的软分配矩阵 S ( l ) ∈ R n ( l ) × n ( l + 1 ) S^{(l)} \in R^{n^{(l)} \times n^{(l+1)}} S(l)∈Rn(l)×n(l+1), S i j ( l ) S_{ij}^{(l)} Sij(l)​表示第 l l l层的节点 i i i分配到下一层的超级节点(簇) j j j的概率。为了实现将每个节点以概率的形式分配到下一层网络的每一个簇中,需要使用全连接的方式连接每一个节点和下一层的簇,因此,需要引入大量的参数,从而导致大大增加了模型的时间和空间复杂度。

与DiffPool的图坍缩机制不同的是,EigenPool方法进行图坍缩时不需要引入任何需要训练的参数,而是采用如谱聚类的方式对图进行划分,然后再进行池化操作。谱聚类算法的思想是将图映射到特征空间后再使用聚类算法进行聚类(如Kmeans聚类算法),使得不同的簇之间的相连节点之间的权重尽可能大,而同一个簇之间的节点之间的权重尽可能小。在谱聚类中常用的聚类算法就是谱聚类,那么节点到簇的分配方式就是一种硬分配的方式,这样就保证了每一个节点只能分配的下一层的一个簇中,从而保证了网络连接的稀疏性,大大降低了参数量和计算开销

经典的谱聚类算法流程如下:

图粗化是作用在整张图 G G G 切割后的子图 G ( k ) G^{(k)} G(k) 上的。子图与子图之间没有交集,也就是说 G ( k ) G^{(k)} G(k) 满足 G ( 1 ) ∪ G ( 2 ) ∪ ⋯ ∪ G ( k ) ∪ G^{(1)} \cup G^{(2)} \cup \cdots \cup G^{(k)} \cup G(1)∪G(2)∪⋯∪G(k)∪ ⋯ ∪ G ( K ) = G \cdots \cup G^{(K)}=G ⋯∪G(K)=G 且 G ( 1 ) ∩ G ( 2 ) ∩ ⋯ ∩ G ( k ) ∩ ⋯ ∩ G ( K ) = ∅ G^{(1)} \cap G^{(2)} \cap \cdots \cap G^{(k)} \cap \cdots \cap G^{(K)}=\emptyset G(1)∩G(2)∩⋯∩G(k)∩⋯∩G(K)=∅。文中选用谱聚类方法将大图切为一个个子图。
图粗化的结果是对于每一个子图,都希望能用一个节点来表示,这个节点也可以称为超节点(supernode)。经过粗化,可以希望得 到粗化后的图的邻接矩阵。
记 A ∈ R N × N A \in \mathbb{R}^{N \times N} A∈RN×N 为包含 N N N 个节点的图 G G G 的邻接矩阵, X ∈ R N × d X \in \mathbb{R}^{N \times d} X∈RN×d 为图 G G G 的特征矩阵, d d d 表示节点的特征维度。需要注意的 是,每个子图中的节点数量并不相同, 记 N k N_{k} Nk​ 为子图 G ( k ) G^{(k)} G(k) 中的节点数量, Γ k \Gamma^{k} Γk 是子图 G ( k ) G^{(k)} G(k) 中的所有节点组成的列表, 即 Γ k = \Gamma^{k}= Γk= [ v 1 , v 2 , … , v j , … , v N k ] \left[v_{1}, v_{2}, \ldots, v_{j}, \ldots, v_{N_{k}}\right] [v1​,v2​,…,vj​,…,vNk​​] 且 v j ∈ G ( k ) ∘ v_{j} \in G^{(k)} \circ vj​∈G(k)∘ 定义表示图 G G G 与子图 G ( k ) G^{(k)} G(k) 关系的上采样矩阵 C ( k ) ∈ R N × N k : C^{(k)} \in \mathbb{R}^{N \times N_{k}}: C(k)∈RN×Nk​:

C ( k ) [ i , j ] = 1  if and only if  Γ ( k ) ( j ) = v i C^{(k)}[i, j]=1 \text { if and only if } \Gamma^{(k)}(j)=v_{i} C(k)[i,j]=1 if and only if Γ(k)(j)=vi​

设图 G G G 的某维特征 x ∈ R N × 1 x \in \mathbb{R}^{N \times 1} x∈RN×1, 在谱图论中, x x x 称为图 G G G 的某一维信号,那么图 G G G 中属于子图 G ( k ) G^{(k)} G(k) 的信号为 x ( k ) = ( C ( k ) ) T x x^{(k)}=\left(C^{(k)}\right)^{T} x x(k)=(C(k))Tx。反之, 可以将子图 G ( k ) G^{(k)} G(k) 中的某一维信号映射回图 G G G, 即 x ˉ = C ( k ) x ( k ) \bar{x}=C^{(k)} x^{(k)} xˉ=C(k)x(k) 。在 x ˉ \bar{x} xˉ 中, 不属于子图 G ( k ) G^{(k)} G(k) 的,值为 0 ∘ 0_{\circ} 0∘​ 同理,可以作用在多维信 号 X ∈ R N × d X \in \mathbb{R}^{N \times d} X∈RN×d 上。这样看似也得到了粗化图的特征矩阵,但是如果就这样结束了,巳不没有任何需要深度学习的地方了吗?
表示子图 G ( k ) G^{(k)} G(k) 中节点连接情况的邻接矩阵 A ( k ) ∈ R N k × N k A^{(k)} \in \mathbb{R}^{N_{k} \times N_{k}} A(k)∈RNk​×Nk​ 可以由下式计算:
A ( k ) = ( C ( k ) ) T A C ( k ) A^{(k)}=\left(C^{(k)}\right)^{T} A C^{(k)} A(k)=(C(k))TAC(k)

那么对于整张图 G G G 来说,不包含子图与子图之间的边的邻接矩阵 A i n t A_{i n t} Aint​ 可由下式计算:

A i n t = ∑ k K C ( k ) A ( k ) ( C ( k ) ) T A_{i n t}=\sum_{k}^{K} C^{(k)} A^{(k)}\left(C^{(k)}\right)^{T} Aint​=k∑K​C(k)A(k)(C(k))T

那么只包含子图与子图之间的边的邻接矩阵 A e x t = A − A i n t A_{e x t}=A-A_{i n t} Aext​=A−Aint​。
定义分配矩阵 S ∈ R N × K S \in \mathbb{R}^{N \times K} S∈RN×K 满足:

S [ i , k ] = 1  if and only if  v i ∈ Γ ( k ) S[i, k]=1 \text { if and only if } v_{i} \in \Gamma^{(k)} S[i,k]=1 if and only if vi​∈Γ(k)

分配矩阵 S S S 表示图 G G G 中节点 v i v_{i} vi​ 与所有子图之间的关系。那么,粗化的图 G c o a r G_{c o a r} Gcoar​ 的邻接矩阵可以表示为 A c o a r = S T A e x t S , A_{c o a r}=S^{T} A_{e x t} S, Acoar​=STAext​S, 即图 G G G 经 过粗化后,子图变为超节点, A c o a r A_{c o a r} Acoar​ 为表示超节点之间边关系的邻接矩阵。

基于特征向量的池化

DiffPool在池化时,采样加和的方式聚合节点特征,这一定程度上丢失了每个簇的结构信息。为了解决结构信息丢失的问题,EigenPool使用谱图理论的知识来整合子图的结构信息和属性信息

在这一步,希望得到粗话的图的特征矩阵 X c o a r X_{c o a r} Xcoar​。此处的下采样操作是基于谱图论的,特征向量就是指拉普拉斯矩阵 L L L 的特征向量。记 U = [ u 1 , u 2 , … , u N ] ∈ R N × N U=\left[u_{1}, u_{2}, \ldots, u_{N}\right] \in \mathbb{R}^{N \times N} U=[u1​,u2​,…,uN​]∈RN×N 是由拉普拉斯矩阵 L L L 的特征向量组成的矩阵, x x x 为图的某一信号,则图的傅里叶变换可以表示为:

x ^ = U T x \hat{x}=U^{T} x x^=UTx

即 x ^ \hat{x} x^ 为 x x x 在频域中的表示。
记 L ( k ) L^{(k)} L(k) 为子图 G ( k ) G^{(k)} G(k) 的拉普拉斯矩阵,其特征向量为 u 1 ( k ) , … , u N k ( k ) , u_{1}^{(k)}, \ldots, u_{N_{k}}^{(k)}, u1(k)​,…,uNk​(k)​, 经过上采样操作 C ( k ) C^{(k)} C(k) 可以将子图 G ( k ) G^{(k)} G(k) 的拉普拉斯矩阵 L ( k ) L^{(k)} L(k) 的特征向量 u l ( k ) u_{l}^{(k)} ul(k)​ 映射回怪张图 G G G :

u ˉ l ( k ) = C ( k ) u l ( k ) , l = 1 … N k \bar{u}_{l}^{(k)}=C^{(k)} u_{l}^{(k)}, l=1 \ldots N_{k} uˉl(k)​=C(k)ul(k)​,l=1…Nk​

将所有子图的 u ˉ l \bar{u}_{l} uˉl​ 组成一个矩阵,记为 Θ l ∈ R N × K , \Theta_{l} \in \mathbb{R}^{N \times K}, Θl​∈RN×K, 即 Θ l = [ u ˉ l ( 1 ) , … , u ˉ l ( K ) ] \Theta_{l}=\left[\bar{u}_{l}^{(1)}, \ldots, \bar{u}_{l}^{(K)}\right] Θl​=[uˉl(1)​,…,uˉl(K)​]。
记 X l ∈ R K × d X_{l} \in \mathbb{R}^{K \times d} Xl​∈RK×d 表示图 G G G 的特征矩阵 X X X 经过 Θ l T \Theta_{l}^{T} ΘlT​ 下采样后的特征矩阵,其第 k \mathrm{k} k 行为第 k \mathrm{k} k 个子图 G ( k ) G^{(k)} G(k) 经下采样的信息。
前面提到过,每个子图中的节点数量不同,所以其拉普拉斯矩阵的特征向量的数量(等于节点数量)也不同。所以,当 N k < l N_{k}<l Nk​<l 时, 必然存在子图 G ( k ) G^{(k)} G(k) 没有 u l ( k ) u_{l}^{(k)} ul(k)​ 的情况,这种时候令 u l ( k ) = 0 u_{l}^{(k)}=0 ul(k)​=0 。记所有子图的节点数量的最大值为 N max ⁡ , N_{\max }, Nmax​, 那么 l ≤ N max ⁡ l \leq N_{\max } l≤Nmax​。
级联所有经过下采样的 X X X 得到最终下采样的结果 X p o o l e d ∈ R K × d ⋅ N m a x X_{pooled} \in \mathbb{R}^{K \times d \cdot N_{m a x}} Xpooled​∈RK×d⋅Nmax​。 为了简化操作,取 H ≪ N max ⁡ , H \ll N_{\max }, H≪Nmax​, 则粗化后的图的特征矩阵为 X c o a r = [ X 0 , … , X H ] 0 X_{c o a r}=\left[X_{0}, \ldots, X_{H}\right]_{0} Xcoar​=[X0​,…,XH​]0​
论文后续给出了关于上述操作的证明,包括 H H H 取值的证明。

和DiffPool相比而言,EigenPool模型使得不同的网络层中各个超级节点(簇)之间的连接保持了稀疏性,提升了存储和计算的高效性。在图的坍缩过程中,使用谱聚类的方式划分子图,池化时也使用图的傅里叶变换将图信号映射到谱空间,从而使得池化过程兼顾各个簇内的结构和属性信息。

和DiffPool相比而言,EigenPool模型使得不同的网络层中各个超级节点(簇)之间的连接保持了稀疏性,提升了存储和计算的高效性。在图的坍缩过程中,使用谱聚类的方式划分子图,池化时也使用图的傅里叶变换将图信号映射到谱空间,从而使得池化过程兼顾各个簇内的结构和属性信息

3 实验

作者主要从两个角度进行实验,一个是相比其他pool算法对准确率的提升,另一个是超参数H的影响。

其中,EigenGCN后面的数字表示H的大小,对比实验中,作者得到如下若干结论

下图是真实数据集上,H的大小对保留能量比率的影响

4 总结

EigenPool的提出告诉我们对传统算法的研究永远不过时,EigenPool使用的是图论中的GFT进行变换和操作,与DIFFPOOL算法相比有更强的理论依据。不过有一个缺点在于没有对时间代价的分析,EigenPool的两步处理可能比较耗时。

有错误的地方还望不吝指出,欢迎进群交流GNNs(入群备注信息!!!,格式:姓名(或网名) -(学校或其他机构信息)- 研究方向)。

标签:Convolutional,mathbb,子图,KDD,Graph,矩阵,EigenPool,聚类,节点
来源: https://blog.csdn.net/yyl424525/article/details/112340913