论文标题:Contrastive Multi-View Representation Learning on Graphs
论文链接:https://arxiv.org/abs/2006.05582
论文来源:ICML 2020
之前的相关博客:
MINE:随机变量互信息的估计方法
Deep InfoMax:基于互信息最大化的表示学习
Deep Graph Infomax:互信息最大化的无监督图对比学习
InfoGraph:基于互信息最大化的无监督和半监督图表示学习
一、概述
基于互信息最大化的图对比学习模型近来在图表示学习任务上取得了SOTA的效果,比如Deep Graph Infomax以及InfoGraph,这些方法的特点是需要一个特定的encoder,并且需要最大化图表示与节点表示之间的互信息。而本文的方法从另一个角度出发,最大化图的不同视图之间的互信息,并且不需要使用特定类型的encoder。
本文通过实验得出以下几个结论:
①增加视图的数量超过两个并不会提高模型的性能,而在对比一阶邻域以及图的diffusion视图时能够取得最好的性能;
②相较于对比图与图或者图的多尺度表示,对比不同视图之间的节点和图的表示时能够取得更好的效果;
③简单的图readout方式能够比一些较复杂的方式(比如DiffPool)更能取得较好的效果;
④应用正则化(不包括early stopping)或标准化层会对性能产生负面影响。
二、方法
- 框架
本文的方法依靠对比一个视图的节点表示与另一个视图的图表示来学习图的节点与图表示,是一种依靠正负样本对的对比学习方法。下图展示了本文方法的框架:
框架下图展示了直推式配置下的过程(多图数据集类似),由上图可见本文提出的方法主要包括以下几个组件:
①数据增强模块,这个模块将一个图转换成这个图的不同的视图,我们只将这种增强应用在图的结构上,也就是说不会改变图节点的原始特征,这个模块之后接着进行下采样,具体就是对于图的两个视图采样相同的节点(类似于视觉领域内的裁剪操作);
②两个专用的GNN,也就是图的encoder,两个视图单独使用各自的encoder,后面接着是一个共享的MLP层,用来学习节点表示;
③图的池化层,也就是readout函数,后面也是接着一个共享的MLP层,用来学习图表示;
④一个discriminator,用来区分正负样本对,正负样本对来自于视图的节点表示与图表示之间的两两组合。
- 数据增强
本文考虑的图数据增强获取新视图的方法主要分为两种:
①特征空间增强:在节点的原始特征上进行操作,比如mask或者添加高斯噪声等等;
②结构空间增强:对图的结构进行操作,比如增删连接,下采样或者使用最短距离或者扩散矩阵生成全局视图等等。
第一种增强的方法有时会遇到问题,这是由于一些图数据集并没有节点的特征,另外实验发现对节点特征mask或者添加噪声的方法会对模型的性能产生负面的影响。因此,本文选择的数据增强方式是生成一个全局视图,然后再进行下采样。实验结果证明最有效的数据增强方式是将邻接矩阵转换成扩散矩阵(diffusion matrix),将这两个矩阵看做同一个图的两个视图。这样的做法有效的原因可能是邻接矩阵和扩散矩阵分别提供了图结构的局部和全局视图,最大化从这两个视图中学习到的表示的一致性能够使得表示编码丰富的局部和全局信息。
计算扩散矩阵的公式如下:
这里是广义转移矩阵,是加权系数,它决定了全局和局部信息的比例,另外需要满足:
①;
②的特征值,这样可以保证收敛性。
本文实验测试了两种广义图扩散的实例,分别是Personalized PageRank (PPR)和heat kernel。给定图的邻接矩阵以及对角度矩阵,两种实例方法采用相同的转移矩阵,同时分别采用和作为加权系数。这里的代表随机游走里的转移概率,代表扩散时间。两种方法根据上面式子得到的的闭式解如下:
对于下采样的方法,我们从一个视图采样节点和它们之间的边,从另一个视图采样同样的相应的节点以及边。
- Encoder
本文的方法并不限制使用的encoder。在本文的实验中两个视图均选择采用GCN,也就是,具体的对于两个视图,使用GCN层学习两组节点表示和
其中,,代表第个节点的度,代表初始节点特征,是网络的参数,是参数化ReLU(PReLU)激活函数。然后将GCN学习到的表示再通过一个共享的全连接层来最终得到两组分别对应于两个视图的节点表示的集合。
接下来使用readout函数来获得图的表示,注意这里的readout的输入并不是,而是GCN层学习到的节点表示,也就是输入之前的节点表示。采用的readout方法类似于jumping knowledge network(JK-Net),具体的过程是先将每层GCN的节点表示加起来,然后再拼接送入一个单层全连接层:
这里是GCN的层数,是全连接层的参数,是PReLU激活函数。在实验中这种readout方式被证明比一些比较复杂的readout函数(比如DiffPool)效果要好。
Readout得到的两个视图的图表示还要通过一个共享的全连接层来获得最终的视图的图表示。
在进行推断时,将两个视图的节点表示与图表示相加从而聚合起来作为图的节点表示与图表示:
然后就可以使用这些表示用于下游任务。
- 训练
对比学习的训练过程沿用Deep InfoMax的训练方式,具体就是对比一个视图的节点表示与另一个视图的图表示,这种对比的方式比对比不同视图之间的图表示或者多尺度表示取得的效果都要好。具体的目标为:
这里代表数据集中图的个数或者直推式配置下的下采样图的个数,代表图的节点个数,代表图的节点在视图的表示,代表视图的图表示。如果对互信息估计的方法不熟悉,可以查看文章前面列出的几个链接。
Discriminator采用简单的点积操作,其输入为一个视图的某节点表示与另一个视图的图表示:
MI估计器实验测试了四种不同的方式,其中JSD估计最为有效。
用来进行对比学习的正样本对是当前图的一个视图的节点表示与当前图的另一个视图的图表示,负样本对是当前图的一个视图的节点表示与其他图的另一个视图的图表示。下图展示了本文方法的算法:
算法三、实验
- 数据集
下表展示了使用的数据集统计情况:
数据集- 实验结果
下面的表展示了各类实验的结果:
实验 实验 实验- 消融实验
另外本文进行了一系列消融实验来探索不同的互信息估计器、对比方式以及数据增强方式的影响:
消融实验
网友评论