新零售智能引擎事业群出品
图表示学习目前受到了广泛关注,但目前绝大多数的图表示学习方法都是针对特定领域的图进行学习和建模,所产出的图神经网络难以迁移。近期,预训练在多个领域都取得了巨大的成功,显著地提升了模型在各大下游任务的表现。受到BERT (Devlin et al., 2018) 等工作的启发,我们开始研究图神经网络的预训练,希望能够从中学习到通用的图拓扑结构特征。我们提出了Graph Contrastive Coding的图神经网络预训练框架,利用对比学习(Contrastive Learning)的方法学习到内在的可迁移的结构信息。本工作GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training已被KDD 2020 research track录用。
传统的图表示学习主要参考NLP的基于skip-gram词表示学习方法,如DeepWalk和Node2Vec等。而这些方法在建模邻居节点相似性,且训练出来的表示往往缺乏通用性,局限于特定网络。而我们提出的GCC则不同于传统方法,关注结构相似性,且GCC学习得到的表征可以迁移到各种网络上,具有很强的通用性。下图展示了GCC的基本框架:
在GCC中,我们采用了对比学习的框架,基本思想即让正例的表示和样本的表示在空间更相近,并让负例距离更远。在对比学习中,给定查询表示q,对于候选集中的K+1个表示{k_0,k_1,⋯,k_K},其中包含正例k_+。我们优化以下损失函数:
而q和k均是样本x^q和x^k的低维表示。而在GCC中,一个主要的方法设计则是每个样本是一个针对特定节点的r阶邻居的网络(在这里我们成为r-ego network)采样的子图。正例则是从同一个r-ego network采样的网络,而大量的负例则是从其他r-ego network采样的子图。获得了正例和负例后,我们需要构建图编码器实现图表征学习。事实上,任意一个图神经网络都可以成为GCC的编码器,而在实践中,我们则采用Graph Isomorphism Network (GIN)作为我们的编码器。
在对比学习中,我们需要维护一个大小为K的字典和编码器。但要想计算上述损失函数,最理想的情况是把所有负例加入字典中进行计算,这样会导致K极大,难以维护。为了保证模型的效率,我们参考了MoCo (He et al., 2020)的方法加入动量对比学习(momentum contrast)。在MoCo的方法中,为了增大字典大小K,需要维护一个负样本的队列,队列中包含此前训练过的batch的样本作为负例。此外,只有q 的编码器f_q的参数θ_q通过反向传递更新,而k 的编码器f_k的参数θ_k则通过以下方式更新
θ_k←mθ_k+(1-m) θ_q
其中m 指的是动量,通过超参数设定。对GCC而言,MoCo相较其他方法更为高效。
GCC主要应用于图级别和节点级别的下游任务。对于图级别的下游任务,我们可以和预训练保持一致,输入为子图,而对于节点级别的任务,我们则需要得到它的r-ego network或采样的子图。
我们做了一系列的实验去验证GCC的效果,其中节点分类、图分类和相似性检索等等。实验结果分别如下:
节点分类
图分类
相似性检索
从实验结果不难看出,GCC在多个任务多个数据集上都取得了比较突出的表现,和现有最优模型相比能够取得更优或相近的表现。这也表现了GCC的有效性。
综上所述,本文提出的GCC的图神经网络预训练框架利用对比学习的方法,有效地学习了图结构的通用表征征,并且学习到图的结构化信息,可以迁移到各类下游任务和各类图中。实验表明了该方法的有效性。未来我们会在更多的任务和实验上进行实验,并探索GCC在其他领域的应用。
参考文献:
Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. (2018). Bert: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805.
He, K., Fan, H., Wu, Y., Xie, S., & Girshick, R. (2020). Momentum contrast for unsupervised visual representation learning. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (pp. 9729-9738).
更多数据挖掘领域论文解读请查看:KDD精华论文解读