2019-ICML-Towards Graph Pooling by Edge Contraction

2019-ICML-Towards Graph Pooling by Edge Contraction

2019-ICML-Towards Graph Pooling by Edge Contraction_第1张图片
Paper: https://graphreason.github.io/papers/17.pdf
Code: https://github.com/Jiajia43/pytorch_geometric

通过边收缩实现图池化

池化层可以使GNN对抽象的节点组而不是单个节点进行推理,从而增加其泛化潜力。为此,作者提出了一个依赖于边缘收缩概念的图池层:EdgePool 学习局部和稀疏池化转换。实验表明,EdgePool可以集成到现有的GNN架构中,而不会增加任何额外的损失或正则化。

模型

2019-ICML-Towards Graph Pooling by Edge Contraction_第2张图片
边缘池:计算图形中每条边的分数(左)。这些边按其分数的顺序收缩(edges {1, 5}, {4, 6}, {2, 3};所选边以粗体显示),已属于池边的节点将被忽略(p.ex. edges {2, 5})。保留收缩节点之间的边,保留剩余节点(节点 7)。生成的图形(右)是合并表示。

定义图 G = ( V , E ) G = (V,E) G=(V,E),其中每个 v v v 节点都有 f f f 特征 V ∈ R v × f V \in R^{v×f} VRv×f 。边表示为没有要素权重的结点对。边表示为没有要素权重的结点对。虽然图卷积函数采用固定图并且只转换节点特征,但池化函数也会转换图并减少节点数量。生成的图形是输入图形的粗略表示。

边收缩

直观地说,边缘收缩意味着合并两个节点。收缩边 e = { v i , v j } e = \{v_i, v_j\} e={vivj} 引入了新的顶点 v e v_e ve 和新边,使得 v e v_e ve 与所有节点相邻 v i v_i vi v j v_j vj相邻。 v i v_i vi v j v_j vj 及其所有边将从图形中删除。这被写为 G/e,每次这样的收缩都会将图中的节点数减少1。

由于边收缩是可交换的,我们也可以定义一个边集收缩 G / E ′ G/E′ G/E,其中 E ′ = { e 1 , . . . , e n } ∈ E E' = \{e_1,...,e_n\} \in E E={e1,...,en}E。避免收缩入射到同一节点的边缘。

边缘收缩池

该方法选择一组边,然后使用边收缩来生成一个新图。如何选择要池化的边以及如何组合节点特征。通过自由选择计算此值的函数。首先将每条边的原始分数计算为级联节点特征的简单线性组合,即对于从节点 i i i 到节点 j j j 的边,将原始分数 r r r 计算为

其中 n i n_i ni n j n_j nj 是节点特征, W W W b b b 是学习参数。

为了使梯度流分数,作者使用门控,并将组合的节点特征乘以边缘分数:

实验

如表 1 中的结果所示,EdgePool 在四个数据集中的三个数据集上都优于基线和两种替代池化方法。

如表 2 中的结果所示, EdgePool 的性能提升取决于所使用的卷积层和数据集,但取决于性能。由于图的大小和结果的巨大变异性而忽略蛋白质,两种 GIN 变体都没有从引入池化中受益。
2019-ICML-Towards Graph Pooling by Edge Contraction_第3张图片

你可能感兴趣的:(图神经网络,算法)