今天学习的是剑桥大学的同学 2017 年的工作《GRAPH ATTENTION NETWORKS》,目前引用数量超过 1100 次。
Attention 机制在 NLP CV 等领域被广泛应用,其可以帮助模型对输入数据赋予不同的权重信息。同样的,Attention 也可以应用于网络图中,它可以对邻居中不同的节点指定不同的权重,既不需要进行矩阵运算,也不需要事先了解图的全局结构。通过这种方式,作者解决了基于频谱的图神经网络的几个关键问题,并使得模型更方便的应用于归纳和转换问题。
1.Introduction
在之前的文章中我们也说过,学者想将卷积操作应用于网络图中主要有两种方式,一种是基于空域的方法,另一种是基于频域的方法。空域是指直接在网络中进行建模,而频域是指将网络图映射到频域后利用卷积变换进行建模。之所以要映射到频域是因为网络在空域中不具备规整性(也可以理解为平移不变性),而映射到频域后则可以完成卷积操作。
在许多基于序列(sequence-based)的任务中,注意力机制几乎已经成为这个邻域的标准。注意力机制的一大好处在于:它允许处理可变大小的输入,将注意力集中在最相关的输入部分。最开始的时候,注意力机制是用来计算序列的表征,通常被称为:self-attention。注意力机制可以改进 RNN/CNN 在阅读理解中性能,后来 Google 的同学直接通过 self-attention 构建出 Transformer 模型,并在机器翻译任务中取得了 SOTA。
受此启发,作者引入了基于注意力机制的体系结构来改进节点分类任务。其思想在于:在为图中每个节点计算向量表征时,利用 self-attention 的策略加权节点的邻居。这样的结构有很多很好的性质:
- 计算效率高:可以跨节点进行并行计算;
- 可以应用于不同度(degree)的图节点(克服了空间卷积的缺点);
- 可以进行归纳学习;
接下来看一下模型的详细情况。
2.GAT
在这一节主要介绍下模型的架构,并与之前的工作进行对比。
2.1 Graph Attention Layer
首先描述一下图注意力层(Graph Attentional Layer)。
图注意力层的输入是节点特征 h = { h → 1 , h → 2 , . . . , h → N } , h → i ∈ R F h=\{\overrightarrow h_1, \overrightarrow h_2,...,\overrightarrow h_N\}, \overrightarrow h_i \in \mathbb{R}^F h={ h1,h2,...,hN},hi∈RF ,其中 N 为节点的数量,F 为节点特征维度。图注意力层的输出是节点的新特征 h ′ = { h 1 ′ → , h 2 ′ → , . . . , h N ′ → } , h i ′ → ∈ R F ′ h^{'}=\{\overrightarrow {h_1^{'}}, \overrightarrow {h_2^{'}},...,\overrightarrow {h_N^{'}}\}, \overrightarrow {h_i^{'}} \in \mathbb{R}^{F^{'}} h′={ h1′,h2′,...,hN′</