GATConv
论文名称:Graph Attention Networks论文地址:https://arxiv.org/abs/1710.10903本文介绍GATs算法,它是一种对当前网络结构的一种创新,使用masked self-attention layers解决当前图卷积的不足。通过stacking layers能够聚合邻居节点的特征,不需要进行复杂的矩阵运算和图结构的先验知识。通过这种方式,我们解决spe
论文名称: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={h1,h2,…,hN},hi∈RF,其中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′={h1′,h2′,…,hN′},hi′∈RF′。
将输入特征转化为输出特征,为了获得更高的特征表达,我们至少进行可学习的线性转换。为了实现这个目的,我们初始化、共享一个weight matrix W∈RF′×F\mathbf{W} \in \mathbb{R}^{F^{\prime} \times F}W∈RF′×F,应用到每个node上。然后,我们对节点进行self-attention, 这个self attention机制aaa是共享的: RF′×RF′→R\mathbb{R}^{F^{\prime}} \times \mathbb{R}^{F^{\prime}} \rightarrow \mathbb{R}RF′×RF′→R, 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(Whi,Whj)(1)
该值意味着node jjj的特征对node iii的重要性。通常来说,如果不考虑结构信息,模型需要对计算所有节点对该节点的权重。我们考虑了图的结构信息,加入masked attention, 我们只计算eije_{ij}eij, 其中j∈Nij\in\mathcal{N_i}j∈Ni, Ni\mathcal{N}_iNi指node iii的邻居节点。在我们的实验中,我们只考虑节点iii的一阶邻居(包括节点iii自己), 为了使得不同邻居节点jjj 可以比较,我们对其进行softmax操作:
αij=softmaxj(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)=∑k∈Niexp(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=∑k∈Niexp(LeakyReLU(aT[Whi∥Whk]))exp(LeakyReLU(aT[Whi∥Whj]))(3)
其中 ⋅T\cdot ^T⋅T代表转置,∥\|∥代表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} hi′=σ⎝⎛j∈Ni∑αijWhj⎠⎞(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} hi′=∥k=1Kσ⎝⎛j∈Ni∑αijkWkhj⎠⎞(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} hi′=σ⎝⎛K1k=1∑Kj∈Ni∑αijkWkhj⎠⎞(6)
multi-head的汇总过程如Figure 1(right)。
更多推荐
所有评论(0)