当前位置: 首页 > news >正文

【2023/图对比/增强】MA-GCL: Model Augmentation Tricks for Graph Contrastive Learning

如果觉得我的分享有一定帮助,欢迎关注我的微信公众号 “码农的科研笔记”,了解更多我的算法和代码学习总结记录。或者点击链接扫码关注【2023/图对比/增强】MA-GCL: Model Augmentation Tricks for Graph Contrastive Learning

【2023/图对比/增强】MA-GCL: Model Augmentation Tricks for Graph Contrastive Learning

原文:https://arxiv.org/pdf/2212.07035.pdf

源码:https://paperswithcode.com/paper/ma-gcl-model-augmentation-tricks-for-graph#code

1 动机

图对比学习中,图增强可以获得图的不同视图,这在很多任务中被广泛运用,特别是在推荐系统、视觉任务。然而,在图中生成对比视图是一个非常有挑战的工作,因为我们没有太多的先验知识来指导我们如何增强图的同时保证labels的不变。典型的图增强方式,例如边的移除可以有效对抗噪声的影响,但是也存在不能生成足够的对比视图等问题。因此,本文提出了一种新的范式(MA-GCL),聚焦操作encoders的实现而不是其输入。具体来说,作者展示了三种简单的模型增强的技巧,分别是非对称,随机和洗牌策略。

2 方法

对比学习(Contrastive Learning)是一种无监督的表示学习方法,对比学习中InfoNCE是典型的损失函数,其通过增大正样本对之间的相似度和减少负样本对之间的相似度获得更好表征。本文以典型 GNN 作为 encoder 从而阐述对比学习中三种不同的模型增强技巧。

2.1【形式化GNN】

GNNs will stack multiple propagation layers and transformation layers, and then apply them to the raw features X. Here we denote the operators of propagation layer and the transformation layer as g and h.

本文以典型 GNN 作为 view encoder,但是作者使用了一种新的方式来形式化GNN。GNN可以形式化为传播和转换两个过程。在图神经网络(GNN)中,

  • “propagation layer”(传播层)是用来传递节点信息的层,其输入是上一层节点的特征(也称为"embedding"),输出是每个节点的聚合邻居信息的向量。传播层的目的是将每个节点的邻居信息合并到节点特征中,以便更好地描述节点的属性和关系。
  • 而"transformation layer"(转换层)则是对节点特征进行非线性变换的层。这些变换可以帮助学习到更丰富和复杂的节点特征,以提高图神经网络的性能。转换层通常由多个全连接层或卷积层组成,并使用激活函数(如ReLU)来增加网络的非线性能力。

当我们处理图数据时,通常将每个节点看作图的一个元素。例如,在社交网络中,每个节点可以表示一个人,每个边可以表示人与人之间的关系(如朋友关系、家庭关系等)。对于每个节点,我们都会有一些与之相关的特征,例如该人的年龄、性别、职业等等。我们可以将这些特征存储在一个特征向量中,例如X=[年龄,性别,职业]。在图神经网络中,我们的目标是通过这些特征来学习节点之间的关系,以便更好地了解整个图的结构和特征。

  • 在这个例子中,我们可以将传播层看作是将每个节点的邻居信息合并到节点特征中的层。例如,我们可以定义传播函数为取邻居节点特征的均值,将其与节点自身特征连接起来,作为新的节点表示。这个新的节点表示将更好地描述节点的特征和邻居之间的关系。

  • 对于转换层,我们可以将其看作是对节点特征进行非线性变换的层。例如,我们可以定义一个全连接层来将节点特征投影到一个高维空间中,并应用一个ReLU激活函数,以增加网络的非线性能力。这个变换可以帮助网络学习到更复杂的节点特征,以更好地描述节点之间的关系。

通过将多个传播层和转换层堆叠在一起,并将它们应用于原始特征X,我们可以构建一个强大的图神经网络,以更好地分析和理解图数据。

则利用 h 算子和 g 算子形式化了GCN和SGC两种常用的GNN encoders。
GCN(X)=hL∘g∘hL−1∘g∘⋯∘h1∘g(X)SGC(X)=h∘g[L](X)\begin{array}{l} G C N(\boldsymbol{X})=h_{L} \circ g \circ h_{L-1} \circ g \circ \cdots \circ h_{1} \circ g(\boldsymbol{X}) \\ S G C(\boldsymbol{X})=h \circ g^{[L]}(\boldsymbol{X}) \end{array} GCN(X)=hLghL1gh1g(X)SGC(X)=hg[L](X)
GCN(Graph Convolutional Network)和SGC(Simplifying Graph Convolutional Networks)都是图神经网络中的经典模型,它们的主要区别在于它们的聚合函数不同。

  • GCN使用的聚合函数是基于邻居节点特征的加权平均,即将每个邻居节点的特征乘以一个可学习的权重,然后将所有乘积相加并除以邻居节点的数量。这个聚合函数能够考虑到节点的邻居特征,并将其合并到节点的特征表示中。

  • 而SGC则采用一种更简单的聚合函数,即直接对节点的邻居特征取平均。与GCN不同的是,SGC中的聚合函数没有可学习的权重参数,因此模型更加简单和易于实现。虽然SGC的表现通常不如GCN,但在某些场景下,SGC的性能可能会更好。

2.2【非对称策略】

非对称策略图

由以上韦恩图所示,红色的圈为与下游任务相关的信息,蓝色和绿色的圈则是对比学习生成的两个视图所包含的信息。当用对称的编码器时,在InfoNCE loss的作用下两个视图的互信息(区域C+D会被最大化),但是和任务相关的信息只有区域D,C也会变大是我们不想要的,而当我们采用非对称的视图架构时,如b所示区域C也就是和任务无关的噪声会被减少。

本文提出了一种不对称策略(asymmetric strategy),使用具有共享参数但不同传播层数的编码器可以减轻高频噪声。文章认为对比学习(contrastive learning)可以提取不同视角之间共享的信息,从而过滤出仅出现在单个视角的与任务无关的噪声。对称的 GCL 方法中的两个视角过于接近,无法生成足够多样的增强,并且两个视角的编码器具有完全相同的神经架构和绑定参数,这会加强视角之间的接近程度。为解决这个问题,文章提出了使用具有共享参数但不同传播层数的不对称视角编码器。这样一来,GCL 中的噪声可以减轻。

这个策略的核心是使用具有共享参数但不同传播层数的编码器,以减轻高频噪声的影响。假设我们有两个视图 V1V_1V1V2V_2V2,并且它们的编码器共享参数,但传播层数不同。例如,V1V_1V1 的编码器有两层传播,而 V2V_2V2 的编码器有三层传播。这将使得两个视图在抽取任务相关信息的同时,保持一定的距离,从而避免了噪声的影响。简单来说,这个策略就是让编码器的不同视图在深度上有所差异,从而使得它们抽取的信息更加丰富和多样化,同时可以去除任务不相关的噪声。

2.3【随机策略】

这个方法是针对图神经网络中的编码器模块提出的。具体来说,该方法是在训练过程中随机改变编码器中传播操作符的数量,以增加训练样本的多样性。在文章中,作者以SGC(Simplifying Graph Convolutional Networks)编码器为例,该编码器采用了一种简单的聚合函数对节点的邻居特征进行平均汇聚。编码器的输入是节点的特征矩阵XXX,经过多个传播操作符和转换操作符的堆叠,输出节点的特征表示ZZZ

作者提出,在每个epoch中随机改变编码器中传播操作符的数量,而不是采用固定的数量。具体来说,他们在每个epoch中随机采样一个数量LLL,用于构造 LLL 层的传播操作符。这样,就可以得到多个具有不同传播深度的编码器,从而扩大训练样本的多样性。通过这种方法,作者认为可以增加训练样本的多样性,从而提高模型的性能。实验结果也表明,这种方法可以在多个图神经网络模型中得到显著的性能提升。

假设我们有一个包含10个节点的图,并且我们想要使用SGC编码器来对这个图进行节点分类任务。传统的SGC编码器会使用固定的传播操作符数量(比如说L=2),然后通过多次迭代来训练模型。然而,使用固定的L值可能会导致过拟合,因为模型只能看到有限数量的计算树,而且这些计算树都是相对较浅的。现在,我们可以尝试使用本文提出的方法来改进模型的训练。具体来说,我们可以在每个epoch中随机改变传播操作符的数量,比如说在第一个epoch中使用L=2,而在第二个epoch中使用L=3,第三个epoch中使用L=1。这样做的好处是可以增加训练样本的多样性,因为每个传播操作符都对应着一个不同深度的计算树。

2.4【洗牌策略】

洗牌策略则是在训练过程中,随机打乱传播算子和转换算子的排列。通过混洗传播和转换操作的顺序,不会改变输入图形的语义,但会扰动编码表示,从而提供更安全的增强。洗牌策略是指在每次训练时对数据增广过程中的算子进行随机排列,以得到不同的数据增广视图,从而提高模型的鲁棒性和泛化能力。

下面以一个简单的图像分类任务为例子,假设有一个包含 100 张猫和 100 张狗的图像数据集。传统的数据增广方法可能会对图像进行翻转、旋转、裁剪等操作,但是这些操作可能会影响图像的语义信息,比如翻转可能会将狗的左右区分反过来,从而影响模型的分类能力。而采用洗牌策略,则可以在不改变图像的语义信息的前提下,通过对算子进行随机排列来得到不同的数据增广视图。例如,可以将每次训练时使用的卷积核和池化算子的顺序随机排列,从而得到不同的图像特征提取方式,提高模型的鲁棒性和泛化能力。

3 总结

作者从模型层面对view 进行增强。

相关文章:

【2023/图对比/增强】MA-GCL: Model Augmentation Tricks for Graph Contrastive Learning

如果觉得我的分享有一定帮助,欢迎关注我的微信公众号 “码农的科研笔记”,了解更多我的算法和代码学习总结记录。或者点击链接扫码关注【2023/图对比/增强】MA-GCL: Model Augmentation Tricks for Graph Contrastive Learning 【2023/图对比/增强】MA-…...

TensorBoard自定义修改单条及多条曲线颜色

在深度学习可视化训练过程中,曲线颜色是随机的,想要将好看的曲线颜色图放到论文中,就得自定义曲线颜色,具体方法见下文。 目录一、下载svg文件二、修改svg文件三、修改后曲线颜色对比四、总结一、下载svg文件 在TensorBoard界面中…...

时间和空间复杂度

文章目录 前言 一、算法效率 1.如何评判算法效率? 2.算法的复杂度 二、时间复杂度 1.时间复杂度的定义 2. 大O的渐进表示法 三、空间复杂度 总结 前言 本文章讲解时间与空间复杂度 提示:以下是本篇文章正文内容,下面案例可供参考 一、算法…...

关于Linux下调试

关于Linux下调试 无论是内核(操作系统)还是应用程序,都存在需要调试的情况。 所谓工欲善其事,必先利其器。一个好的称手的工具,对于快速分析问题、定位问题,提高效率,非常有帮助。 除了工具&a…...

理解TP、FP、TN、FN

概念定义 按照常用的术语,将两个类分别称为正类 (positive) 和 负类 (negative)。使用数学表示: 1表示正类 , -1 表示负类。 正类通常是少数类,即样本较少的类(例如有缺陷的零件) 负类通常是多数类&#x…...

软考中级有用吗

当然有用了! 软考“简历”:计算机软件资格考试在全国范围内已经实施了二十多年,近十年来,考试规模持续增长,截止目前,累计报考人数约有五百万人。该考试由于其权威性和严肃性,得到了社会各界及用人单位的广泛认同&…...

计算机网络之IP协议(详解

网络层主管地址管理与路由选择。而IP协议就是网络层中一个非常重要的协议。它的作用就是在复杂的网络环境中确定一个合适的路径。IP协议头格式4位版本号(version) 指定IP协议的版本,目前只有两个版本:IP v4和IP v6.对于IP v4来说,这个值就是4…...

Kubernetes之探针probe

deployment只保证pod的状态为running。如果pod状态是running,但是里面丢失了文件,导致用户不能访问数据,则deployment是不管用的,此时就需要probe来检测pod是否正常工作。 probe是定义在容器里的,可以理解为容器里加的…...

高性能低功耗4口高速USB2.0 HUB NS1.1S 兼容FE1.1

NS1.1S是一款高性能、低功耗4口高速 USB2.0 HUB 控制器,上行端口兼容高速 480MHz和全速12MHz两种模式,4个下行端口兼容高速480MHz、全速12MHz、低速1.5MHz三种模式。 NS1.1S采用状态机单事务处理架构,而非单片机架构,多个事务缓冲…...

通过VS Code轻松连接树莓派

如果您正在使用树莓派作为开发平台,那么通过远程连接VS Code到树莓派是非常方便的一种方法。这样,您可以在Windows或macOS等计算机上开发和测试代码,而不必在树莓派上进行。 以下是通过VS Code远程连接到树莓派的步骤: 1.安装Re…...

图纸等敏感文件数据外发时 如何确保效率和安全性?

很多企业随着业务的发展,需要频繁的与外部供应商、合作伙伴之间进行数据的交换和使用。尤其是制造型企业,可能每天都要与几十、上百家供应商及合作伙伴进行产品数据交换。目前,大多数企业已经在内部实施了PDM/PLM系统,实现了对组织…...

2023年CDGA考试-第4章-数据架构(含答案)

2023年CDGA考试-第4章-数据架构(含答案) 单选题 1.请从下列选项中选择不属于数据架构师职责的选项 A.确保数据架构和企业战略及业务架构一致 B.提供数据和组件的标准业务词汇 C.设计企业数据模型 D.整合企业数据架构蓝图 答案 C 2.请从下列选项中选择不属于企业数据架构…...

理解随机游走

随机游走 基本思想 从一个或一系列顶点开始遍历一张图。在任意一个顶点,遍历者将以概率1-a游走到这个顶点的邻居顶点,以概率a随机跳跃到图中的任何一个顶点,称a为跳转发生概率,每次游走后得出一个概率分布,该概率分布…...

mqtt协议1- 简介和报文格式

文章目录1.mqtt协议1: 简介和报文格式1.1.MQTT概念1.2.数据2.控制报文格式2.1.MQTT数据包结构2.2.固定头2.2.1.控制报文类型2.2.2.标志FLag2.2.3.剩余长度2.3.可变头2.4.有效载荷Payload消息体安全QoS(Quality of Service levels)ref:1.mqtt协议1: 简介和报文格式 Message Que…...

前端用动画快速实现骨架屏效果

一、动画的语法 1.定义动画 keyframes 自定义动画名称 {// 开始from {transform: scale(1);}// 结束to {transform: scale(1.5);} }// 或者还可以使用百分比定义keyframes 动画名称 {// 开始0% {transform: scale(1);}// 结束100% {transform: scale(1.5);} } 2.调用 anima…...

Python入门(未完待续。。。)

认识python 解释型(写完直接运行)、面向对象的高级编程语言;开源免费、支持交互式、可跨平台移植的脚本语言;优点:开源、易于维护、可移植、简单优雅、功能强大、可扩展、可移植;缺点:解释型→运…...

注解配置SpringMVC

使用配置类和注解代替web.xml和Spring和SpringMVC配置文件的功能。创建初始化类,代替web.xmlSpring3.2引入了一个便利的WebApplicationInitializer基础实现,名为AbstractAnnotationConfigDispatcherServletInitializer,当我们的类扩展了Abstr…...

多项新规重磅发布,微信视频号近期需要关注这几点

随着功能的完善和内容生态的丰富,视频号逐渐放慢产品更新频率,将重点放到商家准入标准、创作者扶持计划上来,本期我们将更侧重解读平台新规,帮助大家了解行业动向,把握最新趋势。01 视频号小店结算规则修订 取消48小时…...

Java调用第三方http接口的方式

1. 概述 在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适。很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信、天气等)。 在Java项目中调用第三方接…...

【跟我一起读《视觉惯性SLAM理论与源码解析》】第五章第六章 对极几何图优化库的使用

极平面,极点,极线的概念对极几何,对极约束的概念,通过叉积以及点积的性质推导单应矩阵以及基础矩阵光束平差法BA是LSAM中常用的非线性优化方法一个图由若干个顶点以及这些顶点连接的边构成,顶点通常是待优化的变量例如…...

从没想过开源 API 工具的 Mock 功能,这么好用

很多时候,接口尚未开发完成,在系统交互双方定义好接口之后,我们可以提前进行开发和测试,并不依赖上游系统的开发实现。 通过使用Mock模拟数据接口,我们即可在只开发了UI的情况下,无须服务端的开发就可以进行…...

智慧教室--智能管控系统

智慧教室系统是一款基于AIOT数字化平台的智能教育解决方案,该系统实现了全面数字化、自动化管理和智能化控制,可大大提高教学效率和质量,为学生带来更加优质的教育体验。智能管控是智慧教室系统的核心功能之一。通过物联网技术,将…...

React的useLayoutEffect和useEffect执行时机有什么不同

我们先看下 React 官方文档对这两个 hook 的介绍,建立个整体认识 useEffect(create, deps): 该 Hook 接收一个包含命令式、且可能有副作用代码的函数。在函数组件主体内(这里指在 React 渲染阶段)改变 DOM、添加订阅、设置定时器、记录日志以…...

C语言中#include<...>和#include“...“的区别

C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程…...

ubuntu本地访问nas

需求 本地磁盘空间太小,本地网络里有个nas,希望将nas作为数据盘挂载到本地使用。 方法1 基于sftp访问nas 首先nas设置时要打开sftp访问功能。 然后用ubuntu桌面访问服务器的功能登录sftp,类似如下指令 sftp://user192.168.0.100 ubuntu下…...

第一章:网络参考模型

一、专业术语 ISO---(International Organization for Standardization)国际标准化组织 OSI---(Open System Interconnection Reference Model)开放式系统互联通信参考模型 IEEE---(Institute of Electrical and Electronics Engi…...

extends in typescript

困惑 初学 ts 时,extends 让我很困惑:有时它代表 扩大 ,有时代表 缩小 。举几个例子说明: 例1: class Animal {} class Dog extends Animal {}这是 js 本身就有的 class 继承语法,很熟悉了。 Dog 是 An…...

如何找回回收站删除的文件

回收站作为删除文件后的临时存放点,只要我们是右键删除或者按delete删除的文件都会存放到这里,所以我们每次清理电脑后,都会清空回收站,这样可以让电脑保持流畅运行。但删除这个操作是很容易出错,很容易把某些重要的文…...

Git系列——Git部署及应用

下面从如下几个方面介绍下其部署及应用:Git服务器搭建Git客户端搭建Git常用命令Git服务器搭建Linux服务器搭建(Centos7.5):一、安装配置SSH(参考XXX)二、检查OS是否自带Git1、git-version //查询版本2、rpm -qa git //查询git详细信息3、yum -y remove x…...

Java多线程(二)--线程相关内容

1.创建线程的几种方式继承 Thread 类;public class MyThread extends Thread { Override public void run() {System.out.println(Thread.currentThread().getName() " run()方法正在执行..."); }实现 Runnable 接口;public class MyRunnable…...