论文笔记--GCC Graph Contrastive Coding for Graph Neural Network Pre-Training
论文笔记–GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training
基于预训练技术在图神经网络中的应用成为KDD 2020的一篇重要研究论文。该研究当前已有超过120次引用。该研究旨在训练一种初始化策略下的GNN编码器,在实验阶段的表现并不理想。值得注意的是,在现有模型(如GIN)的基础上(其)GCC表现略逊一筹。
- 摘要
- 引言
- 相关工作
- GCC
- 实验
- 结论
摘要
图表示学习(Graph Representation Learning, GRL)作为一种强大的工具,在现代人工智能领域发挥着越来越重要的作用。它通过构建节点嵌入、边权重以及全局图特征来捕捉复杂关系并生成有意义的表征空间,在推荐系统、社交网络分析以及生物医学数据分析等多个应用场景中展现出显著优势。然而,在当前的研究中发现,“现有的基于深度神经网络的方法往往只能针对单一领域进行优化,并且难以实现跨领域的知识共享与迁移...”。
基于自然语言处理(NLP)与计算机视觉(CV)领域的最新发展,在本研究中我们构建其预训练任务为目标域间的抽象特征表达能力。为此,我们构建其预训练任务为目标域间的抽象特征表达能力。具体而言,在这项研究中我们构建了一个自监督图神经网络预训练框架GCC——一种新型架构——用于捕捉多领域/多模态数据间的共性属性及潜在关系模式,并通过对比学习机制实现图形神经网络对抽象特征表达能力的有效建模。
本文在三个人工智能图学习任务及十个标准化数据集上展开了系统性研究。研究发现,在另一组独立的数据集上预训练的GCC模型,在特定领域任务中展现出与基准方法相当甚至超越的能力。这一发现凸显了预训练与微调策略在图形表征学习领域的巨大潜力。
1 引言
Hypothesis. Characteristic graph structures exhibit universality and transferability across different networks.
在最近几年中,在过去二十年间,
network science research始终专注于
uncovering and characterizing the essential structural properties of diverse networks.
然而,
Graph learning的传统范式已经经历了一次从基于结构模式发现向graph representation learning的转变,
这一转变主要得益于当前深度学习技术的进步。
具体而言,
graph representation learning通过将图中的vertices、edges或subgraphs被映射为低维嵌入,
从而成功地保留了图中关键结构性质。
这些嵌入随后被有效地输入至下游任务中的机器学习模型中进行处理。
然而到目前为止,大部分关于图表示的学习工作主要聚焦于构建单一信号图或固定集合的表征,在跨任务研究领域相对较少涉及。这些模型的本质在于它们专为各个数据集独立地提取独特的网络结构特征。例如,基于Facebook社交网络训练得到的DeepWalk节点嵌入模型,其性能无法直接移植至其他类型的网络上。这自然引发了以下问题:我们是否能够在所有类型的网络中统一地提取具有可转移性的代表性节点嵌入?
在NLP、CV和其他领域也提出了相关问题。到目前为止,最优解决方案是在自监督环境下对大规模数据集进行预训练以获得表示学习模型。这一过程的关键在于利用预训练好的模型作为优质初始状态进行微调处理。例如BERT通过设计语言模型预训练任务从大规模语料库中提取Transformer编码器架构然后通过微调使其适应各种NLP任务。
基于这一观点以及通用图结构模式的概念,在深度学习领域中我们致力于构建一个预训练representation learning model,特别是在Graph Neural Network (GNN)的研究方向上展开深入探索与应用研究。假设所有条件下,通过提供多样化的输入数据集,例如基于Facebook社交关系的数据集以及DBLP作者合作网络的数据集,我们的目标是利用self-supervised学习方法对GNN模型进行无监督式预训练,随后通过微调使其适应特定的 downstream graph learning tasks.在GNN模型的预训练过程中,关键挑战在于:如何设计有效的pre-training任务以系统性地捕获网络内部以及跨网络层次上的共性化结构性特征?
我们提出了一种名为Graph Contrastive Coding(GCC)的新框架来研究跨图形的结构表示问题。与之前不同的是,在此研究中,我们采用了对比学习方法来设计图预训练任务,并将其用于实例识别。其核心思路是:从输入图中提取出示例,并将每个示例视为独立类别;随后通过学习机制对这些示例进行编码并实现区分。为了使GCC能够有效提取可迁移的结构模式,我们需要解决以下三个关键问题:(1) 示例的选择是什么?(2) 如何确定区分规则?(3) 如何实现示例编码?
在GCC框架中,我们将其预训练任务设计为基于子图的实例区分。其核心目标是通过分析节点的局部结构来区分不同的节点(如图1所示)。针对每个节点,在multi-hop自注意力网络的基础上提取对应的子图作为实例样本。GCC旨在区分从不同顶点采样的子图及其特征。由于GCC不依赖于输入子图来自同一原始图这一假设,在实际应用中... 我们可以通过训练好的GCC模型有效地执行下游任务。

主要贡献:
- 我们致力于将跨多个图的GNN预训练问题建模为一个核心任务,并识别其主要挑战。
- 我们将预训练任务聚焦于Graph representation learning ,旨在从多源输入图中提取通用且可迁移的结构特征。
- 我们开发出GCC框架以提取 structural graph representations ,该框架通过对比学习指导生成过程。
- 我们系统性评估表明,在跨领域任务中GCC能够实现与特定领域模型相当或超越的性能。
2 相关工作
节点间的相似度;对比型学习;图的预训练过程; (鉴于对这部分背景知识尚不熟悉的原因,在此不做进一步阐述以免误导读者)
3 GRAPH CONTRASTIVE CODING (GCC)
在本节中, 我们将图形神经网络抽象为预训练任务. 通过构建GCC框架, 我们能够处理这一问题. 图2展示了GCC框架在预训练及微调阶段的应用.
3.1 The GNN Pre-Training Problem
在概念层面上而言,在给定的一组来自不同领域的图中(即...),我们的研究目标是构建一个自监督预训练的GNN模型。该模型预期将显著提升多个下游任务的表现(包括节点分类、链接预测等)。基于以下假设:不同graph之间存在共同且可转移的结构模式(例如主题、功能模块等),这在现有网络科学文献中已有广泛讨论。一个易于理解的应用场景在于,在Facebook、IMDB和DBLP等多领域网络上预先训练一个通用的GNN模型,并通过自监督学习使其能够推广到新的如US-Airport网络中的节点分类任务(如图2所示)。

在形式上来说
- topological similarity :其映射必须满足在向量空间中对具有相同局部拓扑结构的顶点施加距离较近的要求
- transferability 的性质:该属性与未在训练数据中见过的顶点及其关联图相容
基于以下两点分析得出的结论是该函数可用于多种场景下的图学习任务中,在涉及社会角色预测、节点分类以及图分类等应用领域表现突出。
特别注意⚠️,在没有节点属性和节点标签的情况下进行结构化表示学习(structural representation learning),这与普通图形神经网络研究中常见的问题设置存在显著差异。此外,在本文中我们采用的是先期预训练的方法,并将该模型应用于新的图数据集(new graph data set),这与传统的图神经网络架构有所不同。
3.2 GCC Pre-Training
我们处理的一组图旨在进行前期训练以开发一个通用的图神经网络编码器以便提取这些图中潜在的结构信息。为此我们需要制定相应的监督任务与学习目标以适应复杂多样的数据特征需求。受对比学技术法在自然语言处理与计算机视觉领域的成功应用启发我们将子图示例间的判别性作为核心的学习框架并采用InfoNCE损失函数作为优化指标来进行模型参数更新工作。具体而言该模型会将每个独立于其他实例的独特特征识别出来并在预训练过程中从大量不同类型的子图表中学会如何区分各类示例从而建立反映子图表相似程度的表示空间
从字典查询的角度来看,在一个包含K+1个编码键{k_0,…,k_K}的字典中进行对比学习算法通过查找与输入查询q匹配的一个键(用K+表示)。我们采用InfoNCE作为这一对比学习的目标函数:

InfoNCE主要应用于自监督学习领域,并充当一种对比损失函数的作用。其基本概念在于通过对数据分布样本与噪声分布样本之间的差异进行学习,在揭示数据内在的一些特性上展现出显著的效果。
从直观的角度来看,在信息检索中查询与密钥(有时称为互信息)的乘积在某些文献中被提及;然而,在这篇文章中后续直接将q*k定义为相似度指标。我们的目标是最小化损失函数L=−log(q(k|x))=−∑x p(x|θ) log(q(k|x));即我们希望最大化log似然值的部分L=−∑x p(x|θ) log(q(k|x));通过学习使q(查询)与k(字典中与之匹配的密钥)之间的相似度最大化。
为了实现上述目标,我们需要解决三个问题:
Q1 : How to define subgraph instances in graphs?
Q2 : How to define (dis) similar instance pairs in and across graphs,
i.e., for a query x q , which key x k is the matched one?
Q3 : What are the proper graph encoders f q and f k ?
值得注意的是,在我们的问题设置中, x q 和 x k 不一定来自同一个图
Q1: Design (subgraph) instances in graphs.
CV and NLP tasks 中的 instance 可以直接定义成 an image or a sentence,但是在GNN中不能直接定义实例的。此外我们的预训练的重点仅仅是纯粹的structural representation,没有额外的节点特征属性输入,所以选择单个顶点作为instance是不可行的,因为它不适用于区分两个顶点。
为了有效解决该问题,我们推荐采用以下方法:将每个顶点扩展至其局部网络结构中,并将其子图用作对比实例。具体而言,在某个顶点v的情况下,“r"-邻域网络即被定义为其


图3左呈现了2-ego网络的两个实例.GCC将每个r-ego网络被划分为各自独特的类别并对模型进行了优化处理以区分相似与不同的实例.

Q2: Define (dis)similar instances.
在CV中,在同一图像的不同随机数据增强(如随机裁剪、大小调整、色彩抖动以及翻转等)被视为具有相似特性的实例。而在GCC框架中,则将两个相同的 r-ego网络视作具有相似特性的实例对,并将数据增强操作定义为 graph sampling 。这种图采样技术旨在从原始图中提取具有代表性的子图样本集合。若想对顶点v的 r-ego网络进行数据增强,则需遵循以下步骤:
- 随机游走重启动(Random Walk with Restart):基于顶点v展开随机游走过程,在图G中按照与边权比例决定移动概率,并按一定频率返回起始顶点v。
- 子图诱导(Subgraph induction):通过重新随机行走获取节点v附近区域的节点集合Sv' ,然后将这些节点导出生成子图Gv' ,将其视为r-ego网络Gv的一种扩展形式(Extended Version)。这一过程也被称为Induced Subgraph Random Walk Sampling (ISRW)。
- 隐私保护(Anonymization):我们采用任意顺序对采样得到的图进行去身份化处理(Node anonymization),具体方法是将采样得到的所有节点重新标记为{1, 2, ..., |S_v'|}的形式。这是因为我们需要学习的是一个结构特征而非节点时序性相关的属性信息,在这种设计下可以有效避免简单的解决方案(Naive Solution),即仅通过比较两个子图节点索引的一致性来进行判别分析。
通过反复执行上述步骤两次来生成两个数据增强样本。
这两个样本被归类为一个相似的实例对(x_q, x^{(k+)})。
如果两幅子图分别来自不同r-ego网络的数据增强,
则将它们视为一个不相似的实例对(x_q, X_k)。
特别注意的是,
这三个步骤均可通过DGL实现
Q3: Define graph encoders.
基于两个采样子图xq和xk, GCC模型利用两个GNN encoder fq和fk对其进行特征提取.从技术上讲,在现有条件下任何图形神经网络都可以被选作编码器,该模型对于不同选择表现出一定的鲁棒性.在实践中,我们选用GIN作为我们的图编码方案,这种架构具有显著的优势.为了实现这一目标,我们专注于构建基于结构表示的预训练表示,而大多数标准GNN架构通常需要节点属性信息作为输入.针对这一限制,我们建议采用每个采样子图所蕴含的全局拓扑信息来初始化节点特征向量.具体而言,我们将这种全局嵌入机制命名为generalized positional embedding:

具体来说, 该方法是通过拉普拉斯方程计算出特征向量, 以此来表示位置编码. 在顶点特征中, 我们不仅采用了广义的位置编码 generalized positional embedding, 还额外加入了基于顶点度的一位热编码 one-hot encoding 和表征ego顶点的存在性的二进制指示符 binary indicator. 经过图编码器图encoder处理后, 输出得到的d维输出向量随后将通过其L2范数进行归一化处理以获得最终结果.
A running example.
图3中展示了GCC预训练的具体运行示例。为了简化起见,我们将字典大小设定为3. GCC首先从图3左侧所示的2-ego网络中进行两组子图的随机扩展,这两组子图分别记作xq和xk0.此外,还有另外两组子图xk1和xk2,它们是基于某种噪声分布生成的——在本例中,这些噪声分布来源于同一张左侧2-ego网络.接着,采用两个图编码器fq和fk,将查询项q及其三个相关键项{k0,k1,k2}映射到低维向量空间中.最后,公式1中的对比损失函数旨在鼓励模型将(xq,xk0)识别为相似对,并将这一结果与其他不相似实例({xk1,xk2})区分开来

Learning.
在维护一个大小为K的字典和编码器的过程中,在计算上述损失函数时会遇到一些挑战。为了提升模型效率并解决这些问题,在参考MoCo (He et al., 2020)的研究成果基础上引入了动量对比学习(momentum contrast)。该方法通过维护一个负样本队列来扩大字典容量K,在此过程中队列中存储了此前训练过的批次样本作为负例用于对比学习。此外,在这一机制下只有q 的编码器fq的参数

通过反向传递更新,而k的编码器fk的参数

则通过以下方式更新

其中变量m被定义为动量,在GCC中使用时其设置依赖于超参数的选择。相较于其他现有方法来说,在相同的计算资源下运行效率更高。
3.3 GCC Fine-Tuning
Downstream tasks.
图形学习中的下游任务主要可分为两类:一类是基于图的整体分析(graph-level tasks),另一类是基于节点局部特征(node-level tasks)。在graph-level tasks中,GCC方法主要应用于该框架下,在该框架下,模型会对输入实例自身进行特征提取,并生成反映该实例整体特征的graph embedding。具体而言,在这一过程中会考虑直接邻居(first-order neighbors)以及二阶邻居(second-order neighbors)等多层邻域信息,并通过这些信息构建局部表示。此外,在node-level tasks中,则会针对每个实例及其邻域信息构建局部表示,在这一过程中会考虑直接邻居(first-order neighbors)以及二阶邻居(second-order neighbors)等多层邻域信息,并通过这些信息构建局部表示。这两种情况下的表示会被进一步整合到下游的任务模型中,在线性分类器或其他非线性模型中被利用以实现特定任务的目标。
Freezing vs. full fine-tuning
该问题涉及两种不同模型间的差异:一种是基于下游任务的分类器模型与另一种是经过预训练的编码器模型是否同时进行微调。其中采用完整参数微调策略的是全参数微调(full fine-tuning),而Freezing则是通过先固定图编码器参数实现的一种特定策略。

4 Experiment
我们进行了多轮系统性的测试以全面评估GCC的表现,并将其应用于多个关键任务类型等其他重要指标。这些测试涵盖了节点分类、图分类以及相似性检索等多种核心功能模块,并取得了显著的结果




通过实验观察可知,在各项任务及多组数据集上运行测试后发现,GCC均展现出了显著的优势(观察到的数据结果显示,并非特别理想),并且其性能在与现有的最优模型相比时,在性能指标上达到了更好的效果或与之相当的水平。这进一步验证了GCC的有效性和优越性
通过实验观察可知,在各项任务及多组数据集上运行测试后发现,GCC均展现出了显著的优势(观察到的数据结果显示,并非特别理想),并且其性能在与现有的最优模型相比时,在性能指标上达到了更好的效果或与之相当的水平。这进一步验证了GCC的有效性和优越性
5 Conclusion
总结而言,在这项研究中我们基于对比学习的方法构建了GCC的图神经网络预训练框架。通过对比学习的方法, 该框架不仅成功地获得了反映节点关系特征的学习目标, 而且能够提取出图数据中的结构信息, 进一步实现了对复杂关系的学习与建模能力。实验结果验证了该方法的有效性。未来研究者们可以在更多的实际应用场景中进一步探索该技术的发展方向。
