Press "Enter" to skip to content

图神经网络基础介绍

 

经典的机器学习框架主要支持包括Images和Text/Speech 这两种数据,主要设计用来解决sequence、grids问题, 而Graph 结构相对较为复杂:

无法产生特定顺序的节点序列,因而很难转换为普通序列问题;
图结构频繁变化,且通常需要建模多模态特征;

Basics of deep learning for graphs

 

假定存在图G,其中V表示节点集合,A是邻接矩阵,X∈Rm∗|V|是节点的特征矩阵(a matrix of node features)。这里的节点特征,根据不同的网络有不同的定义——如在社交网络里面,节点特征就包括用户资料、用户年龄等;在生物网络里面,节点的特征就包括基因表达、基因序列等;如果节点没有特征,就可以用one-hot编码表示或者常数向量 1: [ 1 , 1 , … , 1 ] [1, 1, …, 1][1,1,…,1]来表示节点的特征。

 

Local Network neighborhoods

 

节点的邻居定义计算图, 能够有效地建模信息的传播;

 

如上图,根据节点邻居得到计算图, 然后根据计算图生成节点的向量表示,如下图,A的节点表示由其邻居节点{B,C,D},而这些节点又由其邻居节点决定,形成如下图的计算图,其中方形框即为其聚合邻居节点的策略,可采用average操作:

 

由此,可将图中任意节点,根据其邻居节点,生成对应的计算图。

 

Stacking multiple layers

 

上一小节示意图中,使用节点的最高至二阶邻居点,即邻居的邻居来生成某节点的计算图,也可以使用任意深度的模型来表示,即图神经网络中层的概念:

任意节点在每一层均有对应的向量表示;
layer-0的向量表示即模型的输入特征xu;
layer-k的向量表示,即节点经过k层邻居之后的向量表示;
因而,Graph Neural Network能够通过叠加layer建模更高阶信息。

Graph Neural Network整体架构到这里其实基本上就讲完了,而不同的上述各种图中的方形框内部的计算逻辑。

 

一个有效的方法即GCN的思路是, 在入口对接收到的message平均化, 多阶的信息由邻居的邻居的信息传播来进行建模, 和常见的深度学习模型没啥差别:

 

模型训练

 

模型训练基本方式和常规的深度学习方式基本一致, 构建神经网络结构,通过构造loss函数,使用梯度下降方法,对模型参数进行更新,以最小化loss函数值:

非监督方式

 

基于图神经网络的非监督方式相对于传统的深度学习方式更加流行,其通常利用graph结构信息(其实也可以拼接slide info,slide未提),保证在graph中有相似的节点,有相似的特征表示。常见的模型包括:random walk系列(node2vec, DeepWalk, Struc2vec), Graph Factorization, Node Proximity in the graph

 

有监督方式

 

有监督方式的loss函数,根据不同任务类型来定义,如在常见的节点分类任务,如互联网中判断某节点是否为薅羊毛党,其为二元分类问题,通常采用交叉熵来表征其loss函数:

模型设计回顾

 

定义邻居聚合函数与loss函数:

 

按邻居节点生成批计算图

 

生成图节点的向量表示

 

对于计算图中,同一layer中的节点采用共享的参数表示,其参数彼此共享,且针对新图或者图中的新出现节点,均同样适用。

 

Graph Convolutional Networks and GraphSAGE

 

基本介绍

 

如前文所述,在邻居节点聚合操作时,我们采用average操作,那幺是否有更多通用的方式呢?GraphSAGE的思路是采用一个通用的aggregation函数来表示方形框的计算,并将其与本身的向量表示拼接起来,aggregation函数要保证可微分。

 

常见的Aggregation如下:

Mean:

Pool:

LSTM:

 

回顾

 

如下图, 图神经网络通过建模邻居节点的方式来解决图节点向量化的难题,通过多层高阶graph layer来聚合不同阶邻居的信息,并构建Graph计算图,来训练得到节点向量化表示,其中GCN为最基础方式,其聚合函数采取平均策略,而GraphSAGE设计通用的邻居聚合函数,如mean、pool、LSTM等等。

 

关于GNN的一些论文:

 

Tutorials and overviews:

 

§ Relational inductive biases and graph networks (Battaglia et al., 2018)

 

§ Representation learning on graphs: Methods and applications (Hamilton et al., 2017)

 

Attention-based neighborhood aggregation:

 

§ Graph attention networks (Hoshen, 2017; Velickovic et al., 2018; Liu et al., 2018)

 

Embedding entire graphs:

 

§ Graph neural nets with edge embeddings (Battaglia et al., 2016; Gilmer et. al., 2017)

 

§ Embedding entire graphs (Duvenaud et al., 2015; Dai et al., 2016; Li et al., 2018) and graph pooling

 

(Ying et al., 2018, Zhang et al., 2018)

 

§ Graph generation and relational inference (You et al., 2018; Kipf et al., 2018)

 

§ How powerful are graph neural networks(Xu et al., 2017)

 

Embedding nodes:

 

§ Varying neighborhood: Jumping knowledge networks (Xu et al., 2018), GeniePath (Liu et al., 2018) § Position-aware GNN (You et al. 2019)

 

Spectral approaches to graph neural networks:

 

§ Spectral graph CNN & ChebNet (Bruna et al., 2015; Defferrard et al., 2016) § Geometric deep learning (Bronstein et al., 2017; Monti et al., 2017)

 

Other GNN techniques:

 

§ Pre-training Graph Neural Networks (Hu et al., 2019)

 

§ GNNExplainer: Generating Explanations for Graph Neural Networks (Ying et al., 2019)

 

Graph Attention Networks

 

GAT顾名思义,需要考虑邻居节点中,对最终结果的不同的影响,因而引入attention机制,attention在经典的深度学习网络中十分常见,如transformer的self-attention,

 

Attention Mechanism

 

如下图, euv可以通过两个节点之间的信息流得到, evu表示节点u的信息对节点v的重要性, 使用softmax进行归一化,以便在不同的节点间存在可比性,然后集成在模型聚合函数中来建模不同节点对当前节点信息的重要性。

 

其他另外过程和原先GCN、graphSAGE没什幺差别,除了attention信息也会参与训练。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注