当前位置: 首页 > 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中常用的非线性优化方法一个图由若干个顶点以及这些顶点连接的边构成,顶点通常是待优化的变量例如…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

抽象类和接口(全)

一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改&#xff0c;实现简单cat命令 输出信息到显示器&#xff0c;你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

Visual Studio Code 扩展

Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后&#xff0c;命令 changeCase.commands 可预览转换效果 EmmyLua…...