文献阅读(24)KDD2020-GCC:Graph Contrastive Coding for Graph Neural Network Pre-Training

2023-10-27

本文是对《Graph Contrastive Coding for Graph Neural Network Pre-Training》一文的浅显翻译与理解,如有侵权即刻删除。

朋友们,我们在github创建了一个图学习笔记库,总结了相关文章的论文、代码和我个人的中文笔记,能够帮助大家更加便捷地找到对应论文,欢迎star~

Chinese-Reading-Notes-of-Graph-Learning

更多相关文章,请移步:文献阅读总结:网络表示学习/图学习

Title

《Graph Contrastive Coding for Graph Neural Network Pre-Training》

——KDD2020

Author: 裘捷中

总结

文章认为目前的网络表示学习工作都是针对特性任务,且要在不同的数据集上分别训练模型,无法实现不同数据集上的迁移工作。因此,文章提出了GCC算法,利用图对比学习来进行图神经网络的预训练,用这种方法学习得到的对图和节点的编码器,可以直接应用到未训练数据集上,只需要进行简单微调。

1 预训练

1.1 损失函数

文章希望预训练得到的嵌入函数具有结构相似性(结构相似的节点嵌入更加接近)和可迁移性(可以用于未训练的数据集上)两种特点。基于这种思想,算法的损失函数构建如下:

在这里插入图片描述
损失函数的目的在于最大化分子数值,即属于同一结构的节点嵌入在空间上更接近,因而得到的值也就更大,其示意图如下:

在这里插入图片描述
以该图为例,graph_q为源节点,则分子计算的就是graph_q和graph_0的相似性,它们是属于同一结构的。而在分母中,除了计算属于同一结构的graph_0,属于不同结构的graph_1和graph_2也要和graph_q进行计算并将最终结果加和。

1.2 问题定义

基于这种思想,文章提出了三个问题:

(1)如何定义图中的子图结构?

给出一个节点,规定最大长度,就可以得到以该节点为中心的EGO网络。在该网路中进行随机游走,就能够得到关于该节点的子图结构。

(2)如何定义子图结构的相似性?

文章认为属于同一EGO网络的即为相似的子图结构,不同网络则不相似。此处应当注意的是,在进行随机游走后,要对游走序列中的节点重新编号,这样是为了避免在比较子图结构时,仅仅简单地比较了节点的原始编号来判断相似性。

(3)如何定义编码器?

能够将子图结构变为低维向量,并且能够对相似的结构生成相似嵌入,不相似结构生成不相似嵌入,就是合适的编码器。

1.3 位置编码

在计算节点嵌入时,文章引入了位置编码如下:

在这里插入图片描述
具体来说,给出子图的邻接矩阵和度数矩阵,就可以进行拉普拉斯矩阵分解,得到的U中的特征值就可以作为位置编码,利用sin和cos函数可以计算得到不同位置对应的数值,具体有(非文章公式):

在这里插入图片描述

1.4 批采样设置

编码器训练过程中,针对损失函数,采样数量(即字典大小)越多,越能够提升编码准确率。因而,文章引入E2E和MOCO两种方法来进行批采样。E2E即端对端,其每次采样都会更新目标节点和字典,但字典大小受到采样数量的限制。MOCO使用动量更新方法进行采样,即每次采样时保留字典中的节点,每次只对目标节点进行更新,并使用动量方法将历史目标节点加入到字典中,具体有:

在这里插入图片描述
这样,字典就能平滑连续地进行变化。

2 微调

在训练好编码器后,对于未训练数据集,可以直接使用该编码器,只需进行微调。微调方式有两种,即Freezing mode(固定模式)和Full fine-tuning(全调整)。针对一个未训练的数据集,对特定下游任务如节点分类,一般要训练一个分类器。这两种方式的差别就在于,前者将编码器的参数固定,只调整分类器,而后者将编码器和分类器都进行调整。

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

文献阅读(24)KDD2020-GCC:Graph Contrastive Coding for Graph Neural Network Pre-Training 的相关文章

随机推荐

  • 用JAVA判断一段话是否为回文

    实验要求 使用递归的方式判断一段字符串是否为回文 回文是一种正着读和反着读都一样的句子如 我是谁是我 设计思想 先要求用户输入一句话 然后从这句话中选择第一个字符与最后一个字符输入函数dg 函数dg会首先判断这句话是否为空 若为空测直接输出
  • shell中的数学运算

    shell中的数学运算 1 运算符及其说明 2 数学计算命令 3 双小括号 用法 4 let命令 5 expr命令 6 bc命令 7 方法 1 运算符及其说明 如果要执行算术运算 数学计算 就离不开各种运算符号 和其他编程语言类似 Shel
  • 24点自动出题,可打印,A4排版

    为了方便练习24点计算题 编写了这个网页 点击生成题目之后 可以方便的打印出来 题目主要分两类 一类是10以及10以下的计算 比较常见 另外一类是包含11 12 13的计算题 因为用的少 所以难度相对提高一些 比如1 5 11 11 计算方
  • QTableView实现同时删除被选中的多行记录

    一个很简单的功能 就是在QTableView中 有一些不连续的选区 实现将被选中的行删除 首先是获得选区 可以用 QItemSelectionModel 和 QModelIndexList 实现 QItemSelectionModel se
  • 自适应算法

    自适应过程是一个不断逼近目标的过程 它所遵循的途径以数学模型表示 称为自适应算法 通常采用基于梯度的算法 其中最小均方误差算法 即LMS算法 尤为常用 自适应算法可以用硬件 处理电路 或软件 程序控制 两种办法实现 前者依据算法的数学模型设
  • 生产排程系统_甘特图控件XGantt——生产计划排程软件首选的APS控件

    作为最早拥有APS高级计划调度模块的甘特图控件XGantt 该模块推出几十年来 我们一直致力于为生产计划排程软件提供最优的APS解决方案 如今 甘特图 XGantt 在全球已经成为生产计划排程软件首选的APS控件 不仅被全球知名的大型ERP
  • echarts图例过多显示问题

    问题描述 当项目中使用echarts时 会遇到图例过多的问题 面板大小有限 本身饼图或者折线图等已占据面板大部分空间 图例过多时会使图形和图例产生压盖的情况 非常不美观 原因分析 翻阅echarts文档时 我们发现有api可以供我们使用 当
  • 不管人工智能发展如何,开发者都有必要了解 Linux 内核

    Linux 内核在计算机世界的地位有目共睹 称它为计算机世界的基石也不为过 而且它还是全球最大的开源项目 几乎最知名的科技公司都参与其中 包括谷歌 Red Hat SUSE Intel Facebook 甲骨文和华为等 当然还包括 Linu
  • CE6.0 RIL 移植(一)之多路复用MUX

    由于CE中MS提供了相应的代码 所以也是照搬过来了 当时自己摸索花了一些时间 特写下这个经历 以备后用 在移植MS的代码的过程中 最好是将相应的文档拷贝到自己的BSP中来 以防在修改的过程中出现错误了无法还原 MUX 移植 1 gt 拷贝C
  • package com.jiushipos; import android.content.Intent; import android.os.Bundle; import android.os.H

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题 有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个表格 设定内容居中 居左 居右 Sma
  • TCHAR和CHAR类型的互转

    Win32中CStdString 是需要TCHAR类型的值才可以赋值的 而很多文件读取时FILE的fopen函数之类的需要的是CHAR 我们需要把它们互转 这里我在网上找到了一个比较方便的方法 没有定义UNICODE 所以它里面的字符串就是
  • ECNA 2014 部分题解

    目录 D Generalized Roman Numerals 思维dp E Inspectors 拆点跑最小费用最大流 H Time Warp 模拟 A Cure for the Common Code KMP D Generalized
  • python中set index_Python set_index和reset_index详解

    再来介绍一下set index函数的使用 set index就是将列转换为索引 其参数如下 set index keys drop True append False inplace False verify integrity False
  • CentOS 7.9 如何安装Docker

    文章目录 版本选择 1 CentOS安装Docker 1 1 卸载 可选 1 2 安装docker 1 3 启动docker 1 4 配置镜像加速 2 CentOS7安装DockerCompose 2 1 下载 2 2 修改文件权限 2 3
  • linux apache + mysql +php no-yum

    学习PHP脚本编程语言之前 必须先搭建并熟悉开发环境 开发环境有很多种 例如LAMP WAMP MAMP等 这里我介绍一下LAMP环境的搭建 即Linux Apache MySQL PHP环境 一 首先安装操作系统 操作系统 centos6
  • 【推荐】好用的 XPath 插件

    好用的 XPath 插件 XPath Helper 插件介绍 Try XPath 背景 插件介绍 个人感觉 结尾 本菜鸡在写爬虫的时候 经常使用 XPath 提取数据 XPath Helper 以前一直用的 chrome 进行 xpath
  • 通过Dockerfile文件制作新镜像时一大堆报错

    换个好一点的网络 就没问题了
  • java 中的静态变量,静态代码块,动态代码块,构造方法执行顺序的深入探究

    原文 https blog csdn net qq 41063182 article details 81149798 类加载 第一次调用这个类的时候jvm虚拟机会通过类加载器在一个叫做方法区的逻辑内存中将所要用到的类的信息存放在里边 其中
  • python3中编码转化

    1 编码解码概念 首先要明白一些概念 调用函数的时候就不会出错了 编码 把数据变为01比特 网络通信中的编码也是这个意思 解码 从01比特恢复为有意义的表示形式 在python3中 字符串是str类型 而bytes类型表示的是一个字节串 从
  • 文献阅读(24)KDD2020-GCC:Graph Contrastive Coding for Graph Neural Network Pre-Training

    本文是对 Graph Contrastive Coding for Graph Neural Network Pre Training 一文的浅显翻译与理解 如有侵权即刻删除 朋友们 我们在github创建了一个图学习笔记库 总结了相关文章