Limitation of ‘Shallow Encoders’
在Graph Repretention Learning一课中,我们已经学习了如何基于shallow encoders(基于Embedding Lookup将节点映射为向量)表示一个图,但其存在以下限制:
- 节点间的参数无法共享,每个节点的嵌入都是独一无二的。
- 无法未训练时没有见过的节点生成嵌入。
- 没有考虑节点自身的特性。
而今天将要学习的Graph Neural Networks可以解决上述限制,其基本思想在于基于图结构进行多层非线性变换对节点进行编码。现代深度学习工具基本是为简单的序列和网格来设计的,将其用于网络/图的难点在于:
- 网络/图具有任意的大小和复杂的拓扑结构,即不同于网格那样的空间局限性;
- 网络/图没有固定的节点顺序或参考点
- 网络/图通常是动态的且具有多模态的特征
Graph Convolutional Networks (GCN)
Setup
给定一个图,其中为节点(vertex)集合,表示邻接矩阵,表示节点特征矩阵。
Computational Graph and Generalized Convolution:
给定上图左侧的图,我们的目标是基于定义GCN的计算图,这一计算图需要保留的结构,同时合并节点的相邻特性,例如节点的嵌入尤其邻居组成,但不取决于这样的顺序。一个简单的方法就是取特征向量的平均。一般而言,聚合方程(上图右侧部分的灰盒)应是顺序无关的(order invariant,如max、average等操作)。带有两层的基于的计算图形式如下:
图中的每个节点都基于其邻居定义了计算图,例如节点的计算图如下,其中Layer-0,即第0层为输入层,其输入为各节点的特征向量。
Deep Encoders
基于上述思想,使用平均聚合方程给出每层节点的数学表达式如下:
- 在第0层,,即节点特征;
- 在第k层,
- 在输出层,假设经过层,最终得到的embedding为
其中表示节点的邻居数量;的目的在于聚合节点的邻居在上一层的特征;表示激活函数(如ReLU)用于引入非线性;均为需要训练的参数。
等价的,以上计算可以基于整个图写成矩阵相乘的形式如下:
Training the Model
接下来就可以将这些embeddings送入任意损失函数并经由随机梯度下降训练参数。例如,对于一个二分类任务,可以将损失函数定义如下:
其中,为节点的类别标签;为encoder的输出;为分类权重;可以是sigmoid函数;代表节点的预测概率。因此,公式的前半部分将在时起到作用,而当时,则是式子的后半部分起作用。
此外,还可以通过random walk、graph factorization、node proximity等方式以无监督的形式训练模型。
Inductive Capability
GCN可泛化到图中未曾见过的节点。例如,假设一个模型是通过节点训练的,由于所有节点之间的参数是共享的,新加入的节点同样可以参与运算。
GraphSAGE
上述介绍的是一种简单的邻居聚合方法,我们还可以以下形式概括性地表示聚合方法:
即对于节点。我们可以采用不同的方法聚合其邻居,然后再将其与自身特征拼接。常用的聚合方法有以下几种:
- Mean:计算所有邻居特征的加权平均。
- Pooling:对邻居向量进行转换并运用对称向量函数(式中的可以是element-wise mean或max)。
- LSTM:
Graph Attention Networks
考虑到部分节点携带的信息比其它节点重要的情况,可以采用attention机制对不同的邻居节点分配不同的权重。
令代表节点要传递给节点的信息的权重因子(重要性)。在上述平均聚合方案中,我们定义,此时我们可以根据图的结构属性明确定义。
Attention Mechanism
节点的注意力得分基于其携带的信息计算如下:
其中表示任意注意力计算方式,表示了节点要传递给节点的信息的重要性。
接下来使用softmax进行归一化处理以比较不同邻居之间的重要性:
继而可以计算得到:
Reference
Tutorials and Overview:
- 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:
Embedding the 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)