图神经网络自监督学习工具箱 - CPT-HG(二)

文章名称

【CIKM-2021】【Beijing University of Posts and Telecommunications/WeChat Search Application Department, Tencent Inc.】Contrastive Pre-Training of GNNs on Heterogeneous Graphs

核心要点

文章旨在解决现有预训练图神经网络方法仅仅适用于同质图,忽略了异质图的特点,并不能解决异质图网络对标签数据的以来。因此,作者提出CPT-HG方法,利用关系级别和子图级别的预训练任务,从大量异质图中学习通用的结构和语义信息。

上节介绍了作者研究的问题背景和思路,以及如何在relation-level构造对比样本,本节继续介绍子图级别的对比学习。

方法细节

问题引入

如前所述,异构图的如下特点,导致现有基于同构图的预训练方法不能够充分学习异构图的信息,

  • 异构图中的节点和边具有不同的类型,如何学习异构嵌入表示,encode异构信息是一大挑战。
  • 异构图中存在更丰富的语义信息,不同类型的组合导致了比同构图更丰富的多样性,数据也更稀疏,也更难保留高阶语义信息(或者说范围更广,而不仅仅是节点和边的语义信息)。

方法细节

为解决上述问题,作者提出了CPT-HG方法,尝试将预训练方法应用于异构图。如上所述,作者在节级别和子图级别分别构建用于对比学习的正负样本,并分别学习节点和高阶语义信息,其整体结构如下图所示。

overview of CPT-HG

上一节已经介绍了如何在节点层级构建对比学习,接下来介绍如何在子图层级进行对比学习。

  • subgraph-level pre-training task。该层pre-train方法旨在学习高层次语义和结构信息。一种简单直接的做法是使用meta-Path,但利用meta-path的预训练方法存在2个问题,

    • 相比meta graphs不能够很好地保留高阶结构信息和丰富的语义[16]。
    • 相比meta graphs,meta-path涉及到的节点数量一般比较庞大,使得meta-path方法更低效。

    因此,作者利用meta graphs来生成正样本,并借鉴[3, 11]的做法利用负样本队列,构造负样本。如上Figure 2的子图c所示,图中是一种meta graph ,而该meta graph的一个具体实例是,(其实作者也提到,meta graph可以看做是meta path的集合,信息相对质密一些)。基于这个概念,可以从任意给定节点和meta graph 得到正样本对,具体可以形式化如下图所示。其中,表示meta graph 的所有实例。下图公式表示,除了源节点之外的中的所有节点都将可以成为的正样本。值得注意的是,meta graph是靠领域知识选择的。

    meta graph-based structural positive samples

    如前所述,作者采用队列维护当前batch之前batch中的所有正样本,来作为当前batch的负样本(不是in-batch negative)。该队列是随机初始化的,也就是说之前是随机采样了一些节点作为负样本。并且为了避免负采样噪声,作者从负样本队列中去掉了多个源节点共有的正样本对,例如,上述Figure 2中子图a的共有正样本。具体可以形式化如下图示。其中,如上图所示,表示节点的正样本对,表示之前的batch步骤(当前为步)。

    meta graph-based structural negative samples

    最终,作者通过优化如下图所示的目标,实现在sub-graph层级进行pre-train的目的。其中,是pooling函数(作者用的mean pooling),是节点的集合,可以看出,作者其实contrastive的正负样本是一个聚合值。

    subgraph-level pre-training loss

CPT-HG的整体损失函数如下图所示,其完整伪代码参见代码实现部分。

total loss

代码实现

CPT-HG的伪代码如下图所示。

pseudo code

心得体会

作者在sub-graph层级的contrastive loss时,对比的是一个样本集合的均值,也就是说,目标样本的embedding被和一个聚合中心拉近,而不是具体的节点表示。这里可能存在一定的过平均的可能,也就是说如果集合中的各个节点有某些维度正负相抵了,目标节点就会处在中间。

但是仔细想一下,几遍是每次都只和一个节点contrastive的话,只要步是每一步对比之后都更新模型参数,最后也只是和一堆节点的均值拉近。而,大多数时候,我们使用batch,不会及时更新模型参数。所以,效果差别不大。

同时,类似于Pro-CE的做法,可能先找到平均值把目标节点的与平均值拉近,在逐步调整效率会更高一点。个人感觉,需要验证。

文章引用

[3] Ting Chen, Simon Kornblith, Mohammad Norouzi, and Geoffrey E. Hinton. 2020. A Simple Framework for Contrastive Learning of Visual Representations. In ICML.

[11] Kaiming He, Haoqi Fan, Yuxin Wu, Saining Xie, and Ross B. Girshick. 2020. Momentum Contrast for Unsupervised Visual Representation Learning. In CVPR. 9726–9735.

[13] Weihua Hu, Bowen Liu, Joseph Gomes, Marinka Zitnik, Percy Liang, Vijay S. Pande, and Jure Leskovec. 2020. Strategies for Pre-training Graph Neural Networks. In ICLR.

[14] Ziniu Hu, Yuxiao Dong, Kuansan Wang, Kai-Wei Chang, and Yizhou Sun. 2020. GPT-GNN: Generative Pre-Training of Graph Neural Networks. In SIGKDD. 1857–1867.

[16] Zhipeng Huang, Yudian Zheng, Reynold Cheng, Yizhou Sun, Nikos Mamoulis, and Xiang Li. 2016. Meta Structure: Computing Relevance in Large Heterogeneous Information Networks. In SIGKDD. 1595–1604

[28] Jiezhong Qiu, Qibin Chen, Yuxiao Dong, Jing Zhang, Hongxia Yang, Ming Ding, Kuansan Wang, and Jie Tang. 2020. GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training. In SIGKDD. 1150–1160.

你可能感兴趣的:(图神经网络自监督学习工具箱 - CPT-HG(二))