代码链接:https://github.com/thunlp/OpenGCL
摘要
图对比学习方法对比了语义上相似和不相似的样本对,以将语义编码为节点或图嵌入。然而,大多数现有的工作只进行了模型级的评估,并没有探索模块的组合空间来进行更全面和系统的研究。为了进行有效的模块级评估,我们提出了一个将GCL模型分解为四个模块的框架:
- 一个采样器,生成锚、正样本和负样本(节点或图);
- 一个编码器和一个读出函数,获得样本嵌入;
- 一个鉴别器,评分每个样本对(锚-正和锚-负);
- 一个估计器,定义损失函数。
在此框架上,我们在节点和图分类任务上进行了广泛的架构设计和超参数设置的控制实验。具体来说,我们设法量化单个模块的影响,研究模块之间的交互作用,并将整体性能与当前的模型架构进行比较。我们的关键发现包括一套针对GCL的模块级指南,例如,来自LINE和DeepWalk的简单采样器是强大和鲁棒的;与Sum读出相关的MLP编码器可以在图分类上实现竞争性能。最后,我们将我们的实现和结果发布为OpenGCL,这是一个模块化的工具包,可以方便地进行复制、标准模型和模块评估以及简单的扩展。
1 准备工作
给定图 G = ( V , E ) \mathcal{G}=(\mathcal{V},\mathcal{E}) G=(V,E),其中 V \mathcal{V} V是顶点集, E \mathcal{E} E是边集,图结构可以用邻接矩阵 A \pmb{A} AAA表示。在某些情况下,图 G \mathcal{G} G中的节点与特征 X \pmb{X} XXX相关联。图表示学习旨将图的子结构(节点、边、子图等)映射为低维嵌入。
在我们得到节点表示后,我们可以通过一个读出函数来总结图级表示。学习到的表示通常用于下游的图学习任务。本文主要研究了节点分类和图分类任务。
2 所提出的框架
我们提出了一个图对比学习的模块化框架,它由四个模块组成:
- 上下文采样器。 对于每个batch,上下文采样器选择一个锚 x x x,一个正上下文 k + k^+ k+和 N N N个负上下文 { k i − } i = 1 N \{k_i^-\}^N_{i=1} {ki−}i=1N。
- 编码器。 编码器 E n c E_{nc} Enc将选定的数据点映射为分布向量。更具体地说,我们通过节点编码器学习节点嵌入,并通过接下来的读出函数获得图嵌入。
- 鉴别器。 鉴别器
D
i
s
c
Disc
Disc根据每个锚-上下文对之间的一致性对该对进行评分。该评分函数定义为:
- 互信息估计器。 互信息估计器
I
E
s
t
I_{Est}
IEst定义了损失函数,它强制正对(锚和正上下文)的表示必须接近,负对(锚和负上下文)的表示是正交的。我们对优化目标的定义如下:
接下来,我们将详细讨论每个模块可能的实例化。
2.1 采样器
2.2 编码器
2.3 鉴别器
大部分采用点积,而DGI双线性鉴别器。
2.4 估计器
表1总结了几种有影响力的算法如何一致地适应我们的框架。
3 实验