論文標題:Graph Attention Networks
論文方向:圖像領域
論文來源:ICLR 2018
論文鏈接:https://arxiv.org/abs/1710.10903
論文代碼:https://github.com/PetarV-/GAT
1 介紹
針對圖結構數據,本文提出了一種GAT( Graph Attention Networks )網絡。該網絡使用 masked self-attention層解決了之前基於圖卷積的模型所存在的問題。在 GAT 中,圖中的每個節點可以根據鄰節點的特征,為其分配不同的權值。GAT的另一個優點在於,無需使用預先構建好的圖。因此,GAT可以解決一些基於譜的圖神經網絡中所具有的問題。實驗證明,GAT模型可以有效地適用於(基於圖的)歸納學習問題與轉導學習問題。
- 計算速度快,可以在不同的節點上進行並行計算;
- 可以通過指定鄰居指定任意權值應用於具有不同程度的圖節點;
- 該模型直接適用於歸納學習問題,包括模型必須推廣到完全看不見的圖的任務。
2 GAT 網絡架構
通過堆疊單個的圖注意力層(building block layer)來構建任意的圖注意力網絡。
2.1 Graph Attentional Layer
首先來介紹單個的 Graph attentional layer.
單個的 Graph attentional layer 的輸入是一個節點特征向量集:
$\mathbf{h}=\left\{\vec{h}_{1}, \vec{h}_{2}, \ldots, \vec{h}_{N}\right\}, \vec{h}_{i} \in \mathbb{R}^{F}$
其中, $N$ 表示節點集中節點的個數, $F$ 表示相應的特征向量維度。
每一層的輸出是一個新的節點特征向量集:
$\mathbf{h}^{\prime}=\left\{\vec{h}_{1}^{\prime}, \vec{h}_{2}^{\prime}, \ldots, \vec{h}_{N}^{\prime}\right\}, \vec{h}_{i}^{\prime} \in \mathbb{R}^{F^{\prime}}$
其中,$F^{\prime}$ 表示新的節點特征向量維度 (可以不等於 $F$ )。
一個 Graph attentional layer 的結構如下圖所示:
為了獲得足夠的表達能力將輸入特征轉換為更高層次的特征,Graph attentional layer 首先根據輸入的節點特征向量集,進行 self-attention處理:
$e_{i j}=a\left(\mathbf{W} \vec{h}_{i}, \mathbf{W} \vec{h}_{j}\right)$
其中, $a$ 是一個 $\mathbb{R}^{F^{\prime}} \times \mathbb{R}^{F^{\prime}} \rightarrow \mathbb{R}$ 的映射,$W \in \mathbb{R}^{F^{\prime} \times F}$ 是一個權重矩陣(被所有 $\vec{h}_{i}$ 的共享)。$e_{ij}$ 表明節點 $j$ 的特征對節點 $i$ 的重要性。
一般來說,self-attention 會將注意力分配到圖中所有的節點上,這種做法顯然會丟失結構信息。為了解決這一問題,本文使用了一種 masked attention 的方式——僅將注意力分配到節點 $i$ 的鄰節點集上,即 $j \in \mathcal{N}_{i}$,(在本文中,節點 $i$ 也是 $\mathcal{N}_{i}$ 的一部分):
為了使注意力權重在不同節點之間容易比較,我們使用 Softmax 函數對所有的選擇進行標准化:
$\alpha_{i j}=\operatorname{softmax}_{j}\left(e_{i j}\right)=\frac{\exp \left(e_{i j}\right)}{\sum \limits _{k \in \mathcal{N}_{i}} \exp \left(e_{i k}\right)}$
其中,$\overrightarrow{\mathbf{a}} \in \mathbb{R}^{2 F^{\prime}} $ 是單層前饋神經網絡 $a$ 的一個權重向量參數。$a$ 使用 LeakyReLU 非線性激活函數(在負區間,斜率 $\alpha=0.2$)。
注意力機制的完全形式為:
$\alpha_{i j}=\frac{\exp \left(\operatorname{LeakyReLU}\left(\overrightarrow{\mathbf{a}}^{T}\left[\mathbf{W} \vec{h}_{i} \| \mathbf{W} \vec{h}_{j}\right]\right)\right)}{\sum \limits _{k \in \mathcal{N}_{i}} \exp \left(\operatorname{LeakyReLU}\left(\overrightarrow{\mathbf{a}}^{T}\left[\mathbf{W} \vec{h}_{i} \| \mathbf{W} \vec{h}_{k}\right]\right)\right)}$
其中, $\vec{a}^{T} \in \mathbb{R}^{2 F^{\prime}}$ 為前饋神經網絡 $a$ 的參數,${.}^{T} $ 代表着是轉置操作,$||$ 是串聯操作( t.cat )。這里最終 $\alpha_{ij} \ \epsilon \ {\mathbb{R}}$ 。
$\vec{h}_{i}^{\prime}=\sigma\left(\sum \limits _{j \in \mathcal{N}_{\mathbf{1}}} \alpha_{i j} \mathbf{W} \vec{h}_{j}\right)$
為提高模型的擬合能力,本文引入了 multi-head attention ,即同時使用多個 $W^{k}$ 計算 self-attention,然后將各個 $W^{k}$ 計算得到的結果合並(連接或求和):
其中, $||$ 表示拼接,$a_{i j}^{k}$ 表示 $W^{k}$ 與 第 $k$ 個抽頭得到的計算結果。由於 $W^{k} \in \mathbb{R}^{F^{\prime} \times F}$ , 因此這里的 $\vec{h}_{i}^{\prime} \in \mathbb{R}^{K F^{\prime}}$ 。
如果我們對網絡的最終(預測)層執行 multi-head attention ,那么連接就不再是明智的,可以采取求和的方式來得到 $\vec{h}_{i}^{\prime}$:
$\vec{h}_{i}^{\prime}=\sigma\left(\frac{1}{K} \sum \limits _{k=1}^{K} \sum \limits_{j \in \mathcal{N}_{i}} \alpha_{i j}^{k} \mathbf{W}^{k} \vec{h}_{j}\right)$
由於 $W^{k} \in \mathbb{R}^{F^{\prime} \times F}$ ,因此這里的 $\vec{h}_{i}^{\prime} \in \mathbb{R}^{ F^{\prime}}$ 。
2.2 與相關工作的比較
本文使用了很大的篇幅將GAT與其他的圖模型進行了比較:
- GAT是高效的。相比於其他圖模型,GAT 無需使用特征值分解等復雜的矩陣運算。單層 GAT 的 時間復雜度為 $O\left(|V| F F^{\prime}+|E| F^{\prime}\right) $ (與 GCN 相同) 。其中,$ |V| $ 與 $|E|$ 分別表示圖中節點的數量與邊的數量。
- 相比於GCN,每個節點的重要性可以是不同的,因此,GAT具有更強的表示能力。
- 對於圖中的所有邊,attention 機制是共享的。因此GAT也是一種局部模型。也就是說,在使用GAT時,我們無需訪問整個圖,而只需要訪問所關注節點的鄰節點即可。這一特點的作用主要有:最新的歸納學習方法(GraphSAGE)通過從每個節點的鄰居中抽取固定數量的節點,從而保證其計算的一致性。這意味着,在執行推斷時,我們無法訪問所有的鄰居。然而,本文所提出的模型是建立在所有鄰節點上的,而且無需假設任何節點順序。
- 可以處理有向圖(若 $j\longrightarrow i$ 不存在,僅需忽略 $\alpha _{ij}$ 即可);
- 可以被直接用於進行歸納學習——包括在訓練過程中完全看不到的圖上評估模型的任務。
- GAT可以被看作是 MoNet 的一個特例。具體來說,可以通過將偽坐標函數(pseudo-coordinate function)設為 $u(x, y)=f(x) \| f(y)$ 。其中,$f(x)$ 表示節點 $x$ 的特征,$||$ 表示連接符號;相應的權值函數則變成了 $w_{j}(u)=\operatorname{softmax}(\operatorname{MLP}(u))$ 。然而,需要注意的是,與之前考慮的 MoNet 實例相比,我們的模型使用節點特征進行相似性計算,而不是節點的結構屬性(假設知道圖的結構)。
3 實驗
本文的實驗建立在四個基於圖的任務上,這些任務包括三個轉導學習(transductive learning)任務以及一個歸納學習(inductive learning)任務。具體如下:
這兩個模型都使用 Glorot 初始化進行初始化,並使用 AdamSGD 優化器 進行訓練,以減少訓練節點上的交叉熵,Pubmed 的初始學習率為0.01,其他數據集的初始學習率為 0.005。在這兩種情況下,我們都使用交叉熵損失的早期停止策略和驗證節點的准確性(轉導學習),使用$micro-F_{1} $f1(歸納學習)得分的停止策略,訓練 100 個epoch。
3.1 轉導學習(Transductive learning)
三個標准的引文網絡基准數據集——Cora, Citeseer and Pubmed 。這三個數據庫每個類20 個節點用於訓練,然而,根據 transductive setup ,訓練算法可以訪問所有節點的特征向量(這就是轉導學習的特點),使用500 個節點做驗證,使用1000個節點做測試。
對於轉導學習任務,我們應用了一個兩層 GAT 模型。它的架構超參數已經在 Cora 數據集上進行了優化,然后被重新用於 Citeseer。第一層由 $K = 8$ 個 attention head 組成,每個 attention head 計算 $F^{\prime} = 8$ 個特征(總共 64 個特征),然后使用指數線性單元(ELU)非線性。第二層用於分類:計算 $C$ 個特征的 single attention head(其中 $C$ 是類的數量),然后是 softmax 激活。為了應對較小的訓練集大小,模型中大量應用了正則化。在訓練期間,我們應用 $L_2$ 正則化,$\lambda = 0.0005$。此外,$p = 0.6$ 的 dropout 應用於兩個層的輸入以及歸一化的注意力系數。我們發現 Pubmed 的訓練集大小(60 個示例)需要對 GAT 架構稍作更改:我們應用了 $K = 8$ 個輸出注意力頭(而不是一個),並將 $L_2$ 正則化增強為 $\lambda = 0.001$。否則,該架構與用於 Cora 和 Citeseer 的架構相匹配。
轉導學習的實驗結果如下表所示,可以看到,GAT模型的效果要基本優於其他模型。
3.2 歸納學習(Inductive learning )
歸納學習的實驗結果如下表所示,可以看到,GAT模型的效果要遠遠優於其他模型。

4 結論
本文提出了一種基於 self-attention 的圖模型。總的來說,GAT的特點主要有以下兩點:
- 與GCN類似,GAT同樣是一種局部網絡。因此,(相比於GNN或GGNN等網絡)訓練GAT模型無需了解整個圖結構,只需知道每個節點的鄰節點即可。
$A=\left[\begin{array}{lll} 1 & 1 & 0 \\ 0 & 1 & 1 \\ 0 & 0 & 1 \end{array}\right] \quad X=\left[\begin{array}{ll}x_{11} & x_{12} \\x_{21} & x_{22} \\ x_{31} & x_{32} \end{array}\right] \quad W=\left[\begin{array}{ll} w_{11} & w_{12} \\ w_{21} & w_{22} \end{array}\right]$
單層GCN(忽略激活函數)
$X^{n e w}=A^{n e w} X W=\left[\begin{array}{cc}a_{11}\left(w_{11} x_{11}+w_{12} x_{12}\right)+a_{12}\left(w_{11} x_{21}+w_{21} x_{22}\right) & \ldots \\\ldots & \ldots \\\ldots & w_{12} x_{31}+w_{22} x_{32}\end{array}\right]$
- GAT與GCN有着不同的節點更新方式。GCN使用的是GAT使用 self-attention為每個鄰節點分配權重,也就是說,GAT的節點更新方式與以下是一個具體的示例。假設有三個節點,每個節點使用二維向量進行表示,則兩種網絡對應於以上運算。通過對比可以發現,GAT在計算新的節點表示時,相比於GCN,多引入了一個權值矩陣(可以看成將原先的 $A$ 修改成了 $A^{new}$。