论文题目:GRAPH ATTENTION NETWORKS网络
时间:2018架构
期刊:ICLR框架
探讨图谱(Graph)做为输入的状况下如何用深度学习完成分类、预测等问题;经过堆叠这种层(层中的顶点会注意邻居的特征),咱们能够给邻居中的顶点指定不一样的权重,不须要任何一种耗时的矩阵操做(好比求逆)或依赖图结构的先验知识。函数
CNN 结构能够有效用于解决网格状的结构数据,例如图像分类等。可是现有的许多任务的数据并不能表示为网格状的结构,而是分布在不规则的区域,如社交网络、生物网络等。这样的数据一般用图的形式来表示。性能
目前有些研究经过扩展神经网络来处理不规则结构图,包括循环神经网络(RNN)、图神经网络(GNN)及其改进的模型。另外一种研究思路是把卷积泛化到图域中,分为谱方法和非谱方法两种。学习
注意力机制的一个好处是能够处理可变大小的输入,而且关注输入的最相关部分以作出决策。当注意机制用于计算单个序列的表示时,一般将其称为自注意或内注意。该机制和 RNN 结合已经普遍应用于机器阅读、句子表示和机器翻译领域。测试
做者提出了一种基于注意机制的架构,可以完成图结构数据的节点分类。该方法的思路是经过注意其邻居节点,计算图中的每一个节点的隐藏表征,还带有自注意策略。这种架构有多重性质:spa
单个 graph attentional layer 的输入是一个节点特征向量集合,\(h=\lbrace \vec{h_1},\vec{h_2},\dots,\vec{h_N} \rbrace,\; \vec{h_i}\in R^F\),其中 \(N\) 表示节点的数目,\(F\) 表示每一个节点的特征的数目。并生成一个新的节点特征集合 \(h^{'}=\lbrace \vec{h_1^{'}},\vec{h_2^{'}},\dots,\vec{h_N^{'}} \rbrace,\; \vec{h_i^{'}}\in R^{F^{'}}\) 做为输出,其中 \(F\) 和 \(F^{'}\) 具备不一样的维度。翻译
为了得到足够的表达能力以将输入特征变换为更高级别的特征,须要至少一个可学习的线性变换。为此,做为初始步骤,一个共享的线性变换参数矩阵 \(W\in R^{F^{'}\times F}\) 被应用于每个节点。而后执行 self-attention 处理:3d
\[e_{ij}=a(W\vec{h_i}, W\vec{h_j})\tag{1}\]
其中,\(a\) 是一个 \(R^{F^{'}}\times R^{F^{'}}\to R\) 的映射,公式(1)表示了节点 \(j\) 的特征对于节点 \(i\) 的重要性。通常来讲,self-attention 会将注意力分配到图中全部的节点上,这种作法显然会丢失结构信息。为了解决这一问题,做者使用了一种 masked attention 的方法 -- 仅将注意力分配到节点 \(i\) 的邻居节点集上,即 \(N_i\),其中节点 \(i\) 也包括在 \(N_i\) 中。为了使系数在不一样节点之间易于比较,咱们使用 softmax 函数在 \(j\) 的全部选择中对它们进行标准化:
\[\alpha_{ij}=softmax_j(e_{ij})=\frac{exp(e_{ij})}{\sum_{k\in N_i}{exp(e_{ik})}}\tag{2}\]
注意力机制 \(a\) 是一个单层前馈神经网络,其中 \(\vec{a}\in R^{2F^{'}}\) 是权重参数,使用 LeakyReLU 做为激活函数。彻底展开后,由注意机制计算的系数能够表示为:
归一化的注意力系数用于计算与它们对应的特征的线性组合,以用做每一个节点的最终输出特征,采用非线性的函数:
为了提升模型的拟合能力,在本文中还引入了多抽头的 self-attention(如图 1 右侧部分。与《Attention is All You Need》一致),即同时使用多个 \(W^k\) 计算 self-attention,而后将各个计算获得的结果进行合并(链接或求和):
上一节描述的图注意力层直接解决了以前在图结构上使用神经网络建模的方法的几个问题:
咱们可以生成一个利用稀疏矩阵运算的 GAT 层版本,将存储复杂性下降到节点和边缘数量的线性,并在较大的图形数据集上实现 GAT 模型。然而,咱们使用的张量操做框架仅支持秩 - 2 张量的稀疏矩阵乘法,这限制了当前实现的层的批处理能力(特别是对于具备多个图的数据集),适当地解决这一限制是将来工做的重要方向。根据现有图形结构的规律性,在稀疏场景中,GPU 相比于 CPU 可能没法提供主要的性能优点。
概括学习(Inductive Learning):先从训练样本中学习到必定的模式,而后利用其对测试样本进行预测(即首先从特殊到通常,而后再从通常到特殊),这类模型如常见的贝叶斯模型。
演绎学习(Transductive Learning):先观察特定的训练样本,而后对特定的测试样本作出预测(从特殊到特殊),这类模型如 k 近邻、SVM 等。
在演绎学习中使用三个标准的引证网络数据集——Cora、Citeseer 与 Pubmed。在这些数据集中,节点对应于文档,边(无向的)对应于引用关系。节点特征对应于文档的 Bag of Words
表示。每一个节点拥有一个类别标签(在分类时使用 softmax 激活函数)。每一个数据集的详细信息以下表所示:
演绎学习的实验结果以下表所示,能够看到,GAT 模型的效果要基本优于其余模型:
对于概括学习,本文使用了一个蛋白质关联数据集(protein-protein interaction, PPI),在其中,每张图对应于人类的不一样组织。此时,使用 20 张图进行训练,2 张图进行验证,2 张图用于测试。每一个节点可能的标签数为 121 个,并且,每一个节点能够同时拥有多个标签(在分类时使用 sigmoid 激活函数),其实验结果以下: