圖注意力網絡-Graph Attention Network (GAT)
GAT(graph attention networks)網絡,處理的是圖結構數據。它與先前方法不同的是,它使用了masked self-attention
層。原來的圖卷積網絡所存在的問題需要使用預先構建好的圖。而在本文模型中,圖中的每個節點可以根據鄰域節點的特征,為其分配不同的權值。GAT結構很簡單,功能很強大,模型易於解釋。文章的實驗證明,GAT模型可以有效地適用於基於圖的歸納學習問題與轉導學習問題。
1. 圖注意力層-Graph Attentional Layer
1.1 圖注意力層要做什么
對於一個\(N\)節點的圖,我們一共會構造\(N\)個圖注意力網絡,因為每一個節點都需要對於其鄰域節點訓練相應的注意力。而圖注意力網絡的層數\(K\)則根據需要決定。我們在這里先分析\(K=1\),即一個單層圖注意力網絡的工作原理。
單層圖注意力網絡的輸入為一個向量集\(h = \{\vec{h_1},\vec{h_2},...,\vec{h_N}\},\vec{h_i}\in \R^F\),輸出為一個向量集\(h'=\{\vec{h_1'},\vec{h_2}',...,\vec{h_N'}\},\vec{h_i'}\in \R^{F'}\)。即,通過圖注意力層后,原本的節點信息\(\vec{h_i}\)被更新為了\(\vec{h_i'}\)。為了使得網絡能夠從原始輸入中提取更加深層次的信息,通常而言,\(F' > F\),即圖注意力層是一個將信號升維的網絡。
1.2 圖注意力層是如何工作的
下圖為節點\(i\)單的單層圖注意力網絡的其中一個鄰域節點\(j\)的結構表示。
對於節點\(i\),考慮其鄰域節點\(j\)對其的注意力權重的計算過程。
輸入為兩個向量\(\vec{h_i},\vec{h_j}\in \R^F\),為了將它們變換到\(\R^{F'}\),我們引入一個待學習的權重矩陣\(W\in\R^{F'\times F}\),以及一個待學習的向量\(\vec{a}\in \R^{2F'}\)。
- 做兩個運算: \(W * \vec{h_i}\) 和 \(W * \vec{h_j}\),得到兩個\(\R^{F'}\)維向量。
- 計算節點\(i\)在節點\(j\)上的注意力值\(e_{ij} = \alpha(W\vec{h_i},W\vec{h_j})\)。\(\alpha\)是一個\(\R^{F'}\times\R^{F'}\to R\)的映射。
- 最后對於節點\(i\)的所有鄰域節點求得\(e\)后,利用\(softmax\)完成注意力權重的歸一化操作。
具體到計算過程即為
在歸一化所有節點的注意力權重后,就可以通過圖注意力層進行節點的信息提取了。整個網絡的輸出值\(\vec{h_i'}\)計算公式如下(其中\(\sigma\)表示激活函數):
2. 多層圖注意力網絡(Multi-head Attention)

上圖為一個三層圖注意力網絡。多層注意力機制存在的意義在於:不同的特征可能需要分配不同的注意力權重,如果僅僅用單層注意力層,則對於該鄰域節點的所有屬性都采用了相同的注意力權重,這樣將會減弱模型的學習能力。
在引入了多層注意力網絡后,進一步調整公式為
特殊情況:如果我們將多層注意力網絡應用到最后一層(輸出層),應該將公式改為