论文名称:Graph Attention Networks

论文地址:https://arxiv.org/abs/1710.10903

本文介绍GATs算法,它是一种对当前网络结构的一种创新,使用masked self-attention layers解决当前图卷积的不足。通过stacking layers能够聚合邻居节点的特征,不需要进行复杂的矩阵运算和图结构的先验知识。通过这种方式,我们解决spectral-based graph一些挑战,使得我们模型适用于inductivte和tansductive任务。

1.GAT ARCHITECTURE

接下来,我们介绍一下graph attention networks的block layer(可以进行 stack),以及他们相关理论集实践中好处、相对于之前工作一些限制。

1.1 GRAPH ATTENTIONAL LAYER

接下来,介绍一下graph attentional layer。

输入一组节点特征 h={h⃗1,h⃗2,…,h⃗N},h⃗i∈RF\mathbf{h}=\left\{\vec{h}_{1}, \vec{h}_{2}, \ldots, \vec{h}_{N}\right\}, \vec{h}_{i} \in \mathbb{R}^{F}h={h 1,h 2,,h N},h iRF,其中NNN是指node的数量,FFF是每个node特征的数量。经过 该层,会输出新的节点特征集合h′={h⃗1′,h⃗2′,…,h⃗N′},h⃗i′∈RF′\mathbf{h}^{\prime}=\left\{\vec{h}_{1}^{\prime}, \vec{h}_{2}^{\prime}, \ldots, \vec{h}_{N}^{\prime}\right\}, \vec{h}_{i}^{\prime} \in \mathbb{R}^{F^{\prime}}h={h 1,h 2,,h N},h iRF

将输入特征转化为输出特征,为了获得更高的特征表达,我们至少进行可学习的线性转换。为了实现这个目的,我们初始化、共享一个weight matrix W∈RF′×F\mathbf{W} \in \mathbb{R}^{F^{\prime} \times F}WRF×F,应用到每个node上。然后,我们对节点进行self-attention, 这个self attention机制aaa是共享的: RF′×RF′→R\mathbb{R}^{F^{\prime}} \times \mathbb{R}^{F^{\prime}} \rightarrow \mathbb{R}RF×RFR, attention coefficients计算方式如下:
eij=a(Wh⃗i,Wh⃗j)(1) e_{i j}=a\left(\mathbf{W} \vec{h}_{i}, \mathbf{W} \vec{h}_{j}\right)\tag{1} eij=a(Wh i,Wh j)(1)
该值意味着node jjj的特征对node iii的重要性。通常来说,如果不考虑结构信息,模型需要对计算所有节点对该节点的权重。我们考虑了图的结构信息,加入masked attention, 我们只计算eije_{ij}eij, 其中j∈Nij\in\mathcal{N_i}jNi, Ni\mathcal{N}_iNi指node iii的邻居节点。在我们的实验中,我们只考虑节点iii的一阶邻居(包括节点iii自己), 为了使得不同邻居节点jjj 可以比较,我们对其进行softmax操作:
αij=softmax⁡j(eij)=exp⁡(eij)∑k∈Niexp⁡(eik)(2) \alpha_{i j}=\operatorname{softmax}_{j}\left(e_{i j}\right)=\frac{\exp \left(e_{i j}\right)}{\sum_{k \in \mathcal{N}_{i}} \exp \left(e_{i k}\right)}\tag{2} αij=softmaxj(eij)=kNiexp(eik)exp(eij)(2)
我们对其进行扩展,使用的注意力机制aaa是单层前向的神经网络,使用的参数化矩阵a→∈R2F2\overrightarrow{\mathrm{a}} \in \mathbb{R}^{2 F^{2}}a R2F2, 采用LeakyReLu非线性变换(with negative input slope α=0.2\alpha=0.2α=0.2),如Figure 1(left)所示,公式如下:
αij=exp⁡(LeakyReLU⁡(a→T[Wh⃗i∥Wh⃗j]))∑k∈Niexp⁡(LeakyReLU⁡(a→T[Wh⃗i∥Wh⃗k]))(3) \alpha_{i j}=\frac{\exp \left(\operatorname{LeakyReLU}\left(\overrightarrow{\mathbf{a}}^{T}\left[\mathbf{W} \vec{h}_{i} \| \mathbf{W} \vec{h}_{j}\right]\right)\right)}{\sum_{k \in \mathcal{N}_{i}} \exp \left(\operatorname{LeakyReLU}\left(\overrightarrow{\mathbf{a}}^{T}\left[\mathbf{W} \vec{h}_{i} \| \mathbf{W} \vec{h}_{k}\right]\right)\right)}\tag{3} αij=kNiexp(LeakyReLU(a T[Wh iWh k]))exp(LeakyReLU(a T[Wh iWh j]))(3)
其中 ⋅T\cdot ^TT代表转置,∥\|代表concatenation操作

在这里插入图片描述

我们将标准化的attention权重系数对邻居特征进行线性组合,使用σ\sigmaσ进行非线性变换,生成每个节点的最终特征:
h⃗i′=σ(∑j∈NiαijWh⃗j)(4) \vec{h}_{i}^{\prime}=\sigma\left(\sum_{j \in \mathcal{N}_{i}} \alpha_{i j} \mathbf{W} \vec{h}_{j}\right)\tag{4} h i=σjNiαijWh j(4)
为了使得模型的效果更加稳定,我们对attention机制进行扩展,使用multi-head attention. KKK个独立的attention机制进行类似Equation 4的转换,然后将特征进行拼接,得到输出特征:
h⃗i′=∥k=1Kσ(∑j∈NiαijkWkh⃗j)(5) \vec{h}_{i}^{\prime}=\|_{k=1}^{K} \sigma\left(\sum_{j \in \mathcal{N}_{i}} \alpha_{i j}^{k} \mathbf{W}^{k} \vec{h}_{j}\right)\tag{5} h i=k=1KσjNiαijkWkh j(5)
其中,∥\|表示concatention, αijk\alpha_{ij}^kαijk表示k-thk\text{-th}k-th attention机制的标准化权重系数,WkW^kWk是指进行线性转化的权重矩阵。最后每个节点输出h′h^\primeh, 特征的维度是KF′KF^\primeKF而不是F′F^\primeF

如果我们在最后一层使用multi-head attention,concatenation就毫无意义了,取而代之,我们一般使用averaging,然后进行非线性变换:
h⃗i′=σ(1K∑k=1K∑j∈NiαijkWkh⃗j)(6) \vec{h}_{i}^{\prime}=\sigma\left(\frac{1}{K} \sum_{k=1}^{K} \sum_{j \in \mathcal{N}_{i}} \alpha_{i j}^{k} \mathbf{W}^{k} \vec{h}_{j}\right)\tag{6} h i=σK1k=1KjNiαijkWkh j(6)
multi-head的汇总过程如Figure 1(right)。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐