GAT图注意力网络
GAT(Graph Attention Networks),加入了注意力机制的图神经网络,与GCN不同的是,其消息传递的权重是通过注意力机制得到。GAT的计算过程:aij=softmaxjeijexp(eij)Σk∈Niexp(eik)a_{ij}=softmax_{j}e_{ij}\frac{exp(e_{ij})}{\Sigma_{k∈N_i}exp(e_{ik})}aij=softmaxj
GAT(Graph Attention Networks),加入了注意力机制的图神经网络,与GCN不同的是,其消息传递的权重是通过注意力机制得到。
GAT的计算过程:
aij=softmaxjeijexp(eij)Σk∈Niexp(eik)a_{ij}=softmax_{j}e_{ij}\frac{exp(e_{ij})}{\Sigma_{k∈N_i}exp(e_{ik})}aij=softmaxjeijΣk∈Niexp(eik)exp(eij) (1)
eij=LeakyReLU(αT[Whi∣∣Whj])e_{ij}=LeakyReLU(α^T[Wh_i||Wh_j])eij=LeakyReLU(αT[Whi∣∣Whj]) (2)
下面来详细解析这个公式
aija_{ij}aij代表的是节点j传递到节点i时要乘上的权重
hih_ihi和hjh_jhj;是当前输入层的节点i和节点j的特征表示,WWW是线性变换矩阵,形状是W∈RF×F′W∈R^{F×F'}W∈RF×F′,其中F就是输入特征的维度。F’是输出特征的维度。
||是向量拼接操作,原本维度为F的hih_ihi与hjh_jhj;经过WWW线性变换后维度均变为F′F'F′,经过拼接后得到维度为2F’的向量。此时再点乘一个维度为2F’的单层矩阵α\alphaα的转置,然后经LeakyReLU激活后得到1维的eije_{ij}eij
得到所有的eije_{ij}eij后, 再进行softmax操作,得到注意力权重aija_{ij}aij
那么LeakyReLU函数是什么?
ReLU(x)={x,x≥00,x<0ReLU(x)=\begin{cases} x, x ≥ 0\\ 0, x < 0 \\ \end{cases} ReLU(x)={x,x≥00,x<0
LeakyReLU(x)={x,x≥0αx,x<0LeakyReLU(x)=\begin{cases} x, x ≥ 0\\ \alpha x, x < 0 \\ \end{cases} LeakyReLU(x)={x,x≥0αx,x<0
ReLU函数属于“非饱和激活函数”,由公式可见ReLU就是将所有负值都设为0。如果大多数的参数都为负值,那么显然ReLU的激活能力会大大折扣。
LeakyReLU在负值部分赋予了一个负值斜率α\alphaα。如此一来负值是会根据α\alphaα的值变化,而不会都为0。
LeakyReLu又衍生出了:PReLU(parametric rectified inear参数化线性修正),负值斜率由训练数据决定的RReLU(randomized rectified linear随机线性修正),负值斜率是在一个范围内随机取值,且会在训练过程中随机变化。
计算节点的在当前GAT网络层的输出向量hi′h_{i}'hi′,即可描述为:
hi′=σ(Σj∈NiαijWhj)h_{i}'=\sigma(\Sigma_{j∈N_i}\alpha_{ij}Wh_{j})hi′=σ(Σj∈NiαijWhj) (3)
其中σ(⋅)\sigma(·)σ(⋅)代表任意激活函数,NiN_iNi代表节点i的一阶邻居集,WWW与注意力计算中的WWW是一样的。到这就是一个消息传递,并用加权求和的方式进行消息聚合的计算过程。
在GAT中,我们可以进行多次消息传递操作,然后将每次得到的向量拼接或者求平均。这称之为多头注意力(Multi-Head Attention),请看如下公式:
(GAT的论文中建议在GAT网络中间的隐藏层采取拼接操作,而最后一层采取平均操作。)
拼接每一层单头消息传递得到的向量:
平均每一层单头消息传递得到的向量:
更多推荐
所有评论(0)