论文:https://arxiv.org/pdf/1904.13107.pdf
代码:https://github.com/alge24/eigenpooling
应用领域:图分类
数据集:
- ENZYMES
- D & D
- PROTEINS
- Mutagenicity
- NCI1
- NCI109
主要贡献:提出 EigenPooling。
预备知识:
- 基础的图论
- 谱聚类
- 谱图论
- 图的傅里叶变换
可以参考:
- Spectra of Simple Graphs
- 谱聚类
- 拉普拉斯矩阵与瑞利熵
- 谱图理论
- 谱聚类方法推导和对拉普拉斯矩阵的理解
- 拉普拉斯矩阵与拉普拉斯算子的关系
- 谱图理解
- 特征值与特征向量的意义
- 谱聚类原理总结
- 如何理解 GCN
- 傅里叶变换具有卷积定理,和傅里叶基函数是拉普拉斯算子的特征函数,之间有什么关系?
这篇工作是 Hierarchical Graph Representation Learning with Differentiable Pooling (DiffPool)的改版。整个工作的思想与 DiffPool 一脉相承,都是希望通过层次化的方式提取整个图的特征,实现图分类。之所以没称其为改进,主要是因为与 DiffPool 相比,其在数据集上的评估结果没有明显的提升。不主要的是,若不是最近头发长,谱图论相关的复杂概念就是劝退的最好理由。顺便吐槽一句,虽然得感谢开源,但作者写的代码实在是太没有规范了。代码是在 DiffPool 的基础上改的,所以最好先了解一下 DiffPool。
图粗化
图粗化是作用在整张图 G G G 切割后的子图 G ( k ) G^{(k)} G(k) 上的。子图与子图之间没有交集,也就是说 G ( k ) G^{(k)} G(k) 满足 G ( 1 ) ∪ G ( 2 ) ∪ ⋯ ∪ G ( k ) ∪ ⋯ ∪ G ( K ) = G G^{(1)} \cup G^{(2)} \cup \dots \cup G^{(k)} \cup \dots \cup G^{(K)} = G G(1)∪G(2)∪⋯∪G(k)∪⋯∪G(K)=G 且 G ( 1 ) ∩ G ( 2 ) ∩ ⋯ ∩ G ( k ) ∩ ⋯ ∩ G ( K ) = ∅ G^{(1)} \cap G^{(2)} \cap \dots \cap G^{(k)} \cap \dots \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& 的邻接矩阵, 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 = [ v 1 , v 2 , … , v j , … , v N k ] \Gamma^{k} = [v_{1}, v_{2}, \dots, v_{j}, \dots, v_{N_{k}}] Γk=[v1,v2,…,vj,…,vNk] 且 v j ∈ G ( k ) v_{j} \in G^{(k)} vj∈G(k) 。定义表示图 G G G 与子图 G ( k ) G^{(k)} G(