论文标题:GraphMAE: Self-Supervised Masked Graph Autoencoders
论文链接:https://arxiv.org/abs/2205.10803
论文来源:KDD 2022
代码链接:https://github.com/THUDM/GraphMAE
一、概述
自监督学习(Self-supervised learning, SSL)通常分为生成式学习和对比学习。目前图领域的自监督学习以对比学习的方法为主,尤其是在图分类和节点分类任务上。对比学习的方法建立在复杂的训练策略上,并且依赖于高质量的数据增强。一些以重构输入图为目标的生成式学习方法虽然具备简单的形式,但是近来的一些尝试仍然落后于对比学习方法,尤其在图与节点分类任务上更是如此。本文认为目前的一些图自编码器方法(Graph Autoencoder, GAE)面临以下四个问题,虽然一些问题解决了其中的一两个,但是没有一个方法将这个四个问题作为一个整体来对待:
①结构信息被过分强调了,大多数GAE方法以连接重构(link reconstruction)来作为目标,因此之前的GAE方法在连接预测和节点聚类任务上很擅长,但是在图和节点分类任务上性能一般;
②没有进行破坏(corruption)的特征重构可能是不够健壮的(robust),对于GAE方法,很多利用图的原生特征,这有产生平凡解的风险;
③MSE损失可能是敏感的和不稳定的,各种特征向量标准化以及维度灾难会对MSE损失造成不良影响,因此可能会导致训练过程的崩溃;
④decoder的表达能力不足,大多数GAE方法使用MLP作为其decoder,在语言中的目标很多是包含丰富信息的one-hot向量,而在图数据上大多是信息量较少的特征向量,因此简单的MLP可能是不能胜任的。
GraphMAE致力于解决上面的各个问题,主要包括以下关键的部分:
①Masked feature reconstruction,GraphMAE不同于大多数方法的结构重构,而采用应用mask的特征重构,实验表明,在适当的损失设计下,mask特征重构可以大大有利于GAE;
②Scaled cosine error,GraphMAE没有采用MSE损失,而是使用cosine error,当特征向量的数量级不同时是有益的,在此基础上GraphMAE又设计了scaled cosine error来解决重构时难易样本的不平衡问题;
③Re-mask decoding,GraphMAE采用了一种re-mask decoding策略,也就是re-mask其被mask节点的encoder输出embedding,然后再输入给decoder;
④另外,GraphMAE采用更具表达能力的GNN作为其decoder。
下图对比了不同的GAE方法,以及列举了上述各个不同设计对模型性能的影响:
二、方法
- 问题描述
简要来说,自编码器通常包含encoder、code(隐状态)和decoder。Encoder将输入数据映射成code,而decoder在重构损失的指导下来重构输入数据。对于图自编码器可以用以下的方式来定义。
使用来表示一个图,是节点集合,是节点数量,是邻接矩阵,是节点特征矩阵。另外,是图encoder,是图decoder,表示从encoder得到的code,GAE的目标也就是重构:
即是重构的图,可以是重构的特征或者结构或者两者都有。
- 框架
下图展示了本文提出的GraphMAE的大体框架:
对于和,可以是任意类型的GNN,比如GCN、GAT或者GIN。不同的任务可能更加适应不同的encoder架构,例如GAT更加适合节点分类任务,而GIN更加适合图级任务。
- GraphMAE的关键设计
GraphMAE的设计主要回答以下四个问题:
①Q1:在GAE中重构什么?
②Q2:如何训练健壮的GAE以避免平凡解?
③Q3:如何安排GAE的decoder?
④Q4:使用什么样的损失函数来进行重构?
- Q1:使用特征重构作为目标
给定一个图,GAE可以以重构结构或者特征来作为目标。以往的GAE关注连接预测和图聚类任务,因此选择重构,也有些方法同时重构和,不过在节点和图分类任务上效果并不理想。
- Q2:mask特征重构
当code的维度比特征维度高时,自编码器容易学习到一个恒等函数(也就是平凡解)。相对来说,在CV领域这个问题并不常见,这是因为图像的维度相对较高,而在图领域,节点特征维度通常较小。现有的一些GAE方法很多忽略了这个问题。
去噪自编码器是一种对输入数据进行破坏的方法,是一种消除平凡解的解决方案。事实上,采用mask作为破坏方式的masked autoencoder方法在CV和NLP领域早有广泛应用,受此启发,GraphMAE采用masked autoencoder作为大体的框架。
形式化地来讲,我们采样一个节点子集,并且使用一个mask token [MASK]来mask其特征,这是一个可学习的向量。因此,对于masked特征矩阵中的节点特征,可以定义为:
GraphMAE的目标是在给定和的条件下来重构中节点的特征向量。GraphMAE使用均匀分布来随机抽取mask的节点,并且采用一个比较大的mask比率(比如50%),这样可以有效减少图中的冗余。
另外,使用[MASK]会造成训练和推断过程的不一致,为了缓解这个现象,BERT的方法是不要总是将被mask的词替换成[MASK],而是采用一个小的概率(比如15%或者更小)来保留原来的特征不改变或者替换成另外一个随机token。本文实验发现保留不变的策略会伤害模型的性能,而随机替换的策略能够帮助模型学习到更加高质量的表示。
- Q3:采用GNN作为decoder以及re-mask策略
Decoder的选择应该取决于数据的语义等级,举例来说,在语言数据上,由于目标很多为one-hot向量,具备丰富的语义,通常一个简单的MLP作为decoder就是足够的。但是在视觉领域就需要一个更高级的decoder(比如Transformer)来重构具备低语义的像素块。在图中,decoder重构信息相对较少的多维节点特征。GraphMAE采用一个单层GNN作为decoder,GNN能够借由一系列节点而非仅仅节点本身来重构这个节点的输入特征。
为了更进一步地帮助encoder学习到压缩的表示,本文提出了一种re-mask策略来在解码过程之前处理。具体的做法是对之前mask的节点在中的embedding使用[DMASK]这个token再一次进行mask,这也是一个可学习的向量。中re-mask的code可以表示为:
实验表明GAT encoder更加适合节点分类任务,而GINencoder更加适合图分类任务。需要注意的是,由于decoder只在训练时使用,因此decoder的架构与encoder相互独立,可以采用任意类型的GNN。
- Q4:采用scaled cosine error作为损失函数
不同领域内特征重构的标准是不同的。在NLP和CV领域内,在NLP和CV中,事实上的准则是利用交叉熵损失预测由tokenizer导出的离散的token索引。一个例外是CV中的MAE会使用MSE直接预测被mask的图像块的像素。然而事实上,像素通常被标准化在0-255之间,这类似于tokenizer。但是在图数据领域,尚不能定义一个通用的tokenizer。
GraphMAE直接重构每个mask节点的特征,这是具有挑战性的,因此这些特征是多维且连续的。现有GAE方法大多采用MSE作为损失函数,但是实验表明MSE损失能够被最小化到接近0,这或许可以解释为什么大多数方法不采用重构特征的方式。本文发现MSE有敏感性和低选择性的问题。敏感性意味着MSE对特征的标准化和维度是敏感的。某些特征维度上的极值也会导致其上的MSE过拟合。低选择性表示MSE不足以使得GraphMAE更关注学习起来难易程度不同的样本中较难学习的部分。
为了解决MSE的敏感性问题,我们采用cosine error,能够摆脱特征标准化和维度的影响。Cosine error中的L2标准化将向量映射到一个单位超球上,大大提升了学习到的表示的质量。为了应对其低选择性的问题,我们进一步地将cosine error改进成scaled cosine error(SCE),具体为引入一个超参数。对于高自信度的样本(简单样本),其对应的cosine error通常小于1并且能够很快地减小到0。形式化地来讲,给定原来的特征以及重构的输出,SCE定义为:
这可以看做一个为样本自适应加权的过程,每个样本的权重随重构误差的变化而调整。
- 推断过程
对于下游任务来说,在推断过程中,不需要对输入数据进行mask。从encoder得到的embedding可以用在多种任务上,比如节点分类和图分类任务。对于图分类任务,采用一个readout函数来获得图的表示,也就是一个非参数化的图池化函数比如MaxPooling、MeanPooling等。
三、实验
- 节点分类
实验结果如下:
- 图分类
实验结果如下:
- 迁移学习
实验结果如下:
- 消融实验
关键模块的影响:
encoder架构的影响:
超参数的影响: