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

2023-05-16

摘要

目前图表示学习在许多任务上取得了很好的效果但是都是关注于具体领域的并不具有迁移性。本文借鉴预训练思想,设计了一个自监督图神经网络框架来在多个网络中捕获一般化的网络拓扑结构属性。我们设计的预训练任务是在多个网络之间判别子图实体,使用对比学习强化图神经网络来学习固有的,可迁移的结构化表示。

引言

假设:具有代表性的图结构模式是一般化的且在网络之间可迁移。
过去二十多年的工作主要关注点在发掘不同网络中潜在的一般化的结构属性。最近几年图学习的重点从结构模式挖掘转向图表示学习。将结点,边,子图等转化为低维嵌入可以保留一些重要的结构信息。但是,大多数表示学习主要是在单一图上或者一组固定数目的图中学习,表达受限且很难迁移。本质上,这些表示学习模型旨在学习每个数据集专用的网络特定结构模式。举个例子,在社交网络上使用DeepWalk学到的表示无法用于其他图中。因此,可否学习一个一般化的,可迁移的图嵌入是个待解决的问题。

本文借助对比学习的思想在多个图上学习结构化表示。基本的思想是先从输入图中采样实例,把每个实例作为单独的类别,编码并判别这些实例。在GCC中,我们将子图判别作为预训练任务,根据结点的局部结构区分他们。对于每个结点从他的多跳ego-network中采样子图。GCC的目的是区分从特定结点采样的子图和从其他结点采样的子图。由于GCC并不要求结点和子图来自于同一张图,因此图编码器被迫要从不同的输入图中捕获一般化的模式。

相关工作

结点相似性是用来衡量结点之间相似程度的指标,常见的方法有三类:
1)Neighborhood similarity
假设直接相邻的结点应该相似。早期的邻居相似性度量方法包括Jaccard similarity,RWR similarity和SimRank等。大多数图嵌入方法如DeepWalk,LINE,node2vec都是基于邻居相似度假设的。

2)Structural similarity
不同于邻居相似度通过度量连接关系来计算,structural similarity不需要假设结点得连接,而是认为结点具有相似的局部结构则结构相似度应更相似。建模结构相似度的工作主要分为两类,一个是基于领域知识如结点的度,结构多样性 k-core,motif等。基于该想法的工作主要包括struct2vec,RoIX等。其二是使用谱图理论来建模结构相似性。

3)Attribute similarity
现实世界的图数据包含许多属性信息如引用网络中的文本,分子图中的化学特征。常见的图神经网络如GCN,GAT,GraphSAEG等使用属性信息作为额外信息学习表示可以进一步用于衡量结点相似性。

模型

在这里插入图片描述
在给定一组来自多个领域的图,我们希望通过预训练GNN模型捕获跨网络的结构模式。比如,在Fackbook,IMDB,DBLP数据图上预训练一个GNN模型,然后应用于US-Airport网络中做结点分类。GNN预训练目标是学习一个函数可以把结点映射到低维的特征向量中。这个函数应该包含两个属性,一是保留结构相似性,网络局部拓扑相似的结点在向量空间中应该靠近;二是可迁移性,对于预训练中未见过的结点或图也适用。不同于常见的图神经网络学习,本文的重点在于不考虑结点属性和结点标签条件下学习结构化的表示。通过预训练一个结构化表示模型,然后应用到未见过的图上。

在给定一组图后,我们需要预训练一个一般化的图神经网络编码器捕获这些图中的结构化模式。本文通过把子图判别作为预训练任务,使用InfoNCE作为目标函数来学习。预训练任务把子图实例作为单独的类别,学习子图之间的差异性,这样输出的表示可以捕获子图之间的相似性。从查表的角度分析即给定一个查询向量q和一个包含K+1个编码的关键字的字典,对比学习是要找到一个与q匹配的键值k+.因此可以将InfoNCE改写为
在这里插入图片描述

目前有三个问题尚待解决
1)如何在图中定义子图?
2)如何在图之间定义相似度距离?
3)适合的图编码器fq,fk是什么?

Design(subgraph) instances in graphs
对比学习成功的关键在于数据实体的定义.在CV和NLP领域中,实体一般是图像和句子,但在图数据中并没有直接定义好的实体.由于我们的预训练任务只关注于结构化表示,因此我们通过使用子图来作为对比实体.本文中子图定义为r-ego network即对于每个结点,选择所有到它距离不大于r的节点作为子图。

Define (dis)similar instances
在GCC中,我们将对同一个r-ego 网络的随机增强视作相似的实例并把这种增强方式称为图采样。假设要增强结点v的r-ego network,图采样主要包含三个步骤
1)带重启的随机游走
从中心结点v开始按照一定权重在邻居结点中随机游走。并且,在每一步游走时,都有一定的概率返回到初始结点。
2)子图归纳
随机游走得到了一组结点v的邻居结点记为S。用S中生成的子图G’视作是一个r-ego network的增强。
3)匿名化
对采样的子图中的结点按照任意顺序重新标注。这样做是隐藏结点索引,避免通过索引作为判别条件。

Define graph encoders
任何一种图神经网络都可以作为GCC的编码器,但是传统图神经网络要求结点特征或者属性信息作为输入,而本文只关注结构表示。为解决这个问题,本文采用采样子图的图结构来作为初始结点的特征。即每个子图的位置编码定义为归一化的图拉普拉斯的最大的特征向量。
在这里插入图片描述
如图为GCC预训练的一个例子,我们把字典的大小设置为3。首先随机从二阶的ego-network中生成两个子图xq和xk0,同时另外两个子图xk1和xk2则是从噪声分布中生成的。然后使用两个编码器fq和fk得到低维嵌入q和{k1, k2, k3},最后通过对比loss,使xq和xk0接近,与其他更远。

实验
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training 的相关文章

  • glibc 已弃用的 __malloc_hook 功能的替代方案

    我正在为 C 编写一个内存分析器 并为此拦截对malloc realloc and free通过 malloc hooks 函数 不幸的是 这些已被弃用 因为它们在多线程环境中表现不佳 我找不到描述实现相同目标的替代最佳实践解决方案的文档
  • 对“lzma_code”的未定义引用

    我尝试打包我的应用程序并静态链接所有库 但我收到此错误 Makefile 如下所示 CC gcc INCPATH I home johnny Application FileBasedReG include RealityGrid LIBS
  • x86-64 Linux 中不再允许使用 32 位绝对地址?

    64 位 Linux 默认使用小内存模型 将所有代码和静态数据置于 2GB 地址限制以下 这确保您可以使用 32 位绝对地址 旧版本的 gcc 对静态数组使用 32 位绝对地址 以便节省相对地址计算的额外指令 然而 这不再有效 如果我尝试在
  • __get_cpuid 的可移植性如何?

    我在用着 get cpuid 获取有关的信息x86 and x86 64我的程序运行的处理器 在 Linux 和 Mac OS 上使用 GCC 似乎可以在不包含任何头文件的情况下编译和运行 但是它的可移植性如何 它可以与其他编译器一起使用吗
  • 在 Linux 上的 makefile 和 Makefile 之间进行选择

    我想在一个目录中同时使用 Makefile 和 makefile 进行 make 默认情况下 它将执行makefile 我可以选择执行 Makefile 吗 提前致谢 最简单的选择是使用 f make f Makefile From man
  • 用均匀的彩色表面替换颜色点

    这是我的数据和当前的绘图 require ggplot2 a rep c 2 5 10 15 20 30 40 50 75 100 each 7 b rep c 0 001 0 005 0 01 0 05 0 5 5 50 10 c c T
  • 如何在 Excel 中创建时间范围图表

    Can anyone help me create graph of time ranges of all elements in Excel My data looks like this 连接时间和断开连接时间数据值采用 24 小时格式
  • STM32:从自定义引导加载程序跳转到应用程序时发生硬故障

    我正在开发带有自定义引导加载程序和应用程序的 STM32F401 MCU 编译器是GCC 5 2 1 没有运行优化 在以下跳转序列后的第一次中断后 我遇到了硬故障 引导加载程序 gt 应用程序 gt 引导加载程序 gt 应用程序 从引导加载
  • 每次升级 Xcode 时,我都会遇到安装了 Brew 的 GCC 的链接器错误

    因此 我升级到 Mavericks 以及最新版本的 Xcode 5 02 并且正如预期的那样 无法编译任何包含 C 扩展的新 Ruby gem 这种情况尤其发生在我自己的项目 NMatrix 中 其中包含 C 和 C 代码 我重新安装了 X
  • 在 Python 中使用邻接表构建节点图

    我有一个Node类如下 class Node def init self val 0 neighbors None self val val self neighbors neighbors if neighbors is not None
  • 什么是好的、免费的 PHP 图表套件?

    我要做的只是基本的折线图 任何人分享的经验将不胜感激 不是真正的 PHP 但我发现 amchart 非常容易实现 而且看起来很棒 http www amcharts com http www amcharts com 还可以查看 Googl
  • 在 python matplotlib 中格式化损坏的 y 轴

    我正在 matplotlib 中处理一个 相当复杂的 条形图 它包含来自多个源的摘要数据 每个源都沿 x 轴标记 y 轴上有一系列结果 许多结果都是异常值 我尝试使用断开的 y 轴来显示这些结果 而不会使用以下组合来扭曲整个图表这个方法 h
  • gdb 通过指向错误的代码行显示不正确的回溯

    我们可以通过在源代码中包含多个中止调用 用非常简单的示例重现此问题 在下面的示例代码中 我们在不同条件下总共有四个中止调用 但是当我们使用优化标志 O3 进行编译时 我们只能看到一个中止调用的调试信息 因此 在这四个中止调用中发生崩溃时 g
  • Java - 哪个是 Graph 的最佳实现结构?

    图很大但是无向 边缘未加权 在我的实现中 我必须找到具有最大度数的顶点并在顶点和边上进行删除 链接列表 数组列表 地图 哪一种更适合我的实施 表示图的两个基本数据结构是 adjacency list the adjacency matrix
  • 我可以让 C++ 编译器在编译时实例化对象吗?

    我正在编写一些代码 其中包含大量相当简单的对象 我希望它们在编译时创建 我认为编译器能够做到这一点 但我无法弄清楚如何做到 In C我可以执行以下操作 include
  • 为什么GCC不报告未初始化的变量?

    include
  • __libc_start_main 发生了什么?

    我真的很想理解从高级代码到可执行文件的步骤 但是遇到了一些困难 我写了一个空的int main C 文件并尝试通过以下方式破译反汇编objdump d 这是发生的事情 in start 设置对齐方式 将参数压入堆栈 调用 libc star
  • .NET(或 MFC)的高速图形控件?

    我需要编写一个数字示波器类型的应用程序 有很多很棒的静态绘图控件 但我需要一些可以绘制每秒处理 4000 个样本的 16 条轨迹的东西 有人知道 NET 的高速图形控件吗 我什至会选择 MFC 因为它可以封装到 NET 控件中 谢谢您的帮助
  • 利用 SSE 和其他 CPU 扩展

    在我的代码库中有几个地方 对于大型数据集 相同的操作会重复很多次 在某些情况下 处理这些需要花费相当长的时间 我相信使用SSE来实现这些循环应该可以显着提高它们的性能 特别是在对同一组数据执行许多操作的情况下 因此一旦数据最初被读入缓存 就
  • 使用 gcc 的中间 GIMPLE 格式

    根据本文 http en wikipedia org wiki Intermediate languagegcc 在生成代码之前使用多种中间格式 我读到 GIMPLE 格式使用三个地址代码 这似乎是最容易使用的中间语言 但我需要更多细节 因

随机推荐

  • 【无标题】

    起因 2010 年 xff0c 谷歌宣布退出地内市场的时候 xff0c 一直保留着 谷歌地图 和 谷歌翻译 这两个公共服务 有兴趣自行百度下谷歌和百度恩怨 在 2020 年 xff0c 谷歌停止了 谷歌地图 在内地的服务 现在 xff0c
  • vmware ESXI 裸金属架构 本地服务器 开启Intel VT-x(虚拟化技术)

    我想使用vmware ESXI 安装的WIN10虚拟机中装vmware软件再装win10 即虚拟机中套虚拟机 基于工作要求某个XXX项目需要开启VPN远程到客户内网进行维护 客户对网络审计比较严 安装VPN的那台机子识别码要上传服务器 基本
  • 对一个或多个实体的验证失败。有关详细信息,请参见“EntityValidationErrors”属性。

    因为是转载文章 在此标明出处 xff0c 以前有文章是转的没标明的请谅解 xff0c 因为有些已经无法找到出处 xff0c 或者与其它原因 如有冒犯请联系本人 xff0c 或删除 xff0c 或标明出处 因为好的文章 xff0c 以前只想收
  • 一元正态分布

    d import numpy as np import matplotlib pyplot as plt from scipy stats import norm 生成100个正态分布数据 xff0c 均值为1 xff0c 标准差为2 da
  • CaptureLayer的另外一个调用例子TaskSnapshot

    在前一篇讨论中 xff0c 我们查找了系统中调用captureLayers的地方 1323 public static GraphicBuffer captureLayers IBinder layerHandleToken Rect so
  • visualsvn server 无法访问url

    IIS 发布网站 本机能访问 其它人访问不了 看一下服务端 VisualSVN Server 的服务有没有启动 x A 34 H g6 L N s 管理 服务 VisualSVN Server 备注 做为开发机子 手动优化自己的电脑吧 否则
  • JS日期加减,日期运算

    因为是转载文章 在此标明出处 xff0c 以前有文章是转的没标明的请谅解 xff0c 因为有些已经无法找到出处 xff0c 或者与其它原因 如有冒犯请联系本人 xff0c 或删除 xff0c 或标明出处 因为好的文章 xff0c 以前只想收
  • jQuery easyui 选中特定的tab

    获取选中的 Tab 1 获取选中的 tab panel 和它的 tab 对象 2 var pp 61 39 tt 39 tabs 39 getSelected 39 3 var tab 61 pp panel 39 options 39 t
  • Server Error in '/' Application. 解决办法

    Server Error in 39 39 Application Access to the path 39 E NetWeb2 Content upFile BClientExcel 大客户部通讯录导入 xlsx 39 is denie
  • easyui-datagrid 数据出不来(样式引起的bug)

    今天任务是需要从另一个项目中将某几个功能页面移植到现有的项目中 这是比较繁琐的功能 理解要移植功能的逻辑 xff08 业务逻辑 xff0c 涉及到的表和存储过程 xff09 页面样式 这么是我遇到的一个问题之一 xff1b 我需要展现一个e
  • c#切割字符串几种方法

    1 xff0c 按单一字符切割 string s 61 34 abcdeabcdeabcde 34 string sArray 61 s Split 34 c 34 oreach string i in sArray Console Wri
  • 动态链接库与静态链接库的区别

    静态链接库与动态链接库都是共享代码的方式 xff0c 如果采用静态链接库 xff0c 则无论你愿不愿意 xff0c lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了 但是若使用 DLL xff0c 该 DLL 不必被包含在最终
  • ssm——小学期实训总结

    实训总结 经过这两个星期短暂的学习 xff0c 我学习了ssm的框架搭建与web前端设计基础 在第一个星期 xff0c 老师着重为我们讲了框架的原理 搭建与运用 xff1b 而在第二个星期 xff0c 重点则转移到了小组对项目的开发与研究上
  • 节点中心性

    文章目录 度中心性 Degree Centrality 特征向量中心性 Eigenvector Centrality Katz中心性 Katz Centrality Katz index PageRank中心性PageRank算法 接近中心
  • 机器学习面试知识点总结

    文章目录 计算学习理论过拟合与欠拟合过拟合欠拟合 偏差与方差最大似然估计与贝叶斯估计极大似然估计贝叶斯决策论贝叶斯估计 特征工程与特征选择特征工程逐层归一化特征选择 模型融合融合策略 评估方法与评价指标评估方法评价指标 优化算法正则化深度模
  • Multi-view graph convolutional networks with attention mechanism

    摘要 传统的图卷积网络关注于如何高效的探索不同阶跳数 hops 的邻居节点的信息 但是目前的基于GCN的图网络模型都是构建在固定邻接矩阵上的即实际图的一个拓扑视角 当数据包含噪声或者图不完备时 xff0c 这种方式会限制模型的表达能力 由于
  • An Empirical Study of Graph Contrastive Learning

    摘要 图对比学习在图表示学习领域树立了新的范式 xff0c 不需要人工标注信息 但对GCL的分析却寥寥无几 本文通过分析一般化的GCL范式的各个部分包括增强函数 xff0c 对比模式 xff0c 对比目标和负采样技术 xff0c 然后分析各
  • Data Augmentation

    自监督深度学习模型的精确性严重依赖于训练时数据的多样性和数据量 模型要想在更复杂任务上有较好的效果一般会有大量的隐藏单元 一般在训练过程中训练隐藏单元越多需要的数据越多 xff0c 即任务复杂度与参数量与需要的数据量成正比 由于训练复杂任务
  • Semi-Supervised and Self-Supervised Classification with Multi-View Graph Neural Networks

    摘要 图神经网络在图结构数据中取得了很好的效果但是大多数的模型使用的还是叫浅层的结构 xff0c 当模型层数加深时很容易过平滑 本文基于多视图来聚合更多的信息 我们首先设计两个互补的视图来描述全局结构和节点特征相似性 xff0c 然后使用注
  • GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training

    摘要 目前图表示学习在许多任务上取得了很好的效果但是都是关注于具体领域的并不具有迁移性 本文借鉴预训练思想 xff0c 设计了一个自监督图神经网络框架来在多个网络中捕获一般化的网络拓扑结构属性 我们设计的预训练任务是在多个网络之间判别子图实