论文解读(GCC)《GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training》
论文信息
论文标题:GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training
论文作者:Jiezhong Qiu, Qibin Chen, Yuxiao Dong, Jing Zhang, Hongxia Yang, Ming Ding, Kuansan Wang, Jie Tang
论文来源:2020, KDD
论文地址:download
论文代码:download
1 Introduction
本文的预训练任务:子图实例判别(subgraph instance discrimination)。对于每个顶点,将其 r-ego networks 作为采样子图实例,GCC 的目的是区分从特定顶点采样的子图和从其他顶点采样的子图。
2 Related work
接下来介绍几种顶点相似性:
有边相连的节点被认为是相似的,邻居相似性方法有:
- Jaccard similarity (counting common neighbors)
- RWR similarity [36]
- SimRank [21]
Structural similarity
结构相似性的基本假设是,具有相似局部结构的顶点被认为是相似的。
第一种基于领域知识:
- vertex degree
- structural diversity [51]
- structural hole [7]
- k-core [2]
- motif [5, 32]
第二种基于谱图理论。
利用图数据属性,进一步度量相似性。
3 Method
Figure 2 展示了GCC的 pre-training 和 fine-tuning 阶段的概述。

3.1 The GNN Pre-Training Problem
GNN 的训练目标是学习一个函数 $f$,将节点映射到一个低维的特征向量,具有以下两个属性:
- 首先,structural similarity,具有相似拓扑结构的节点在向量空间种映射相近;
- 其次,transferability,对于图中不可见的节点任然可以预测;
3.2 GCC Pre-Training
pre-training task 将其他子图实例视为自己的不同类,并学习区分这些实例。
${\large \mathcal{L}=-\log \frac{\exp \left(\boldsymbol{q}^{\top} \boldsymbol{k}_{+} / \tau\right)}{\sum\limits_{i=0}^{K} \exp \left(\boldsymbol{q}^{\top} \boldsymbol{k}_{i} / \tau\right)}} $
其中,$\tau$ 为温度超参数。$f_{q}$ 和 $f_{k}$ 是两个 GNN encoder ,将 query $x^{q}$ 和 keys $x^{k}$ 编码为 $d$ 维表示,用 $\boldsymbol{q}=f_{q}\left(x^{q}\right)$ 和 $\boldsymbol{k}=f_{k}\left(x^{k}\right)$ 表示。
Definition 3.1. A r-ego network. Let $G=(V, E)$ be a graph, where $V$ denotes the set of vertices and $E \subseteq V \times V$ denotes the set of edges . For a vertex $v$ , its r -neighbors are defined as $S_{v}=\{u : d(u, v) \leq r\}$ where $d(u, v)$ is the shortest path distance between $u$ and $v$ in the graph $G$ . The r -ego network of vertex $v$ , denoted by $G_{v}$ , is the sub-graph induced by $S_{v}$ .

Q2: Define (dis)similar instances
在GCC中,将相同节点的 r-ego 网络作为一个相似的实例对,负样本通过图抽样生成。
GCC 的图采样遵循以下三个步骤:
- Random walk with restart。从顶点 $v$ 开始在 $G$ 上随机游走。该游走以与边权值成正比的概率迭代地移动到它的邻域。此外,在每一步中,游走有一定概率返回到起始顶点 $v$。
- Subgraph induction。根据上述游走路径获得顶点 $v$ 的顶点子集,用 $\widetilde{S}_{v}$ 表示。然后,用 $\widetilde{S}_{v}$ 生成诱导子图 $\widetilde{G}_{v}$ (ISRW 方法)。
- Anonymization。将上述采样的图节点重新打上标记 $\left\{1,2, \cdots,\left|\widetilde{S}_{v}\right|\right\}$ ,即将采样图的 $\widetilde{G}_{v}$ 匿名化。
重复上述过程两次来创建两个数据增强,形成一个正实例对 $\left(x^{q}, x^{k_{+}}\right)$。如果两个子图从不同的 r-ego networks 中获得,将它们视为一个具有 $k \neq k_{+}$ 的不同实例对 $\left(x^{q}, x^{k}\right)$。
回想一下,我们关注于结构表示预训练,而大多数GNN模型需要顶点特征/属性作为输入。为了弥合差距,我们利用每个采样子图的图结构来初始化顶点特征。具体来说,我们将广义位置嵌入定义如下:
Definition 3.2. Generalized positional embedding.For each subgraph, its generalized positional embedding is defined to be the top eigenvectors of its normalized graph Laplacian. Formally, suppose one subgraph has adjacency matrix $A$ and degree matrix $D$ , we conduct eigen-decomposition on its normalized graph Laplacian s.t. $\boldsymbol{I}-\boldsymbol{D}^{-1 / 2} \boldsymbol{A} D^{-1 / 2}=\boldsymbol{U} \boldsymbol{\Lambda} \boldsymbol{U}^{\top}$ , where the top eigenvectors in $\boldsymbol{U}$ are defined as generalized positional embedding.
FACT. The Laplacian of path graph has eigenvectors: $\boldsymbol{u}_{k}(i)= \cos (\pi k i / n-\pi k / 2 n)$ , for $1 \leq k \leq n, 1 \leq i \leq n$ . Here $n$ is the number of vertices in the path graph, and $\boldsymbol{u}_{k}(i)$ is the entry at $i-th$ row and $k-th$ column of $\boldsymbol{U}$ , i.e., $\boldsymbol{U}=\left[\begin{array}{lll}\boldsymbol{u}_{1} & \cdots & \boldsymbol{u}_{n}\end{array}\right]$ .
以上事实表明,在序列模型中的位置嵌入可以看作是路径图的拉普拉斯特征向量。这激发了我们将位置嵌入从路径图推广到任意图。使用标准化图拉普拉斯图而非非标准化图的原因是路径图是一个正则图(即常度),而现实世界的图通常是不规则的,有倾斜的度分布。除了广义位置嵌入外,我们还添加了顶点度[59]的独热编码和自我顶点的二进制指标作为顶点特征。在由图编码器编码后,最终的 $d$ 维输出向量然后用它们的 L2-Norm 进行归一化。
MoCo 旨在增加字典的大小,而不需要额外的反向传播成本。具体地说,MoCo 维护了来自之前小批次的样本队列。在优化过程中,MoCo 只通过反向传播来更新 $f_{q}$ 的参数(用 $\theta_{q}$ 表示)。$f_{k}$ 的参数(用 $\theta_{k}$ 表示)没有通过梯度下降进行更新。[17]等人为 $\theta_{k}$ 提出了一个基于动量的更新规则。形式上,MoCo 由 $\theta_{k} \leftarrow m \theta_{k}+(1-m) \theta_{q}$ 更新 $\theta_{k}$,其中 $m \in[0,1)$ 是一个动量超参数。上述动量更新规则在 $\theta_{q}$ 中逐步将更新传播到 $\theta_{k}$,使 $\theta_{k}$ 平稳、一致地发展。综上所述,MoCo以牺牲字典一致性为代价实现了更大的字典规模,即字典中的密钥表示由一个平滑变化的密钥编码器进行编码。
3.3 GCC Fine-Tuning
图学习中的下游任务通常可分为图级和节点级两类,其目标分别是预测图级或节点的标签。对于图级任务,输入图本身可以由 GCC 进行编码,以实现表示。对于节点级的任务,节点表示可以通过编码其 r-ego 网络(或从其 r-ego 网络增强的子图)来定义。
GCC为下游任务提供了两种微调策略——freezing mode 和 fine-tuning mode。
- 在 freezing mode 下,冻结预先训练的图编码器 $f_{q}$ 的参数,并将其作为静态特征提取器,然后在提取的特征之上训练针对特定下游任务的分类器。
- 在 fine-tuning mode 下,将用预先训练好的参数初始化的图编码器 $f_{q}$ 与分类器一起对下游任务进行端到端训练。
GCC作为一种图算法,属于局部算法类别,由于GCC通过基于随机游走(大规模)网络的图采样方法来探索局部结构,因此GCC只涉及对输入(大规模)网络的局部探索。这种特性使GCC能够扩展到大规模的图形学习任务,并对分布式计算设置非常友好。
4 Experiments

节点分类

图分类


5 Conclusion
在本研究中,我们研究了图神经网络的预训练,目的是表征和转移社会和信息网络中的结构表征。我们提出了图对比编码(GCC),这是一个基于图的对比学习框架,用于从多个图数据集。预先训练的图神经网络在10个图数据集上的三个图学习任务中实现了与监督训练的从头开始的竞争性能。在未来,我们计划在更多样化的图形数据集上基准测试更多的图形学习任务,比如蛋白质-蛋白质关联网络。
论文解读(GCC)《GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training》的更多相关文章
- 论文解读(GCC)《Graph Contrastive Clustering》
论文信息 论文标题:Graph Contrastive Clustering论文作者:Huasong Zhong, Jianlong Wu, Chong Chen, Jianqiang Huang, ...
- 论文解读(GCA)《Graph Contrastive Learning with Adaptive Augmentation》
论文信息 论文标题:Graph Contrastive Learning with Adaptive Augmentation论文作者:Yanqiao Zhu.Yichen Xu3.Feng Yu4. ...
- 论文解读(SelfGNN)《Self-supervised Graph Neural Networks without explicit negative sampling》
论文信息 论文标题:Self-supervised Graph Neural Networks without explicit negative sampling论文作者:Zekarias T. K ...
- 论文解读(GCC)《Efficient Graph Convolution for Joint Node RepresentationLearning and Clustering》
论文信息 论文标题:Efficient Graph Convolution for Joint Node RepresentationLearning and Clustering论文作者:Chaki ...
- 论文解读(MCGC)《Multi-view Contrastive Graph Clustering》
论文信息 论文标题:Multi-view Contrastive Graph Clustering论文作者:Erlin Pan.Zhao Kang论文来源:2021, NeurIPS论文地址:down ...
- 论文解读(CGC)《CGC: Contrastive Graph Clustering for Community Detection and Tracking》
论文信息 论文标题:CGC: Contrastive Graph Clustering for Community Detection and Tracking论文作者:Namyong Park, R ...
- 论文解读(SCGC))《Simple Contrastive Graph Clustering》
论文信息 论文标题:Simple Contrastive Graph Clustering论文作者:Yue Liu, Xihong Yang, Sihang Zhou, Xinwang Liu论文来源 ...
- 论文解读(gCooL)《Graph Communal Contrastive Learning》
论文信息 论文标题:Graph Communal Contrastive Learning论文作者:Bolian Li, Baoyu Jing, Hanghang Tong论文来源:2022, WWW ...
- 论文解读(AGC)《Attributed Graph Clustering via Adaptive Graph Convolution》
论文信息 论文标题:Attributed Graph Clustering via Adaptive Graph Convolution论文作者:Xiaotong Zhang, Han Liu, Qi ...
随机推荐
- java中内部类中还有内部类请给实例!
2.当内部类中还有一个内部类,下面给出了一个实例.[新手可忽略不影响继续学习](以下多出代码, 用蓝色标记)例2.2:class ShellMark_to_win { int shell_x = ...
- uniapp最简单的上拉加载更多demo
data() { return { list:[],//数据列表 page: 1,//页数 } }, //请求一下数据(进入页面请求一次) onLoad() { this.getnewsList(th ...
- JavaScript的使用以及JS常用函数(JS 遍历数组和集合)
JavaScript入门 学习总结 1. 什么是 JavaScript 2. JavaScript 的特点 3. JS的使用 编写位置 基本语法 变量 打印变量 数据类型 innerHTML和inne ...
- scrapy爬虫简单案例(简单易懂 适合新手)
爬取所有的电影名字,类型,时间等信息 1.准备工作 爬取的网页 https://www.ddoutv.com/f/27-1.html 创建项目 win + R 打开cmd输入 scrapy start ...
- pod和容器(容易混淆的地方)
在Kubenetes中,所有的容器均在 pod 中运行,一个pod可以承载一个或者多个相关的docker容器(或rkt,以及用户自定义容器),同一个Pod中的容器可以部署在同一个物理机器(可以叫宿主机 ...
- 帝国CMS灵动标签调用包含指定短语关键词关键字文章的语法
[e:loop={"select * from phome_ecms_news where title like '%这里是关键词%' and checked=1 order by news ...
- STL空间配置器源码分析(四)bitmap_allocator
一.摘要 bitmap_allocator是STL空间分配器的其中一种,它采用内存池策略,最多存储64条空闲链表(freelist,实际是一块空间连续的内存区,后面也称为超级块),每条空闲链表存储的内 ...
- 今天写了一个可以测试并发数和运行次数的压力测试代码。(Java)
今天写了一个可以测试并发数和运行次数的压力测试代码 介绍一下为什么会写这么一个工具. 介绍一个这个工具怎么用的. 背景 最近在开发CoapServer端,以及模拟设备侧发送数据调用开发好的CoapSe ...
- Codeforces Round #671 (Div. 2) B. Stairs 难度1200
题目链接: Problem - 1419B - Codeforces 题目 题意 给x个格子,你可以用这x个格子去拼成楼梯 好的楼梯的要求如下: 1. 第n列有n个格子 2. 这个楼梯的所有格子可以被 ...
- Java语言学习day03--6月30日
今日内容介绍 1.变量 2.运算符 ###01变量概述 * A: 什么是变量? * a: 变量是一个内存中的小盒子(小容器),容器是什么?生活中也有很多容器,例如水杯是容器,用 ...