介绍
论文地址-GRAPH ATTENTION NETWORKS-Published as a conference paper at ICLR 2018 tensorflow源码地址代码版本 pyGAT-pytorch源码地址 keras-gat 边预测任务-GraphSAGE
初步理解原理
??GAT(Graph Attention Networks)采用Attention通过对邻居节点的加权求和,学习邻居节点的权重,获得节点本身的表达。 给定图 G = ( V , E ) G = (V,E) G=(V,E), V V V 表示点, E E E 表示边,节点数 ∣ V ∣ = N |V| = N ∣V∣=N。 输入: N N N节点的特点, h = { h ? 1 , h ? 2 , … , h ? N } , h ? i ∈ R F \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 i∈RF 输出:采用 Attention机制生成新的节点特征 h ′ = { h ⃗ 1 ′ , h ⃗ 2 ′ , … , h ⃗ N ′ } , h ⃗ i ′ ∈ R F ′ \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 i′∈RF′ 作为输出.
从GNN,GCN到GAT
- GNN学习的是邻居节点聚合到中心的方式,传统的GNN对于邻居节点采用的方式,各个邻居的
- GCN进行了改造邻居聚合方式矩阵做对称归一化,也是,但是它考虑到了,度越大权重往小了修正,是一种避免单节点链接巨量节点导致计算失真的调整方式,仅仅通过对权重做了修改,而没有考虑到因为节点的影响大小去调整权重的大小。
- GAT认为 (1).,从而提升表征能力 (2).GAT使用,等于1
W就是可以训练的参数,分别用来针对向量A/B/…等进行操作(转置) “||”:拼接操作,“*”:内积 参数a也可以通过网络训练得到。 节点i的特征乘以W拼接上节点j的特征乘以W,再乘以 a → \overrightarrow{a} a
,公式:( ( W h i → ∣ ∣ W h j → ) ∗ a → (W\overrightarrow{h_i}||W\overrightarrow{h_j})*\overrightarrow{a} (Whi
∣∣Whj
)∗a
)。 首先 ,为了更加充分地表示节点的特征,对节点 h i h_i hi 进行特征变换, W h i W h_i Whi , W ∈ R F ′ × F \mathbf{W} \in \mathbb{R}^{F^{\prime} \times F} W∈RF′×F ,即将节点的特征维度 F F F映射到维度 F ′ F^{\prime} F′上。关键的步骤来了,对图中的每个节点进行self-attention操作,计算任意两个节点之间的注意力权重。节点 j j j 对节点 i i i 的重要性计算公式如下: e i j = a ( W h ⃗ i , W h ⃗ j ) e_{i j}=a\left(\mathbf{W} \vec{h}_{i}, \mathbf{W} \vec{h}_{j}\right) eij=a(Wh
i,Wh
j) 一般而言,该模型允许图中的每个节点扩展到其他节点,从而丢弃所有结构信息。 原论文中,通过masked attention将图结构注入这个机制中,即对于节点 [公式] 来说,只计算其一阶邻居节点集合 N i N_i Ni 中节点 对 i i i 的作用, j ∈ N i j \in \mathcal{N}_{i} j∈Ni。 为了使系数在不同节点之间易于比较,论文中使用softmax函数在集合 N i \mathcal{N}_{i} Ni中对它们进行归一化,如下所示。在实验中,注意力机制是一个单层的前馈神经网络,激活函数采用LeakyReLU。 α i j = softmax j ( e i j ) = exp ( e i j ) ∑ k ∈ N i exp ( e i k ) \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)} αij=softmaxj(eij)=∑k∈Niexp(eik)exp(eij) Attention系数按如下方式生成: α i j = exp ( LeakyReLU ( a → T [ W h ⃗ i ∥ W h ⃗ j ] ) ) ∑ k ∈ N i exp ( LeakyReLU ( a → T [ W h ⃗ i ∥ W h ⃗ k ] ) ) \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)} αij=∑k∈Niexp(LeakyReLU(a
T[Wh
i∥Wh
k]))exp(LeakyReLU(a
T