最近阅读了由斯坦福大学研究团队发表的这篇名为“Hierarchical graph representation learning with differentiable pooling”论文,对于论文中提出的问题觉得十分新颖,同时论文的写作也很流畅,因此将个人对该论文的理解进行整理,如有不当之处还请指教。
算法框架
GNN的相关研究被广泛的应用于图表示学习中,并且在节点分类和链路预测等任务中取得了SOTA的结果。但是GNN框架设计之初是基于CNN实现的,其固有的扁平化结构并不能完全适应于图的表示,因为大多数的图(网络)是具有层次结构的。所以,本文的motivation也是源于图的这种分层结构,提出了一种名为DIFFPOOL的算法。算法的总体框架如图1所示。
从图1可以看出,DIFFPOOL算法是一种分层pooling的GNN算法。在每一层内部使用的是一种图分类表示算法(本文使用GRAPHSAGE模型【“Inductive representation learning on large graphs”】)来得到当前图中节点的向量表示;在层与层之间则使用局部pooling的操作得到当前图的粗化图(coarsened graph)。在每一层内,算法都会根据GNN得到的节点向量对该层中的图进行聚类操作,将节点映射到一系列类别(cluster)中,从而得到新的分层图。直到最后一层,DIFFPOOL算法会得到整个图的一个统一的向量表示,用于图分类任务。DIFFPOOL算法的核心思想是通过提供一个能够区分图中分层节点的pooling操作来得到一个更深、更多层结构的GNN模型。同时DIFFPOOL算法能够和多种GNN模型进行融合,也说明该算法具有一定的泛化性。
算法介绍
预备知识
1、图分类任务。将一个图G表示成(A,F),其中A为图的邻接矩阵 ,F表示图的节点特征矩阵
,n 为图中节点的个数,d为节点的特征数(当然,对于一个图的表示可以根据模型需要自行定义,本文使用的是邻接矩阵和特征矩阵的方式表示所要输入的图)。而一个图分类任务可以有如下描述:给出一系列的带标签的图
,其中
为每个图