GNN Pooling(一):Graph U-Nets,ICML2019

本文的两位作者都来自TexasA&M University, TX, USA。看起来有些熟悉,果然是咱们之前读过的论文的作者:Learning Graph Pooling and Hybrid Convolutional Operations for Text Representations,WWW。并且,在池化过程中采用的基本思路是都差不都的。

相比于图卷积的研究,针对于图池化的研究要少许多。本文提出了U-Nets,这是一种类似于Encoder-Decoder的操作,分为GPool和gUnpool两个部分。前者对图进行下采样,选出最重要的结点;后者对下采样之后的结果进行还原。本文工作的灵感来源于U-Net,是用来做医学图像语义分割的,由于本人不做这方面所以就不过多介绍了,不过可以看一眼U-Net的模型结构,本文的模型结构与其类似:

GNN Pooling(一):Graph U-Nets,ICML2019_第1张图片

Graph U-Nets

上文也提到了,U-Nets分为GPool和gUnpool两个部分,接下来就分别介绍。

Graph Pooling Layer

池化大概可以分类两类,全局池化和top-k池化。全局池化操作将所有节点压缩为一个节点,限制了网络的灵活性。k-max pooling操作输出可能来自图中不同节点的k-large units,导致所选节点的连通性不一致。因此,本文自适应地选择一个节点子集来形成一个新的但更小的图。为此,使用一个可训练的投影向量p——将所有结点特征投射到1D,这样就能选取最大的几个结点了。可以理解为比较各个结点与p的相似度,找出来最相似的几个结点作为下采样之后的结果。直接看公式:

GNN Pooling(一):Graph U-Nets,ICML2019_第2张图片

k就是池化之后想要得到的最重要的几个结点。这个重要性由y来衡量。y通过刚刚提到的特征矩阵X^{l}p^{l}上的投影,然后在除以个p的长度||p^{l}||。这样操作之后y的值就是一个标量的数,rank(y,k)就是选取最大的y个数所对应的结点的index,y\widetilde{^}是sigmoid normalization之后的结果,X\widetilde{^}^{l}就是通过下采样的之后的结点id选出的结点对应的特征,同样,A^{l+1}是根据idx对邻接矩阵A^{l}进行行列提取形成的新邻接矩阵。最终,X^{l+1}使用一个简单的门机制得到。1_{C}^{T}表示一个单位向量的转置,和y\widetilde{^}的相乘则会得到y\widetilde{^}的每个元素的和。具体的流程可以见下图:

GNN Pooling(一):Graph U-Nets,ICML2019_第3张图片

Graph Unpooling Layer

GNN Pooling(一):Graph U-Nets,ICML2019_第4张图片

gUnpool的操作是根据GPool的结果将图的结构还原,但是在下采样之后的子图中没有出现的结点,在还原之后使用empty特征向量代替,如图中右上角灰色的小格格。这个并没有什么特别的操作,只是还原了图的结构,而非特征。形式化描述如下:

Graph U-Nets Architecture

GNN Pooling(一):Graph U-Nets,ICML2019_第5张图片

模型首先需要对输入图的结点特征进行降维(稠密表示),因此先过了一个GCN。然后,再多次(具体多少次实验里会探讨)使用gPool,当然,gPool之后也要用GCN进行特征交换。之后,就是gUnpool的过程,与gPool差不多,最终再把图还原成原来大小。图中的黄色线表示skip-connections,每次GCN输出的结点表示都要给拼接起来,目的是为了方式过拟合(过平滑)。最终,你就可以用绿色的那个图中的结点向量去做下游任务了,比如结点分类等。

在文中也提到,下采样使得图中的边也随之减少,这样可能会出现很多独立的连通分量。因此,人为地为图中k-hop结点之间增加边。论文中选择k=2因为GCN是从一阶邻居结点进行特征交换的。如此一来,gPool公式中第四个式子便可以用如下公式代替:

这个也很好理解,就是将邻接矩阵由原来的拓展成2-hop之后的。并且,论文中还提到结点本身的特征再特征交换的过程中应该更为重要,所以,对GCN中A\widetilde{^}=A+I进行了修改,把I替换成2I。

Experimental

接下来就是实验的部分了。数据集还是GNN中常见的那几个,两个表分别代表了结点分类和图分类的任务:

GNN Pooling(一):Graph U-Nets,ICML2019_第6张图片

GNN Pooling(一):Graph U-Nets,ICML2019_第7张图片

参数设置。使用了4层池化和4层解池化,每层的采样结点数设置为2000,1000,500,200。skip-connection选用了加法操作,而不是特征拼接。为了防止过拟合设置L2正则化系数0.001,然后邻接矩阵的dropout设置为0.8,特征矩阵的则设置为0.08。

以下是与其他模型的对比:

GNN Pooling(一):Graph U-Nets,ICML2019_第8张图片

Table5展示了4层GCN与本模型的对比,这说明本模型并不是因为深度(4,GCN为2)而确实是因为池化-解池化的操作有效。其实对于过深的图模型来说,往往因为相同连通分量内特征多度交换造成过平滑。

Table6展示了不添加2-hop连通边的结果对比。

Table7是对网络深度的研究,表明4是最好的。

GNN Pooling(一):Graph U-Nets,ICML2019_第9张图片

Table8是对参数数量的探讨。因为池化与解池化本质上只是学习了一个向量p,因此相比于不使用Pool的模型,增加参数要少。

 

 

你可能感兴趣的:(图池化)