数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
二十四、GPT-GNN [2020]
图神经网络
GNN
的突破彻底改变了图数据挖掘的过程,从图的结构特征工程structural feature engineering
到图的表示学习representation learning
。最近的GNN
发展已被证明有利于各种graph application
和网络任务,例如半监督节点分类、推荐系统、知识图谱推断knowledge graph inference
。通常,
GNN
将带有属性的图作为输入,并应用卷积滤波器来逐层生成node-level representation
。通常,对于输入图上的一个任务,GNN
模型以端到端的方式使用监督信息进行训练。即:对于给定图上的任务,需要足够多的标记样本来训练GNN
模型。通常对于这些任务,尤其是大型图,获取足够多的标记数据的代价很高,有时甚至是不可行的。以学术图academic graph
中的作者消歧任务为例,迄今为止,该任务仍然面临着缺少ground-truth
的挑战。在
NLP
中也遇到类似的问题。NLP
的最新进展通过训练大量的未标记数据,并将学到的模型迁移transfer
到带少量标记的下游任务来解决该问题,即预训练pre-training
的思想。如,预训练的BERT
语言模型通过重构输入文本(next sentence predict
和masked language predict
)来学习单词的representation
,因此可以显著提高各种下游任务的性能。此外,计算机视觉也证明了类似的观察结果,即:未标记的数据本身包含丰富的语义知识,捕获数据分布的模型可以迁移到各种下游任务。受到预训练的启发,论文
《GPT-GNN: Generative Pre-Training of Graph Neural Networks》
提出对图神经网络进行预训练从而进行图数据挖掘。预训练的目的是使得GNN
能够捕获输入图的结构属性structural property
和语义属性semantic property
,以便进行微调fine-tuning
就可以迁移到同一个领域domain
内的其它的图任务。为实现该目标,GPT-GNN
提出通过学习重建reconstruct
输入的属性图attributed graph
来对图分布graph distribution
建模。一种图重建方式是直接采用神经图生成
neural graph generation
技术,但是它不适合预训练GNN
:- 首先,大多数神经图生成技术仅关注于生成不带属性的图结构,这无法捕获节点属性和图结构之间的底层模式
underlying pattern
。 - 其次,这些神经图生成技术被设计于处理小图,从而限制了它们在大规模图上进行预训练的潜力。
贡献:在
GPT-GNN
中,作者设计了一种用于GNN
预训练的自监督属性图生成任务self-supervised attributed graph generation task
,通过该任务对图结构和节点属性进行建模。基于该任务,作者提出了用于GNN
的生成式预训练generative pretraining of graph neural network: GPT-GNN
框架 (如下图所示)。然后可以将输入图上的预训练GNN
用作同一类型的图上不同下游任务的GNN
模型的初始化。具体而言,论文的贡献如下:- 首先,作者设计了一个属性图生成任务
attributed graph generation task
来建模节点属性和图结构。作者将图生成目标分解为两个部分:属性生成attribute generation
,边生成edge generation
,它们的联合优化相当于最大化整个属性图的概率似然。通过这种做法,模型可以在生成过程中捕获节点属性和图结构之间的固有依赖性inherent dependency
。 - 其次,作者提出了一个有效的框架
GPT-GNN
来对上述任务进行生成式的预训练generative pre-training
。GPT-GNN
可以同时计算每个节点的属性生成损失和边生成损失,因此只需要为图运行一次GNN
。此外,GPT-GNN
可以通过子图采样处理大型图,并通过自适应embedding queue
来缓解负采样带来的inaccurate loss
。 - 最后,作者在两个大型图上预训练了
GNN
:1.79
亿节点和20
亿边的Open Academic Graph: OAG
、1.13
亿节点的Amazon
推荐数据。大量实验表明:GPT-GNN
预训练框架可以显著地有利于各种下游任务。例如,通过在OAG
上应用预训练模型,节点分类和链接预测任务的性能比没有预训练的state-of-the-art GNN
平均可达9.1%
。此外,作者表明:GPT-GNN
可以在各种setting
下持续提高不同的base GNN
的性能。
- 首先,大多数神经图生成技术仅关注于生成不带属性的图结构,这无法捕获节点属性和图结构之间的底层模式
24.1 基础知识和相关工作
- 预训练的目的是允许模型(通常是神经网络)使用预训练的权重来初始化模型参数,这样模型可以充分利用预训练和下游任务之间的共性
commonality
。最近,预训练在提高计算机视觉和自然语言处理中许多下游application
的性能方面显示出优势。
24.1.1 GNN 的基础知识
GNN
可以视为基于输入图结构的消息传递,它通过聚合局部邻域信息来获得节点的representation
。假设节点
$ v $ 在GNN
第 $ l $ 层的representation
为 $ \mathbf{\vec h}_v^{(l)} $ ,则GNN
的节点representation
更新方程为:其中:
$ \mathcal N_v $ 为节点 $ v $ 的邻域, $ e(u,v) $ 为节点 $ u $ 到节点 $ v $ 的边。GNN
有两个基本的算子:Extract(.)
算子:邻域信息抽取器extractor
。它使用target
节点 $ v $ 的representation
$ \mathbf{\vec h}_v^{(l-1)} $ 以及两个节点之间的边 $ e(u,v) $ 作为query
,并从source
节点 $ u $ 的representation
$ \mathbf{\vec h}_u^{(l-1)} $ 中抽取有用的信息。Agg(.)
算子:邻域信息聚合器aggregator
。它用于聚合target
节点 $ v $ 的邻域信息。通常采用mean, sum, max
等函数作为聚合函数,也可以设计更复杂的聚合函数。
在这个框架下,人们已经提出了各种
GNN
架构:《Semi-Supervised Classification with Graph Convolutional Networks》
提出了图卷积网络graph convolutional network: GCN
,它对图中每个节点的一阶邻域进行均值池化,然后进行线性投影和非线性激活操作。《Inductive Representation Learning on Large Graphs》
提出了GraphSAGE
,将GCN
的聚合操作从均值池化推广到sum
池化、最大池化、以及RNN
。
此外,还有很多将注意力机制集成到
GNN
的方法。通常,基于注意力的模型通过估计每个source
节点的重要性来实现Extract(.)
算子,并在此基础上应用加权聚合。例如:《Graph Attention Networks》
提出了GAT
,它采用加性的注意力机制additive mechanism
来计算注意力。《Heterogeneous Graph Transformer》
提出了heterogeneous graph transformer: HGT
,它利用针对不同关系类型的multi-head attention
来获得type-dependent
注意力。
我们提出的预训练框架
GPT-GNN
可以适用于所有这些GNN
模型(包括GCN, GraphSAGE, GAT, HGT
)。
24.1.2 用于图的预训练
已有一些研究提出利用预训练来学习节点的
representation
,其中主要分为两类:第一类通常称作
graph embedding
,它直接参数化node embedding
向量,并通过保持某些相似性度量来优化embedding
向量,如网络邻近性network proximity
(《Line: Large-scale information network embedding》
)或者随机游走得到的统计数据(metapath2vec, node2vec, 《Network embedding as matrix factorization: Unifying deepwalk, line, pte, and node2vec》
)。但是,这种方式学到的
embedding
无法用于初始化其它模型从而微调其它任务(因为embedding
模型是transductive
的)。相反,我们需要考虑一种迁移学习方式,其目标是预训练一个适用于各种下游任务的通用的GNN
。第二类通过直接在未标注数据上预训练
GNN
。例如:《Variational Graph Auto-Encoders》
提出变分图自编码器来重建图结构。《Inductive Representation Learning on Large Graphs》
提出GraphSAGE
从而使用基于随机游走的相似性度量来优化无监督损失。《Deep Graph Infomax》
引入Graph Infomax
,它最大化从GNN
获得的node representation
和一个池化的graph representation
之间的互信息。
尽管这些方法显示了对纯监督学习
purely-supervised learning
的增强enhancement
,但是这些方法迫使相近的节点具有相似的embedding
,从而忽略了图中丰富的语义和高阶结构higher-order structure
。我们的方法通过提出排列式的生成式目标permutated generative objective
来预训练GNN
,这是一项更难的图任务,因此可以指导模型学到输入图的更复杂的语义和结构信息。另外,还有一些工作尝试预训练
GNN
来抽取graph-level representation
。《InfoGraph:Unsupervised and Semi-supervised Graph-Level Representation Learning via Mutual Information Maximization》
提出了InfoGraph
,它最大化了从GNN
获得的graph-level representation
与子结构representation
之间的互信息。《Strategies for Pre-training Graph Neural Networks》
引入了在node-level
和graph-level
预训练GNN
的不同策略,并表明将它们组合在一起可以提高图分类任务的性能。
我们的工作与他们不同,因为我们的目标是在单个大型图上预训练
GNN
并进行node-level
迁移学习 。
24.1.3 用于计算机视觉和自然语言处理的预训练
预训练已广泛用于计算机视觉和自然语言处理。
在计算机视觉中,早期的预训练技术(
《Decaf: A deep convolutional activation feature for generic visual recognition》
、《Rich feature hierarchies for accurate object detection and semantic segmentation》
、《Context Encoders: Feature Learning by Inpainting》
)大多遵循首先在大型监督数据集(如ImageNet
)上预训练模型,然后在下游任务上微调预训练的模型,或者直接利用预训练的模型抽取样本的representation
作为特征。最近,一些自监督任务(
《A Simple Framework for Contrastive Learning of Visual Representations》
、《Momentum contrast for unsupervised visual representation learning》
、《Representation Learning with Contrastive Predictive Coding》
)也被用于预训练视觉模型。在自然语言处理中,早期的工作一直聚焦于利用文本语料库的共现来学习
word embedding
(《Distributed representations of words and phrases and their compositionality》
、《Glove:Global vectors for word representation》
)。最近,人们在
contextualized word embedding
方面取得了重大进展,如BERT, XLNET, GPT
。以BERT
为例,它通过两个自监督任务来预训练一个文本编码器,以便更好地对word
和context
进行编码。这些预训练方法已被证明可以在广泛的自然语言处理任务中产生state-of-the-art
性能,因此被用作许多NLP
系统的基础组件。
24.2 模型
给定属性图
$ \mathcal G = (\mathcal V, \mathcal E, \mathbf X) $ ,其中 $ \mathcal V = \{v_1,\cdots,v_n\} $ 为节点集合, $ \mathcal E $ 为边集合, $ \mathbf X\in \mathbb R^{n\times d} $ 为节点的特征矩阵, $ d $ 为节点的特征向量维度。 $ \mathbf{\vec x}_v\in \mathbb R^d $ 为 $ \mathbf X $ 第 $ v $ 行,表示节点 $ v $ 的特征向量。GNN
模型在特定下游任务(如节点分类)的监督下学习输出node representation
。有时候在单个图上存在多个任务,并且对于每个任务,大多数GNN
需要提供足够多的标记数据。然而,获得足够多的标记数据通常具有挑战性,特别是对于大型图,这阻碍了GNN
的训练。因此,需要一个预训练的GNN
模型,该模型可以通过很少的标签来进行泛化。从概念上讲,该预训练的模型应该:捕获图背后的固有结构intrinsic structure
和属性模式attribute pattern
,从而使得该图上的各种下有任务受益。GNN
预训练的目标是学到一个通用的GNN
模型 $ f_\theta $ ,它基于单个图 $ \mathcal G $ 来训练并且不使用任何标记数据,从而使得 $ f_\theta $ 是图 $ \mathcal G $ 上各种下游任务的很好的初始化点。一个问题是:如何在图上设计一个无监督学习任务来预训练GNN
模型?
24.2.1 Generative Pre-Training Framework
NLP
和CV
自监督学习的最新进展表明,未标记数据本身包含丰富的语义知识,因此可以捕获数据分布的模型能够迁移到各种下游任务。受此启发,我们提出了GPT-GNN
,它通过重建/生成input graph
的结构和属性来预训练GNN
。形式上,给定属性图
$ \mathcal G $ 以及一个GNN
模型 $ f_\theta $ ,我们通过GNN
模型 $ f_\theta $ 将图的似然likelihood
建模为 $ p(\mathcal G;\theta) $ ,它表示 $ \mathcal G $ 中节点的属性分布和连接分布。GPT-GNN
目标是最大化图的似然来预训练GNN
模型,即:第一个问题是:如何建模图的似然
$ p(\mathcal G;\theta) $ 。大多数现有的图生成方法都遵循自回归的方式auto-regressive manner
来分解概率目标,即:图中的节点按照顺序依次访问,并通过将每个新的节点连接到现有节点来生成边。类似地,我们使用排列向量
permutation vector
$ \vec\pi $ 来确定节点的顺序,其中 $ \pi_i $ 表示编号为 $ i $ 的节点在排列中的位置。因此,图分布 $ p(\mathcal G;\theta) $ 等于似然在所有排列上的期望:其中:
$ \mathbf X^\pi $ 表示重排后的节点属性矩阵。 $ \mathcal E^\pi $ 表示重排后的边集合,其中节点 $ i $ 在排列 $ \vec\pi $ 中的边集合为 $ \mathcal E_i^\pi $ (它仅考虑位于 $ \pi_i $ 位置之前的节点)。
为简单起见,我们假设任何节点顺序
$ \vec\pi $ 都是等概率的,并且在下面内容中省略上标 $ \pi $ 。给定一个排列顺序,我们可以自回归地分解对数似然:
其中:
$ \mathbf X_{\lt i} $ 表示节点 $ i $ 之前生成的所有节点对应的属性。 $ \mathcal E_{\lt i} $ 表示节点 $ i $ 之前生成的所有节点对应的边。 $ i $ 表示排列中的新节点, $ \mathbf{\vec x}_i $ 表示其属性向量, $ \mathcal E_i $ 表示它和现有节点的连接。
因此,这个对数似然给出了属性图的自回归生成过程
autoregressive generative process
。该模型是一个节点一个节点地生成,因此是生成式模型。
本质上,上述公式描述了属性图的自回归生成过程
autoregressive generative process
。现在的问题是如何建模条件概率 $ p_\theta(\mathbf{\vec x}_i, \mathcal E_{i}\mid \mathbf X_{\lt i}, \mathcal E_{\lt i}) $ ?
24.2.2 Factorizing Attributed Graph Generation
一种朴素的想法是假设
$ \mathbf{\vec x}_i $ 和 $ \mathcal E_i $ 是相互独立的,即:这种分解完全忽略了节点的属性和它的边之间的依赖关系。但是,这种依赖关系恰好是属性图的核心特性,也是
GNN
中卷积聚合的基础。因此,这种朴素的分解无法应用于预训练GNN
。为解决该问题,我们为属性图生成过程提出依赖感知
dependency-aware
的因子分解机制。具体而言:- 在预估新节点的属性时,我们采用节点的结构信息。
- 在预估新节点的连接时,我们采用节点的属性信息。
在这个过程中,一部分边已经被观察到,然后属性图生成过程分解为两个耦合的部分:
- 给定观测到的边,生成节点属性。
- 给定观测到的边和生成的节点属性,生成剩余的边。
这样,模型可以捕获到每个节点的属性和图结构之间的依赖关系。
我们定义变量
$ \vec o $ 表示 $ \mathcal E_i $ 中所有观测到的边的索引组成的向量,因此 $ \mathcal E_{i,\vec o} $ 为所有的观测边。 定义 $ \neg \vec o $ 为所有被掩盖mask
的边的索引组成的向量,因此 $ \mathcal E_{i,\neg \vec o} $ 表示所有需要被生成的边。则可以将条件概率重写为似然函数关于所有观测到的边的期望:这种分解设计能够建模节点
$ i $ 的属性 $ \mathbf{\vec x}_i $ 和它关联的边 $ \mathcal E_i $ :第一项
$ p_\theta\left(\mathbf{\vec x}_i\mid \mathcal E_{i,\vec o},\mathbf X_{\lt i}, \mathcal E_{\lt i}\right) $ 用于建模节点 $ i $ 的属性生成过程。基于观测到的边 $ \mathcal E_{i,\vec o} $ ,我们聚合目标节点 $ i $ 之前节点的信息来生成它的属性 $ \mathbf{\vec x}_i $ 。第二项
$ p_\theta\left( \mathcal E_{i,\neg \vec o}\mid \mathcal E_{i,\vec o},\mathbf X_{\le i}, \mathcal E_{\lt i}\right) $ 表示被遮盖的边的生成过程。基于观测到的边 $ \mathcal E_{i,\vec o} $ 以及生成的属性 $ \mathbf{\vec x}_i $ ,我们预测 $ \mathcal E_{i,\neg\vec o} $ 中的每条边是否都存在。注意这里是
$ \mathbf X_{\le i} $ 而第一项是 $ \mathbf X_{\lt i} $ 。
我们以一个学术图为例来阐述上述分解的工作原理。假设我们希望生成一个论文节点,节点属性为论文标题,节点的边为论文及其作者、论文及其发表会议、论文及其引用论文。
- 基于论文和它的某些作者之间观测到的边,我们的生成过程首先生成论文标题。
- 然后基于观测到的边和论文标题再预测剩余的边(“论文--作者”、“论文--发表会议”、“论文--引用论文”)。
通过这种方式,该生成过程可以对论文的属性(论文标题)和结构(观测到的边和剩余边)之间的相互作用进行建模。
能不能先进行边的生成然后再进行节点属性的生成?可以通过实验来说明。
目前为止,我们将属性图的生成过程分解为节点属性生成
node attribute generation
和边生成edge generation
两步。一个新的问题是:如何通过同时优化属性生成和边生成来有效预训练GNN
?
22.2.3 Efficient Attribute and Edge Generation
为提高效率,我们希望通过仅对输入图运行一次
GNN
来计算属性生成损失和边生成损失。另外,我们希望同时进行属性生成和边生成。但是,由于边生成过程需要将节点属性作为输入,这可能会泄露信息给属性生成过程。为避免信息泄露,我们将每个节点同时加入到两个类别:属性生成节点
Attribute Generation Nodes
:对于该集合中的节点,我们使用dummy token
来代替它们的节点属性,从而掩盖节点属性,并学习一个共享的输入向量 $ \mathbf{\vec x}^{\text{init}} $ 来表示这个dummy token
。这等价于在masked language model
中使用[Mask] token
技巧。 $ \mathbf{\vec x}^{\text{init}} $ 的维度和 $ \mathbf{\vec x}_i $ 相同,并且在预训练过程中进行学习(而不是固定的)。边生成节点
Edge Generation Nodes
:对于该集合中的节点,我们保留其属性并将节点属性作为输入。
我们修改输入图,将每个节点分裂为两个节点:一个为属性生成节点,另一个为边生成节点(它们之间不存在边)。
我们将修改后的图输入到
GNN
模型中并得到节点的embedding
,我们分别用 $ \mathbf H^{\text{attr}} $ 和 $ \mathbf H^{\text{edge}} $ 来表示属性生成节点和边生成节点的embedding
。由于属性生成节点的属性被遮盖,因此 $ \mathbf H^{\text{attr}} $ 包含的信息通常比 $ \mathbf H^{\text{edge}} $ 更少。因此,在进行GNN
消息传递时,我们仅使用边生成节点的来向外传递消息。 $ \mathbf H^\text{attr} $ 和 $ \mathbf H^\text{edge} $ 需要通过GNN
模型计算得到(运行一次GNN
前向传播)。有两个细节需要注意:- 根据
$ \vec\pi $ 移除了所有从高编号到低编号的边,这意味着每个节点只能从低编号节点接收消息。这样,它们就不会将信息泄露给自回归生成的目标函数。 - 如何在
GNN
中运行一次而为每个节点生成两个embedding
?论文未给出细节。理论上讲,GNN
的前向传播仅能得到每个节点的单个embedding
。
还有一个问题:如果使用
$ \mathbf H^\text{edge} $ 来传递消息,那么是否可能存在信息泄露?假设节点 $ u $ 和节点 $ v $ 之间相互连接且不与其它节点连接,则在属性生成过程中,我们有:可以看到:节点
$ v $ 的属性信息通过 $ \mathbf{\vec h}_v^{(l-1),\text{edge}} $ 进入了 $ \mathbf{\vec h}_u^{(l),\text{edge}} $ ,并进一步进入了 $ \mathbf{\vec h}_v^{(l+1),\text{attr}} $ ,因此发生了信息泄露。但是,由于每个节点只能从低编号节点接收消息,因此两条边 $ e(u,v) $ 和 $ e(v,u) $ 并不能同时存在,因此这种信息泄露的方式不存在。然后,我们使用这两组节点的
embedding
通过不同的解码器来生成属性和边。属性生成:对于属性生成,我们将解码器记作
$ \text{Dec}^{\text{attr}}(\cdot) $ ,它将 $ \mathbf H^{\text{attr}} $ 作为输入,并生成被遮盖的属性。解码器类型依赖于属性的类型:
- 如果节点的属性为文本,则可以使用文本生成模型(如
LSTM
)来生成属性文本。 - 如果节点的属性为标准的向量,则可以使用多层感知机来生成属性向量。
然后我们将距离函数定义为生成的属性和真实属性之间的度量,如文本属性的度量为困惑度
perplexity
、属性向量的度量为向量的L2
距离。因此,我们定义属性生成损失为:最小化生成的属性和被遮盖的属性之间的距离,等价于最大化每个观测节点的属性的似然,即
$ p_\theta\left(\mathbf{\vec x}_i\mid \mathcal E_{i,\vec o},\mathbf X_{\lt i}, \mathcal E_{\lt i}\right) $ 。因此预训练的模型能够捕获到图的语义信息。- 如果节点的属性为文本,则可以使用文本生成模型(如
边生成:对于边生成,我们假设每条边的生成相互独立,则有:
其中
$ e_{i,j^+} $ 表示被遮盖的、从节点 $ i $ 到 $ j^+ $ 的边。然后在得到边生成节点的
embedding
$ \mathbf H^{\text{edge}} $ 之后,我们通过解码器 $ \text{Dec}^{\text{edge}}(\cdot,\cdot) $ 来建模节点 $ i $ 连接到节点 $ j^+ $ 之间的概率。我们采用负对比估计
negative contrastive estimation
来计算节点 $ i $ 连接到节点 $ j^+ $ 之间的概率。记所有未连接的节点集合为 $ \mathcal S_i^- $ ,则对比损失contrastive loss
为:最小化
$ \mathcal L_i^{\text{edge}} $ 等于最大化生成所有遮盖边的可能性。因此预训练模型能够捕获图的固有结构。下图给出了属性图的生成过程。具体而言:
图
(a)
:确定输入图的节点排序 $ \vec\pi $ 。图
(b)
:随机选择目标节点的一部分边作为观测边 $ \mathcal E_{i,\vec o} $ ,目标节点的剩余边作为遮盖边 $ \mathcal E_{i,\neg\vec o} $ (带十字的灰色虚线)。图
(c) - (e)
:- 从输入图中删除被遮盖的边。
- 将每个节点分裂为属性生成节点和边生成节点,从而避免信息泄露。
- 在上述预处理之后,使用修改的邻接矩阵来计算节点
3,4,5
的embedding
,包括它们的属性生成embedding
和边生成embedding
。注意:仅使用边生成节点的来向外传递消息。
最后,如图
(c) - (e)
所示,我们通过并行的属性预测和遮盖边预测任务来训练GNN
模型。
22.2.4 用于异质图和大型图的 GPT-GNN
异质图:
GPT-GNN
框架可以直接应用于预训练异质GNN
。此时,每种类型的节点和边都可能有自己的解码器,该解码器由异质GNN
确定而不是预训练框架指定。其它部分和同质GNN
预训练完全相同。大型图:为了在非常大的图上预训练
GNN
,我们采样 $ \mathcal G $ 的子图来进行训练。具体而言,我们建议使用LADIES
算法及其异质版本HGSampling
从同质图或异质图采样一个稠密的子图。理论上讲,这两种方法都保证了采样节点之间的高度互连,并最大程度地保留了结构信息。为了估算对比损失
$ \mathcal L_i^{\text{edge}} $ ,我们需要遍历输入图的所有节点。但是在采样的子图中我们只能访问采样后的节点,这使得自监督仅关注于采样到的局部信号。为了缓解该问题,我们提出自适应队列Adaptive Queue
,它存储了之前曾经采样的子图中的node embedding
。我们将自适应队列中的节点作为负节点加入到 $ \mathcal S_i^{-} $ 中。每次处理新的子图时,我们都会添加最新的节点embedding
并删除最早的node embedding
,从而逐步更新自适应队列。由于不会严格更新模型参数,因此队列中存储的负样本是一致且准确的consistent and accurate
。自适应队列使得我们能够使用更大的负样本集合
$ \mathcal S_i^- $ ,同时跨不同采样子图的节点可以为对比损失引入全局结构的指导。
22.2.5 GPT-GNN 算法
GPT-GNN
预训练算法:输入:
- 属性图
$ \mathcal G= (\mathcal V, \mathcal E,\mathbf X) $ - 子图采样器
Sampler(.)
GNN
模型 $ f_\theta $
- 属性图
输出:预训练模型的参数
$ \theta^* $算法步骤:
初始化
GNN
模型 $ f_\theta $ ,初始化属性生成解码器 $ \text{Dec}^{\text{attr}} $ ,初始化边生成解码器 $ \text{Dec}^{\text{edge}} $ 。初始化共享属性向量
$ \mathbf{\vec x}^{\text{init}} $ ,初始化自适应node embedding
队列 $ Q=\{\} $ 。对每个采样到的子图
$ \hat{\mathcal G}\in \text{Sampler}(\mathcal G) $ ,执行:对每个节点,采样一组观测到的边的索引
$ \vec o $ 和遮盖边的索引 $ \neg\vec o $ ,并从 $ \hat{\mathcal G} $ 中移除遮盖边 $ \mathcal E_{i,\neg\vec o} $ 。将所有节点分别同时分裂为属性生成节点、边生成节点。将属性生成节点集合的节点输入替换为
$ \mathbf{\vec x}^{\text{init}} $ 。然后应用GNN
$ f_\theta $ 来获取两个集合中的node embedding
$ \mathbf H^{\text{attr}} $ 和 $ \mathbf H^{\text{edge}} $ 。注意:仅使用边生成节点的来向外传递消息。对每个节点
$ i $ ,其属性为 $ \mathbf{\vec x}_i $ ,遮盖边的集合为 $ \mathcal E_{i,\neg\vec o} $ ,执行:计算属性生成损失
$ \mathcal L_i^{\text{attr}} = \text{Distance}\left(\text{Dec}^{\text{attr}}\left(\mathbf{\vec h}_i^{\text{attr}}\right),\mathbf{\vec x}_i\right) $ 。通过拼接子图中未连接的节点和自适应队列
$ Q $ ,为边生成任务准备负采样边集合 $ \mathcal S_i^- $ 。计算边生成损失:
通过最小化
$ \mathcal L = \sum_{i\in \hat{\mathcal G}}(\mathcal L_i^{\text{attr}}+ \mathcal L_i^{\text{edge}}) $ 来优化 $ \theta $ 。添加
$ \mathbf H^{\text{edge}} $ 来更新自适应队列 $ Q $ ,并弹出最早的edge embedding
。
返回预训练的模型参数
$ \theta^* $ 。
上述算法给出了总体流程。给定一个属性图
$ \mathcal G $ ,我们每次采样一个子图 $ \hat{\mathcal G} $ 来作为生成式预训练的训练实例。第一步是确定节点排列顺序
$ \vec\pi $ 。为支持并行训练,我们希望单次的前向传播可以获得整个图的embedding
,以便我们可以同时计算每个节点的损失,而不是递归地计算每个节点。因此,我们根据 $ \vec\pi $ 移除了所有从高编号到低编号的边,这意味着每个节点只能从低编号节点接收消息。这样,它们就不会将信息泄露给自回归生成的目标函数。因此,我们只需要单次执行就可以获得整个图的embedding
,从而直接应用于生成式预训练。注意:这一步未在上述算法中体现。理论上在采样子图的外层还有一个循环:采样排列顺序的循环。
然后,我们需要确定要遮盖的边。对于每个节点,我们选择其所有出边
out edge
并随机选择遮盖一部分边。然后,我们执行节点分裂,并获得节点的
embedding
,这将用于计算生成式损失。我们通过拼接该子图内未连接节点和存储在自适应队列
$ Q $ 中的节点来准备负样本,这样可以缓和子图和整体图之间的gap
。最后我们更新自适应队列。
一旦得到预训练模型,我们就可以使用预训练模型作为初始化,从而微调其它下游任务。
24.3 实验
数据集:
异质图:
Open Academic Graph:OAG
:包含超过1.78
亿节点、22.36
亿条边,是迄今为止最大的公开可用的异质学术数据集。每篇论文都包含一组研究领域的标签,发表日期为1900 ~2019
。数据集包含五种类型的节点:论文
Paper
、作者Author
、领域Field
、会议Venue
、机构Institute
,以及这些节点之间的14
种类型的边,这些边的关系如下图所示。例如:领域包含L0 ~ L5
六个级别,这些级别通过层级树hierarchical tree
来表示;领域之间的层级关系通过is_organized_in
关系表示;我们区分了不同的作者位置,即第一作者、最后作者、其它作者。另外,数据集还包含自连接,这是GNN
框架中广泛添加的。对于论文和作者节点,节点编号非常大。因此传统的
node embedding
算法不适合为其抽取属性。因此我们借助论文标题来抽取属性。对于每篇论文,我们获取其论文标题,然后使用预训练的XLNet
获取标题中每个单词的embedding
,然后我们根据每个单词的注意力对它们进行加权平均,从而获得每篇论文的标题embedding
,作为论文节点属性。作者节点的属性是作者已发表论文的embedding
的均值。对于领域、会议、机构等节点,由于节点数量很少,因此我们使用
metapath2vec
模型来训练它们的node embedding
,从而作为节点属性。我们考虑对
Paper-Field, Paper-Venue, Author Name Disambiguation(Author ND)
预测作为三个下游任务来评估预训练模型的效果。性能指标为MRR
进行评估。- 对于前两个任务,我们希望模型能够预测论文所属的正确领域或正确会议。我们将这两个任务建模为节点分类问题,其中使用
GNN
来获得论文的node embedding
,然后使用一个softmax
输出层来获得分类结果。 - 对于最后一个任务,我们选择所有同名的作者,以及链接到其中任何一位作者的论文。任务是在论文和候选同名作者之间进行链接预测。我们使用
GNN
获得论文和节点的embedding
,然后使用Neural Tensor Network
来获取每对author-paper
存在链接的概率。
mean reciprocal rank: MRR
:多个query
的排名倒数的均值。- 对于前两个任务,我们希望模型能够预测论文所属的正确领域或正确会议。我们将这两个任务建模为节点分类问题,其中使用
Amazon Review Recommendation
:包含8280
万条评论、2090
万用户、930
万商品。评论发布于1996~ 2018
年,每条评论都包含一个从1~5
的离散评分,以及一个特定领域(包括书籍Book
、时装Fashion
等)。数据集包含三种类型的节点:评论(评分和评论文本)、用户 、商品。另外还有商品的其它一些元数据,包括颜色、尺寸、样式和数量。和一般的
user-item
二部图相比,该数据集存在评论数据。为简单起见,我们将评论的连接视为categorize_in
类型,因此图中共有三种类型的关系。我们通过预训练的
XLNet
获取每个评论的embedding
作为评论节点的属性。用户节点、商品节点的属性都是和它们关联的评论的embedding
取均值。我们将评分预测作为下游任务,该任务是一个
node-level
的五类分类任务。我们使用micro-F1
得分作为评估指标。我们使用GNN
获取评论的上下文表示,然后使用softmax
输出层来获得分类预测。
同质图:
Reddit
数据集、从OAG
提取的引文网络。
Base model
:在OAG
和Amazon
数据集上,我们使用最新的异质GNN
模型Heterogeneous Graph Transformer: HGT
作为base model
来预训练GPT-GNN
。另外我们也对比了其它异质GNN
作为base model
的效果。baseline
方法(均用于预训练):GAE
:图自编码器,聚焦于传统的链接预测任务。它随机遮盖固定比例的边,然后要求模型重建这些遮盖的边。GraphSAGE(无监督)
:强迫相连的节点具有相似的embedding
。它和GAE
的主要区别在于:GraphSAGE
在预训练过程中不会遮盖边。Graph InfoMax
:尝试使用全局的图summary embedding
来最大化局部node embedding
。对于每个采样的子图,我们混洗子图来构造负样本。- 此外,我们还单独使用
GPT-GNN
的两个预训练任务来进行对比,即属性生成GPT-GNN(Attr)
、边生成GPT-GNN(Edge)
。
GPT-GNN
模型配置:- 所有的
base model
,其隐层维度为400
,head
数量为8
,GNN
层数为3
。 - 所有
GPT-GNN
都采用PyTorch Geometric(PyG) package
实现。 - 使用
AdamW
优化器,使用Cosine Annealing Learning Rate Scheduler
训练500
个epoch
,并选择验证损失最低的模型作为预训练模型。 - 自适应队列大小为
256
。 - 在下游评估阶段,我们使用相同的优化配置来微调模型,微调期间训练
200
个epoch
。 - 我们对下游任务重复训练
5
次,并报告测试结果的均值和标准差。
- 所有的
迁移学习配置:我们首先预训练
GNN
,然后使用预训练的模型权重来初始化下游任务的模型。然后我们使用下游任务的训练集来微调模型,并评估测试集性能。大体而言,有两种不同的配置:
- 第一种是在完全相同的图上进行预训练和微调。
- 第二种是在一张图上进行预训练,但是在另一张图(和预训练的图具有相同类型)上进行微调。
其中第二种更为实用,我们选择第二种进行测试。
如果是跨图的微调,如何处理训练期间
unseen
节点的embedding
?- 如果是
transductinve
的,那么只能要求两个图中的节点尽可能重合。 - 如果是
inductive
的,那么两个图可以不同,因为我们只需要预训练模型权重矩阵(如GAT
中的投影矩阵)即可。
具体而言,我们选择以下三种图迁移学习:
时间迁移
Time Transfer
:使用来自不同时间段的数据进行预训练和微调。对于OAG
和Amazon
,我们使用2014
年之前的数据进行预训练,使用2014
年之后的数据进行微调。领域迁移
Field Transfer
:使用来自不同领域的数据进行预训练和微调。- 在
OAG
中,我们选择计算机科学领域CS
的论文用于微调,其它领域的论文用于预训练。 - 在
Amazon
中,我们选择艺术Art
、手工艺品Craft
、缝纫品Sewing
进行预训练,并对时尚、美容、奢侈品进行微调。
- 在
组合迁移
Time + Field Transfer
:使用2014
年之前特定领域的数据来预训练,使用2014
年之后另一些领域的数据来微调。这比单独的时间迁移或领域迁移更具挑战。
在微调期间,对于这两个数据集我们选择
2014~2016
年的节点进行训练,2017
年的节点作为验证,2018
年的节点作为测试。为满足缺乏训练数据的假设,默认情况下我们仅提供
10%
的标记数据用于微调训练。在预训练期间,我们随机选择部分数据(
2014
年以前)作为验证集。在
OAG
和Amazon
数据集上的不同预训练方法的下游任务性能如下表所示。结论:
总体而言,
GPT-GNN
框架显著提高了所有数据集上所有下游任务的性能。- 平均而言,
GPT-GNN
相比于没有预训练的base model
,在OAG
和Amazon
上获得了13.3%
和5.7%
的相对提升。 GPT-GNN
也超越了其它的预训练模型,如Graph Informax
。
- 平均而言,
预训练在领域迁移学习中的提升要超过时间迁移学习,而组合迁移学习的提升比例最低。这体现了组合迁移学习的挑战性。
但是,即使是在最具有挑战的组合迁移学习中,
GPT-GNN
仍然分别在两个数据集上实现了11.7%
和4.6%
的性能提升。这表明:GPT-GNN
使得GNN
能够捕获输入图的通用结构和语义知识,从而可用于微调图数据的未见过的部分。通过对比
GPT-GNN
的两个预训练任务(属性生成任务和边生成任务)的有效性,我们可以评估哪个对GPT-GNN
以及下游任务更有效。- 在
OAG
上,GPT-GNN(Attr)
和GPT-GNN(Edge)
平均性能分别提升7.4%
和10.3%
,表明边生成任务更有效。 - 但是在
Amazon
上,结论相反,二者分别为5.2%
和4.1%
。
这表明
GPT-GNN
从属性生成任务和边生成任务带来的收益因不同的数据集而不同。但是,将两个预训练任务结合起来可以获得最大收益。- 在
将边生成任务和其它基于边的预训练方法(如
GAE, GraphSAGE
)相比。在OAG
上,GPT-GNN(Edge), GAE, GraphSAGE
相对于没有预训练分别提升10.3%, 7.4%, 4.0%
。在Amazon
上,提升比例分别为5.2%, 3.1%, 1.3%
。- 首先,在这两个数据集上,
GAE
和GPT-GNN(Edge)
都要比GraphSAGE
提供更好的结果,这表明在边上进行遮盖是用于自监督的图表示学习的有效方式。 - 其次,
GPT-GNN(Edge)
始终超越了GAE
。GPT-GNN(Edge)
的优势在于它会自动生成缺失的边,从而捕获被遮盖边之间的依赖关系,这些依赖关系已被GAE
丢弃。
总之,结果表明:
GPT-GNN
可以为GNN
预训练提供有效的自监督。- 首先,在这两个数据集上,
节点分裂旨在缓解属性生成任务的信息泄露问题,如果没有该部分,则属性将会出现在输入中。此时属性生成任务只需要简单的把输入预测为输出即可,即它无法学到输入图的任何知识,因此对结果有负面影响。
从
w/o node seperation
可以看到,移除节点分裂使得预训练模型效果很多情况下甚至比没有预训练的更差。这证明了节点分裂在避免属性信息泄露方面的重要性。自适应队列旨在缓解采样子图和完整图之间的
gap
。从GPT-GNN(Edge)
和w/o adaptive queue
之间的对比可以看到:移除自适应队列使得模型性能下降。这表明通过使用自适应队列来添加更多负样本,确实有助于预训练框架的效果提升。
我们考察其它
GNN
框架能否从GPT-GNN
框架中受益。因此,除了HGT
之外,我们还考察了GCN, GAT, R-GCN, HAN
作为base model
。我们在
OAG
上对它们进行预训练,然后在组合迁移配置下使用paper-field
预测任务,并使用10%
的微调训练数据来微调。模型无关的超参数(如隐层维度、优化器)保持不变。结果如下所示,可以看到:HGT
在所有非预训练模型中效果最好。- 采用
HGT
的GPT-GNN
在所有模型中效果最好。 GPT-GNN
预训练框架可以增强所有GNN
模型的下游性能。
我们考察微调期间不同训练数据规模的效果。可以看到:
GPT-GNN
和其它预训练框架通过更多的标签数据可以不断提高下游任务的效果。GPT-GNN
在所有预训练框架中表现最好。GPT-GNN
仅需要10% ~ 20%
的数据来微调,就可以达到监督学习100%
训练数据的效果。这证明了GPT-GNN
的优越性。
除了异质图之外,我们还评估了
GPT-GNN
预训练框架是否可以应用于同质图的迁移学习。我们在两个同质图上进行预训练和微调:OAG
的计算机科学领域的论文引文网络,对每个论文的主题进行预测。Reddit
帖子组成的Reddit
网络,对每个帖子的社区进行推断。
我们将
HGT
忽略其异质部分从而用于base model
。下表给出了10%
标记数据的训练结果。可以看到:- 两个同质图的下游任务都可以从所有预训练框架中受益。
GPT-GNN
可以提供最大的性能提升。
我们给出
OAG
上预训练和微调的收敛曲线。下图给出了预训练期间每个
epoch
的验证误差曲线。结果表明:模型的验证损失不断下降,而不是很快地找到一个平凡解。这在某种程度上表明:生成式预训练任务足够艰巨,因此可以指导模型真正捕获数据的内在结构。整个GPT-GNN
预训练收敛大约需要12
个小时。下图给出了微调期间的验证
MRR
曲线(同时对比了没有预训练的验证MRR
曲线)。可以看到,GPT-GNN
总是可以获得更泛化的模型,并且由于预训练的良好初始化,微调期间对于过拟合更鲁棒。对于
OAG
数据集,我们的属性生成任务是生成论文标题,所以我们希望了解GPT-GNN
如何学习生成标题,结果见下表。可以看到:模型仅通过查看部分邻域即可捕获需要预测的论文的主要含义。例如,对于第一句话,我们的模型成功地预测了本文的关键词,包括
person recognition, probabilistic
等。这表明图本身包含了丰富的语义信息,也解释了为什么预训练模型可以很好地泛化到下游任务。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论