【GNN】GAT:Attention 在 GNN 中的應用

今天學習的是劍橋大學的同學 2017 年的工作《GRAPH ATTENTION NETWORKS》,目前引用數量超過 1100 次。

Attention 機制在 NLP CV 等領域被廣泛應用,其可以幫助模型對輸入數據賦予不同的權重信息。同樣的,Attention 也可以應用於網絡圖中,它可以對鄰居中不同的節點指定不同的權重,既不需要進行矩陣運算,也不需要事先了解圖的全局結構。通過這種方式,作者解決了基於頻譜的圖神經網絡的幾個關鍵問題,並使得模型更方便的應用於歸納和轉換問題。

1.Introduction

在之前的文章中我們也說過,學者想將卷積操作應用於網絡圖中主要有兩種方式,一種是基於空域的方法,另一種是基於頻域的方法。空域是指直接在網絡中進行建模,而頻域是指將網絡圖映射到頻域後利用卷積變換進行建模。之所以要映射到頻域是因爲網絡在空域中不具備規整性(也可以理解爲平移不變性),而映射到頻域後則可以完成卷積操作。

在許多基於序列(sequence-based)的任務中,注意力機制幾乎已經成爲這個鄰域的標準。注意力機制的一大好處在於:它允許處理可變大小的輸入,將注意力集中在最相關的輸入部分。最開始的時候,注意力機制是用來計算序列的表徵,通常被稱爲:self-attention。注意力機制可以改進 RNN/CNN 在閱讀理解中性能,後來 Google 的同學直接通過 self-attention 構建出 Transformer 模型,並在機器翻譯任務中取得了 SOTA。

受此啓發,作者引入了基於注意力機制的體系結構來改進節點分類任務。其思想在於:在爲圖中每個節點計算向量表徵時,利用 self-attention 的策略加權節點的鄰居。這樣的結構有很多很好的性質:

  1. 計算效率高:可以跨節點進行並行計算;
  2. 可以應用於不同度(degree)的圖節點(克服了空間卷積的缺點);
  3. 可以進行歸納學習;

接下來看一下模型的詳細情況。

2.GAT

在這一節主要介紹下模型的架構,並與之前的工作進行對比。

2.1 Graph Attention Layer

首先描述一下圖注意力層(Graph Attentional Layer)。

圖注意力層的輸入是節點特徵 h={h1,h2,...,hN},hiRFh=\{\overrightarrow h_1, \overrightarrow h_2,...,\overrightarrow h_N\}, \overrightarrow h_i \in \mathbb{R}^F ,其中 N 爲節點的數量,F 爲節點特徵維度。圖注意力層的輸出是節點的新特徵 h={h1,h2,...,hN},hiRFh^{'}=\{\overrightarrow {h_1^{'}}, \overrightarrow {h_2^{'}},...,\overrightarrow {h_N^{'}}\}, \overrightarrow {h_i^{'}} \in \mathbb{R}^{F^{'}}

爲了獲得充分的表達,我們還需要一個線性變換,這裏採用一個共享的參數化權重矩陣 $W\in\mathbb{R}{F{’}\times F} $。然後利用一個共享注意力機制 a:RF×RFRa:\mathbb{R}^{F^{'}} \times \mathbb{R}^F \rightarrow \mathbb{R}
eij=a(Whi,Whj) e_{ij} = a(W \overrightarrow {h_i}, W \overrightarrow {h_j}) \\
這個公式表示爲節點 j 的特徵相對節點 i 的重要性。

對於這個公式來說,該模型允許每個圖中的每個節點都參與到其他節點的計算中,即刪除了網絡圖的結構信息。對此,我們可以通過 masked attention 操作確保每次計算時只考慮節點的鄰域信息,以此來爲模型注入網絡的結構信息。

這裏,作者只考慮一階鄰域信息(包括自身節點)。爲了消除權重量綱,作者使用 softmax 進行歸一化處理:
αij=softmaxj(eij)=exp(eij)kNiexp(eik) \alpha_{ij} = softmax_j(e_{ij}) = \frac{exp(e_{ij})}{\sum_{k\in N_i}exp(e_{ik})} \\
作者設計的注意力機制是一個單層的前饋神經網絡,參數向量爲 aR2F\overrightarrow a \in \mathbb R^{2F^{'}} ,並利用 LeakyReLU 增加非線形(α=0.2)(\alpha = 0.2)。所以公式最終寫爲:
αij=exp(LeakyReLU(aT[WhiWhj]))kNi  exp(LeakyReLU(aT[WhiWhk])) \alpha_{ij} = \frac{exp \big( LeakyReLU(\overrightarrow {a^T} [W \overrightarrow{h_i} || W \overrightarrow{h_j} ]) \big) }{\sum_{k\in N_i}\; exp \big (LeakyReLU(\overrightarrow {a^T} [W \overrightarrow{h_i} || W \overrightarrow{h_k} ]) \big )} \\
其中,|| 表示拼接操作(concat)。

得到歸一化注意係數後,計算其對應特徵的線性組合,並利用非線形激活函數得到最終的輸出特徵:
hi=σ(jNiαijWhj) \overrightarrow {h_{i}^{'}} = \sigma \big( \sum_{j \in N_i }\alpha_{ij} W \overrightarrow {h_j} \big) \\
爲了穩定注意力機制的學習過程,我們將注意力機制拓展到多頭注意力(multi-head attention)。K 個的注意力機制獨立運行,並將最後的特徵進行拼接,最終公式爲:
hi=k=1Kσ(jNiαijkWkhj) \overrightarrow {h_i^{'}} = {||}_{k=1}^K \sigma \big(\sum_{j\in N_i} \alpha_{ij}^k W^{k} \overrightarrow {h_j} \big) \\
此時,輸出的特徵是有 KFKF^{'} 維。

特別的,如果多頭注意力後面會接一個預測層,那麼拼接操作可能就不太合理了,取而代之我們可以取其均值,並應用一個非線性函數:
hi=σ(1Kk=1KjNiαijkWkhj) \overrightarrow {h_i^{'}} = \sigma \big(\frac{1}{K} \sum_{k=1}^K \sum_{j\in N_i} \alpha_{ij}^k W^{k} \overrightarrow {h_j} \big) \\

原文:If we perform multi-head attention on the final (prediction) layer of the network, concatenation is no longer sensible。

這裏的不合理,感覺是通過實驗結果反推來的。

GAT 的注意力和多頭注意力的可視化如下圖所示:

左邊是兩個節點的 attention 過程,右邊是多頭注意力的聚合(K=3,不同顏色代表不同的注意力)。

2.2 Comparisons to Related Work

GAT 解決了之前用 GCN 建模圖結構數據時出現的幾個問題:

  1. 計算高效:既不用進行矩陣特徵分解,也不需要進行矩陣運算,單個時間注意力的時間複雜度爲 O(VFF+EF)O(|V|FF^{'}+|E|F^{'}),其複雜度與 GCN 的差不多;應用多頭注意力時,完全可以並行化計算;
  2. 隱式地爲節點的同一鄰居分配不同權重,從而擴展了模型的表達的能力,同時也提升了模型的可解釋性;
  3. 注意力機制以共享的方式應用於圖上的所有邊,因此無需知道圖上所有的節點和邊,最直接的好處在於可以直接適用於歸納學習;
  4. GraphSAGE 是對鄰域進行固定大小的採樣,相比 GAT 來說鄰域的信息獲取有限,而基於 LSTM 提取鄰域信息時,其假設存在一個一致且連續的節點排序,並且 GraphSAGE 通過提供隨機排序的序列進行糾正,GAT 則沒有對鄰域節點排序的限制;

#3.Experiment

簡單看下實驗部分。

先來看下數據集:

實驗分爲直推學習(Transductive learning)和歸納學習(Inductive learning)

利用 t-SNE 降維進行可視化展示:

4.Conclusion

總結:作者提出了一種新型的圖卷積神經網絡——圖注意網絡(GAT),其利用帶 masked 的自注意力層來處理圖結構數據,同時利用多頭注意力對節點鄰域進行充分表達。GAT 在諸多數據集中無論是直推學習還是歸納學習都取得不錯的成績。

當然,GAT 還有很多需要改進的地方,比如說在並行計算時如何克服冗餘計算,如何提高網絡深度等等。

5.Reference

  1. 《GRAPH ATTENTION NETWORKS》

關注公衆號跟蹤最新內容:阿澤的學習筆記

阿澤的學習筆記

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章