数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
九、GAT [2017]
卷积神经网络
Convolutional Neural Network: CNN
已经成功应用于图像分类、语义分割以及机器翻译之类的问题,其底层数据结构为网格状结构grid-like structure
。这些架构通过将它们应用于所有的input position
从而有效地reuse
具有可学习参数的局部滤波器local filter
。然而,许多人们感兴趣的任务涉及的数据无法以网格状结构来表达,而是位于不规则域
irregular domain
。例如,3D mesh
、社交网络、电信网络、生物网络、脑连接组brain connectome
等等。这些数据通常可以通过graph
的形式来表达。有一些文献尝试扩展神经网络从而处理任意结构的图。
早期的工作使用递归神经网络
recursive neural network: RNN
来处理graph domain
中表示为有向无环图的数据。《A new model for learning in graph domains》
和《The graph neural network model》
提出了图神经网络Graph Neural Network: GNN
作为RNN
的泛化,从而可以直接处理更通用的graph
类型,如:循环图、有向图、无向图。GNN
包含一个迭代过程,该迭代过程传播节点状态直到达到平衡。然后是一个神经网络,它根据每个节点的状态为每个节点生成一个输出。这个思想被
《Gated graph sequence neural networks》
所采纳和改进,该方法提出在传播过程中使用门控循环单元gated recurrent unit: GRU
。
然而,人们将卷积推广到
graph domain
的兴趣越来越大。这个方向的进展通常分为谱方法spectral approach
和非谱方法non-spectral approach
。一方面,谱方法与图的谱表示
spectral representation
一起工作,并已成功应用于节点分类的context
中。- 在
《Spectral networks and locallyconnected networks on graphs》
中,卷积运算是通过计算图拉普拉斯矩阵graph Laplacian
的特征分解eigen decomposition
从而在傅里叶域Fourier domain
中定义的,这导致潜在的稠密计算以及非空间局部化的滤波器non-spatially localized filter
。 这些问题在随后的工作中得到解决。 《Deep convolutional networks on graph-structured data》
引入了具有平滑系数的谱滤波器spectral filter
的参数化parameterization
,使得滤波器在空间上局部化。- 后来,
《Convolutional neural networks on graphs with fast localized spectral filtering》
提出通过图拉普拉斯矩阵的切比雪夫展开来近似滤波器,从而无需计算图拉普拉斯矩阵的特征向量从而生成空间局部化的滤波器。 - 最后,
《Semi-supervised classification with graph convolutional networks》
通过限制滤波器仅操作每个节点周围的1-step
邻域内来简化之前的方法。
然而,在所有上述谱方法中,学到的滤波器依赖于拉普拉斯矩阵的特征基
Laplacian eigenbasis
,而这个特征基依赖于图结构。因此,在特定图结构上训练的模型无法直接应用于具有不同结构的其它的图。- 在
另一方面,我们有非谱方法,该方法直接在图上定义卷积从而操作空间近邻的节点集合。这些方法的挑战之一是:定义一个与不同规模的邻域一起工作,并能保持
CNN
的权重共享属性的算子。在某些情况下,这需要为每个节点
degree
学习一个特定的权重矩阵(《Convolutional networks on graphs for learning molecular fingerprints》
),或者需要使用转移矩阵transition matrix
的幂来定义邻域并同时针对每个输入通道和邻域degree
来学习权重(《Diffusion-convolutional neural networks》
),或者需要抽取和归一化邻域从而包含固定数量节点(《Learning convolutional neural networksfor graphs》
)。《Geometric deep learning on graphs and manifolds using mixture model cnns》
提出了mixture model CNN
(MoNet
),这是一种空间方法,可以将CNN
架构统一泛化到图。最近,
《representation learning on largegraphs》
提出了GraphSAGE
,这是一种以归纳式的方式计算node representation
的方法。该技术通过对每个节点采样固定尺寸邻域,然后该邻域执行特定的聚合器(如,均值池化聚合器,或LSTM
聚合器)。GraphSAGE
在多个大规模归纳式benchmark
中取得了令人印象深刻的性能。GAT
无需对邻域进行采样,能够处理可变邻域。
在许多
sequence-based
任务中,注意力机制几乎已经成为事实上的标准。注意力机制的好处之一是:注意力机制允许处理可变尺寸的输入,并聚焦于输入中最相关的部分从而作出决策。当使用注意力机制来计算单个序列的representation
时,它通常被称作self-attention
或intra-attention
。与RNN
或卷积一起,self-attention
已被证明对机器阅读、sentence representation
学习等任务很有用。而且,《Attention is all you need》
表明:self-attention
不仅可以改进基于RNN
或卷积的方法,而且足以构建一个强大的模型并且在机器翻译任务上获得state-of-the-art
的性能。受最近这项工作的启发,论文
《GRAPH ATTENTION NETWORKS》
引入了一种attention-based
架构来执行图结构数据的节点分类。基本思想是:遵从self-attention
策略,可以通过attend
节点的邻居来计算图中每个节点的hidden representation
。注意力架构有几个有趣的特性:- 操作是高效的,因为它可以跨
node-neighbor pair
进行并行化。 self-attention
通过给邻居赋予可学习的、任意的权重,从而可以应用于具有不同degree
的图节点。- 该模型直接适用于归纳式的学习问题,包括模型必须泛化到完全
unseen
的图的任务。
作者在四个具有挑战性的
benchmark
上验证了所提出的方法,实现或接近state-of-the-art
的结果。实验结果凸显了attention-based
模型在处理任意结构的图时的潜力。注:
inductive learning
和transductive learning
的区别:inductive learning
是从具体样本中总结普适性规律,然后泛化到训练中unseen
的样本。transductive learning
是从具体样本中总结具体性规律,它用于预测训练集中已经出现过的unlabelled
样本,常用于半监督学习。
相关工作:
正如
《Semi-supervised classification with graph convolutional networks》
和《Diffusion-convolutional neural networks》
一样,我们的工作也可以重新表述为MoNet
的一个特定实例。此外,我们跨
edge
共享神经网络计算neural network computation
的方法让人联想起关系网络relational network
(《A simple neural network module for relational reasoning》
)和VAIN
(《Vain: Attentional multi-agent predictive modeling》
)的公式,其中object
或agent
之间的relation
是通过采用一种共享机制来pair-wise
聚合的。同样地,我们提出的注意力模型可以与
《One-shot imitation learning》
和《Programmable agents》
等工作联系起来,它们使用邻域注意力操作neighborhood attention operation
来计算环境中不同对象之间的注意力系数。其它相关方法包括局部线性嵌入
locally linear embedding: LLE
、记忆网络memory network
。LLE
在每个data point
周围选择固定数量的邻居,并为每个邻居学习一个权重系数,从而将每个point
重构为其邻居的加权和。然后第二步优化是抽取point
的feature embedding
。memory network
也与我们的工作有一些联系。具体而言,如果我们将节点的邻域解释为memory
,那么该memory
被用于通过attend
memory
的values
来计算node feature
(READ
过程),然后通过将新的特征存储在node
对应的位置从而进行更新(WRITE
过程)。
9.1 模型
- 这里我们介绍用于构建任意
graph attention network: GAT
的building block layer
(通过堆叠该层),即graph attentional layer: GAL
。然后我们概述与神经图处理neural graph processing
领域的先前工作相比,这种layer
的理论和实践上的优势和局限性。
9.1.1 Graph Attentional Layer
我们将从描述单个
graph attentional layer: GAL
开始,其中GAL
作为我们实验中使用的GAT
架构中使用的唯一一种layer
。我们使用的特定的attentional setup
与《Neural machine translation by jointly learning to align and translate》
的工作密切相关,但是GAT
框架与注意力机制的特定选择无关。GAL
的输入为一组节点特征: $ \mathbb H= \left\{\mathbf{\vec h}_1,\cdots,\mathbf{\vec h}_N\right\} ,\mathbf{\vec h}_i\in \mathbb R^F $ ,其中 $ N $ 为图的节点数量、 $ F $ 为节点的representation
维度。GAL
输出这些节点的新的representation
: $ \mathbb H^\prime = \left\{\mathbf{\vec h}_1^\prime,\cdots,\mathbf{\vec h}_N^\prime\right\},\quad \mathbf{\vec h}_i^\prime\in \mathbb R^{F^\prime} $ ,其中 $ F^\prime $ 为节点新的representation
维度(可能与 $ F $ 不同)。为了获得足够的表达能力
expressive power
从而将input feature
转化为higher-level feature
,至少需要一个可学习的线性变换。为此,作为初始的step
,我们首先对所有节点应用一个共享权重的线性变换,权重为 $ \mathbf W \in \mathbb R^{F^\prime \times F} $ 。然后,我们在每个节点上应用self-attention
$ a $ (一个共享的attentional mechanism
) : $ \mathbb R^{F^\prime }\times \mathbb R^{F^\prime} \rightarrow \mathbb R $ , 来计算attention
系数:其中
$ e_{i,j} $ 表示节点 $ j $ 的特征对于节点 $ i $ 的重要性。理论上讲,我们允许每个节点关注图中所有其它的节点,因此这可以完全忽略所有的图结构信息。实际上,我们采用
masked attention
机制将图的结构信息注入到attention
机制:对于节点 $ i $ 我们仅仅计算其邻域内节点的attention
系数 $ e_{i,j},j\in \mathcal N_i $ ,其中 $ \mathcal N_i $ 为节点 $ i $ 的邻域。目前在我们的所有实验中,邻域 $ \mathcal N $ 仅仅包含节点的一阶邻居(包括节点 $ i $ 在内)。注意:这里
$ \mathcal N_i $ 包含节点 $ i $ 在内。因为我们需要计算 $ e_{i,i} $ 。为使得系数可以在不同节点之间比较,我们使用
softmax
函数对所有的 $ j $ 进行归一化:在我们的实验中,注意力机制
$ a $ 是一个单层的前向传播网络,参数为权重 $ \mathbf{\vec a}\in \mathbb R^{2F^\prime} $ ,采用LeakyReLU
激活函数,其中负轴斜率 $ \beta = 0.2 $ 。完全展开后,注意力机制计算的系数可以表示为(如下图所示):其中:
$ || $ 表示向量拼接操作。注意:这里的节点
$ i $ 作为query
,邻域 $ \mathcal N_i $ 内节点作为key
。query
节点 $ i $ 的representation
和每个key
的representation
进行拼接。一旦得到归一化的注意力得分,我们就可以用它对相应的邻居节点的特征进行加权线性组合,从而得到每个节点的
final output feature
:其中
$ \mathbf W\in \mathbb R^{F^\prime \times F} $ ,它就是前面计算注意力得分的矩阵。理论上也可以使用不同的
$ \mathbf W $ ,此时模型容量会得到进一步提升。我们使用
multi-head attention
来稳定self-attention
的学习过程。我们采用 $ K $ 个head
,然后将它们的输出拼接在一起:其中:
$ \alpha_{i,j}^{(k)} $ 为第 $ k $ 个head
的归一化的注意力得分。 $ \mathbf W^{(k)} $ 为第 $ k $ 个head
的权重矩阵。
最终的输出
$ \mathbf{\vec h}^\prime $ 的维度为 $ KF^\prime $ (而不是 $ F^\prime $ )。但是,如果
GAL
是网络最后一层(即输出层),我们对multi-head
的输出不再进行拼接,而是直接取平均,因为拼接没有意义。同时我们延迟使用最后的非线性层,对分类问题通常是softmax
或者sigmoid
:理论上,最后的
GAL
也可以拼接再额外接一个输出层。例如,实验部分作者就在最后一层使用 $ K=8 $ 个attention head
。如下图所示为
multi head = 3
,当且节点 $ i=1 $ 。不同颜色的箭头表示不同的head
。
9.1.2 和相关工作的比较
GAL
解决了现有的、基于神经网络对图结构数据建模的方法的问题。GAL
计算高效:self-attentional layer
的操作可以跨所有edge
并行化,输出特征的计算可以跨所有节点并行化。即,单个
self-attention
内部的、计算 $ e_{i,j} $ 的操作可以并行化。不同节点之间计算self-attention
也可以并行化。不需要特征分解
eigen decomposition
或类似的昂贵矩阵计算。单个
attention head
计算 $ F^\prime $ 个特征的时间复杂度为 $ O(|V|\times F\times F^\prime + |E|\times F^\prime) $ ,其中 $ F $ 为输入特征的个数, $ |V| $ 为图中节点的数量, $ |E| $ 为图中边的数量。这种复杂度和一些baseline
方法(如GCN
)差不多。- 首先计算所有节点的
$ \mathbf W \mathbf{\vec h}_i $ ,计算复杂度为 $ O(|V|\times F\times F^\prime) $ 。 - 再计算所有的
$ \mathbf{\vec a}\cdot [\mathbf W\mathbf{\vec h}_i,\mathbf W\mathbf{\vec h}_j] $ ,计算复杂度为 $ O(|E|\times F^\prime) $ 。 - 再计算所有的
$ \alpha_{i,j} $ ,计算复杂度为 $ O(|V|\times \bar d) $ ,其中 $ \bar d = \frac{|E|}{|V|} $ 为节点的平均degree
,则 $ \alpha_{i,j} $ 的计算复杂度为 $ O(|E|) $ 。
最终计算复杂度为
$ |V|\times F\times F^\prime + |E| \times F^\prime $ 。- 首先计算所有节点的
应用
multi-head attention
将存储需求和参数需求乘以 $ K $ 倍,而各个head
的计算是完全独立的并且可以并行化。
GCN
:和GCN
相比,GAT
模型允许为同一个邻域内的节点分配不同的重要性,从而实现模型容量model capacity
的飞跃。另外,和机器翻译领域一样,对学到的注意力权重进行分析可能会带来可解释性的好处。注意力机制以共享的方式应用于图的所有边,因此它不需要预先得到整个图结构或者所有节点(这是许多现有技术的局限性)。这有几个理想的含义:
- 图可以是有向图,也可以是无向图。如果边
$ j\rightarrow i $ 不存在,则我们不需要计算系数 $ \alpha_{i,j} $ 。 GAT
可以直接应用到归纳式学习inductinve learning
:模型可以预测那些在训练期间中unseen
的图。
- 图可以是有向图,也可以是无向图。如果边
GraphSAGE
:最近发表的归纳式方法GraphSAGE
对每个节点采样固定大小的邻域,从而保持计算足迹computational footprint
的一致性。这使得模型无法在测试期间访问整个邻域。注意:由于训练期间训练多个
epoch
,则GraphSAGE
可能访问到节点的整个邻域。此外,当使用
LSTM-based
邻域集合器时,GraphSAGE
取得了一些最强的结果。LSTM
假设在邻域之间存在一致的节点排序,并且作者通过向LSTM
持续地提供随机排序的序列来使用LSTM
。GAT
没有这两个问题:GAT
作用在完整的邻域上,并且不假设邻域内有任何节点的排序。注意:虽然
GAT
作用在完整的领域上,但是在大型图的训练过程中可能还需要对邻域进行采样。因为对于大型图,对于每个mini-batch
$ \mathcal B $ ,我们不仅要提供 $ \mathcal B $ ,我们还需要提供 $ v\in \mathcal B $ 的邻域、以及它的邻域的邻域,... 。如果GAT
有 $ L $ 层,那么需要覆盖 $ \mathcal B $ 的 $ L $ 阶邻域。如果使用完整的邻域,那么每个
mini-batch
所需要的节点可能就是整个大图。这对于大型图而言是无法接受的(空间复杂度太高)。MoNet
:如前所述,GAT
可以重写表述为MoNet
的特定实例。更具体而言:- 设定伪坐标函数
pseudo-coordinate function
为 $ u\left(x,y\right) = f\left(x\right)|| f\left(y\right) $ ,其中: $ f\left(x\right) $ 表示节点 $ x $ 的特征(可能是MLP
变换而来), $ || $ 表示特征拼接。 - 设定权重函数为
$ w_j(u) = \text{softmax}(\text{MLP}(u)) $ ,在节点的整个邻域上执行softmax
。
此时,这种
MoNet
的补丁算子patch operator
将类似于我们的方法。然而,应该注意的是:与这个
MoNet
实例相比,我们的模型使用节点特征来计算相似性,而不是节点的结构属性(假设预先知道图结构)。- 设定伪坐标函数
我们可以使用一种利用稀疏矩阵操作的
GAL
层,它可以将空间复杂度下降到节点和边的线性复杂度,从而使得模型能够在更大的图数据集上运行。但是我们的tensor
计算框架仅支持二阶tensor
的稀疏矩阵乘法,这限制了当前版本的batch
处理能力,特别是在具有很多图的数据集上。解决该问题是未来一个重要的方向。另外,根据现有图结构的规律,在稀疏矩阵的情况下,GPU
的运算速度并不会比CPU
快多少因此无法提供主要的性能优势。还应该注意的是,我们模型的感受野
receptive field
的大小是网络深度的上限(类似于GCN
或类似的模型)。然而,诸如skip connection
之类的技术可以解决该问题,从而允许GAT
使用更深的网络。最后,跨图中所有
edge
的并行化,尤其是以分布式方式,可能会涉及大量冗余计算,因为图中邻域通常高度重叠。
9.1.3 未来工作
一些有待改进的点:
- 如何处理更大的
batch size
。 - 如何利用注意力机制对模型的可解释性进行彻底的分析。
- 如何执行
graph-level
的分类,而不仅仅是node-level
的分类。 - 如何利用边的特征,而不仅仅是节点的特征。因为边可能蕴含了节点之间的关系,边的特征可能有助于解决各种各样的问题。
- 如何处理更大的
9.2 实验
9.2.1 Transductinve Learning
数据集:三个标准的引文网络数据集
Cora, Citeseer,Pubmed
。每个节点表示一篇文章、边(无向)表示文章引用关系。每个节点的特征为文章的
BOW representation
。每个节点有一个类别标签。Cora
数据集:包含2708
个节点、5429
条边、7
个类别,每个节点1433
维特征。Citeseer
数据集:包含3327
个节点、4732
条边、6
个类别,每个节点3703
维特征。Pubmed
数据集:包含19717
个节点、44338
条边、3
个类别,每个节点500
维特征。
对每个数据集的每个类别,我们使用
20
个带标签的节点来训练,然后在1000
个测试节点上评估模型效果。我们使用额外的500
个带标签节点作为验证集(与GCN
论文中使用的相同)。注意:训练算法可以利用所有节点的结构信息和特征信息,但是只能利用每个类别
20
个节点的标签信息。Baseline
模型:- 我们对比了论文
《Semi-supervised classification with graph convolutional networks》
中指定的相同的baseline
。包括:标签传播模型label propagation: LP
、半监督嵌入模型semi-supervised embedding: SemiEmb
、流型正则化模型manifold regularization: ManiReg
、基于SkipGram
的graph embeding
模型(如DeepWalk
)、迭代式分类算法模型iterative classification algorithm: ICA
,Planetoid
模型。 - 我们也直接对比了
GCN
模型、利用高阶切比雪夫的图卷积模型Chebyshev filter-based
(《Convolutional neural networks on graphs with fast localized spectral filtering》
)、以及MoNet
模型。 - 我们还提供了每个节点共享
MLP
分类器的性能,该模型完全没有利用图的结构信息。
- 我们对比了论文
参数配置:
我们使用一个双层的
GAT
模型,它的架构超参数已经在Cora
数据集上进行了优化,然后被Citeseer
复用。- 第一层包含
$ K=8 $ 个attention head
,每个head
得到 $ F^\prime = 8 $ 个特征,总计64
个特征。第一层后面接一个exponential linear unit: ELU
非线性激活层。 - 第二层用作分类,采用一个
attention head
计算 $ C $ 个特征,其中 $ C $ 为类别数量,然后使用softmax
激活函数。
- 第一层包含
当处理小数据集时,我们在模型上施加正则化:
- 我们采用
$ L_2 $ 正则化,其中正则化系数为 $ \lambda = 0.0005 $ 。 - 两个层的输入,以及
normalized attention coefficient
都使用了 $ p=0.6 $ (遗忘比例)的dropout
。即每轮迭代时,每个节点需要随机采样邻居(因为有些邻居被dropout
了)。
- 我们采用
对于
60
个样本的Pubmd
数据集,我们需要对GAT
架构进行微调:- 输出为
$ K=8 $ 个attention head
,而不是一个。 $ L_2 $ 正则化系数为 $ \lambda = 0.001 $ 。
除此之外都和
Cora/Citeseer
的一样。- 输出为
所有模型都采用
Glorot
初始化方式来初始化参数,优化目标为交叉熵,使用Adam SGD
优化器来优化。初始化学习率为:Pubmed
数据集为0.01
,其它数据集为0.005
。我们在所有任务上执行早停策略,在验证集上的交叉熵和
accuracy
如果连续100
个epoch
没有改善,则停止训练。
我们报告了
GAT
随机执行100
次实验的分类准确率的均值以及标准差,也使用了GCN
和Monet
报告的结果。对基于切比雪夫过滤器的方法,我们提供了
$ K=2,K=3 $ 阶过滤器的最佳结果。我们进一步评估了
GCN
模型,其隐层为64
维,同时尝试使用ReLU
和ELU
激活函数,并记录执行100
次后效果最好的那个(实验表明ReLU
在所有三个数据集上都最佳),记作GCN-64*
。结论:
GAT
在Cora
和Citeseer
上超过GCN
分别为1.5%, 1.6%
,这表明为邻域内节点分配不同的权重是有利的。
9.2.2 Inductinve learning
数据集:
protein-protein interaction: PPI
数据集,该数据集包含了人体不同组织的蛋白质的24
个图。其中20
个图为训练集、2
个图为验证集、2
个图为测试集。至关重要的是,这里测试的图在训练期间完全未被观测到。我们使用
GraphSAGE
提供的预处理数据来构建图,每个图的平均节点数量为2372
个,每个节点50
维特征,这些特征由positional gene sets, motif gene sets, immunological signatures
组成。从
Molecular Signatuers Database
收集到的gene ontology
有121
种标签,这里每个节点可能同时属于多个标签。Baseline
模型:我们对比了四个不同版本的监督GraphSAGE
模型,它们提供了多种方法来聚合采样邻域内的节点特征:GraphSAGE-GCN
:将图卷积方式的操作扩展到归纳式setting
。GraphSAGE-mean
:取特征向量的逐元素均值来聚合。GraphSAGE-LSTM
:通过将邻域特征馈入LSTM
来聚合。GraphSAGE-pool
:采用共享非线性多层感知机转换后的特征向量的逐元素最大池化来聚合。
剩下的
transductinve
方法要么完全不适用于inductive
的情形,要么无法应用于在训练期间完全看不到测试图的情形,如PPI
数据集。我们还提供了每个节点共享
MLP
分类器的性能,该模型完全没有利用图的结构信息。参数配置:
我们使用一个三层
GAT
模型:第一层包含
$ K=4 $ 个attention head
,每个head
得到 $ F^\prime = 256 $ 个特征,总计1024
个特征。第一层后面接一个exponential linear unit:ELU
非线性激活层。第二层和第一层配置相同。
第三层为输出层,包含
$ K=6 $ 个attention head
,每个head
得到121
个特征。我们对所有
head
取平均,并后接一个sigmoid
激活函数。
由于该任务的训练集足够大,因此我们无需执行
$ L_2 $ 正则化或者dropout
。我们在
attention layer
之间应用skip connection
。训练的
batch size = 2
,即每批2
个graph
。为评估
attention
机制的效果,我们提供了一个注意力得分为常数的模型进行对比( $ a(x,y) = 1 $ ),其它结构不变。所有模型都采用
Glorot
初始化方式来初始化参数,优化目标为交叉熵,使用Adam SGD
优化器来优化。初始化学习率为:Pubmed
数据集为0.01
,其它数据集为0.005
。我们在所有任务上执行早停策略,在验证集上的交叉熵和
micro-F1
如果连续100
个epoch
没有改善,则停止训练。
我们报告了模型在测试集(两个从未见过的
Graph
)上的micro-F1
得分。我们随机执行10
轮 “训练--测试”,并报告这十轮的均值。对于其它基准模型,我们使用GraphSAGE
报告的结果。具体而言,由于我们的setting
是有监督的,我们将与有监督的GraphSAGE
方法进行比较。为了评估聚合整个邻域的好处,我们进一步提供了
GraphSAGE
架构的最佳结果,记作GraphSAGE*
。这是通过一个三层GraphSAGE-LSTM
得到的,三层维度分别为[512,512,726]
,最终聚合的特征为128
维。最后,我们报告常数的注意力系数为
Const-GAT
的结果。结论:
GAT
在PPI
数据集上相对于GraphSAGE
的最佳效果还要提升20.5%
,这表明我们的模型在inductive
任务中通过观察整个邻域可以获得更大的预测能力。- 相比于
Const-GAT
,我们的模型提升了3.9%
,这再次证明了为不同邻居分配不同权重的重要性。
注意:这里作者并未给出超参数研究的实验分析,包括:
GAT
层数、multi-head
数量、是否使用skip connection
等等。
9.2.3 可视化
学到的
feature representation
也可以进行定性研究。为此,我们采用t-SNE
对学到的特征进行可视化。我们对Cora
数据集训练的GAT
模型的第一层的输出进行可视化,该representation
在投影到的二维空间中表现出明显的聚类。这些簇对应于数据集的七种类别,从而验证了模型的分类能力。此外我们还可视化了归一化注意力系数的相对强度(在所有
8
个attention head
上的均值)。如何正确的解读这些系数需要有关该数据集的进一步的领域知识。下图中:颜色表示节点类别,线条粗细代表归一化的注意力系数均值:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论