論文解讀(GAT)《Graph Attention Networks》


  論文標題: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模型可以有效地適用於(基於圖的)歸納學習問題與轉導學習問題。

  Attention architecture 有幾個有趣的特性:
  • 計算速度快,可以在不同的節點上進行並行計算;
  • 可以通過指定鄰居指定任意權值應用於具有不同程度的圖節點;
  • 該模型直接適用於歸納學習問題,包括模型必須推廣到完全看不見的圖的任務。

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}$ :

    $\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}$  計算得到的結果合並(連接或求和):

    $\vec{h}_{i}^{\prime}=\|_{k=1}^{K} \sigma\left(\sum \limits _{j \in \mathcal{N}_{i}} \alpha_{i j}^{k} \mathbf{W}^{k} \vec{h}_{j}\right)$

  其中,  $||$  表示拼接,$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 )

  使用 protein-protein interaction (PPI) dataset ,該數據集包含 20 張圖用於訓練,2 張圖用於驗證,2 張圖用於測試。每個節點可能的標簽數為121個,而且,每個節點可以同時擁有多個標簽(在分類時使用sigmoid激活函數)。
  對於歸納學習任務,我們應用了一個三層的 GAT 模型。前兩層都由 $K=4$ 注意頭計算 $F^{\prime}=256$ 特征(總共 1024 個特征),然后是 ELU 非線性。最后一層用於(多標簽)分類:$K=6$ 個 attention head 計算每個 121 個特征,平均,然后是一個 logistic sigmoid activation 。這個任務的訓練集足夠大,我們發現不需要應用 $L_2$ 正則化或 dropout  ——然而,我們已經成功地在中間注意層使用了 skip connections 。我們在訓練過程中使用了 2 個圖的批處理大小。為了嚴格評估在此設置中應用注意機制的好處(即與接近GCN等效的模型相比),我們還提供了當使用恆定注意機制 $a(x,y)=1$ 時的結果,具有相同的架構——這將為每個鄰居分配相同的權重。

  歸納學習的實驗結果如下表所示,可以看到,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(忽略激活函數)

    $\mathrm{XW}=\left[\begin{array}{l} \boldsymbol{y}_{1} \\ \boldsymbol{y}_{2} \\ \boldsymbol{y}_{3} \end{array}\right]=\left[\begin{array}{ll} w_{11} x_{11}+w_{21} x_{12} & w_{12} x_{11}+w_{22} x_{21} \\ w_{11} x_{21}+w_{21} x_{22} & w_{12} x_{21}+w_{22} x_{22} \\ w_{11} x_{31}+w_{21} x_{32} & w_{12} x_{31}+w_{22} x_{32} \end{array}\right]$
    $X^{n o w}=\mathrm{AWX}=\left[\begin{array}{cc} w_{11} x_{11}+w_{21} x_{12}+w_{11} x_{21}+w_{21} x_{22} & w_{12} x_{11}+w_{22} x_{21}+w_{12} x_{21}+w_{22} x_{22} \\w_{11} x_{21}+w_{21} x_{22}+w_{11} x_{31}+w_{21} x_{32} & w_{12} x_{21}+w_{22} x_{22}+w_{12} x_{31}+w_{22} x_{32} \\ w_{11} x_{31}+w_{21} x_{32} & w_{12} x_{31}+w_{22} x_{32} \end{array}\right]$

    $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}$。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM