ICLR 2020
Weihua Hu, Bowen Liu, Joseph Gomes, Marinka Zitnik, Percy Liang, Vijay Pande, Jure Leskovec
Stanford University, The University of Iowa, Harvard University
关键词:GNN pre-training, node-level and graph level pre-training tasks
code and data
本文是针对图数据做的预训练,作者从两个维度考虑,将预训练任务划分为四种。
本文使用了三个预训练任务,分别为Attribute masking, Context prediction, supervised attribute prediction。
1. Attribute masking (node-level self-supervised learning)
将图中15%的节点属性或者边属性mask掉,利用GNN学习节点的embedding,最后接上一个线性模型去预测被mask掉的属性值。
2. Context prediction (node-level)
利用subgraph去预测周围的图结构,目标是预训练一个GNN模型,这个模型可以使得出现在类似结构中的节点embedding相近。
对于每个节点,有两种表示,一种是基于k-hop邻居节点的表示,一种是context graph embedding,图示如下:
其中,中心节点的K-hop邻居是指距离该中心节点的最短路径小于等于K的节点,即上图中蓝色虚线圈内的节点。K-hop neighborhood embedding是指中心节点基于k阶邻居的向量表示,也就是利用GNN(main GNN)迭代k次,学习得到的表示。中心节点的context graph是指该中心节点 r 1 r_1 r1-hop 到 r 2 r_2 r2-hop 之间的部分,也就是上图中小虚线红圈和大虚线红圈中间的部分。这个部分与节点的K-hop邻居节点相交的节点称为context anchor nodes。通过另一个GNN(context GNN)网络学习得到节点embedding,然后将context anchor node embedding平均,得到context graph embedding。
得到了两种表示之后,通过负采样的方式联合学习main GNN和context GNN。
这里的 h v ( K ) T h_v^{(K)T} hv(K)T 是指中心节点v通过GNN迭代K次得到的节点表示, c v ′ G ′ c_{v'}^{G'} cv′G′是context graph embedding。正样本是中心节点v和v’是同一个节点,负样本是随机选择一个与v不同的节点。每个正样本对应一个负样本。
学习得到的main GNN作为预训练后的模型。
3. Supervised attribute prediction (graph-level)
两个node-level prediction的预训练任务都是self-supervised的,这里的graph-level预训练任务是supervised的。其中的监督信号是图的label,也就是通过图的embedding预测其label。
4. graph-level structure prediction
对应的预训练任务是structure similarity prediciton。相关的工作包括:modeling the graph edit distance (Bai et al., 2019) or predicting graph structure similarity (Navarin et al., 2018)。但是由于graph distance的groundtruth却反,并且也没有graph相似度的数值,较难进行预训练,所以这篇文章就没有考虑这方面的预训练任务。
在实验验证方面,主要解答了三个问题:
AAAI 2020
Ke Sun, Zhouchen Lin, Zhanxing Zhu
Peking University, Samsung Research China
key words:multi-stage training, self-supervised learning, few labeled data prediction
[Li, Han, and Wu 2018]中解释了GCN网络分类效果好的原理,提出GCN的本质是Laplacian smoothing。平滑操作使得在同一个类别中的节点信息趋同,然后易于分类。但是当GCN网络深度增加,也有可能导致over-smoothing,导致不同类别的节点无法准确识别。
在Karate Club dataset(空手道俱乐部成员关系数据)上利用GCN学习节点表示。这个数据集包含34个节点,78条边,两个类别。
【故事:这个空手道俱乐部包含34名成员,管理员 John A 和教官 Mr. Hi 之间的一次冲突导致这个俱乐部一分为二,一半的成员围绕着 Mr. Hi 成立了一个新俱乐部,另一半成员要么找到了新的教练,要么放弃了空手道。因此,在对应的社交网络中,节点也被划分为两个组,一组属于Mr. Hi (Instructor) ,另一组属于John A (Administrator),其中节点0代表Mr. Hi,节点33代表John A。】
下图展示了层数不同的GCN对节点进行表示的结果,只有一成的GCN还无法将节点较好地划分,两层为最佳层数,之后,随着层数增加,节点又变得不可分。
这样的内在特性使得GCN网络不会太深,导致标签无法有效地传播。因此,GCN在few labeled data上表现不佳。
除此之外,self-supervised learning可以使用数据集本身的信息来构造伪标签,因此,可以对few labeled data进行增强。
基于以上两点,作者想要利用self-supervised learning对数据进行增强,并且设计一种基于GCN的高效训练算法。
作者提出Multi-Stage Self-Supervised Learning (M3S)算法,算法流程图如下:
M3S可以分为两个部分:
M3S训练的完整过程:
KDD 2020
Ziniu Hu, Yuxiao Dong, Kuansan Wang, Kai-Wei Chang, Yizhou Sun
University of California, Microsoft Research
Key words: self-supervised attributed graph generation (attribute generation, edge generation)
本文主要是为了解决GNN在few labeled data上的学习问题。
受到自然语言处理中通过预训练模型,然后迁移到少标签样本数据上的启发,这里要做一个GNN的预训练。
预训练的任务是self-supervised attributed graph generation,包括两个具体的任务,分别是attribute generation和edge generation。
arxiv 2020
Ziniu Hu, Changjun Fan, Ting Chen, Kai-Wei Chang, Yizhou Sun
University of California
keywords: self-supervised pre-training tasks, 3 levels of graph structures, graph corpus generation
训练GNN往往需要大量有标签的图数据,但是在很多场景中,有标签的数据极少,并且较难进行人工标注。受到自然语言处理中预训练方法的启发,作者提出了一个预训练的框架,希望能够获取一般性的图结构信息,这种信息可以比较容易地迁移到下游任务上去。
图的结构信息是包含多个层次的,比如:节点层次,边层次,子图层次。而目前的GNN预训练模型往往只针对其中一种结构层次进行预训练,导致泛化效果不佳。为了获取多层次的图结构信息,作者提出了三个预训练任务。
从预训练语料、预训练框架、预训练任务三个方面进行介绍。
所以,可以通过控制参数,生成多样的图结构,如下图:
最终,为了预训练GNN,生成了900个图作为训练集,124个图作为验证集,节点的个数在100-2000范围内。
在预训练阶段,输入是给定的图,提取图中节点的四方面特征(degree, Core-Number, Collective Influence, Clustering Coefficient),经过归一化后进行拼接,然后输入到一个非线性转换器E,得到节点的初始向量表示。将这个向量表示作为GNN的输入,输出基于GNN计算得来的向量表示。最后根据三个自监督的预训练任务更新模型的参数。
在进行下游任务时,将GNN模型中的部分层固定,其他层根据下游任务进行微调。
2)Centrality Score Ranking (Node-level)
根据GNN生成的节点表示,预测两个节点的centrality相对排序,与真实的节点centrality比较,最小化损失。
3)Clustering Preserving (Subgraph-level)
给定一个节点,通过GNN生成的节点表示,预测该节点属于的cluster,与真实的节点所属cluster进行比较,最小化损失。
创新点:
不足:
arxiv 2020
Jiawei Zhang, Haopeng Zhang, Congying Xia, Li Sun
Florida State University, University of Illinois at Chicago, Beijing University
Keywords: linkless subgraph batching, Graph-BERT architecture
本文关注GNN学习节点表示中存在的三个问题:
前两个问题是说当GNN的层数增加,图表示性能反而会下降。这是因为GNN本身的特性(在之前的[Li, Han, and Wu 2018]论文中有原理的解释)。第三个问题是说节点之间的内在互连性质,导致并行性不佳,并且对于无法放入内存的大规模图,处理起来就更加麻烦。
基于这三个问题,作者做了两点改进:
上图中主要包含五个部分,分别为:
linkless subgraph batching
这个部分是想要从原本的完整图中采样子图,然后输入模型。采样子图的方式可以参考[Zhang et al. 2018]中的方法。但是这里采用的是top-k intimacy sampling方法。
这个方法的具体做法是:首先根据Pagerank算法计算出节点之间的亲密度S(i, j)。对于每一个节点,根据亲密度排序,选出与该节点top-k亲密度的节点,作为该节点的上下文节点,组成子图,这个子图是由k+1个节点组成,这些节点直接没有边连接。
node input vector embedding
这里采用了四种方式的embedding,得到embedding之后进行加和操作,然后作为Graph-Transformer的初始输入。
graph transformer based encoder
这个部分就是将上面学到的初始表示输入到模型中,得到每一层的表示。
representation fusion
functional component
预训练任务有两个:
下游任务有两个:
实验设置上,通过以下几个方面进行了效果的验证:
一点思考
KDD 2020
Jiezhong Qiu, Qibin Chen, Yuxiao Dong, Jing Zhang, Hongxia Yang, Ming Ding
Tsinghua University, Microsoft Research, Renming University, DAMO Academy
Key words: graph-based contrastive pre-training, GNN, subgraph ( positive / negative instance ) construction
目前的大多数图表示模型在特定领域的特定数据集上进行学习,无法迁移到其他数据集。而受到自然语言处理和图像处理领域的预训练模型的启发,本文想要做的就是graph-based pre-training。
而做graph-based pre-training的一个重要问题是:how to design the pre-training tasks such that the universal strcutural patterns in and across networks can be captured and further transferred?
**本文借用contrastive learning 的思想设计graph pre-training任务,叫做subgraph instance discrimination。**而要做对比学习,就要确定三个问题,分别是:1. 怎样确定subgraph instance,也就是确定样本的格式;2. 怎样定义相近的和不相近的instance pair,也就是设计正负样本;3. 怎样对子图进行编码?也就是encoder的架构。
这三个问题的解答是:1. 给定一个中心节点,其 r-ego network中的节点构成的图成为该中心节点导出的子图。这里的r-ego类似r-hop的概念,但计算的是其他节点与中心节点的最短路径;2. 定义相同的 r-ego network 中采样出来的子图是相近的,相反不同 r-ego network中采样出来的子图是不相近的;3. 使用GIN做为graph encoder。
如上图所示,最左边的两个图结构分别是红色中心节点和蓝色中心节点导出的 2-ego network,中间的4个 graph都是根据 2-ego network采样出来的子图。前两个是在第一个 2-ego network中采样出来的,后两个是从第二个 2-ego network中采样出来的。其中第一个子图作为query graph,通过graph encoder学习每个子图的表示。然后根据InfoNCE loss最小化 graph q和 k0的距离,最大化graph q 和 k1以及 k2的距离。
考虑到计算资源的限制,这里使用到End-to-End和MoCO机制,来构建和维护词典。【这里不太理解其含义】
预训练的语料是Facebook, IMDB, DBLP graphs。
一点思考
ICLR 2019
Petar Velickovic, William Fedus, William L. Hamilton, Pietro Lio, Yoshua Bengio, R Devon Hjelm
University of Cambridge, Google Brain, McGill University
Keywords: Mutual information maximization, context-instance(node representation - entire graph summarization representation)
code
本文是第一个将mutual information maximization应用到图结构数据上,无监督地学习节点表示的工作,简称为DGI。主要是通过最大化local-global(node - entire graph)的互信息。
要利用互信息最大化,需要定义正负样本。这里的样本是节点表示和整个图表示的pair,节点表示是通过encoder学习得到的,整个图的表示是通过readout将图中所有节点的表示综合成一个表示。
正样本
( h i , s h_i, s hi,s) pair
其中 h i h_i hi表示节点 v i v_i vi的表示, s s s表示该节点所在的整个图的表示。
利用一个判别器: D : R F × R F → R D: R^F \times R^F \rightarrow R D:RF×RF→R计算节点表示和图表示的匹配程度。比如 D ( h i , s ) D(h_i, s) D(hi,s) represents the probability scores assigned to this patch-summary pair.
负样本
( h i ′ , s h_i', s hi′,s) pair
其中 h i ′ h_i' hi′表示非正样本的图中的节点表示, s s s仍然为正样本中的整个图的表示。
对于输入包含多个图的场景,可以选择其他图中的节点表示作为 h i ′ h_i' hi′。但本文设定的场景时输入仅包含一个图(也就是 (X, A) as input),所以这里用到了corruption function C : R N ∗ F × R N ∗ N → R M ∗ F × R M ∗ M C: R^{N * F} \times R^{N * N} \rightarrow R^{M * F} \times R^{M * M} C:RN∗F×RN∗N→RM∗F×RM∗M,将原图转换为另一个图,然后选择其中的节点表示作为 h i ′ h_i' hi′。
损失函数
利用交叉熵的思想列出损失函数