GNNs入门(二)GAT

1. 简介

图注意力网络(Graph Attention Networks,简称GAT)是一种革命性的图表示学习方法,它通过引入注意力机制,有效捕捉图中节点之间的复杂关系。GAT的核心优势在于能够动态学习节点与邻居节点的权重,从而在不同任务中实现高效的特征聚合。这种灵活性使其在图分类、节点分类等任务中取得了广泛应用。

2. 工作原理

GAT的工作原理可以概括为以下几个关键步骤:

2.1 节点表示初始化

首先,针对图中的每个节点,初始化其特征向量,通常根据节点的属性或外部信息来进行初始化。

2.2 注意力权重计算

GAT通过计算节点与其邻居之间的注意力权重来衡量它们之间的相互重要性。这一过程通常涉及节点特征向量的内积,以评估节点间的关联强度。
GAT中典型的注意力权重计算公式如下:
a u , v = exp ⁡ ( a T [ W h u W h v ] ) ∑ u ′ ∈ N ( u ) exp ⁡ ( a T [ W h u W h u ′ ] ) a_{u,v} = \frac{\exp\left(\mathbf{a}^T\left[\mathbf{W}\mathbf{h}_u \mathbf{W}\mathbf{h}_v\right]\right)}{\sum_{u' \in \mathcal{N}(u)} \exp\left(\mathbf{a}^T\left[\mathbf{W}\mathbf{h}_u \mathbf{W}\mathbf{h}_{u'}\right]\right)} au,v=uN(u)exp(aT[WhuWhu])exp(aT[WhuWhv])
其中, a \mathbf{a} a 是可训练的注意力向量, W \mathbf{W} W 是可训练的权重矩阵, N ( u ) \mathcal{N}(u) N(u) 是节点 u u u 的邻居节点集合。
上面这个只是最初始的公式,已经可以很好地处理图数据。然而,原则上,任何深度学习中的标准注意力模型都可以被应用。介绍两个流行的注意力变体:双线性注意力模型多层感知注意力模型(MLP注意力)。其中,后者MLP被限制为标量输出。

公式内容区别
original a u , v = exp ⁡ ( a T [ W h u W h v ] ) ∑ u ′ ∈ N ( u ) exp ⁡ ( a T [ W h u W h u ′ ] ) a_{u,v} = \frac{\exp\left(\mathbf{a}^T\left[\mathbf{W}\mathbf{h}_u \mathbf{W}\mathbf{h}_v\right]\right)}{\sum_{u' \in \mathcal{N}(u)} \exp\left(\mathbf{a}^T\left[\mathbf{W}\mathbf{h}_u \mathbf{W}\mathbf{h}_{u'}\right]\right)} au,v=uN(u)exp(aT[WhuWhu])exp(aT[WhuWhv])通过特征的连接和内积来计算
bilinear a u , v = exp ⁡ ( h u T W h v ) ∑ u ′ ∈ N ( u ) exp ⁡ ( h u T W h u ′ ) a_{u,v} = \frac{\exp\left(\mathbf{h}_u^T \mathbf{W} \mathbf{h}_v\right)}{\sum_{u' \in \mathcal{N}(u)} \exp\left(\mathbf{h}_u^T \mathbf{W} \mathbf{h}_{u'}\right)} au,v=uN(u)exp(huTWhu)exp(huTWhv)通过特征的线性变换和内积来计算
mlp a u , v = exp ⁡ ( MLP ( h u , h v ) ) ∑ u ′ ∈ N ( u ) exp ⁡ ( MLP ( h u , h u ′ ) ) a_{u,v} = \frac{\exp\left(\text{MLP}(\mathbf{h}_u, \mathbf{h}_v)\right)}{\sum_{u' \in \mathcal{N}(u)} \exp\left(\text{MLP}(\mathbf{h}_u, \mathbf{h}_{u'})\right)} au,v=uN(u)exp(MLP(hu,hu))exp(MLP(hu,hv))通过一个非线性的MLP模型来计算

当然,既然有了注意力,也可以应用多头来增强注意力。

  1. 多注意力头的邻居特征聚合公式:
    m N ( u ) = [ a 1 ⊕ a 2 ⊕ … ⊕ a K ] m_{\mathcal{N}(u)} = \left[a_{1} \oplus a_{2} \oplus \ldots \oplus a_{K}\right] mN(u)=[a1a2aK]

  2. 每个注意力头 ( k ) 的邻居特征加权求和公式:
    a k = W k ∑ v ∈ N ( u ) α u , v , k h v a_{k} = W_{k} \sum_{v \in \mathcal{N}(u)} \alpha_{u, v, k} h_{v} ak=WkvN(u)αu,v,khv
    其中, α u , v , k \alpha_{u, v, k} αu,v,k是节点 u u u 和其邻居 v v v 在第 k k k 个注意力头的注意力权重,可以使用上述任何一种注意力机制来计算。

2.3 注意力权重归一化

为了确保模型稳定性和提高可解释性,GAT采用softmax函数对注意力权重进行归一化处理,确保每个节点对其邻居的注意力权重之和为1。

2.4 邻居表示聚合

利用上一步得到的归一化注意力权重,GAT对每个节点的邻居节点表示进行加权平均,以生成节点的新表示。
h i ( l + 1 ) = σ ( ∑ j ∈ N ( i ) a i j h j ( l ) ) \mathbf{h}_i^{(l+1)} = \sigma\left(\sum_{j \in \mathcal{N}(i)} a_{ij} \mathbf{h}_j^{(l)}\right) hi(l+1)=σ jN(i)aijhj(l)
其中:

σ \sigma σ 是激活函数,如 ReLU, a i j a_{ij} aij 是归一化后的注意力权重, h j ( l ) \mathbf{h}_j^{(l)} hj(l) 是邻居节点 j j j 在当前层的表示。

2.5 节点表示更新

聚合后的表示向量将替代原始表示,成为节点的新特征向量,作为下一层的输入。

3. 迭代学习

通过迭代上述步骤,GAT能够不断优化节点的表示,逐渐揭示图中节点的深层关系和重要性。这种动态学习过程使得GAT在处理图数据时表现出色。

4. 应用场景

GAT生成的节点表示向量在多种任务中都显示出了其强大的能力,包括但不限于:

  • 图分类:识别整个图的结构特征。
  • 节点分类:预测图中单个节点的类别。

5. 总结

GAT通过其独特的注意力机制,为图数据的表示学习提供了一种高效且灵活的方法。它不仅能够捕捉节点间的复杂关系,还能够适应不同的图结构和任务需求。是经典的GNNs模型,后续也有在这个基础上的许多变体。

对于注意力机制有兴趣的也可以看我另一篇文章有详细介绍。
如果有帮助到你,能点个赞嘛!!谢谢!!!
目前在整理内容,尝试做自己的博客网站,敬请期待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我也秃了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值