查看原文
其他

【源头活水】图神经网络预训练模型

“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

作者:知乎—PumpkinSean

地址:https://www.zhihu.com/people/jie-yan-93-4

文献原文:https://arxiv.org/abs/2006.09963

文献代码:https://github.com/THUDM/GCC


01

Abstract
许多下游工作得益于图表示学习(KGE),例如节点分类、相似性搜索、图分类。
本文设计了图对比编码(Graph Contrastive Coding,GCC),一种自监督预训练GNN框架,目的是捕获跨多个网络的通用网络拓扑结构。
本文将GCC的预训练任务设计为网络内和跨网络的子图实例判别,并利用对比学习来赋予GNN对图固有的和可迁移的结构表示。


02

Introduction
过去二十年,研究重心一直是抽象化不同网络基础上的通用结构特性。
近年来,由于深度学习的进展,图学习的范式已经从图结构发现转化为图表示学习,具体来说是将图的节点、边、子图转换为低维嵌入,从而保留图的重要结构信息。
然而到目前为止,大部分关于KGE的工作都集中于学习单个图或一组固定图的表示,很难迁移到其他领域使用。
在NLP、CV等领域也存在类似的问题,通常的解决方案是在自监督设置下,从大型数据集中预训练表示学习模型。
本文提出的GCC框架,利用对比学习的思想将图的预训练任务设计为实例判别,基本思想是从输入图中对实例进行采样,将每一个样本看作独立的类,并学习对实例的编码和区分。
GCC将预训练任务设计为子图实例区分,目标是根据顶点的局部结构,区分从某个中心节点采样的子图和从其他中心节点采样的子图,最后通过GNN将子图映射到潜在空间。由于GCC不假定中心节点和子图来自同一图,因此图编码器被迫捕获跨不同输入图的通用模式。
现有的结构图预训练工作有限,最近的工作包括:
  1. 特定域节点属性的带标签图上的预训练
  2. INfoGraph:学习特定域的图级表示,特别是图分类任务
  3. 定义集中图学习任务,以在合成图上预训练GCN模型
本文的贡献:
  1. 将跨多个图的图神经网络预训练问题形式化,并确定其设计挑战
  2. 将预训练任务设计为子图实例判别,以从多个输入图捕获通用和可转移的结构模式
  3. 提出了图对比编码(GCC)框架来学习结构图表示,它利用对比学习来指导预训练
  4. 进行了广泛的实验,以证明对于域外任务,GCC可以提供比专用图形特定模型更高的性能


03

Related Work

3.1 节点相似度

  1. 邻域相似度
  2. 结构相似度,具有相似局部结构的节点视为相似
  3. 属性相似度,例如GCN、GAT等

3.2 对比学习

对比学习是从数据中获取相似性的自然选择。在NLP中,Word2vec模型使用同时出现的单词和否定采样来学习单词嵌入。在CV中,大量的工作通过最小化同一图像的两个视图之间的距离来学习自我监督的图像表示。本文采用了Oord等人的InfoNCE损失,和Wu等人的实例歧视任务。

3.3 图预训练

Skip-gram based model
早期KGE学习的尝试基于Word2vec相似的基于Skip-gram的模型,例如DeepWalk、node2vec等。大多基于邻域相似度假设,无法处理样本外的问题。
GCC基于结构相似度,与邻域相似度正交,且可以跨图传递。
Pre-training graph neural network
近来很多工作将文本预训练引入GNN预训练。例如
Hu等在标记图(尤其是分子图)上训练GNN,预训练任务是恢复被掩盖的分子图中的原子类型和化学键类型。胡等人定义了一些图形学习任务来预训练GCN。本文的GCC框架在两个方面不同于上述方法:GCC适用于一般的未标记图,尤其是社交和信息网络;GCC不涉及显式的特征化和预定义的图学习任务。


04

GCC

4.1 GNN预训练问题

GNN预训练问题是学习将节点映射到低维空间的函数$f$,使其具有一下两个属性:
  1. 结构相似性,在向量空间中,具有相似拓扑结构的中心节点距离更近;
  2. 可转移性
GCC的重点在于没有节点属性和节点标签的结构表示学习。

4.2 GCC预训练

预训练任务:子图实例识别
预训练目标:InfoNCE
例如查询字典任务,  是编码后的输入,  是编码后的字典,对比学习查找  匹配的key,用  表示,其中  和  的编码通过GNN实现  、  。
则GCC预训练任务面临以下三个问题:
  • 怎么定义子图实例?
对比学习框架的成功很大程度上取决于数据实例的定义。GCC预训练重点仅在于结构表示,而没有其他输入功能/属性。所以不可能选择单个节点作为实例来区分两个节点。
为了解决这个问题,本文通过将每个单个节点扩展到其局部结构来使用子图作为对比实例。具体来说,对于某个节点v,我们将实例定义为其r-ego网络。
r-ego网络:对于图  ,对于顶点  ,其r-neighbor定义为  ,其中  表示节点  和  在G中的最短距离。即节点  的  阶以内的节点构成的子图。
  • 怎么定义图内、跨图的相似实体对?
在CV中,将同一个图像的两个随机变换(随机裁剪、随机调整大小、随机颜色抖动、随机翻转等)视为相似实例对。
在GCC中,将同一个r-ego网络的两个随机扩充视为相似实例对,并将数据扩充定义为图采样。
图采样遵循以下三个步骤:
1)带重启的随机游走
从中心节点v开始,以与边的权重成正比的概率游走至邻居节点,并在每一步具有一定的概率回到节点v,其中,重启概率控制了中心节点游走的半径
2)子图规划
3)匿名化
对子图进行重新编码,避免直接根据编码计算相似性,同时有利于跨图节点计算相似性
  • 怎么选取合适的GNN?
为了弥补只考虑结构信息而忽略节点特征的缺陷,利用采样子图的图结构来初始化GNN
广义位置嵌入:对于每一个子图,广义位置嵌入定义为其归一化拉普拉斯算子的顶部特征向量

4.3 GCC Fine-tuning

下游任务:
对于图级任务:输入图由GCC编码表示
对于节点级任务:节点通过其r-ego网络编码表示


05

Experience
在三个图学习任务上评估GCC,分别是节点分类、图分类和相似性搜索。
数据集
数据集可分为两类:academic graph和social graph
包括Academia、DBLP、IMDB、Facebook和LiveJournal
实验结果
  • 节点分类任务
  • 图分类任务
  • 相似性搜索

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看



分享、点赞、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存