Preamble
GCL主要任务:学习一个编码器,可以编码出结构和结点特征信息,得到一个低维的表达
早期大部分GNN模型都是有监督的训练
自监督学习主要分成两种:生成式(用已有信息去预测自己的其他信息) and 对比学习(判别两个样本的相似度,用对比的方式进行学习)
不管是cv还是图,对比学习的主要模式,本质上对一些样本点先进行增广的方法,再用编码器对增广后的数据点进行编码,对同一个数据点,我们希望它增广后产生的数据点所得到的表达之间的相似度要尽量的大
主要的三个部分:
- 数据增广
- 编码器
- 对比学习的模式和目标函数
优化目标:希望正样本与anchor之间的相似度 远远大于 负样本与anchor之间的相似度
常用实现:使用N路的softmax函数
下面讲一些比较经典的gcl方法
对比学习的模式:把什么表达做对比,只把结点之间的表达做对比还是把结点和图之间的表达做对比
数据增广:不同的增广方式,删边、加边、删特征维度ppr、子图采样
图对比学习概述
一般意义上,图对比学习是一种针对图数据的自监督学习算法。对给定的大量无标注图数据,图对比学习算法旨在训练出一个图编码器,目前一般指图神经网络(Graph Neural Network, GNN)。由这个 GNN 编码得到的图表示向量,可以很好地保留图数据的特性,并进一步在无监督、半监督、迁移学习以及鲁棒性测试等实验设置下进行测试,并应用于社交网络、蛋白质交互网络、分子结构、学术引用网络等多个场景中。
Graph Contrastive Learning with Augmentations. NeurIPS 2020.
常见的图对比学习算法由下述步骤组成:
- 随机采样一批(batch)图;
- 对每一个图进行两次随机的数据增强(如删除若干条边(edge)),增强后两个新图称为视图(View);
- 使用待训练的 GNN 对 View 进行编码,得到节点表示向量(node representation)和图表示向量(graph representations);
- 根据上述表示向量计算 InfoNCE[1][2] 损失,其中由同一个 graph 增强出来的 view 的表示相互靠近,由不同的 graph 增强得到的 view 的表示相互远离;
在这个流程下,对 graph 应用对比学习,与对其它类型数据(如图像、文本)应用的区别在于:
- 数据增强。CV 领域一般通过随机对图片进行裁剪、旋转等操作产生增强后的数据,那如何对 graph 进行数据增强?
- 对比层次。GNN 编码后我们可以同时得到节点级别 / 图级别的两个层次的表示,那么对比的目标应该设计在哪个层次?
参考
【AI Drive】WWW 2021:图对比学习研究进展
图对比学习(GNN+CL)顶会论文看 研究趋势