【图表示学习】图注意力网络GAT

图注意力网络(Graph Attention Network)

一、简介

CNN只能用来解决grid-like结构的数据。有很多任务的数据无法表示成grid-like结构,但可以表示成为图结构。GAT(Graph Attention Networks)就是一种处理图结构数据的神经网络。该网络是基于注意力机制实现的。

二、GAT结构

1.图注意力层的输入与输出

图注意力层(Graph Attentional Layer)是构成整个GAT的唯一种类的层。

该层的输入是多个节点的特征, h = { h 1 ⃗ , h 2 ⃗ , … , h N ⃗ } , h i ⃗ ∈ R F \textbf{h}=\{\vec{h_1},\vec{h_2},\dots,\vec{h_N}\},\vec{h_i}\in\mathbb{R}^F h={h1 ,h2 ,,hN },hi RF,其中 N N N是节点数量, F F F是每个节点的特征数量。

该层的输出是这些节点的新特征, h ′ = { h 1 ′ ⃗ , h 2 ′ ⃗ , … , h N ′ ⃗ } , h i ′ ⃗ ∈ R F ′ \textbf{h}'=\{\vec{h_1'},\vec{h_2'},\dots,\vec{h_N'}\},\vec{h_i'}\in\mathbb{R}^{F'} h={h1 ,h2 ,,hN },hi RF,其中 F ′ F' F是新特征的维度。

2.注意力系数的计算

注意力机制的核心是计算各个部分对最终目标的贡献程度,这个贡献程度就是注意力系数。在图结构中,注意力系数是指某个节点对当前节点的贡献程度。具体来说,在GAT中节点 j j j的特征对节点 i i i特征的贡献程度表示为 e i j e_{ij} eij,其计算公式为
e i j = a ( W h i ⃗ , W h j ⃗ ) e_{ij}=a(\textbf{W}\vec{h_i},\textbf{W}\vec{h_j}) eij=a(Whi ,Whj )
其中 W ∈ R F ′ × F \textbf{W}\in\mathbb{R}^{F'\times F} WRF×F a a a是计算两个向量相似度的函数。在论文的实验中函数 a a a使用单层前馈网络,即
a ( x , y ) = L e a k y R e L U ( a ⃗ T [ x ∣ ∣ y ] ) a(x,y)=LeakyReLU(\vec{\textbf{a}}^T[x||y]) a(x,y)=LeakyReLU(a T[xy])
其中, L e a k y R e L U LeakyReLU LeakyReLU是激活函数, a ⃗ ∈ R 2 F ′ \vec{\textbf{a}}\in\mathbb{R}^{2F'} a R2F ∥ \Vert 表示向量拼接。

3.Masked Attention机制

在GAT中,注意力机制只作用在一阶相邻节点(当然,也可以作用在更高阶),为了统一量纲这里使用 s o f t m a x softmax softmax函数对注意力系数进行标准化
α i j = s o f t m a x j ( e i j ) = e x p ( e i j ) ∑ k ∈ N i e x p ( e i k ) \alpha_{ij}=softmax_j(e_{ij})=\frac{exp(e_{ij})}{\sum_{k\in\mathcal{N}_i}exp(e_{ik})} αij=softmaxj(eij)=kNiexp(eik)exp(eij)
其中, j ∈ N i j\in\mathcal{N}_i jNi N i \mathcal{N}_i Ni表示节点 i i i的邻居节点。

这里将计算 α i j \alpha_{ij} αij的所有部分展开,
α i j = e x p ( L e a k y R e L U ( a ⃗ T [ W h ⃗ i ∣ ∣ W h ⃗ j ] ) ) ∑ k ∈ N i e x p ( L e a k y R e L U ( a ⃗ T [ W h ⃗ i ∣ ∣ W h ⃗ k ] ) ) \alpha_{ij}=\frac{exp(LeakyReLU(\vec{\textbf{a}}^T[\textbf{W}\vec{h}_i||\textbf{W}\vec{h}_j]))}{\sum_{k\in\mathcal{N}_i}exp(LeakyReLU(\vec{\textbf{a}}^T[\textbf{W}\vec{h}_i||\textbf{W}\vec{h}_k]))} αij=kNiexp(LeakyReLU(a T[Wh iWh k]))exp(LeakyReLU(a T[Wh iWh j]))
得到标准化的注意力系统 α i j \alpha_{ij} αij后,使用这些系数进行线性合并,得到节点 i i i的新特征,即
h i ′ ⃗ = σ ( ∑ j ∈ N i α i j W h j ⃗ ) \vec{h_i'}=\sigma\Big(\sum_{j\in\mathcal{N}_i}\alpha_{ij}\textbf{W}\vec{h_j}\Big) hi =σ(jNiαijWhj )
【图表示学习】图注意力网络GAT_第1张图片

图1. 注意力系数的计算

4. 多头机制与输出层

为了能够更稳定的学习新特征,引入了多头机制。这里假设有 K K K个独立的注意力机制,那么多头注意力机制就是将各个注意力特征进行合并
h i ′ ⃗ = ∥ k = 1 K σ ( ∑ j ∈ N i α i j k W k h j ⃗ ) \vec{h_i'}=\Vert_{k=1}^K\sigma\Big(\sum_{j\in\mathcal{N}_i}\alpha_{ij}^k\textbf{W}^k\vec{h_j}\Big) hi =k=1Kσ(jNiαijkWkhj )
在网络的最终层执行多头注意力机制,不再使用拼接,而使用平均,并且延期使用激活函数(softmax、sigmoid等)
h i ′ ⃗ = σ ( 1 K ∑ k = 1 K ∑ j ∈ N i α i j k W k h j ⃗ ) \vec{h_i'}=\sigma\Big(\frac{1}{K}\sum_{k=1}^K\sum_{j\in\mathcal{N}_i}\alpha_{ij}^k\textbf{W}^k\vec{h_j}\Big) hi =σ(K1k=1KjNiαijkWkhj )
【图表示学习】图注意力网络GAT_第2张图片

图2. 多头注意力机制

三、GAT的优势

  1. 计算高效。自注意力层可以并行化,计算输出特征也可以并行化。
  2. 为不同的节点分配不同的重要度。
  3. 图不必是无向的。
  4. 直接适用于归纳学习(inductive learning)。
  5. 直接作用于领域,且不做任何顺序假设。

你可能感兴趣的:(图,图,图表示,注意力,图注意力,图神经网络)