数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
二、GNN : A Review of Methods and Applications [2018]
摘要:很多学习任务需要处理包含元素之间丰富的关系信息的图数据。图神经网络
Graph Neural Networks:GNNs
是连接主义的模型connectionist model
,它通过图上节点之间的消息传递来捕获图的依赖关系。与标准的神经网络不同,图神经网络保留了一个状态,该状态能够代表来自任意深度的邻域的信息。尽管发现原始GNN
难以训练得到一个不动点fixed point
,但是网络体系结构、优化技术、并行计算的很多最新进展使得图神经网络能够成功地学习。近年来基于图神经网络的变体,如图卷积神经网络
Graph Convolutional Network: GCN
、图注意力网络Graph Attention Network: GAT
、图门控神经网络gated graph neural network: GGNN
已经在很多任务上展现了突破性的性能。引言:图
Graph
是一种数据结构,可用于一组对象(节点)及其关系(边)进行建模。近年来,由于图的强大表示能力,图的分析和研究受到越来越多的关注。作为机器学习中唯一的非欧几何数据结构,图分析重点关注于节点分类、链接预测、聚类。图神经网络Graph Neural Networks: GNN
是在图上执行的、基于深度学习的方法。由于GNN
令人信服的性能和高解释性,GNN
最近已经成为一种广泛应用的图分析方法。采用
GNN
有以下的动机motivation
:GNN
第一个动机源于卷积神经网络CNN
。CNN
可以提取多尺度局部空间特征,并将其组合以构建高度表达能力的representation
。这导致了几乎所有机器学习领域的突破,并开启了深度学习的新时代。随着我们对
CNN
和图的深入研究,我们发现CNN
的关键特性:局部链接、权重共享、使用multi-layer
。这些对于解决图领域的问题也非常重要,因为:- 图是最典型的局部连接结构。
- 和传统的谱图理论
spectral graph theory
相比,共享权重降低了计算成本。 multi-layer
结构是处理层级模式hierarchical pattern
的关键,它捕获了各种尺度的特征。
但是,
CNN
只能处理诸如图像(2D
网格)、文本(1D
序列)之类的常规欧氏空间的数据。一种直觉的想法是将CNN
推广到图数据上。然而,很难在图上定义局部卷积操作和池化操作,这阻碍了CNN
应用到非欧空间的图上。GNN
第二个动机来自于graph embedding
。graph embedding
学习图的节点、边或者子图subgraph
的representatation
低维向量。在图分析领域,传统机器学习方法通常依赖于人工设计的特征,这种方式灵活性较差、成本很高。 结合表示学习
representation learning
思想以及word embedding
的做法,DeepWalk
是第一种基于表示学习的graph embedding
方法,它将SkipGram
模型应用于图上生成的随机游走序列。类似的方法,如node2vec,LINE, TADW
也取得了突破。但是,这些方法有两个严重不足:
- 首先,编码器中的节点之间没有共享参数,这导致计算效率较低。因为这意味着参数数量随着节点数量线性增加。
- 其次,直接
embedding
的方法缺少泛化能力,这意味着它们无法处理动态图,也无法泛化到新的图上。
基于
CNN
和graph embedding
,人们提出了GNN
来聚合图结构中的信息,从而可以对节点及其关联进行建模。论文
《Graph Neural Networks: A Review of Methods and Applications》
对现有的图神经网络模型进行详细的综述,并解释了GNN
值得研究的根本原因:首先,像
CNN/RNN
这样的标准神经网络无法正确处理图输入,因为它们按照特定顺序堆叠了节点特征。但是,图的节点没有自然顺序natural order
。为了解决这个问题,GNN
分别在每个节点上传播,从而忽略了节点的输入顺序。即:GNN
的输出对于节点的输入顺序是不变的。其次,图的边表示两个节点的依赖关系。在标准神经网络中,依赖关系仅被视为节点的特征。但是,
GNN
可以通过图结构进行传播,而不必将其用作特征的一部分。第三,推理
reasoning
是高级人工智能的一个非常重要的研究课题,人脑的推理过程几乎是基于从日常经验中提取的图。标准的神经网络已经显示出通过学习数据的分布来生成合成的synthetic
图像和文档的能力,但是它们仍然无法从大型数据中学习reasoning graph
。而
GNN
试图从诸如场景图片、故事文档之类的非结构化数据生成graph
,这可以作为进一步的高级人工智能的强大神经网络模型。最近,已经证明具有简单架构的、未经训练的
GNN
也可以很好地发挥作用。
论文贡献:
- 论文对现有的图神经网络模型进行了详细的回顾。作者介绍了原始模型、变体、以及若干个通用框架。作者研究了这一领域的各种模型,并提供了一个
unified representation
来展示不同模型中的不同propagation
步骤。通过识别相应的aggregator
和updater
,人们可以很容易地区分不同的模型。 - 论文对应用进行了系统的分类,将应用分为结构性场景、非结构性场景和其他场景。在每个场景下,论文提出了几个主要的应用和相应方法。
- 论文提出了未来研究的四个开放性问题。图神经网络存在
over-smoothing
和scaling
问题。目前还没有有效的方法来处理动态图以及非结构化的感官数据non-structural sensory data
的建模。作者对每个问题进行了深入分析,并提出了未来的研究方向。
2.1 模型
2.1.1 GNN
GNN
的概念第一次是在论文《The graph neural network model》
中被提出,它用于处理图数据并扩展了现有的神经网络。GNN
的目标是:对于每个节点 $ v\in \mathcal V $ ,学习一个状态嵌入state embedding
向量 $ \mathbf{\vec h}_v\in \mathbb R^s $ ,其中包含节点的输入特征以及邻域信息。 状态embedding
进一步地可以用于产生节点 $ v $ 的输出向量 $ \mathbf{\vec o}_v\in \mathbb R^{d_o} $ ,如节点的label
。其中 $ s $ 为embedding
维度, $ d_o $ 为输出向量维度。GNN
定义了两个函数:- 定义
$ f(\cdot) $ 为一个可学习的函数,称作局部转移函数local transition function
。它在所有节点之间共享,并根据每个节点的输入特征和邻域来更新节点状态向量。 - 定义
$ g(\cdot) $ 为一个可学习的函数,称作局部输出函数local output function
。它也在所有节点之间共享,并根据每个节点的状态向量来计算节点输出。
其中函数
$ f(\cdot) $ 和 $ g(\cdot) $ 可以解释为前馈神经网络。根据这两个函数,则
GNN
的更新方程为:其中:
$ \mathbf{\vec x}_v^{\mathcal V} $ 为节点 $ v $ 的输入特征, $ \mathbf{\vec x}_{u,v}^\mathcal E $ 为边 $ (u,v) $ 的输入特征。 $ \left\{\mathbf{\vec x}_{u,v}^{\mathcal E},(u,v)\in \mathcal E\right\} $ 为节点 $ v $ 所有边的输入特征。 $ \left\{\mathbf{\vec x}_u^\mathcal V,u\in \mathcal N_v\right\} $ 为节点 $ v $ 所有邻域节点的特征, $ \mathcal N_v $ 为节点邻域集合。 $ \left\{\mathbf{\vec h}_u,u\in \mathcal N_v\right\} $ 为节点 $ v $ 所有邻域节点的状态向量。
- 定义
令
$ \mathbf H\in \mathbb R^{N\times s} $ 为所有节点的状态向量组成的矩阵,称作状态矩阵;令 $ \mathbf O\in \mathbb R^{N\times d_o} $ 为所有节点的输出向量组成的矩阵,称作输出矩阵;令 $ \mathbf X\in \mathbb R^{N\times d_a} $ 为所有特征向量(包含边的特征、邻域特征)组成的矩阵,称作特征矩阵;令 $ \mathbf X_V $ 为所有节点的特征向量组成的矩阵,称作节点特征矩阵。其中 $ N $ 为节点数量。则上式转化为:其中:
$ F(\cdot,\cdot ) $ 被称作全局转移函数global transition function
,它是考虑图上所有节点的 $ f(\cdot) $ 函数而来。 $ G(\cdot,\cdot) $ 被称作全局输出函数global output function
,它是考虑图上所有节点的 $ g(\cdot) $ 函数而来。
实际上
$ \mathbf H $ 是公式 $ \mathbf H = F(\mathbf H, \mathbf X) $ 中的不动点,并且仅当 $ F(\cdot,\cdot ) $ 是一个收缩映射contraction map
才有定义。基于
Banach
不动点理论,GNN
使用以下经典的迭代方案来计算状态矩阵:其中
$ \mathbf H^{(t)} $ 表示 $ \mathbf H $ 的第 $ t $ 次迭代。对于任何初始化值 $ \mathbf H^{(0)} $ ,该迭代方程以指数形式快速收敛。当得到
GNN
框架时,下一个问题是如何学习 $ f(\cdot), g(\cdot) $ 的参数。基于监督信息,损失函数可以为:
其中:
$ N_l $ 为带标签的节点数量。 $ \mathbf{\vec t}_i $ 为节点 $ v_i $ 的标签经过one-hot
之后的向量。 $ \mathbf{\vec o}_i $ 为节点 $ v_i $ 的输出向量。 $ l(\cdot,\cdot) $ 为单个样本的损失。
然后我们基于梯度下降法按照以下步骤来进行学习:
通过公式
$ \mathbf{\vec h}_v =f(\cdot) $ 迭代更新 $ T $ 轮从而得到近似的不动点: $ \mathbf H^{(T)} \simeq \mathbf H $ 。然后从损失函数中计算权重
$ \mathbf W $ 的梯度 $ \nabla_{\mathbf W} \mathcal L $ 。 $ \mathbf W $ 是 $ f(\cdot) $ 和 $ g(\cdot) $ 的参数。根据梯度来更新权重
$ \mathbf W $ : $ \mathbf W \leftarrow \mathbf W -\eta \nabla_{\mathbf W} \mathcal L $ 。
尽管实验结果表明
GNN
是用于对图结构数据建模的强大工具,但是原始GNN
仍然存在一些局限性:- 首先,迭代不动点从而更新节点状态的效率太低。如果放松不动点的假设,则我们可以设计一个多层
GNN
来获得节点及其邻域的stable representation
。 - 其次,
GNN
在迭代 不动点过程中使用相同的参数。但是,流行的神经网络在不同的layer
使用不同的参数,这是一种层次hierarchical
特征提取方法。 - 第三,边上存在一些信息特征,这些特征无法在原始
GNN
中有效建模。例如,异质图中包含不同类型的边,那么不同类型边的消息传播应该有所不同。 - 最后,如果我们专注于节点的
representation
而不是图的representation
,则不动点并不合适。因为不动点的representation
分布过于平滑,使得难以很好地区分不同的节点。
- 首先,迭代不动点从而更新节点状态的效率太低。如果放松不动点的假设,则我们可以设计一个多层
2.1.2 GNN 变体
GNN
的变体有三类:基于图类型的变体Graph Types
、基于传播步骤的变体Propagation Step
、基于训练方法的变体Training Methods
。下图概括了这三类变体。
a. Graph Types
原始
GNN
中,输入图由带标签信息的节点以及无向边组成,这是最简单的图。下面我们介绍针对不同类型的图进行建模的方法。有向图:有向边相比无向边可以带来更多的信息。在知识图谱中,边从
head entity
指向tail entity
,表示head entity
是tail entity
的父节点。这表明我们应该区别对待head entity
(父节点)和tail entity
(子结点)。DGP
(《Rethinking knowledge graph propagation for zero-shot learning》
)使用两种权重矩阵 $ \mathbf W_p,\mathbf W_c $ 来获得更精确的结构信息,其传播规则为:其中:
$ \mathbf H^{(t)} $ 为第 $ l $ 层的representation
矩阵。 $ \sigma(\cdot) $ 为sigmoid
函数。 $ \mathbf D_p^{-1}\mathbf A_p $ 为父节点的归一化邻接矩阵, $ \mathbf D_c^{-1} \mathbf A_c $ 为子结点的归一化邻接矩阵。其中
$ \mathbf A_p $ 表示节点和其父节点的邻接矩阵, $ \mathbf A_c $ 为节点和其子结点的邻接矩阵,且满足 $ \mathbf A_p = \mathbf A_c^\top $ 。 $ \mathbf W_p $ 为父节点的参数矩阵, $ \mathbf W_c $ 为子结点的参数矩阵。
异质图:异质图存在多种类型的节点。
- 处理异质图最简单的方法是将节点类型转换为
one-hot
向量,然后拼接这个one-hot
向量到节点原始特征向量之后作为节点新的特征向量。 - 此外,
GraphInception
将metapath
的概念引入到异质图传播过程中。通过metapath
,我们可以根据邻居节点的类型、邻居节点距当前节点的距离来对邻居节点进行分组。对于每个分组,GraphInception
将其视为同质图中的子图进行传播,并将不同分组的传播结果拼接起来作为邻域节点集合的representation
。 - 最近,
heterogeneous graph attention network: HAT
提出利用node-level
注意力和semantic-level
注意力来同时考虑节点重要性和meta-path
重要性。
- 处理异质图最简单的方法是将节点类型转换为
边信息:在图的另一类变体中,每条边都带有边信息,如边的权重或类型。对于带边信息的图,有两种处理方式:
首先,可以将图转换为二部图,其中原始边变成节点(称作
edge node
),并且一条原始边被拆分为两条新边。这意味着edge node
分别和原始边的开始节点、结束节点都存在连接。其次,我们可以对不同类型的边上的传播使用不同的权重矩阵。在
G2S
(《Graph-to-sequence learning using gated graph neural networks》
) 中,encoder
使用如下的聚合函数:其中:
$ \mathbf{\vec h}_v^{(l)} $ 为节点 $ v $ 在第 $ l $ 层的representation
向量。 $ \rho(\cdot) $ 为非线性激活函数。 $ \mathcal N_v $ 为节点 $ v $ 的邻域。 $ \mathbf W_r, \mathbf{\vec b}_r $ 为不同边类型的权重(从而考虑边的类型信息)。 $ \mathbf{\vec r}_v^{(l)} $ 为reset gate
。
当边的类型非常多时,
R-GCN
引入了两种正则化来减少关系建模的参数数量:基分解basis-decomposition
、块对角分解block-diagonal-decomposition
。对于基分解,每个
$ \mathbf W_r $ 定义为: $ \mathbf W_r = \sum_{i=1}^B a_{r,b} \mathbf V_b $ 。其中每个
$ \mathbf W_r $ 是基转换权重basis transformation
$ \mathbf V_b $ 的线性组合,组合的系数为 $ a_{r,b} $ 。对于块对角分解,
R-GCN
通过一组低维矩阵直接求和来定义每个 $ \mathbf W_r $ 。和基分解相比,块对角分解需要更多的参数。
动态图:动态图具有静态图结构和动态输入信号。
- 为捕获这两种信息,
DCRNN
和STGCN
首先通过GNN
收集空间信息spatial information
,然后将输出馈送到序列模型(如sequence-to-sequence
或者CNN
) 从而捕获时序信息temporal information
。 - 不同的是,
Structure-RNN
和ST-GCN
同时收集空间信息和时序信息。它们通过时序连接temporal connnection
扩展了静态图结构,因此可以在扩展图上应用传统的GNN
。
- 为捕获这两种信息,
b. Propagation Step
在模型中,
propagation step
和output step
对于获取节点(或边)的representation
至关重要。对于output step
而言,通常都采用和原始GNN
相同的、简单的前馈神经网络。但是对于propagation step
,已经有很多种不同于原始GNN
的修改,如下表所示。这些变体利用不同的聚合器
aggregator
从每个节点的邻域聚合消息,并使用不同的更新器updater
来更新节点的hidden state
。Convolution
:近期卷积被应用到图领域,其中主要分为谱域卷积spectral convolution
和空间卷积spatial convolution
。谱域卷积使用图的谱域表示:
Spectral Network
:论文
《Spectral networks and locally connected networks on graphs》
提出了谱域网络spectral network
。它通过对图的拉普拉斯算子执行特征分解eigendecomposition
,从而在傅里叶域Fourier domain
定义卷积运算。定义图卷积算子
$ *_G $ 为:其中:
$ \mathbf{\vec x}_1,\mathbf{\vec x}_2\in \mathbb R^N $ 为定义在图 $ G $ 所有节点上的两个信号。每个信号在每个节点上都是一个标量(如,特征向量的某个维度)。 $ \mathbf U $ 为图拉普拉斯矩阵 $ \mathbf L $ 的特征向量eigenvector
组成的矩阵 。- 图拉普拉斯矩阵
$ \mathbf L = \mathbf I - \mathbf D^{-1/2}\mathbf A \mathbf D^{-1/2} $ , $ \mathbf A $ 为邻接矩阵, $ \mathbf D $ 为度矩阵。
定义谱域卷积核为
$ \mathbf K = \text{diag}(g(\lambda_1),\cdots,g(\lambda_N))\in \mathbb R^{N\times N} $ 为一个对角矩阵,其对角线元素为拉普拉斯矩阵 $ \mathbf L $ 的特征值eigenvalue
$ \lambda_i $ 的函数 $ g(\lambda_i) $ 。其中 $ g(\lambda_i) $ 包含可学习的参数。因此作用在输入信号
$ \mathbf{\vec x}\in \mathbb R^N $ 的卷积运算为:其中
$ \mathbf{\vec x}^\prime $ 为输出信号。这种卷积操作的计算复杂度太高,并且得到的滤波器是非空间局部化的
non-spatially localized
。因此,《Deep convolutional networks on graph-structured data》
试图通过引入具有平滑系数的参数来使得谱域滤波器在空域是局部化的。ChebNet
:《Wavelets on graphs via spectral graph theory》
提出 $ g(\lambda_i) $ 可以通过一个截断的 $ K $ 阶切比雪夫多项式来近似。则有:其中:
$ \tilde{\mathbf L} = \frac{2}{\lambda_\max}\mathbf L - \mathbf I $ , $ \lambda_\max $ 为 $ \mathbf L $ 的最大特征值。 $ \theta_k $ 为 $ k $ 阶切比雪夫多项式的系数。 $ \mathbf T_k(x) $ 为 $ k $ 阶切比雪夫多项式, $ \tilde{\mathbf{\vec x}}_k = \mathcal T_k(\tilde{\mathbf L}) \mathbf{\vec x} $ 。
根据切比雪夫多项式的递归定义,有:
因此有:
可以看出该卷积操作是拉普拉斯矩阵的
$ K $ 阶多项式,因此它是K
阶局部化的K-localized
。《Convolutional neural networks on graphs with fast localized spectral filtering》
提出了ChebNet
,它利用这种K-localized
卷积运算来定义卷积神经网络,从而避免计算拉普拉斯矩阵的特征向量eigenvector
。GCN
:《Semi-supervised classification with graph convolutional networks》
通过限制K=1
,从而缓解在节点degree
分布范围非常广的图中局部邻域结构上的过拟合问题。进一步地它假设 $ \lambda_\max = 2 $ ,因此卷积操作简化为:其中包含两个参数
$ \theta_0,\theta_1 $ 。为减少参数数量并令
$ \theta = \theta_0 = -\theta_1 $ ,则有:注意,堆叠该卷积算子可能会导致数值不稳定性以及梯度消失、梯度爆炸。因此,
GCN
引入renormalization
技巧:其中
$ \tilde{\mathbf A } = \mathbf A + \mathbf I $ , $ \tilde {\mathbf D} = \text{diag}(\tilde D_{1},\cdots,\tilde D_N), \tilde D_i = \sum_j \tilde A_{i,j} $ 。最终,
GCN
将上述卷积算子推广到信号 $ \mathbf X \in \mathbb R^{N\times C} $ ,其中包含 $ C $ 的输入通道(即 $ C $ 个输入信号),以及 $ F $ 个滤波器(即 $ F $ 个输出信号):其中:
$ \mathbf Z\in \mathbb R^{N\times F} $ 为卷积输出矩阵, $ \mathbf\Theta\in \mathbb R^{C\times F} $ 为滤波器参数矩阵。这里的输入通道数量
$ C $ 就是节点的特征向量的维度。上述所有方法均使用原始图结构来表明节点之间的关系,然而不同节点之间可能存在隐式关系。为此,
《Adaptive graph convolutional neural networks》
提出了Adaptive Graph Convolution Network:AGCN
来学习潜在关系。AGCN
学习一个残差residual
图的拉普拉斯算子,并将该残差图的拉普拉斯算子添加到原始的图拉普拉斯算子中。结果在多个图数据集中证明了AGCN
的有效性。另外
《Bayesian semi-supervised learning with graph gaussian processes》
提出了一种基于高斯过程的贝叶斯方法Gaussian process-based Bayesian approach:GGP
来解决半监督学习问题。它展示了GGP
和谱域卷积方法之间的相似之处,这可能会从另一个角度为我们提供一些洞察。
但是,上述所有谱域方法中,学习的滤波器都取决于拉普拉斯矩阵的特征根
eigenbasis
,而拉普拉斯特征根取决于图结构。即,在特定结构的图上训练的模型无法直接应用于具有不同结构的其它图上。空域卷积直接在图上定义卷积,并在空间上相邻的邻域上进行计算。空域方法的主要挑战是:为具有不同大小邻域的节点定义卷积运算,并保持
CNN
的局部不变性。Neural FPs
:《Convolutional networks on graphs for learning molecular fingerprints》
对不同degree
的节点使用不同的权重矩阵:其中
$ \mathbf W^{(l,|\mathcal N_v|)} $ 为第 $ l $ 层对应于degree
为 $ |\mathcal N_v| $ 的节点的权重矩阵。该方法的主要缺点是无法应用于节点
degree
范围很广的大型图。DCNN
:《Diffusion-convolutional neural networks》
提出diffusion-convolutional neural networks: DCNN
,它利用转移矩阵来定义节点邻域。对于节点分类问题,有:其中:
$ \mathbf X\in \mathbb R^{N\times F} $ 为输入特征矩阵,F
为节点特征向量的维度。 $ \mathbf P^{(*)}\in \mathbb R^{N\times K\times N} $ 包含了转移矩阵 $ \mathbf P $ 的一组幂次: $ \left\{\mathbf P, \cdots,\mathbf P^K\right\} $ 。 $ \mathbf P= \mathbf D^{-1}\mathbf A $ 是归一化的转移概率矩阵, $ P_{i,j} $ 表示从节点 $ v_i $ 经过一步转移到节点 $ v_j $ 的概率。因此 $ \mathbf P^k $ 中的 $ \left(\mathbf P^k\right)_{i,j} $ 表示节点 $ v_i $ 经过 $ k $ 步转移到节点 $ v_j $ 的概率。 $ \mathbf W^{(c)}\in \mathbb R^{K\times F} $ 为权重矩阵。 $ \mathbf H\in \mathbb R^{N\times K\times F} $ 为图上每个节点的diffusion representation
。 $ \sigma(\cdot) $ 为非线性激活函数, $ \odot $ 为逐元素乘积。
对于图分类任务,
DCNN
简单地将节点的representation
取平均:其中
$ \mathbf{\vec 1}^\top = (\underbrace{1,1,\cdots,1}_N)^\top $ 为全1
的向量。DCNN
也可以用于边分类任务,只需要将边转换为节点并调整邻接矩阵即可。DGCN
:《Dual graph convolutional networks for graph-based semi-supervised classification》
提出了dual graph convolutional network:DGCN
来同时考虑图的局部一致性和全局一致性。它使用两个卷积网络来捕获局部一致性和全局一致性,并采用无监督损失来集成ensemble
它们。第一个卷积网络和
GCN
相同: $ \mathbf Z = \tilde{\mathbf D}^{-1/2}\tilde{\mathbf A} \tilde{\mathbf D}^{-1/2} \mathbf X \mathbf\Theta $ 。第二个卷积网络使用
positive pointwise mutual information:PPMI
矩阵代替邻接矩阵:其中:
$ \mathbf X_P $ 为PPMI
矩阵, $ \mathbf D_P $ 为 $ \mathbf X_P $ 的degree
矩阵。
PATCHY-SAN
:PATCHY-SAN
模型为每个节点提取并归一化邻域,其中邻域刚好包含 $ k $ 个邻居节点。然后,归一化的邻域作为常规卷积运算的感受野receptive field
。LGCN
:LGCN
利用CNN
作为聚合器。它对节点的邻域矩阵进行最大池化,并获取top-k
个特征,然后应用一维卷积来计算hidden representation
。MoNet
:MoNet
推广了前面的几种技术。在流形manifold
上的Geodesic CNN:GCNN
和Anisotropic CNN:ACNN
、在图上的GCN,DCNN
都可以视为MoNet
的特例。GraphSAGE
:GraphSAGE
提出了一个通用的inductive
框架,它通过对节点的局部邻域特征进行采样和聚合来生成节点embedding
:其中
$ || $ 表示向量拼接。但是,
GraphSAGE
并没有使用节点邻域中的所有节点来计算 $ \mathbf{\vec h}^{(l)}_{\mathcal N_v} $ ,而是通过均匀随机采样来获取固定大小的采样邻域。另外,GraphSAGE
采用了三种聚合函数:均值聚合:
均值聚合和其它两种聚合不同,因为它并没有将
$ \mathbf{\vec h}_v^{(l-1)} $ 和 $ \mathbf{\vec h}_{\mathcal N_v}^{(l)} $ 进行拼接的操作。它可以视为skip connection
的一种形式,并可以实现更好的性能。LSTM
聚合:AGG
使用表达能力很强的LSTM
网络。但是,LSTM
处理序列数据,因此并不是排列不变的permutation invariant
。LSTM
通过对节点邻域随机排序从而应用于无序的邻域集合。池化聚合:
AGG
使用最大池化:.
Gate
:有一些工作试图在传播step
中引入门控机制(类似于GRU/LSTM
),从而减少之前GNN
模型中的缺陷,并改善信息在整个图结构中的long-term
传播。GGNN
:《Gated graph sequence neural networks》
提出了gated graph neural network:GGNN
,它在传播阶段使用Gate Recurrent Units:GRU
,展开unroll
固定的T
个递归步并通过backpropagation through time:BPTT
计算梯度。具体而言,传播模型的基本递归
basic recurrence
公式为:其中:
$ \mathbf{\vec a}_v^{(t)} $ 收集了节点 $ v $ 的邻域信息, $ \mathbf{\vec z}_v^{(t)} $ 为更新门update gate
, $ \mathbf{\vec r}_v^{(t)} $ 为恢复门reset gate
。节点
$ v $ 首先聚合来自其邻域的消息,其中 $ \mathbf A_v $ 表示邻接矩阵 $ \mathbf A $ 的子矩阵,表示节点 $ v $ 和它邻居的连接。类似于GRU
的更新函数结合了来自其它节点的信息和上一个时间步的信息,从而更新每个节点的hidden state
。Tree-LSTM
:在基于树或图的传播过程中,
LSTM
也以GRU
相似的方式使用。《Improved semantic representations from tree-structured long short-term memory networks》
提出基于LSTM
的两个扩展:Child-Sum Tree-LSTM
和N-ary Tree-LSTM
。类似于标准的
LSTM
单元,每个Tree-LSTM
单元(由 $ v $ 索引)都包含输入门input gate
$ \mathbf{\vec i}_v $ 、输出门output gate
$ \mathbf{\vec o}_v $ 、memmory cell
$ \mathbf{\vec c}_v $ 以及hidden state
$ \mathbf{\vec h}_v $ 。但是,Tree-LSTM
单元对于每个child
$ k $ 包含一个遗忘门forget gate
$ \mathbf{\vec f}_{v,k} $ ,而不是单个遗忘门,这使得单元可以有选择地融合每个child
的信息。Child-Sum Tree-LSTM
递归方程如下:其中
$ \mathbf{\vec x}_v^{(t)} $ 为标准LSTM
中时刻 $ t $ 的输入向量。这里的
LSTM
作用的是节点的状态序列,而GraphSAGE
中的LSTM
作用的是节点的邻域。如果树的分支因子最多为
$ K $ ,并且节点的所有子节点均已排序,即它们可以从1,...,K
进行索引,则可以使用N-ary Tree-LSTM
。对于节点
$ v $ , $ \mathbf{\vec h}_{v,k}^{(t)},\mathbf{\vec c}_{v,k}^{(t)} $ 表示它的第 $ k $ 个chid
在时刻 $ t $ 的hidden state
和memory cell
。N-ary Tree-LSTM
的递归方程如下:和
Child-Sum Tree-LSTM
相比,N-ary Tree-LSTM
为每个child
$ k $ 引入单独的参数矩阵,使得模型可以学习更多关于每个单元的child
的细粒度表示。这两种类型的
Tree-LSTM
可以轻松地应用于图。
Graph LSTM
:《Conversation modeling on reddit using a graph-structured lstm》
中的graph-structured LSTM
是N-ary Tree-LSTM
应用于图上的例子。但是它是简化版本,因为图中的每个节点最多具有
2
个入边incoming edge
(从它的父亲parent
以及同辈的前驱sibling predecessor
)。《Cross-sentence n-ary relation extraction with graph lstms》
基于关系抽取任务提出了Graph LSTM
的另一种变体。图和树之间的主要区别在于图的边具有标签
label
,因此该论文使用不同的权重矩阵来表示不同label
的边:其中
$ m(v,k) $ 表示节点 $ v $ 和节点 $ k $ 之间的边标签edge label
。《Sentence-state lstm for text representation》
提出了用于改进text encoding
的Sentence LSTM:S-LSTM
。它将文本转换为图,并利用Graph LSTM
来学习representation
。S-LSTM
在很多NLP
问题中展现出强大的表示能力。《Semantic object parsing with graph lstm》
提出了一种Graph LSTM
网络来解决语义对象解析任务semantic object parsing task
。它使用置信度驱动方案confidence-driven scheme
来自适应地选择开始节点并决定节点更新顺序。它遵循相同的思想来推广LSTM
到图结构数据上,但是具有特定的更新顺序。而我们上述提到的方法和节点的顺序无关。
Attention
:注意力机制已经成功地应用于很多sequence-based
任务,例如机器翻译、机器阅读等。《Graph attention networks》
提出了graph attention network: GAT
从而将注意力机制融合到传播步骤。它采用self-attention
机制,通过关注节点的邻域来计算节点的hidden state
。GAT
定义一个graph attention layer
,并通过堆叠多个graph attention layer
来构建graph attention network
。该层通过以下方式计算节点pair
对 $ (i,j) $ 在注意力机制中的注意力系数:其中:
graph attention layer
的输入为节点的特征集合 $ \left\{\mathbf{\vec h}_1,\cdots,\mathbf{\vec h}_N\right\} $ ,其中 $ \mathbf{\vec h}_i\in \mathbb R^F $ , $ F $ 为特征维度, $ N $ 为节点数量。graph attention layer
的输出为节点的新的特征集合 $ \left\{\mathbf{\vec h}_1^\prime,\cdots,\mathbf{\vec h}_N^\prime\right\} $ ,其中 $ \mathbf{\vec h}_i^\prime \in \mathbb R^{F^\prime} $ , $ F^\prime $ 为新的特征维度。其中: $ \sigma(\cdot) $ 非非线性激活函数。 $ \mathbf W\in \mathbb R^{F^\prime\times F} $ 为权重矩阵,它在所有节点之间共享。 $ \mathbf{\vec a}\in \mathbb R^{2F^\prime} $ 为单层feedforward neural network
的权重。 $ || $ 为向量拼接。 $ \alpha_{i,j} $ 为节点 $ j $ 对于节点 $ i $ 的attention
系数。它满足: $ \sum_{j\in \mathcal N_i} \alpha_{i,j} = 1.0,\quad 0\lt \alpha_{i,j}\lt 1.0 $ 。
此外,
GAT
利用multi-head attention
来稳定学习过程。它使用 $ K $ 个独立的注意力机制来计算hidden state
,然后将这 $ K $ 个hidden state
拼接起来(或均值聚合),从而得到以下两种形式的representation
:其中
$ \alpha_{i,j}^{(k)} $ 为第 $ k $ 个attention
计算到的注意力系数。GAT
的注意力架构具有几个特点:- 节点-邻居
pair
对的计算是可并行的,因此计算效率很高。 - 通过为邻域指定不同的权重,因此可以应用于不同
degree
的节点。 - 可以轻松地应用于
inductive learning
。
GANN
:除了GAT
之外,Gated Attention Network:GAAN
也是用multi-head
注意力机制。但是,它使用self-attention
机制从不同的head
收集信息,而不是像GAT
那样拼接或者取平均。即每个head
的重要性不同。
Skip connection
:很多应用application
会堆叠多层神经网络从而预期获得更好的结果。因为更多的层,比如 $ K $ 层,可以使得每个节点从其 $ K $ 阶邻域中收集到更多的信息。但是,很多实验发现更深层的模型无法提高性能甚至表现更差。这主要是因为更深的层也可以指数级地传播噪音信息。可以从计算机视觉社区找到一种直接的解决方案,即残差网络
residual network
。但是,即便使用残差连接,在很多数据集上具有多层的GCN
的性能也不如2
层GCN
更好。Highway GCN
:《Semi-supervised user geolocation via graph convolutional networks》
提出Highway GCN
,它使用类似于highway networks
的layer-wise gate
。layer
的输出和layer
的输入加权累加,权重由门控给出:通过增加
higthway gate
,4
层的Higthway GCN
在某些特定问题上性能最佳。论文
《Column networks for collective classification》
提出的Column Network:CLN
也使用highway network
,但是它使用不同的函数来计算门控权重。JK-Net
:《Representation learning on graphs with jumping knowledge networks》
研究了邻域聚合方案的特点以及邻域聚合导致的缺陷。该论文提出了Jump Knowledge Network:JK-Net
,它可以学习自适应adaptive
的 、结构感知structure-aware的
representation`。JK-Net
将节点的每一层中间representation
跳跃到最后一层,并在最后一层对这些中间representation
进行自适应地选择,从而使得模型可以根据需要自适应地调整每个节点的有效邻域大小。JK-Net
在实验中使用了三种聚合方式来聚合信息:拼接、最大池化、LSTM-attention
。它也可以和Graph Convolutional Network, GraphSAGE, Graph Attention Network
等模型结合,从而提升后者的性能。
Hierarchical Pooling
:在计算机视觉领域,卷积层之后通常跟着池化层从而获得更加泛化的特征。和视觉领域的池化层相似,有很多工作集中在图上的层次池化层hierarchical pooling layer
。复杂的大型图通常带有丰富的层次结构,这对于node-level
和graph-level
任务非常重要。为了探索这种内部特征
inner features
,Edge-Conditioned Convolution:ECC
设计了具有递归下采样操作的池化模块。下采样方法通过拉普拉斯矩阵的最大特征向量的符号将图划分为两个分量。DIFFPOOL
通过对每一层训练一个assignment
矩阵,从而提出了一个可学习的层次聚类模块:其中:
$ \mathbf X^{(l)} $ 为节点在 $ l $ 的feature
矩阵, $ \mathbf A^{(l)} $ 为第 $ l $ 层的粗化邻接矩阵coarsened adjacency matrix
。
c. Training Methods
原始的图卷积神经网络在训练和优化方法上存在缺陷:
- 首先,
GCN
需要完整的图拉普拉斯算子,这对于大型图来讲计算量太大。 - 其次,在第
$ L $ 层单个节点计算embedding
时需要该节点邻域所有节点在第 $ L-1 $ 层的embedding
。因此,单个节点的感受野相对于层数呈指数型增长,因此计算单个节点的梯度的代价很大。 - 最后,
GCN
针对给定的图训练,这缺乏inductive learning
能力。
- 首先,
Sampling
:GraphSAGE
:GraphSAGE
是原始GCN
的全面改进。为解决上述问题,GraphSAGE
用可学习的聚合函数替换了完整的图拉普拉斯算子,这是执行消息传递和泛化到未见过节点的关键:GraphSAGE
首先聚合邻域embedding
,然后和目标节点的embedding
拼接,最后传播到下一层。通过可学习的邻域聚合函数和消息传播函数,
GraphSAGE
可以泛化到未见过的节点。此外,
GraphSAGE
使用邻域采样来缓解感受野的扩张expansion
。PinSage
:PinSage
提出了基于重要性的采样方法。通过模拟从目标节点开始的随机游走,该方法选择了归一化访问次数top
$ T $ 个节点。FastGCN
:FastGCN
进一步改善了采样算法。FastGCN
不会为每个节点采样邻居,而是直接为每层采样整个感受野。FastGCN
也使用重要性采样,但是其重要性因子为:和上面固定的采样方法相反,论文
《Adaptive sampling towards fast graph representation learning》
引入了一个参数化、且可训练的采样器来执行以前一层为条件的逐层采样。此外,该自适应采样器可以找到最佳采样重要性并同时减少采样方差。SSE
:遵循强化学习,论文《Learning steady-states of iterative algorithms over graphs》
提出SSE
,它采用Stochastic Fixed-Point Gradient Descent
用于GNN
的训练。该方法将
embedding
更新视为值函数value function
。在训练期间,该算法将对节点进行采样以更新embedding
, 对标记节点采样以更新参数,二者交替进行。
Receptive Field Control
:《Stochastic training of graph convolutional networks with variance reduction》
通过利用节点的历史激活作为控制变量control variate
,提出了一种基于控制变量的GCN
随机近似算法。该方法限制了一阶邻域中的感受野,但使用历史hidden state
从而作为一个可接受的近似值。Data Augmentation
:《Deeper insights into graph convolutional networks for semi-supervised learning》
聚焦于GCN
的局限性,其中包括GCN
需要许多额外的标记数据用于验证集,并且还遭受卷积滤波器的局部性。为解决这些限制,作者提出了Co-Training GCN
以及Self-Training GCN
来扩大训练集。前者寻找训练标记样本的最近邻居,后者遵循类似boosting
的方法。Unsupervised training
:GNN
通常用于监督学习或半监督学习,最近有一种趋势是将自编码器auto-encoder:AE
扩展到图领域。图自编码器旨在通过无监督学习获取节点的低维representation
。GAE
:论文
《Variational graph auto-encoders》
提出了Graph Auto-Encoder: GAE
。GAE
是首次使用GCN
对图中的节点进行编码,然后它使用简单的解码器重构邻接矩阵,并根据原始邻接矩阵和重构邻接矩阵之间的相似度来评估损失:论文也以变分的方式训练
GAE
模型,称作变分图自编码器variational graph autoencoder:VGAE
。此外,
graph convolutional matrix completion:GC-MC
也使用GAE
并应用于推荐系统中。在MovieLens
数据集上,GC-MC
性能优于其它baseline
模型。ARGA
:Adversarially Regularized Graph Auto-encoder:ARGA
使用生成对抗网络generative adversarial network:GAN
来正则化GCN-based
的GAE
从而遵循先验分布。也有几种图自编码器,例如
NetRA, DNGR, SDNE, DRNE
,但是它们的架构中未使用GNN
。
2.2 通用框架
除了图神经网络的不同变体之外,人们还提出了一些通用框架,旨在将不同的模型整合到一个框架中。
《Neural message passing for quantum chemistry》
提出了消息传递神经网络message passing neural network: MPNN
,它统一了各种图神经网络和图卷积网络方法。《Non-local neural networks》
提出了非局部神经网络non-local neural network: NLNN
,它统一了集中self-attention
风格的方法。《Relational inductive biases, deep learning, and graph networks》
提出了一种图网络graph network: GN
,它统一了MPNN
、NLNN
以及许多其它变体,例如Interaction Network
、Neural Physics Engine
、CommNet
、structure2ve
、GGNN
、Relation Network
、Deep Sets
、Point Net
。
2.2.1 MPNN
MPNN
框架总结了几种最流行的图模型之间的共性,如graph convolution network, gated graph neural network, interaction network, molecular graph convolution, deep tensor neural network
等等。MPNN
包含两个阶段:消息传递阶段、readout
阶段 。消息传递阶段(也称作传播阶段)执行
$ T $ 个时间步,并根据消息函数 $ M_t $ 和节点更新函数 $ U_t $ 来定义。令节点
$ v $ 在时刻 $ t $ 收到的消息为 $ \mathbf{\vec m}_v^{(t)} $ ,在时刻 $ t $ 的hidden state
为 $ \mathbf{\vec h}_v^{(t)} $ ,则有:其中
$ \mathbf{\vec e}_{v,w} $ 为节点 $ v,w $ 之间边的特征。readout
阶段使用Readout
函数 $ R(\cdot) $ 来计算整个图的特征向量:其中
T
表示总的时间步。
消息函数
$ M_t $ 、节点更新函数 $ U_t $ 、readout
函数 $ R $ 可以有不同的设置,因此MPNN
框架可以通过不同的配置来概括几种不同的模型。这里我们以
GGNN
为例,其它模型的示例参考原始论文。针对GGNN
模型的函数配置为:其中:
$ \mathbf A_{e_{v,w}} $ 为邻接矩阵,对于每一个edge label
采用不同的邻接矩阵。GRU
为Gated Recurrent Unit
。 $ \mathcal F_i(\cdot,\cdot),\mathcal F_j(\cdot) $ 为 $ R $ 中的神经网络, $ \odot $ 为逐元素乘法。
2.2.2 NLNN
NLNN
用户捕获深度神经网络的长程依赖。non-local
操作是计算机视觉中经典的non-local
均值操作的推广。non-local
操作将某个位置的response
计算为所有位置的特征的加权和,位置可以为空间位置、时间位置、或者时空位置。因此,NLNN
可以视为不同的self-attention
方式的统一。我们首先介绍
non-local
操作的一般定义。遵从non-local
均值操作,推广的non-local
操作定义为:其中:
$ i $ 为输出位置索引, $ j $ 遍历所有可能的输入位置索引。 $ f\left(\mathbf{\vec h}_i,\mathbf{\vec h}_j\right)\in \mathbb R $ 是位置 $ i $ 和位置 $ j $ 之间的一个标量函数,表示它们之间的关系。 $ g\left(\mathbf{\vec h}_j\right) $ 表示输入 $ \mathbf{\vec h}_j $ 的变换,并使用因子 $ \frac{1}{\mathcal C_i(\mathbf H)} $ 来归一化结果。 $ \mathbf H $ 为所有 $ \mathbf{\vec h}_j $ 拼接而成的向量, $ \mathcal C_i(\mathbf H) $ 表示针对输出 $ i $ 的归一化分母。
有几种不同的
$ f(\cdot,\cdot) $ 和 $ g(\cdot) $ 的配置,为简单起见NLNN
使用线性变换作为 $ g(\cdot) $ 函数。这意味着 $ g\left(\mathbf{\vec h}_j\right) = \mathbf W_g\mathbf{\vec h}_j $ ,其中 $ \mathbf W_g $ 为可学习的权重矩阵。接下来我们讨论 $ f(\cdot,\cdot) $ 函数的选择。高斯
Gaussian
函数:高斯函数是根据非局部均值non-local mean
(论文《A non-local algorithm for image denoising》
)和双边滤波器bilateral filter
(论文《Bilateral filtering for gray and color images》
)的自然选择:其中,
$ \mathbf{\vec h}_i\cdot \mathbf{\vec h}_j $ 是点积相似性dot-product similarity
。并且:Embedded Gaussian
函数:很自然地通过计算embedding
空间中的相似性来扩展高斯函数。即:其中:
可以发现
《Attention is all you need》
提出的self-attention
是Embedded Gaussian
函数的特例。对于给定的 $ i $ , $ \frac{1}{\mathcal C_i(\mathbf H)} \sum_{\forall j} f\left(\mathbf{\vec h}_i,\mathbf{\vec h}_j\right) $ 成为沿着维度 $ j $ 的softmax
。因此有:这就是
self-attention
的形式。点积函数:
$ f(\cdot,\cdot) $ 可以是简单的点积相似性dot-product similarity
,即:其中:
其中
$ N $ 为节点数量。拼接函数:
$ f(\cdot,\cdot) $ 可以为简单的向量拼接:其中:
$ \mathbf{\vec w}_f $ 是一个权重向量, $ \mathcal C_i(\mathbf H) = N $ , $ N $ 为节点数量。NLNN
将上述non-local
操作包装到一个non-local block
中:其中
$ + \mathbf{\vec h}_i $ 为残差连接。因此,non-local block
可以插入任何预训练模型pre-trained model
中,这使得该block
适用性更好。
2.2.3 GN
Graph Network:GN
框架概括并扩展了各种图神经网络、MPNN
、以及NLNN
方法。我们首先介绍图的定义,然后描述GN
块、GN
核心计算单元、计算步骤。在
GN
框架内,图被定义为三元组 $ \mathcal G = \left(\mathbf{\vec u},\mathcal V, \mathcal E\right) $ ,其中: $ \mathbf{\vec u} $ 为全局属性,比如它代表全局的万有引力场。 $ \mathcal V = \{\mathbf{\vec v}_i\}_{i=1}^{N_v} $ 代表节点属性的集合, $ N_v $ 为节点数量, $ \mathbf{\vec v}_i $ 为节点 $ i $ 的属性向量。 $ \mathcal E = \{(\mathbf{\vec e}_k, r_k,s_k)\}_{k=1}^{N_e} $ 为边的集合, $ N_e $ 为边数量, $ \mathbf{\vec e}_k $ 为边的属性, $ r_k $ 为receiver
节点, $ s_k $ 为sender
节点。
一个
GN
块包含三个更新函数 $ \phi $ ,以及三个聚合函数 $ \rho $ :其中:
其物理意义为:
$ \phi^{(e)} $ 根据每条边的属性 $ \mathbf{\vec e}_k $ 、全局属性 $ \mathbf{\vec u} $ 、以及sender
节点属性 $ \mathbf{\vec v}_{s_k} $ 、receiver
节点属性 $ \mathbf{\vec v}_{r_k} $ 来更新对应边的属性 $ \mathbf{\vec e}_k^\prime $ 。 $ \phi^{(v)} $ 根据每个节点的属性 $ \mathbf{\vec v}_i $ 、全局属性 $ \mathbf{\vec u} $ 、以及receiver
为当前节点的所有边的属性(更新后的边属性)的聚合值 $ \bar{\mathbf{\vec e}}_i^\prime $ 来更新对应节点的属性 $ \mathbf{\vec v}_i^\prime $ 。 $ \phi^{(u)} $ 根据全局属性 $ \mathbf{\vec u} $ 、所有节点的属性(更新后)的聚合值 $ \bar{\mathbf{\vec v}}^\prime $ 、全局属性、所有边的属性(更新后)的聚合值 $ \bar{\mathbf{\vec e}}^\prime $ 来更新全局属性 $ \mathbf{\vec u}^\prime $ 。它仅更新一次。- 每个
$ \rho $ 函数使用一个集合作为输入,然后聚合为单个结果代表聚合后的信息。最重要的是: $ \rho $ 函数必须是排列无关的permutation invariant
,并且应该采用可变数量的自变量。一些典型的例子包括:逐元素求和、均值池化、最大值池化等。
$ \phi(\cdot) $ 和 $ \rho(\cdot) $ 函数不一定是神经网络,但是本文中我们仅关注神经网络的实现。GN
块的计算步骤:通过执行
$ \phi^{(e)}\left(\mathbf{\vec e}_k, \mathbf{\vec v}_{r_k}, \mathbf{\vec v}_{s_k},\mathbf{\vec u}\right) $ 得到每条边更新后的属性 $ \mathbf{\vec e}_k^\prime $ 。- 更新后,边的集合为
$ \mathcal E^\prime = \left\{\left(\mathbf{\vec e}_k^\prime, r_k, s_k\right)\right\}_{k=1,\cdots,N_e} $ - 更新后,节点
$ i $ 相关的边的集合为 $ \mathcal E_i^\prime = \left\{\left(\mathbf{\vec e}_k^\prime, r_k, s_k\right)\right\}_{r_k=i,k=1,\cdots,N_e} $ 。这里节点 $ i $ 为receiver
。
- 更新后,边的集合为
执行
$ \bar{\mathbf{\vec e}}_i^\prime = \rho^{(e\rightarrow v)}\left(\mathcal E_i^\prime\right) $ 从而得到每个节点对应边的聚合信息。通过执行
$ \mathbf{\vec v}_i^\prime = \phi^{(v)}\left(\bar{\mathbf{\vec e}}_i^\prime, \mathbf{\vec v}_{i},\mathbf{\vec u}\right) $ 得到每个节点更新后的属性。更新后,所有节点的属性集合为
$ \mathcal V^\prime = \left\{\mathbf{\vec v}_i^\prime\right\}_{i=1,\cdots,N_v} $ 。通过执行
$ \bar{\mathbf{\vec e}}^\prime = \rho^{(e\rightarrow u)}\left(\mathcal E^\prime \right) $ 对所有边进行聚合得到 $ \bar{\mathbf{\vec e}}^\prime $ 。通过执行
$ \bar{\mathbf{\vec v}}^\prime = \rho^{(v\rightarrow u)}\left(\mathcal V^\prime\right) $ 对所有节点进行聚合得到 $ \bar{\mathbf{\vec v}}^\prime $ 。通过执行
$ \mathbf{\vec u}^\prime = \phi^{(u)}\left(\bar{\mathbf{\vec e}}^\prime, \bar{\mathbf{\vec v}}^\prime,\mathbf{\vec u}\right) $ 来更新图的全局属性。
尽管这里我们给出了计算步骤的顺序,但是并不是严格地根据这个顺序来执行。例如,可以先更新全局属性、再更新节点属性、最后更新边属性。
设计原则:
Graph Network
的设计基于三个基本原则:灵活的representation
、可配置的块内结构within-block structure
、可组合的多块架构multi-block architecture
。灵活的
representation
:GN
框架支持属性的灵活representation
,以及不同的graph
结构。- 全局属性、节点属性和边属性可以使用任意的表示格式,但实值向量和张量是最常见的。
- 就
graph
结构而言,GN
框架既可以应用于图结构明确的结构性场景,也可以应用于需要推断关系结构relational structure
的非结构性场景。
可配置的块内结构:一个
GN
块内的函数及其输入可以有不同的设置,因此GN
框架在块内结构配置方面提供了灵活性。基于不同的结构和函数设置,各种模型(如MPNN
、NLNN
和其他变体)都可以由GN
框架表达。可组合的多块架构:
GN
块可以被组合从而构建复杂的架构。任意数量的GN
块可以用共享参数或不共享参数的方式来堆叠式地组合。也可以采用一些其他技术来构建GN-based
架构,如skip connection
、LSTM-style
门控机制、GRU-style
门控机制,等等。
2.3 应用
图神经网络已经在监督学习、半监督学习、无监督学习、强化学习等领域广泛应用。这里我们将应用分为三类:
- 数据具有明确关系结构的结构性场景,如物理系统
physical system
、分子结构molecular structure
、知识图谱knowledge graph
。 - 关系结构不明确的非结构性场景,包括图像
image
、文本text
等。 - 其它应用场景,如生成模型
generative model
、组合优化问题combinatorial optimization problem
。
下表给出这些场景的一个总结:
- 数据具有明确关系结构的结构性场景,如物理系统
2.3.1 结构化的场景
物理学:对现实世界的物理系统进行建模是理解人类智能的最基本方面之一。通过将物体表示为节点,将关系表示为边,我们可以用一种简化但有效的方式对物体、关系和物理学进行
GNN-based
的推理。分子学和生物学:
- 分子指纹
molecular fingerprint
计算:分子指纹是一个代表分子的特征向量,主要用于计算机辅助药物设计。传统的分子指纹是手工制作和固定的,通过将GNN
应用于分子图,我们可以获得更好的分子指纹。 - 蛋白质交互预测:蛋白质交互预测任务是一个具有挑战性的问题,在药物发现和设计中有着重要的应用。
- 分子指纹
知识图谱:
《Knowledge transfer for out-of-knowledge-base entities : A graph neural network approach》
使用GNN
,从而在knowledge base completion: KBC
中解决out-of-knowledge-base: OOKB
实体问题。《Cross-lingual knowledge graph alignment via graph convolutional networks》
使用GCN
解决跨语言的知识图谱knowledge graph
的对齐问题。
2.3.2 非结构化的场景
图像:
分类任务:几项工作利用图神经网络在图像分类中纳入结构的信息。
- 首先,知识图谱可以作为额外的信息来指导
zero-shot
分类。 - 其次, 除了知识图谱之外,数据集中的图像之间的相似性也有助于
few-shot learning
。
- 首先,知识图谱可以作为额外的信息来指导
视觉推理任务:计算机视觉系统通常需要通过纳入空间信息和语义信息来进行推理。因此,为推理任务生成
graph
是很自然的。一个典型的视觉推理任务是视觉问题回答visual question answering: VQA
。视觉推理的其他应用包括目标检测、交互检测和区域分类。语义分割:语义分割任务是为图像中的每一个像素分配一个标签(或类别)。然而,分割区域
region
往往不是grid-like
并且需要non-local
信息,这导致了传统CNN
的失败。一些工作利用了图结构数据来处理该任务。
文本:
- 文本分类: 有一些工作把文档或句子看作是一个由
word
节点组成的图,还有一些工作依靠文档引用关系来构建图,还有一些工作将文档和词视为构建语料库graph
的节点(因此是异质图)。 - 序列标注:由于
GNN
中的每个节点都有其隐状态hidden state
,如果我们把句子中的每个词都看作是一个节点,我们就可以利用隐状态来解决序列标注问题。 - 神经机器翻译
neural machine translation: NMT
:GNN
的一个流行应用是将句法信息或语义信息纳入神经机器翻译任务中。
- 文本分类: 有一些工作把文档或句子看作是一个由
2.3.3 其它场景
- 生成式模型:现实世界的图的生成模型因其重要的应用而引起了极大的关注,包括建模社交互动、发现新的化学结构、以及构建知识图谱。由于深度学习方法具有学习图的隐含分布的强大能力,最近神经图生成模型
neural graph generative model
出现了一个高潮。 - 组合优化
combinatorial optimization
:图上的组合优化问题是一组NP-hard
问题,吸引了所有领域的科学家的关注。一些具体的问题,如旅行推销员问题(traveling salesman problem: TSP
)和最小生成树(minimum spanning tree: MST
),已经得到了各种启发式的解决方案。最近,使用深度神经网络来解决这类问题成为一个热点,其中一些解决方案由于其图结构而进一步利用了图神经网络。
2.4 悬而未决的问题
尽管
GNN
在不同领域取得了重大成功,但是GNN
仍然还有一些尚未解决的问题:浅层结构
Shallow Structure
:传统的深度神经网络可以堆叠数百层从而获得更好的性能,因为更深的结构具有更多的参数从而显著提高表达能力。但是图神经网络总是很浅,大多数不超过三层。实验表明,堆叠多个
GCN
层将导致过度平滑,即所有节点都收敛到相同的值。尽管一些研究人员设法解决了该问题,但是它仍然是GNN
的最大局限。动态图
Dymaic Graph
:另一个挑战是如何处理具有动态结构的图。静态图是稳定的,因此可以对其进行建模。而动态图引入了变化的结构,当边或节点出现或消失时,
GNN
无法自适应地调整。非结构化场景
Non-Structural Scenario
:没有很好的方法从原始的、非结构的数据生成图结构。如果找到最佳的图构建方法,则可以使得GNN
应用范围更广。可扩展性
Scalability
:GNN
的扩展很困难,因为许多关键步骤在大规模数据下消耗大量的计算资源。例如:- 图数据不是规则的欧几里得结构,每个节点都有自己的邻域结构,因此无法进行
batch
处理。 - 当有数百万个节点、边时,计算图拉普拉斯算子是不可行的。
此外,我们必须指出:可扩展性决定了算法能否应用于实际工作中。
- 图数据不是规则的欧几里得结构,每个节点都有自己的邻域结构,因此无法进行
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论