首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【GNN】GAN:Attention 在 GNN 中的应用

今天学习的是剑桥大学的同学 2017 年的工作《GRAPH ATTENTION NETWORKS》,目前引用数量超过 1100 次。

Attention 机制在 NLP CV 等领域被广泛应用,其可以帮助模型对输入数据赋予不同的权重信息。同样的,Attention 也可以应用于网络图中,它可以对邻居中不同的节点指定不同的权重,既不需要进行矩阵运算,也不需要事先了解图的全局结构。通过这种方式,作者解决了基于频谱的图神经网络的几个关键问题,并使得模型更方便的应用于归纳和转换问题。

1.Introduction

在之前的文章中我们也说过,学者想将卷积操作应用于网络图中主要有两种方式,一种是基于空域的方法,另一种是基于频域的方法。空域是指直接在网络中进行建模,而频域是指将网络图映射到频域后利用卷积变换进行建模。之所以要映射到频域是因为网络在空域中不具备规整性(也可以理解为平移不变性),而映射到频域后则可以完成卷积操作。

在许多基于序列(sequence-based)的任务中,注意力机制几乎已经成为这个邻域的标准。注意力机制的一大好处在于:它允许处理可变大小的输入,将注意力集中在最相关的输入部分。最开始的时候,注意力机制是用来计算序列的表征,通常被称为:self-attention。注意力机制可以改进 RNN/CNN 在阅读理解中性能,后来 Google 的同学直接通过 self-attention 构建出 Transformer 模型,并在机器翻译任务中取得了 SOTA。

受此启发,作者引入了基于注意力机制的体系结构来改进节点分类任务。其思想在于:在为图中每个节点计算向量表征时,利用 self-attention 的策略加权节点的邻居。这样的结构有很多很好的性质:

  1. 计算效率高:可以跨节点进行并行计算;
  2. 可以应用于不同度(degree)的图节点(克服了空间卷积的缺点);
  3. 可以进行归纳学习;

接下来看一下模型的详细情况。

2.GAT

在这一节主要介绍下模型的架构,并与之前的工作进行对比。

2.1 Graph Attention Layer

首先描述一下图注意力层(Graph Attentional Layer)。

图注意力层的输入是节点特征

h=\{\overrightarrow h_1, \overrightarrow h_2,...,\overrightarrow h_N\}, \overrightarrow h_i \in \mathbb{R}^F

,其中 N 为节点的数量,F 为节点特征维度。图注意力层的输出是节点的新特征

h^{'}=\{\overrightarrow {h_1^{'}}, \overrightarrow {h_2^{'}},...,\overrightarrow {h_N^{'}}\}, \overrightarrow {h_i^{'}} \in \mathbb{R}^{F^{'}}

为了获得充分的表达,我们还需要一个线性变换,这里采用一个共享的参数化权重矩阵

W\in\mathbb{R}^{F^{'}\times F}

。然后利用一个共享注意力机制

a:\mathbb{R}^{F^{'}} \times \mathbb{R}^F \rightarrow \mathbb{R}

e_{ij} = a(W \overrightarrow {h_i}, W \overrightarrow {h_j}) \\

这个公式表示为节点 j 的特征相对节点 i 的重要性。

对于这个公式来说,该模型允许每个图中的每个节点都参与到其他节点的计算中,即删除了网络图的结构信息。对此,我们可以通过 masked attention 操作确保每次计算时只考虑节点的邻域信息,以此来为模型注入网络的结构信息。

这里,作者只考虑一阶邻域信息(包括自身节点)。为了消除权重量纲,作者使用 softmax 进行归一化处理:

\alpha_{ij} = softmax_j(e_{ij}) = \frac{exp(e_{ij})}{\sum_{k\in N_i}exp(e_{ik})} \\

作者设计的注意力机制是一个单层的前馈神经网络,参数向量为

\overrightarrow a \in \mathbb R^{2F^{'}}

,并利用 LeakyReLU 增加非线形

(\alpha = 0.2)

。所以公式最终写为:

\alpha_{ij} = \frac{exp \big( LeakyReLU(\overrightarrow {a^T} [W \overrightarrow{h_i} || W \overrightarrow{h_j} ]) \big) }{\sum_{k\in N_i}\; exp \big (LeakyReLU(\overrightarrow {a^T} [W \overrightarrow{h_i} || W \overrightarrow{h_k} ]) \big )} \\

其中,

||

表示拼接操作(concat)。

得到归一化注意系数后,计算其对应特征的线性组合,并利用非线形激活函数得到最终的输出特征:

\overrightarrow {h_{i}^{'}} = \sigma \big( \sum_{j \in N_i }\alpha_{ij} W \overrightarrow {h_j} \big) \\

为了稳定注意力机制的学习过程,我们将注意力机制拓展到多头注意力(multi-head attention)。K 个的注意力机制独立运行,并将最后的特征进行拼接,最终公式为:

\overrightarrow {h_i^{'}} = {||}_{k=1}^K \sigma \big(\sum_{j\in N_i} \alpha_{ij}^k W^{k} \overrightarrow {h_j} \big) \\

此时,输出的特征是有

KF^{'}

维。

特别的,如果多头注意力后面会接一个预测层,那么拼接操作可能就不太合理了,取而代之我们可以取其均值,并应用一个非线性函数:

\overrightarrow {h_i^{'}} = \sigma \big(\frac{1}{K} \sum_{k=1}^K \sum_{j\in N_i} \alpha_{ij}^k W^{k} \overrightarrow {h_j} \big) \\

❝原文:If we perform multi-head attention on the final (prediction) layer of the network, concatenation is no longer sensible。 这里的不合理,感觉是通过实验结果反推来的。 ❞

GAT 的注意力和多头注意力的可视化如下图所示:

左边是两个节点的 attention 过程,右边是多头注意力的聚合(K=3,不同颜色代表不同的注意力)。

2.2 Comparisons to Related Work

GAT 解决了之前用 GCN 建模图结构数据时出现的几个问题:

  1. 计算高效:既不用进行矩阵特征分解,也不需要进行矩阵运算,单个时间注意力的时间复杂度为
O(|V|FF^{'}+|E|F^{'})

,其复杂度与 GCN 的差不多;应用多头注意力时,完全可以并行化计算;

  1. 隐式地为节点的同一邻居分配不同权重,从而扩展了模型的表达的能力,同时也提升了模型的可解释性;
  2. 注意力机制以共享的方式应用于图上的所有边,因此无需知道图上所有的节点和边,最直接的好处在于可以直接适用于归纳学习;
  3. GraphSAGE 是对邻域进行固定大小的采样,相比 GAT 来说邻域的信息获取有限,而基于 LSTM 提取邻域信息时,其假设存在一个一致且连续的节点排序,并且 GraphSAGE 通过提供随机排序的序列进行纠正,GAT 则没有对邻域节点排序的限制;

#3.Experiment

简单看下实验部分。

先来看下数据集:

实验分为直推学习(Transductive learning)和归纳学习(Inductive learning)

利用 t-SNE 降维进行可视化展示:

4.Conclusion

总结:作者提出了一种新型的图卷积神经网络——图注意网络(GAT),其利用带 masked 的自注意力层来处理图结构数据,同时利用多头注意力对节点邻域进行充分表达。GAT 在诸多数据集中无论是直推学习还是归纳学习都取得不错的成绩。

当然,GAT 还有很多需要改进的地方,比如说在并行计算时如何克服冗余计算,如何提高网络深度等等。

5.Reference

  1. 《GRAPH ATTENTION NETWORKS》
下一篇
举报
领券