返回目录
公开知识笔记 · 不进入目录

图注意力网络GAT

公开知识笔记

图注意力网络GAT

一句话理解:GCN常把邻居按预设规则平均,GAT则让模型学习“这个节点当前应该更听哪个邻居”。

1. 从GCN到GAT

在图卷积网络GCN中,节点通过汇总邻居特征更新自己。但不同邻居未必同样重要:某个原子的特定相邻原子可能更能提示化学环境;某个副作用也可能只与少数相似副作用关系紧密。

先理解 WW:全图共享的“翻译器”

节点原始特征hih_i往往只是原始描述,例如原子的元素、价态、是否芳香,或副作用的频率特征。GAT先用同一个可学习矩阵WW把每个节点翻译到一个更适合比较和传递信息的空间:

zi=Whiz_i=Wh_i

可以把WW想成全图共用的一台“翻译器”:每个节点都用同一套规则翻译,所以翻译后的ziz_i、zjz_j可以直接比较。训练会不断调整WW,让它保留对当前任务有用的信息。WW不是“邻居重要性”的权重;它决定的是每个节点带着什么信息参与后续计算。

GAT如何用 WW 计算并传递信息

对边(i,j)(i,j),GAT把中心节点ii和邻居jj翻译后的表示放在一起,再由参数aa这个“打分器”判断:对更新ii而言,jj值得听多少。

eij=LeakyReLU⁡(a⊤[Whi∥Whj])e_{ij}=\operatorname{LeakyReLU}\left(a^\top[Wh_i\Vert Wh_j]\right)
  • [Whi∥Whj][Wh_i\Vert Wh_j]:把“我目前的状态”和“邻居提供的信息”并排交给打分器;
  • eije_{ij}:邻居jj的原始重要性分数,尚不能直接比较;
  • aa:学习“什么样的节点组合更值得关注”。

再在节点ii的邻居范围内归一化:

αij=exp⁡(eij)∑k∈N(i)exp⁡(eik)\alpha_{ij}=\frac{\exp(e_{ij})}{\sum_{k\in\mathcal N(i)}\exp(e_{ik})}

这一步让所有邻居的权重之和为11:某个邻居权重变大,其他邻居的相对权重就会变小。

最后,节点ii接收各邻居的“翻译后消息”WhjWh_j,并按重要性加权汇总:

hi′=σ(∑j∈N(i)αijWhj)h_i'=\sigma\left(\sum_{j\in\mathcal N(i)}\alpha_{ij}Wh_j\right)

因此,WhjWh_j在这里是邻居jj真正传出的内容;αij\alpha_{ij}决定ii听它的比例。实践中常将ii自己也加入邻居集合,以保留自身信息。

它和标准注意力的三个 WW 有何不同

Transformer的标准注意力为同一个输入学习三种不同角色:

qi=WQhi,kj=WKhj,vj=WVhjq_i=W_Qh_i,\qquad k_j=W_Kh_j,\qquad v_j=W_Vh_j αij=softmax⁡j(qi⊤kjdk),yi=∑jαijvj\alpha_{ij}=\operatorname{softmax}_j\left(\frac{q_i^\top k_j}{\sqrt{d_k}}\right),\qquad y_i=\sum_j\alpha_{ij}v_j
作用 标准注意力 原始GAT
中心节点用什么提出“我需要什么” qi=WQhiq_i=W_Qh_i WhiWh_i参与节点对打分
邻居用什么表明“我有什么” kj=WKhjk_j=W_Kh_j WhjWh_j参与节点对打分
邻居实际传出什么 vj=WVhjv_j=W_Vh_j WhjWh_j
如何打分 qi⊤kjq_i^\top k_j(点积) a⊤[Whi∥Whj]a^\top[Wh_i\Vert Wh_j](拼接后打分)

所以,WhiWh_i和WhjWh_j可以类比为Query侧和Key侧的信息,最终的WhjWh_j又类似Value;但它们并不等于严格分开的Q、K、V。原始GAT只用一个WW,让它同时服务于“比较邻居”和“传递消息”;Transformer则用WQW_Q、WKW_K、WVW_V分别学习这三种角色。

2. 每个符号是什么意思

  • hih_i:节点ii原来的特征;
  • WW:把特征投影到新空间的可学习矩阵;
  • aa:计算两节点匹配程度的可学习参数;
  • N(i)\mathcal N(i):节点ii的邻居集合;
  • αij\alpha_{ij}:邻居jj对更新节点ii的权重。

注意力只在已经连边的邻居中分配权重。若构图漏掉重要邻居,GAT不能凭空注意到它,所以图的质量仍然关键。

3. 多头注意力为什么存在

一个注意力头只学一种加权方式。多头GAT让模型并行学习多组权重,再拼接或平均:有的头可能关注局部化学结构,有的头关注电荷或芳香性相关模式。多头能增加表达能力,但头数更多不保证泛化更好。

4. A3Net中的两类图

  1. 药物分子图:节点是原子,边是化学键;
  2. 副作用图:节点是副作用,边来自频率轮廓的KNN相似关系。

两者分别经过三层GAT,构成GAM(Graph Attention Module)。药物侧再通过global max pooling从原子表示得到药物级向量。

5. GAT和Transformer注意力有什么不同

GAT Transformer自注意力
通常只在图邻居内计算 无mask时可让所有token两两交互
邻接图先规定“能看谁” 序列或mask规定“能看谁”
目标是图上的消息传递 目标是上下文表示学习

A3Net的GAM用GAT,CAM则使用Transformer编码器,详见交叉注意力与自注意力。

6. 注意力权重能否解释机制

权重能说明模型在某次前向计算中更依赖哪些邻居,但它受参数化、批次组成和替代特征影响。高权重不是因果效应,也不自动证明某个原子导致某种副作用。

7. GCN、GAT与注意力机制:公式上的统一与差异

共同点:都是“变换信息,再按权重聚合”

三者都可以抽象成同一个消息传递公式:

hi′=σ(∑j∈C(i)wijmj)h_i'=\sigma\left(\sum_{j\in\mathcal C(i)}w_{ij}m_j\right)
  • C(i)\mathcal C(i):节点(或token)ii允许汇总的信息来源;
  • mjm_j:来源jj传出的、经过变换的信息;
  • wijw_{ij}:ii分给jj的权重;
  • σ\sigma:聚合后的非线性变换。

也就是说,它们都在回答同两个问题:谁可以给我提供信息?我该听每个人多少?

三者分别代入这个统一公式

模型 信息来源 C(i)\mathcal C(i) 传出的信息 mjm_j 聚合权重 wijw_{ij}
标准注意力 所有token,或由mask允许的token WVhjW_Vh_j softmax⁡j((WQhi)⊤(WKhj)dk)\operatorname{softmax}_j\left(\frac{(W_Qh_i)^\top(W_Kh_j)}{\sqrt{d_k}}\right)
GCN 图邻居,通常包含自身 WhjWh_j 1d^id^j\frac{1}{\sqrt{\hat d_i\hat d_j}}
GAT 图邻居,通常包含自身 WhjWh_j softmax⁡j∈N(i)(LeakyReLU⁡(a⊤[Whi∥Whj]))\operatorname{softmax}_{j\in\mathcal N(i)}\left(\operatorname{LeakyReLU}(a^\top[Wh_i\Vert Wh_j])\right)

其中GCN的d^i\hat d_i是加入自环后节点ii的度数。只有存在边时,GCN的权重才非零。

差异:谁决定“能看谁”和“该听多少”

维度 标准注意力机制 GCN GAT
能看谁 默认可看全部token;mask可限制范围 邻接矩阵预先规定 邻接矩阵预先规定
权重如何产生 Query与Key的内容匹配,动态计算 只由图连接和节点度数决定,固定 由中心节点与邻居的特征共同决定,动态计算
特征投影 通常分别学习WQ,WK,WVW_Q,W_K,W_V 通常一个WW变换并传递特征 原始GAT通常一个WW既用于打分也用于传递消息
打分方式 点积:qi⊤kjq_i^\top k_j 无显式内容打分 拼接后由aa打分:a⊤[Whi∥Whj]a^\top[Wh_i\Vert Wh_j]
图结构的作用 可没有图;由序列位置或mask约束 决定邻居,也决定聚合权重 决定邻居;权重由注意力再学习

一句话串起来:

标准注意力让每个token在允许范围内按内容挑选信息;GCN让节点按图结构的固定规则平均邻居;GAT先由图规定可交流的邻居,再按节点内容学习应更重视谁。

相关论文

  • A3Net精读笔记(A3Net)