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

NIPS 22: GGD Rethinking and Scaling Up Graph Contrastive Learning

Chat

文章是莫纳什 潘世瑞组的,(已经于今年暑期从莫纳什前往昆士兰),ARGA作者,这个组关于图对比学习的文章挺多,但是开源文章较少

本文rank:

读起来很吸引人,motivation也很自然,个人认为是自从2019DGI出来之后,在DGI上认真考虑并修改的工作,揭示了DGI成功的原因。而并非采用不同增强的方法,或者借鉴cv方向对比学习的方法进行修改。
亮点: O1复杂度,1epoch就可以训练,取消判别器D训练损失提高可扩展,给出理论证明s(图级表征)的上下界
文章不足: OGB-arxiv可以full-batch,products,papers100M 仍然采用了graphsage进行采样,只是一定程度上增强了可扩展性,相较于aaai22 那篇sugrl在这方面还是不足

知识盲区

关于复杂度的知识,本文有提及: InfoNce损失 O(ND) JSD 损失是 O(D) BGRL(BYOL在graph上的扩展)和GBT(barlow twins在graph上的扩展) 取消了 负样本,但是相似性计算 仍然会让复杂度变成 O(D)

本文方法 GGD (graph group discrimination)

1. 出发点

本文从 不恰当的激活函数 sigmoid出发,探究DGI。 DGI通过最大化节点和图级表征s之间的互信息,从而成为对比学习在graph上的paradigm。
在这里插入图片描述
DGI存在的问题:DGI并不能像作者想象的那样来最大化互信息,DGI获得s的方法是 求平均,并会采用sigmoid激活。但是DGI的GNN(GCN)权重初始化采用 Xavier初始化,这样会使得 s 这个图级向量 都会接近于相同的数值 εI,ε是一个常数,I是一个全1向量
在这里插入图片描述
这个现象是实验得出的,作者提出定理1来进一步论证:
在这里插入图片描述

通过修改ε,作者从0变为1,做了以下实验,这些实验,表明这个s其实并没有多大作用 trivial。那么DGI的假设:通过对比h和s似乎并不是真正成功的原因

在这里插入图片描述

重点修改:

从上面来看 这个s很小作用,并且最终常常趋近于epsilonI,因此作者采用I(全1,epsilon=1)来直接代替这个s。这样做的好处: 不需要鉴别器了!!! 鉴别器D是一个基于bilinear的打分,需要对于每个节点和s进行打分,这个在样本对之间的乘法 通常会在前向和反向传播 消耗很多,
在这里插入图片描述
因此 DGI的损失成为:
在这里插入图片描述
其中,sum(zi)是因为zi (1D) 和s相乘,而s=1(D1),因此,表达的含义就是 zi的元素之和。 作者对于这个聚合也进行了变分,采用mean max linear来学习这个zi和s的结合方式 linear就说输出1D变成 11
在这里插入图片描述
sum和linear比较好

和DGI的对比,显著减小内存,Pubmed居然才需要 1629MB!!! 时间上也更快

基于上面的sum公式1,本文提出简化版的 BCE的DGI
在这里插入图片描述
是一种二元交叉熵的形式,当节点属于原来的图,yi=1,节点属于被 破坏的图,yi=0, 这样的形式 就是 将两个图的所有节点进行 对比,判断h是原图还是被破坏的图,节点节点之间的对比:称为 group discrimination
在这里插入图片描述
在这里插入图片描述

MVGRL的实验,进一步说明 group discrimination

在这里插入图片描述
MVGRL通过diffusion 来augmented graph,从而多个视图之间进行对比,作者修改了他们的损失,形成bce MVGRL,也是ok的, ,,, 因为 这是 DGI的变分,也是采用了h和s之前最大化互信息

本文的model

在这里插入图片描述

1. 通过边和节点drop来增强

注意 这里不是来获得多个增强的视图进行对比,而是 每一轮 不同的增强视图 会增加鲁棒性

2. Corrupt

和 DGI一样,成行shuffle X

3.Siamese GNN = GNN encoder+projector

本文采用GCN作为encoder, projector是自定义的多层linear layers。 共享的GNN来输出 原图和 corrupt之后图的节点表征。 在进行第四步之前,所有样本先要采用相同的 聚合方式(sum mean max linear) hi=sum(zi)

4.group discrimination

BCE损失,yi=1,原图。 yi负样本。 采用hi和yi进行bce损失

在这里插入图片描述

tricks

在这里插入图片描述
GNNencoder 输出的H,通过几次 和邻接矩阵相乘 获得增强的H,和原来的H进行之和,从而进行下游任务

discussion

NCE和JSD损失

nce的分子 对于节点i需要zi和ci相乘1次,分母需要zi和整体相乘 整体一共N次,两个向量zi 1d和 ci 1d相乘 需要耗费 O(D)次。因此 InfoNCE整体是 O(ND) 。
JSD对于每个节点不需要 N个负样本进行对比,但是 判别器还是需要 zi和ci相乘 O(D)。
在这里插入图片描述

BRGL和GBT

BRGL 通过 最大化zi和hi余弦相似性(负号),只用关注自身(自己和自己对应的拉)
GBT 基于相关性,GBT的损失就类似于一个 协方差矩阵 ii越大越好,ij越小越好。
但这两个损失还是包括 了 两个向量相乘。和JSD一样是O(D)。
本文是 h和一个常量相乘,就相当于是 把 乘法变成 做加法。
在这里插入图片描述

由于是乘法问题,这里是通过加法,是否两个向量 做减法,能够相似性呢?--------- 引出了 基于margin loss的对比损失 aaai22 和接下来 要写的一篇文章subCon–icdm

实验

在这里插入图片描述
full-batch下,特别 节约内存
在这里插入图片描述
基于采样:graphsage
在这里插入图片描述

在这里插入图片描述

采样的超参数设置

在这里插入图片描述

丢掉D,如何来进行节点对之间的相似性判断,往前追溯,对比学习就是有度量学习的影子,如何判断表征之间的相似性问题 (内积–余弦,采用bilinear–dgi,采用margin—做减法,采用拼接–contact linear输出)

Proof of Theorem1

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

相关文章:

  • 微信小程序登录
  • WebDAV之葫芦儿·派盘+可达漫画
  • maven多个moduled,打包target没有class文件
  • 计算机毕业设计之java+javaweb的美容院管理系统
  • 微服务应用性能分析实战05 故障定位:Java VisualVM,第一款多合一的轻量可视化工具
  • 【优化调度】基于粒子群算法解决经济调度附Matlab代码
  • 第七章、优化算法
  • 关于HashMap中重写equals与hashcode的一下问题
  • 互亿无线语音通知平台常用使用场景及接入指南
  • 01 LaTeX命令环境和源代码结构
  • 浏览一个网站时的整个过程
  • 一条 sql 了解 MYSQL 的架构设计
  • 秋招还没offer,正常吗?
  • 什么是悬空 Docker 镜像?
  • 深度学习05——线性回归模型
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • ES6 ...操作符
  • Java 23种设计模式 之单例模式 7种实现方式
  • JavaScript 奇技淫巧
  • Lsb图片隐写
  • node.js
  • nodejs调试方法
  • OSS Web直传 (文件图片)
  • ReactNative开发常用的三方模块
  • Redash本地开发环境搭建
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Sequelize 中文文档 v4 - Getting started - 入门
  • spring boot下thymeleaf全局静态变量配置
  • Vue实战(四)登录/注册页的实现
  • 笨办法学C 练习34:动态数组
  • 成为一名优秀的Developer的书单
  • 分类模型——Logistics Regression
  • 你真的知道 == 和 equals 的区别吗?
  • 优化 Vue 项目编译文件大小
  • 原生js练习题---第五课
  • Spring第一个helloWorld
  • #单片机(TB6600驱动42步进电机)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (七)c52学习之旅-中断
  • (全注解开发)学习Spring-MVC的第三天
  • (三)docker:Dockerfile构建容器运行jar包
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)JAVA中的堆栈
  • ***原理与防范
  • .form文件_SSM框架文件上传篇
  • .NET 材料检测系统崩溃分析
  • .Net7 环境安装配置
  • .net分布式压力测试工具(Beetle.DT)