DIFFPOOL | 利用可微分池化层构建层级图神经网络

Ying, Zhitao, et al. "Hierarchical graph representation learning with differentiable pooling." Advances in neural information processing systems. 2018.

阅读更多,欢迎关注公众号:论文收割机(paper_reader)
因为排版问题,很多图片和公式无法直接显示,欢迎关注我们的公众号点击目录来阅读原文。

引言


 

现有的图神经网络大多数是平面化的(flat)学习方式,也就是所有网络信息的传播(propagation)都可以想象成将网络铺开,在同一个网络平面上点与点之间通过边来进行信息传播。

 

比如我们介绍过的graphsage模型,是直接从周围的邻居节点中aggregate信息。

 

 

而计算机视觉中的卷积神经网络CNN,在学习图片信息时,往往是层级化(hierarchical)地抽取信息,先是从local的pixel中卷积,最终输出一个对全图的信息表达。

 

这种层级化的深度学习架构就能够启发我们,当学习整个图(graph)的embedding,或者对整个图进行分类时,也应该考虑层级化的学习方式。比如,当学习一个分子图(molecular graph)时,我们可以通过层级化的学习方式来同时捕捉到local的信息和global的信息。

 

但是与图像不同,graph并没有办法直接对像素进行aggregation,从而能够设计对应的pooling方式。因为graph中的点是依靠边来连接,在空间上具有复杂的拓扑结构,任意的输入邻接矩阵来进行pooling,只会丢失更多的local信息。

 

因此,针对graph上的pooling层,我们首先需要找到每个节点在空间上的对应位置,也就是找到节点在pooling时属于哪一个cluster。所以,pooling的时候需要同时学习一个可以cluster分类的指标,能够依据node embedding将每个节点对应的cluster找到。

 

DIFFPOOL结构


 

DIFFPOOL结构是在graph中做池化操作的神经网络层,能够与任意的GNN结构组合来学习网络信息,GNN模型是将图的特征X和邻接矩阵A作为输入,最后输出每个节点的embedding。

 

 

Z仍然是具有相同数量n的节点,以及d维的embedding的矩阵。

经过pooling层后,由于节点信息被聚集到cluster中,所以只留下cluster的embedding,所以将得到一个新的更小的图结构,具有m个cluster。所以新的图的邻接矩阵以及特征矩阵分别是:

          

此时的m<n。

 

通过L次操作之后,最终的信息都被pooling到一个cluster中,用一个embedding来表示整个graph的信息。如下图所示

 

所以每层的pooling都是将上一层的特征和邻接矩阵作为输入,并对应输出pooling之后的特征和邻接矩阵:

 

因此graph pooling中最关键的就是如何将每个节点找到其对应的cluster,这就需要学习一个赋值矩阵(assignment matrix)。该赋值矩阵将上一层GNN输出的embedding信息变成Pooling层输出的特征矩阵和邻接矩阵:

 

因此最关键的地方就是在于通过一个具有pooling结构的图神经网络,学习到从上一层输出到下一层的赋值矩阵:

 

该赋值矩阵其实本质上也是定义在图结构上的矩阵,因此可以将该赋值矩阵也通过图神经网络的结构来实现:

除了学习赋值矩阵之外,在优化该目标函数时,除了最终的图分类(graph classification)之外,还需要来考虑相邻的点应该尽可能被赋值到同样的cluster中,因此再加上边对应的regularization

 

另一个优化目标是该赋值矩阵应该尽可能地将节点分配到某一个cluster而不是每个cluster上都有对应的值,因此通过熵最小来减小无序度:

其中H是熵函数(entropy)。

 

实验


 

实验回答了以下三个问题:

  1. 如何比较本文提出的DIFFPOOL与其他的pooling方法?

  2. DIFFPOOL与现有的GNN结合之后,如何与现有的一些,如GNN和kernel-based的图分类的方法进行对比?

  3. DIFFPOOL如何计算出有意义并且可解释的cluster赋值矩阵?

 

 

实验中采用了三种类型的数据集:蛋白质分类,社交网络,以及科学协作图。前两个问题都比较好问答,通过将DIFFPOOL层与现有的graphsage框结合,提升了图分类的表现。

 

 

而第三个问题则需要对DIFFPOOL进行内部计算的分析:

  • 层级cluster结构,通过对每层中的赋值矩阵中的argmax的计算,得到将每个node分配到下一层中的一个cluster中,通过visualization展示了计算中community的性质能够被很好的保存。

  • 稀疏图和密集图的学习。与聚类算法相似,DIFFPOOL能够将稠密子图学到同一个cluster中。同时,在稀疏图的结构中,一些树状结构或者路径结构的信息,也能够被DIFFPOOL聚集到同一个cluster中。

  • 相似表示的节点被聚类到同一cluster。与普通聚类或者CNN中pooling不同的是,DIFFPOOL的聚类对具有相似特征的节点以及相似neighbor结构的节点的敏感度更高,因为学习的赋值矩阵是通过节点特征学习到的聚类函数,因此即使节点在原图结构上没有连接,但是还是会被学习进同一个cluster中。

 

  • 对最大聚类数的敏感度。当预设的cluster数量很多,虽然会学到更复杂的层级结构,但是也将引入更多的参数,并且也会引入更多noise,从而使模型变得更加低效。但是DIFFPOOL能够通过end-to-end的学习,来使用合适数量的cluster,因为虽然定义的cluster很多,但是有的cluster上的值很小,所以尽管设置了很多的cluster数量,但是实际聚类的cluster数量并不多。

 

总结


 

DIFFPOOL通过定义了新的层级化Pooling层来抽取图的信息,比较关键的点在于通过学习赋值矩阵将不同的节点分配到不同的cluster中,同时结合了边预测的regularization,以及最小化熵值,来共同优化学习卷积参数。

 

该DIFFPOOL层能够被结合进现有的GNN网络结构中,从而学习到更丰富的层级化网络信息。

阅读更多,欢迎关注公众号:论文收割机(paper_reader)
因为排版问题,很多图片和公式无法直接显示,欢迎关注我们的公众号点击目录来阅读原文。

相关文章:

 

阅读原文

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章