图学习(一)Graph Attention Networks

背景

研究机构:Department of Computer Science and Technology;Centre de Visi´o per Computador, UAB;Montreal Institute for Learning Algorithms
来源:ICLR2018

摘要

针对图结构的数据,本文提出了一种图注意力网络GAT,该网络使用masked self-attention用于解决之前图卷积模型中存在的问题。在GAT中,图中的每个节点可以根据邻节点的特征,为其分配不同的权值。GAT的另一个优点在于,无需使用预先构建好的图。

动机

GCN的局限性:
(1)无法完成inductive任务,即处理动态图问题。
inductive任务是指:训练阶段与测试阶段需要处理的graph不同。通常是训练阶段只是在子图(subgraph)上进行,测试阶段需要处理未知的顶点。(unseen node)
(2)处理有向图的瓶颈,不容易实现分配不同的学习权重给不同的neighbor。

方法

作者提到,GAT的实现方式可以有两种思路。其一,Global graph attention
即每一个顶点 i i i都对图上任意顶点进行attention操作。优点:完全不依赖于图的结构,可以很好的完成inductive任务。缺点:计算量巨大,并且数据本身的图结构特点丢失,可能导致很差的结果。

其二,Mask graph attention,注意力机制的运算只在邻居顶点上进行。作者采用的是这种方式。
具体细节:
与一般的attention方法类似,GAT的计算步骤也是两步走策略:
(1)计算注意力分布(即用于加权的系数)

对于顶点 i i i,逐个计算各个邻居 j ( j ∈ N i ) j(j\in N_i) j(jNi)与自己的相似度系数:
e i j = a ( [ W h i ∣ ∣ W h j ] ) e_{ij}=a([Wh_i||Wh_j]) eij=a([WhiWhj])
W是共享的可学习参数矩阵用于对顶点特征进行增维 [ . ∣ ∣ . ] [.||.] [..]表示对顶点 i , j i,j i,j变换后的特征进行concate,最后利用 a ( . ) a(.) a(.)将拼接后的高维特征映射到一个实数。显然学习顶点 i , j i,j i,j之间的相关性,就是通过可学习的参数 W W W和映射 a ( . ) a(.) a(.)完成的。
有了相关性系数,接下来就是一个简单的softmax操作,赋予不同的邻居以不同的权重。
在这里插入图片描述
作者在此处使用了一个LeakyReLU,即
图学习(一)Graph Attention Networks_第1张图片
获得加权系数的示意图如下:
图学习(一)Graph Attention Networks_第2张图片
(2)进行加权求和
这一步比较简单,公式表示为
图学习(一)Graph Attention Networks_第3张图片
h i ′ h_{i}^{'} hi就是GAT输出的对于每个顶点 i i i的新特征(融合了邻域信息), σ ( . ) \sigma(.) σ(.)是激活函数。
受multi-head attention的影响,利用K个head来对特征进一步增强,也可以理解为是一种ensemble
图学习(一)Graph Attention Networks_第4张图片
加权求和示意图如下
图学习(一)Graph Attention Networks_第5张图片

为什么GAT适用于有向图?

GAT的运算方式是逐顶点的运算(node-wise),这一点可从上述公式中很明显地看出。每一次运算都需要循环遍历图上的所有顶点来完成。逐顶点运算意味着,摆脱了拉普利矩阵的束缚,使得有向图问题迎刃而解。

为什么GAT适用于inductive任务?

GAT中重要的学习参数是 W W W a ( . ) a(.) a(.),因为上述的逐顶点运算方式,这两个参数仅与第一个公式中阐述的顶点特征相关,与图的结构毫无关系。所以测试任务中改变图的结构,对于GAT影响并不大,只需要改变 N i N_i Ni,重新计算即可。

参考文献

知乎专栏:Graph Attention Networks学习笔记
知乎专栏:图注意力模型

你可能感兴趣的:(图学习,深度学习,pytorch)