Paper : Graph Attention Networks
Code :
摘要
注意力機制的核心在於對給定信息進行權重分配,只關注最相關的輸入來進行決策。當注意力機制用來生成一個序列的表示時,也被稱作是自注意力機制。注意力機制的表示形式如下
假定Source是需要系統處理的信息源,Query代表某種條件或者先驗信息,Attention Value是給定Query信息的條件下,通過注意力機制從Source中提取得到的信息。一般Source裏面包含有多種信息,我們將每種信息通過Key-Value對的形式表示出來,那麼Attention定義爲
Attention(Query,Source)=i∑similarity(Query,Keyi)⋅Valuei
其中 similarity(Query,Keyi) 表示權重,當Query與Key越接近時,答案越依賴於對應的Value的值。GAT將Attention機制應用到GNN中,Attention機制的三要素分別對應到圖中的以下要素
- Query : 某節點的特徵向量
- Source : 上一層所有鄰居節點的特徵向量
- Attention Value : 經過聚合後形成的當前層某節點的特徵向量
GAT具有以下幾個特點
- 操作高效,可以在 節點-鄰居 之間進行並行化計算
- 通過對鄰居指定任意權重,可以應用於度數不同的圖節點
- 該模型直接適用於歸納學習問題,包括必須將模型推廣到完全不可見圖的任務
GAT結構
GAT層的輸入是節點的特徵表示 h={hi∣1≤i≤N} ,其中 hi∈RF,輸出是聚合後節點的新的特徵表示 h′={h′i∣1≤i≤N} ,其中 h′i∈RF′。與其他MPNN結構GNN層相似,GAT層需要學習一個線性映射 W∈RF′×F ,而節點 j 對於節點 i 的注意力權重定義爲
ei,j=a(Whi,Whj)
最通用的形式下,該注意力機制可以表示任意節點 j 對任意節點 i 的權重,但是一般限制爲一階鄰居和自己,即
j∈N(vi)N(vi)=N(vi)∪{vi}
爲了便於比較不同節點之間的相關係數,需要對節點 i 所有的鄰居節點 j 的權重進行正則化
αi,j=softmaxj(ei,j)=∑vk∈N(vi)exp(ei,k)exp(ei,j)
對於 ei,j ,a 可以選擇爲非參數的相似度函數,也可以選擇使用參數化的模型來輸出相似度。在GAT中採用單層全連接網絡進行相似度評估,即 a∈R2F′,並使用LeakyReLU 參數 α=0.2,最終權重可以表示爲
αi,j=∑vk∈N(vi)exp(LeakyReLU(aT[Whi∣∣hk]))exp(LeakyReLU(aT[Whi∣∣hj]))
節點表示向量聚合之後的結果如下
hi′=σ(vj∈N(vi)∑αi,jWhj)
爲了使自注意力機制的學習過程更加穩定,可以將該方法擴展到multi-head attention,假設同時使用了K個注意力機制,輸出是將它們單獨的輸出進行連接
hi′=∣∣k=1Kσ(vj∈N(vi)∑αi,jkWkhj)
如果將多頭注意力機制使用到最後一層,那麼連接操作不太合適,一般使用均值操作來合併多個注意力機制的結果並延遲sigmoid操作
hi′=σ(K1k=1∑Kvj∈N(vi)∑αi,jkWkhj)
總結
GAT提出了一個只需要知道局部特徵就可以計算的Attention機制,算法並行支持很好,而且對於效果也有一定的改善。從實驗設置上,可能缺乏一個有關計算代價的實驗來支持“低代價計算Attention”的結論。GAT具有以下幾個可以改進的方向
- 處理的batch size的數據
- 使用Attention分析模型表示能力
- 從node classification 擴展到graph classification
- 將edge features考慮進來