An Empirical Study of Graph Contrastive Learning

2023-05-16

摘要
图对比学习在图表示学习领域树立了新的范式,不需要人工标注信息。但对GCL的分析却寥寥无几。本文通过分析一般化的GCL范式的各个部分包括增强函数,对比模式,对比目标和负采样技术,然后分析各个组件之间的相互作用。实验结论显示,简单的拓扑增强可以生成稀疏视图带来不错的性能提升;对比模型应该与最终任务的粒度一致。

引言
一个经典的图对比学习方法是首先通过对输入的随机增强构建多个图视图,然后通过对比正负样本学习表示。以每个节点作为中心节点为例,正样本一般是其他视图中表示一致的一些节点,而负样本则是在该Batch中的给定图或者其他图中选择其他节点作为负样本。

尽管图对比学习已经取得了很大的成功,但是已有工作只是在模型级别做了评估,对于到底是什么因子影响GCL的效果尚未可知。为了分析这些问题,我们首先提出了一个一般化的对比范式,将之前的工作分解为四个部分分别为1)数据增强函数,2)对比模式,3)对比目标函数,4)负采样策略

我们的工作企图回答如下三个问题:
1)一个有效的GCL算法中最重要的组成部分是什么?
2)不同的设计考虑如何影响模型性能?
3)这些设计考虑是否有利于某些特定类型的数据或终端任务?

为设计高效的GCL算法,实验得出几个指导原则:
1)生成稀疏视图的拓扑增强对GCL的提升最大。从拓扑结构和特征级别都做增强会进一步提升效果。
2)对比模式的尺度应该与下游任务的粒度一致,即下游任务是节点级任务,对比应该是节点级别的。
3)InfoNCE目标函数最稳定且效果提升最好,但是要求大量的负样本
4)一些免负采样的目标函数可以保证效果的同时降低计算复杂度
5)基于embedding相似度的负采样策略对GCL效果提升甚微

GCL范式和设计维度
图片: https://uploader.shimo.im/f/3WuwHLuvZcWlH9YQ.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NTY5ODg0MDksImZpbGVHVUlEIjoiS2xrS1ZnWlY2blN3MHpxZCIsImlhdCI6MTY1Njk4ODEwOSwidXNlcklkIjo2NjY4ODY1NX0.FS-BWVqaqN4BzaBHU4wZbVJNxYqZUZ1FrWzpW5xREIQ

我们将GCL算法分解为四个部分:1)数据增强函数,2)对比模式,3)对比目标函数,4)负采样策略。在每一次迭代训练时,首先才能使用随机的增强技术为输入图生成多个视图。具体来讲就是从转化函数集T中采样两个增强函数t来生成两个视图;当得到两个视图后,使用一个共享参数的图编码器计算对应视图的节点表示。对于图级别的任务,可以选择readout函数为每个视图学习一个图级别的表示。

对于每一个节点,对比模式会指定一组正样本和一组负样本。在两个视图中,embedding对应同一节点或者图的组成正样本集。我们使用负采样策略通过考虑负样本的相对相似性提升负样本集。最终使用对比目标函数计算这些指定正负样本对的得分。

Data Augmentations
数据增强的目的是为给定图生成一致的,恒等的正样本。目前大多数GCL是使用两级的增强技术即结构转化和特征转化。
Topology augmentations
边:1)边移除(ER), 2)边添加(EA), 3)边翻转(EF),
点:1)点丢弃(ND),2)随机游走的子图(RWS), 3)使用个性化pagerank的扩散(PPR),4)使用马尔可夫扩散核的扩散(MDK)
Feature augmentations
1)特征遮掩(FM), 2)特征丢弃(FD)

Contrasting modes
对于每一个点,对比模式需要确定图上不同粒度的正负样本集、在主流的工作中广泛应用的三种对比模式即1)local-local,2)global-global,3)global-local。注意,对比模式的应用是依赖下游人物的,只有local-local和global-local能用于节点级任务,对于图级别的数据集,这三种模式都可以使用。

Contrastive objectives
目标函数是用于衡量正样本之间的相似性和负样本之间的差异性的。按照是否需要负采样分为
1)依赖负样本
a. InfoNCE,b. Jensen-Shannon Divergence,c. Triplet Margin loss
2)不依赖负样本
a. Boostrapping Latent loss,b. Barlow Twins loss,c. VICReg loss

Negative mining strategies

  1. Hard Negative Mixing,2)Debiased Contrastive Learning,3)Hardness-Biased Negative Mining,4)Conditional Negative Mining
    在这里插入图片描述

GCL模型的表达能力

Dual branches vs. single branch
大多数的对比学习模型都是借鉴SimCLR使用双同分支的,将原始输入图增强两次得到两个视图并跨视图设计正样本。但对于一些global-local模式的对比如DGI,GMI只用到了一个分支,这种情况下,负样本是通过在原始图上扰动得到的。不同于之前提到的增强方式,通过生成一致的节点对建模正样本对的联合分布,扰动函数估计的是边缘分布的乘积。
Stronger augmentations
不同于GRACE和GraphCL使用均匀的边或特征扰动,GCA基于边和特征的重要性采用自适应的增强方式。
Variants of contrasting modes
GMI在DGI的基础上进一步考虑节点(边)原生特征和对应表示之间的一致性,但是会需要更多的计算资源。最近一些方法受启发与图聚类算法,通过对比局部/全局和上下文表示来学习。

Empirical Studies

  1. 数据增强方式
    图片: https://uploader.shimo.im/f/ZoaDgl4WgddZujpd.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NTY5ODg0MDksImZpbGVHVUlEIjoiS2xrS1ZnWlY2blN3MHpxZCIsImlhdCI6MTY1Njk4ODEwOSwidXNlcklkIjo2NjY4ODY1NX0.FS-BWVqaqN4BzaBHU4wZbVJNxYqZUZ1FrWzpW5xREIQ
    GCL的效果高度依赖于数据增强方式的选取。
    图片: https://uploader.shimo.im/f/T6fcn8TlllTMnOJX.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NTY5ODg0MDksImZpbGVHVUlEIjoiS2xrS1ZnWlY2blN3MHpxZCIsImlhdCI6MTY1Njk4ODEwOSwidXNlcklkIjo2NjY4ODY1NX0.FS-BWVqaqN4BzaBHU4wZbVJNxYqZUZ1FrWzpW5xREIQ
    观察一:拓扑结构上的增强对模型结果影响最大。产生稀疏图的增强函数能得到更好的效果。
    实验发现,与添加边相比移除边一般能达到更好的效果。也就是说得到一个稀疏的视图会更好一些。但稀疏的程度达到什么地步时可以取得最好的效果?本文分析了节点丢弃,边移除和边添加三种增强方式在CS数据集上的效果。实验发现,随着节点或边的减少,准确率会有一定的提升但随着大量的节点或边丢失,效果会极具下降。当边添加的越多时,准确率下降,这是因为大多数现实的图一般是稀疏的,太多的边添加进来会引入噪声,降低学习到的表示的质量。
    图片: https://uploader.shimo.im/f/MGluDBb5hSkgaSoE.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NTY5ODg0MDksImZpbGVHVUlEIjoiS2xrS1ZnWlY2blN3MHpxZCIsImlhdCI6MTY1Njk4ODEwOSwidXNlcklkIjo2NjY4ODY1NX0.FS-BWVqaqN4BzaBHU4wZbVJNxYqZUZ1FrWzpW5xREIQ
    观察二:特征增强可以带来额外的提升,综合结构和属性级别的增强对GCL更有利。
    图片: https://uploader.shimo.im/f/2lDzmvWQaIrmTP26.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NTY5ODg0MDksImZpbGVHVUlEIjoiS2xrS1ZnWlY2blN3MHpxZCIsImlhdCI6MTY1Njk4ODEwOSwidXNlcklkIjo2NjY4ODY1NX0.FS-BWVqaqN4BzaBHU4wZbVJNxYqZUZ1FrWzpW5xREIQ
    观察三:确定性的增强模式应该和随机的增强方式配合使用
    实验发现,单一使用确定性的增强并不一定会达到最好的结果。对比学习的目标函数就是区分从真实数据分布中采样的样本和从噪声分布中采样的样本。因此,随机增强可以更好的近似噪声分布。
    在这里插入图片描述

  2. 对比模式和目标函数
    在这里插入图片描述
    观察四:相同尺度的对比一般效果更好。不同粒度的下游任务使用不同的对比模式。
    实验发现,local-local在节点分类任务中效果最好,global-global在图级任务中效果最好。一种可能的解释是在global-local模式中,图中所有的节点表示可能恰好是每个图嵌入的正样本即在这种模式下,会把所有node-graph对拉入一个嵌入空间中,造成次优结果。
    在这里插入图片描述
    观察五:在所有基于负样本的目标函数中,InfoNCE的效果最好。
    观察六:Bootstrapping Latent and Barlow Twins losses可以获得与对应基于负样本的方法相同的效果且不需要显示的负采样,不会增加计算负担。

  3. 负采样策略
    在这里插入图片描述
    观察七:现存的基于计算嵌入相似性的负采样策略对GCL效果的提升影响不大。
    在这里插入图片描述
    我们发现,目前的负采样技术一般是通过计算样本嵌入的内积来计算样本之间相似性的。在无监督情况下,目标函数会把不同的表示分开而不考虑真实的语义关系。更糟糕的是,大多是GCN会倾向于为邻居节点生成相似的表示并不会考虑语义信息,这样会加重负采样选择的偏差。一些可能是正样本的样本被选为负样本会阻碍训练效果。

结论

本文从数据增强,对比模型,对比目标函数和负采样策略四个角度分析了现有的GCL算法,我们的实验发现对今后的算法设计起到指导作用。但是GCL依旧存在很多问题等待解决。
1)影响因素的局限。本文只从四个角度分析了影响GCL效果的因素,但是对于模型相关的因素如是否在InfoNCE目标函数中加入映射头以及在GCL中应该用什么图编码器有还没有分析到。
2)下游任务的局限。本文主要从节点和图级别的分类任务,图级别的回归任务上做了处理。大量下游任务如连接预测,社区检测都尚未考虑
3)缺乏理论分析。本文只是从实验角度分析了结果,缺乏理论解释。

未来方向
1)自动增强。我们知道拓扑结构增强对于GCL是至关重要的,但是现存工作还是要手动设计增强策略,这样可能会导致次优化。目前,图结构学习上的工作可以学习最优的图结构,可以用于自动学习合适的增强函数
2)理解前置任务和下游任务之间的表现差异。我们的工作分析了最终任务和对比目标函数的关系,但是前置任务和下游任务之间的效果差异并未分析
3)基于结构感知的负采样。在视觉领域,相似的视觉特征一般语义类别也相似,但是在图结构中很难通过嵌入相似性进行衡量。以前的图嵌入工作在结构角度设计了一些方法,但是如何整合丰富的结构信息为GCL建模更好的负分布尚未探索。

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

An Empirical Study of Graph Contrastive Learning 的相关文章

  • 什么是好的、免费的 PHP 图表套件?

    我要做的只是基本的折线图 任何人分享的经验将不胜感激 不是真正的 PHP 但我发现 amchart 非常容易实现 而且看起来很棒 http www amcharts com http www amcharts com 还可以查看 Googl
  • 使用 d3 在两个节点之间绘制多条边

    我一直在关注 Mike Bostock 的代码这个例子 http bl ocks org 1153292学习如何在 d3 中绘制有向图 并且想知道如何构建代码 以便可以在图中的两个节点之间添加多个边 例如 如果上例中的数据集定义为 var
  • 带回溯的 Dijkstra 算法?

    In a 相关主题 https stackoverflow com questions 28333756 finding most efficient path between two nodes in an interval graph
  • Kamada 和 Kawai 图形布局算法? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人尝试过 Kamada Kawai 的 88 算法来绘制一般无向图吗 如果是这样 并且您知道其中的任
  • 向图节点添加标签

    我使用 visnetwork 库制作了下图 library tidyverse library igraph set seed 123 n 15 data data frame tibble d paste 1 n relations da
  • 图表贡献者为空

    我在 github 上有几个项目 但其中一些项目的贡献者图是空的 即使我的 gitconfig 设置了名称和电子邮件 https github com jlengrand batchWaterMarking graphs contribut
  • Bellman-Ford 算法检测什么?负重还是负循环?

    如果给定一个图 现在我们要从源头计算最短路径 现在 如果一条边具有负权重 但在到达目的地时有边到后边返回到该边 我的意思是如果没有循环 那么我们就没有负循环 但是here http en wikipedia org wiki Bellman
  • 图中的后边

    I m having a hard time understanding Tarjan s algorithm for articulation points I m currently following this tutorial he
  • 代表 Git 存储库的数学结构是什么

    我正在学习 Git 如果我能描述一下代表 Git 存储库的数学结构 那就太好了 例如 它是一个有向无环图 它的节点代表提交 它的节点有代表分支等的标签 每个节点最多一个标签 没有标签使用两次 我知道这个描述不正确 我只是想解释我正在寻找的内
  • 使用 PHP 创建图表并导出为 PDF

    我正在寻找有关使用 PHP 创建图表的建议 我还希望能够将这些图表导出到 PDF 文档 我目前正在使用谷歌图表 但我不喜欢将我的所有信息发送到谷歌的想法 我更喜欢自己的托管解决方案 我见过很多 Flash 解决方案 但我不知道有什么方法可以
  • 在鼠标光标位置添加 cytoscape 节点

    我想在画布上的单击事件上的鼠标箭头位置添加一个 cytoscape 节点 我怎样才能做到这一点 我的方法 效果不太好 我可以通过单击创建一个节点 但无法确保创建的节点的位置位于我单击的位置 使用这样的东西 cy click function
  • 数据聚合和缓存:如何按时间间隔快速绘制大型时间序列数据集的图表

    我有一个巨大的时间序列数据集 我想绘制图表 时间序列可以追溯到 5 年前 从后端的角度来看 以各种分辨率 间隔 显示这些数据的常用方法是什么 本质上我想绘制这样的数据图表 https bitcoinwisdom com markets bi
  • 使用 Rgraphviz 中的 pos 参数来固定节点位置

    基于这个问题当弧与另一弧重叠时自动弯曲 https stackoverflow com questions 45721802 automatically curving an arc when it is overlapping with
  • iOS 上有像 JUNG 这样的可视化框架吗?

    有没有类似的可视化框架JUNG http jung sourceforge net applet index html对于iOS 我想实现类似的东西this http prefuse org gallery graphview iOS 上最
  • 使用 Haskell 绘制图表

    是否可以使用 Haskell 绘制一个简单的图表 你们中的任何人都可以告诉我该怎么做吗 该图应至少包含 3 个点 Haskell 图表 https github com timbod7 haskell chart似乎不错 The wiki
  • 如何将图数据结构持久化到关系数据库中?

    我考虑过创建一个顶点表和一个边表 但是在内存中构建图和遍历子图是否需要大量查找 我想避免过多的数据库读取 还有其他方法可以保存图表吗 旁注 我听说过 Neo4j 但我的问题实际上是如何在概念上表示标准数据库中的图形 不过 我对一些 NoSQ
  • 如何在 R 中的多图形环境中画一条线?

    举一个非常简单的例子 mfrow c 1 3 每个图都是不同的直方图 我将如何画一条水平线 类似于abline h 10 所经过的all3位数 也就是说 甚至是它们之间的边距 显然 我可以为每个图形添加一条 abline 但这不是我想要的
  • 绘图:仅保留最相关的数据

    为了节省带宽并且不用自己生成图片 图表 我计划使用 Google 的图表 API http code google com apis chart http code google com apis chart 它的工作原理是简单地发出一个
  • Flot 0.8.2 折线图 - 颜色错误

    我正在使用 Flot 折线图并设置它们的颜色 我发现了一个奇怪的错误 在前 3 种颜色之后 绘图对所有其他线条使用最后一种颜色 这不是正确的行为 更有趣的是图例显示了正确的颜色 这是一个已知的错误 var dataSet label d1
  • 如何使用 Julia 查找矩阵中的连通分量

    假设我有以下矩阵 此处用 Julia 语言定义 mat 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 将一组值为 1 的相邻元素视为一个 分量 如何识别该矩阵有 2 个分量以及每个分量由哪些顶点组成 对于矩

随机推荐

  • MVC4 网站发布(整理 + 部分转载 + 部分问题收集和解决方案)

    网站发布步骤 这部分是转载文章 在此标明出处 xff0c 以前有文章是转的没标明的请谅解 xff0c 因为有些已经无法找到出处 xff0c 或者与其它原因 如有冒犯请联系本人 xff0c 或删除 xff0c 或标明出处 因为好的文章 xff
  • 2022-适用于 Windows 10 Version 1809 的 02 累积更新,适合基于 x64 的系统 (KB5010351) - 错误 0x800f0982

    2022 适用于 Windows 10 Version 1809 的 02 累积更新 xff0c 适合基于 x64 的系统 KB5010351 错误 0x800f0982 系统是win10 企业版 LTSC版本 可能安装的是精简版导致的 运
  • sqlsever中text字段类型是否会影响查询性能

    先上结论 会影响查询性能 我在库里找了一张表T Sys Log 然后做2个副本 备份表 SELECT INTO T Sys Log back FROM T Sys Log SELECT INTO T Sys Log back2 FROM T
  • 【无标题】

    起因 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 然后分析各