【论文阅读笔记】——《Graph Attention Networks》

《Graph Attention Networks》——图注意力网络GAT阅读笔记

——本文发表在2018ICLR上,将注意力机制运用到GCN上,使得图神经网络更加完善,达到了state-of-the-art的效果。原文地址: https://arxiv.org/abs/1710.10903

相关背景

CNN在处理格状数据(例如图片)分类任务上得到了很好的效果,但现实中很多数据无法表达为格状数据,例如社会网络、三维网络、生物网络等都是不规则的数据。

GNN的提出为解决任意结构的图状数据提供了很好的思路。GNN迭代地计算图中节点的传播过程直至收敛,再经过一系列神经网络处理可以得到节点的输出结果。

GCN做到了将卷积的思想运用到了GNN上,在网络节点划分任务上取得了很好的效果,但是对节点的特征表示却局限于图的结构,因此对于一个新的图结构我们总是要去训练一个新的模型。同时GCN是基于图的拉普拉斯矩阵来做卷积操作,其中涉及了大量的矩阵运算。

attention机制在基于seq的模型上取得了很好的效果,几乎成为处理seq任务的行业标准。attention输入可以是不同大小的序列数据,self-attetion\intra-attention常用于处理计算单序列表达的任务。

作者由此提出GAT——Graph Attention Networks,一种将attention机制运用到图结构数据节点分类任务的方法。它结合了attention高并行性的特点,并且对于不同度的节点的不同邻居赋予各自的权值,GAT还能泛化与之前没有训练过的图,直接适用于归纳学习问题。

GAT

图注意力层——graph attention layer

先介绍一个单层的graph attentional layer。

输入为节点特征向量:

在这里插入图片描述
其中N为节点个数,h为节点特征向量,维数F。

输出为变换后的节点特征向量:

在这里插入图片描述
首先,要对输入节点做一个线性变换,使节点带有更高表达能力的高级特征。这一步使用一个共享的权值矩阵在这里插入图片描述并行的应用于每一个节点。之后使用共享的自注意力机制在这里插入图片描述来计算attention系数:

在这里插入图片描述

,其中eij定义了j的特征对i的重要程度,这里我们只计算i的一阶邻居节点j∈Ni。之后softmax归一化:

在这里插入图片描述
在本文实验中,注意力机制a实际上是一个单层的前馈神经网络,其中参数是在这里插入图片描述,然后使用非线性激活函数LeakyReLU激活,最终得到的归一化attention系数表达如下:

在这里插入图片描述,其中||是拼接操作。

【论文阅读笔记】——《Graph Attention Networks》_第1张图片

图中所示:两个向量先进行线性特征变换,拼接后乘上网络权重a,经过一个非线性激活,然后softmax输出得到attention系数αij。

将这种操作应用于每个邻居节点,再经过一个非线性激活函数,得到该节点的输出特征:

在这里插入图片描述

为了使模型更加稳定,本文还将多头注意力机制引入,即为每个节点使用K个独立的注意力机制,同时用K个W与原始特征向量进行线性变换,从而得到K个αij,然后将K个头的输出做一个拼接再平均,最后通过一个激活函数(通常是logistic sigmoid或softmax)得到最后的输出及结果:

在这里插入图片描述

【论文阅读笔记】——《Graph Attention Networks》_第2张图片

图中为K=3即三个头的自注意力机制。中心节点将每个邻居的多头注意力系数平均后拼接,作为这一层的输出。

以上就是GAT的模型架构。

与其他模型相比的优势

  • 计算上的高并行性。每个输入特征的非线性变化都可以并行,各个边上的自注意力系数可以并行,并且输出特征也可以并行计算。整个过程不需要进行矩阵分解或者类似的高复杂度的矩阵运算。GAT的模型复杂度为O(|V|FF’ + |E|F’),F是输入特征维度,F’是输出特征维度,V和E是点和边的个数。其中FF’ 是输入特征进行线性变换的复杂度,|E|F’是计算αij时得到复杂度。与GCN (Kipf&Welling,2017)的模型复杂度相当。
  • 相比于GCN,本文提出的的模型可以为节点不同的邻居按照重要程度赋予不同的权值,模型容量有了上升。通过学习到的注意力权重,模型的可解释性也得增长,就像机器学习的运用一样。
  • 图中所有边的attention机制是共享的,所以模型不依赖于图全局结构的预处理,只需要关注邻接节点即可,这样可以做到:1,可以适用于有向图,若(j→i 不存在,仅需忽略 αij 即可),2,可以直接用于归纳学习。
  • 最新的归纳学习方法Hamilton et al. (2017)是通过从每个节点的邻居中抽取固定数量的邻居节点来保持计算的一致性,这样的话在推理过程中,节点的全部邻居不能考虑进去,而GAT可以将节点的全部邻居计算进去。
  • 和Monet的对比,这个大家可以先学习一下MoNet。

实验

构造了一个使用系数矩阵运算的GAT layer,将存储复杂度降低到点数与边数的线性,以便于以后在大规模数据集上的运算。然而,我们使用的张量操作框架仅支持秩 - 2 张量的稀疏矩阵乘法,这限制了当前实现的层的批处理能力(特别是对于具有多个图的数据集),适当地解决这一限制是未来工作的重要方向。根据现有图形结构的规律性,在稀疏场景中,GPU 相比于 CPU 可能无法提供主要的性能优势。https://www.cnblogs.com/ydcode/p/11038186.html

数据集

【论文阅读笔记】——《Graph Attention Networks》_第3张图片
归纳学习(Inductive Learning): 先从训练样本中学习到一定的模式,然后利用其对测试样本进行预测(即首先从特殊到一般,然后再从一般到特殊),这类模型如常见的贝叶斯模型。

实验方法:

使用两层的GAT layer,第一层K=8,F’=8,使用ELU(exponential linear unit)作为非线性激活函数;第二层单头attention,输出特征C维,也就是类别个数,再通过softmax输出。dropout = 0.6.先在Cora数据集上训练然后再用于Citeseer数据集上。对于Pubmed第二层使用8个头。

结果:
【论文阅读笔记】——《Graph Attention Networks》_第4张图片

演绎学习(Transductive Learning):先观察特定的训练样本,然后对特定的测试样本做出预测(从特殊到特殊),这类模型如 k 近邻、SVM 等。

实验方法:

三层GAT,前两层K=4,F’ = 256,ELU激活,最后一层用于多标签分类,令K=6,输出121个特征,每个节点可能有多个标签。

实验结果:
【论文阅读笔记】——《Graph Attention Networks》_第5张图片

你可能感兴趣的:(读书笔记)