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

本文是对《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(全调整)。针对一个未训练的数据集,对特定下游任务如节点分类,一般要训练一个分类器。这两种方式的差别就在于,前者将编码器的参数固定,只调整分类器,而后者将编码器和分类器都进行调整。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值