本文是Graph Convolution Networks with EigenPooling的阅读笔记,发表在KDD2019上。
Motivation
如何生成graph representation?一个常用的方式是global combine the node representations。但是这种方式忽略了丰富的结构信息,太flat。因此有人设计了Hierarchical pooling的架构,来试图保留graph sructure信息。
但本篇论文认为即使采用了层次化的架构,在每个pooling layer的过程中,local structure信息依然被很大程度上忽略了。因此本文基于graph Fourier Transform设计了一个新的pooling layer, 即EigenPooling layer,然后可以与GCN layer结合起来做graph classification。还做了一点理论分析。
Solution
整个解决方案分成两个部分:
- 一部分是graph coarsening,这又包括2个方面的东西
- 怎么将original graph中的vertexes进行聚合,形成supervertex,即形成coarse graph里的点;
- 如何形成coarse graph里的edges,即如何将original graph里的edges转成新图里的edges。
- 第一点仅仅是对original graph的拓扑信息进行了处理,而还有feature信息没处理。也就是feature matrix要如何转为新图中的feature matrix,如何将
维的
转成
行的新特征矩阵?
graph coarsening
第1点是采用的spectral clustering的方法形成了supervertexes,然后coarse graph里的edges是这样得到的:
其中就是只包含coarse graph中的cross edges,即跨不同clusters的edges组成的邻接矩阵,不包含每个cluster内部的edges。
Eigenvector-Based Pooling
由, 可见二次型
度量了signal x的smoothness程度。
下面取的特征向量
,将其看作一个signal,则其smoothness程度为:
可见,如果将的每个特征向量看作一个信号,则其对应的特征值衡量了它的smoothness程度。
是对应着所有子图的第
个特征向量,
然后可以只选取前几个特征向量,然后得到
H在本文的实验中取了1,2,3.