GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training
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}$