GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training

一个自监督的利用对比学习来学习GNN内在可迁移的先验知识的预训练框架,目的是想得到一个可迁移性强,迁移领域广的,通用的表达。为了捕捉跨多个网络的通用网络拓扑特性,预训练任务为,跨网络子图实例判别。所以预训练的重点在结构相似性层面上,并且不带节点属性。

基本思想

基本思想是对输入图中的实例进行采样,将每个实例视为自己的一个不同的类,并学习对这些实例进行编码和区分。

具体地说,作者认为GCC需要回答三个问题,才能学习到可转移性好的结构模式:

  • 实例是什么?
  • 分辨规则是什么?
  • 如何对实例进行编码?

对于者三个问题作者展开研究。

预训练任务——子图实例判别

任务的目标是根据顶点的局部结构来区分它们。

对于每个顶点,从它的多跳ego网络中抽取子图作为实例。

GCC的目的是区分从某个顶点采样的子图和从其他顶点采样的子图。并且不假设顶点和子图来自同一个图,所以图编码器被迫捕获不同输入图的通用模式。

定义子图实例

对比学习框架的成功很大程度上取决于数据实例的定义。CV和NLP任务可以直接将实例定义为图像或句子。

但是,这些想法不能直接扩展到图形数据,因为图形中的实例没有明确定义。

因为节点是无属性的节点,所以要表示一个节点,就要采用以他为中心的局部结构。

具体地说,对于某个顶点v,定义一个实例为它的r-ego网络:

对于一个 r-ego 网络 $G = (V,E)$ ,$V$ 是节点集并且 $E \subseteq V\times V$

对于其中心点v, 他的 r-neighbors 定义为 $S_v={u:d(u,v)\le r}$ , 其中 $d(u,v)$ 为邻居u节点到v节点的最短路径。

顶点v的r-ego图,记为 $G_v$,是由 $S_v$ 引出的子图。 下图就是一个2-ege图,右边是预训练过程。

定义实例相似性判别准则

在cv中,同一图像的两个随机数据增加(例如,随机裁剪、随机调整大小、随机颜色抖动、随机翻转等)被视为相似的实例对。

在GCC中将同一r-ego网络的两个随机数据扩充看作一个相似实例对,并将数据扩充定义为图采样。

GCC的图采样遵循三个步骤

  • 重新启动的随机行走(RWR) :从ego图的节点v出发,随机采样子图结构,并以一定概率返回到v节点。得到的采样子图可以被认为是一种数据扩增,像cv那样。
  • 子图归纳:导出子图随机游走抽样(ISRW)。
  • 匿名化:匿名化被采样的子图 $\hat G_v$ ,并重新排序。

定义图编码器

给定两个采样子图 $x^q$ 和 $x^k$,GCC分别通过两个图神经网络编码器 $f_q$ 和 $f_k$ 对其进行编码。从技术上讲,任何图神经网络都可以作为这里的编码器,而GCC模型对不同的选择并不敏感。因为不考虑节点属性,而大多数GNN模型需要把节点特征/属性作为输入。为了弥补这一差距,作者建议利用每个采样子图的图结构来初始化顶点特征。

目标Loss采用对比学习经典的InfoNCE:

其中 $q = f_q(x^q) , k=f_k(x^k)$ ,$q$ 是query 对应的目录为 $K+1$ 个编码的keys: ${k_0,…,k_K}$