
0 GRAPH ATTENTION NETWORKS的誕生
随着GCN的大紅大紫(可以參考如何了解 Graph Convolutional Network(GCN)?),
graph領域的deep learning研究可謂變得風生水起,人工智能又出現了新的網紅。GCN在一系列任務取得了突破性進展的同時,一系列的缺點也逐漸被放大。
深度學習三巨頭”之一的Yoshua Bengio組提出了Graph Attention Networks(下述簡稱為GAT)去解決GCN存在的問題并且在
不少的任務上都取得了state of art的效果(可以參考機器之心:深入了解圖注意力機制的複現結果),
是graph neural network領域值得關注的工作。1 聊點基礎
登堂入室之前,先介紹三點基礎問題。
1.1 Graph資料結構的兩種“特征”當我們說起graph或者network的資料結構,通常是包含着頂點和邊的關系。研究目标聚焦在頂點之上,邊訴說着頂點之間的關系。
對于任意一個頂點圖1 graph示意圖
當然,除了圖的結構之外,每個頂點還有自己的特征它可以使社交網絡中每個使用者的個體屬性;可以是生物網絡中,每個蛋白質的性質;還可以使交通路網中,每個交叉口的車流量。
graph上的deep learning方法無外乎就是希望學習上面的兩種特征。 1.2 GCN的局限性GCN是處理transductive任務的一把利器(transductive任務是指:訓練階段與測試階段都基于同樣的圖結構),然而GCN有
兩大局限性是經常被诟病的:
(a)
無法完成inductive任務,即處理動态圖問題。inductive任務是指:訓練階段與測試階段需要處理的graph不同。通常是訓練階段隻是在子圖(subgraph)上進行,測試階段需要處理未知的頂點。(unseen node)
(b)
處理有向圖的瓶頸,不容易實作配置設定不同的學習權重給不同的neighbor。這一點在前面的文章中已經講過了,不再贅述,如有需要可以參考下面的連結。
superbrother:解讀三種經典GCN中的Parameter Sharingzhuanlan.zhihu.com
還有一件事件需要提前說清楚:
GAT本質上可以有兩種運算方式的,這也是原文中作者提到的
- Global graph attention
可以了解為圖1的藍色頂點對于其餘全部頂點進行一遍運算。
優點:完全不依賴于圖的結構,對于inductive任務無壓力
缺點:(1)丢掉了圖結構的這個特征,無異于自廢武功,效果可能會很差(2)運算面臨着高昂的成本
- Mask graph attention
注意力機制的運算隻在鄰居頂點上進行,也就是說圖1的藍色頂點隻計算和橙色頂點的注意力系數。
作者在原文中GAT ARCHITECTURE這一節中寫道"We inject the graph structure into the mechanism by performing masked attention—we only compute eij for nodes j ∈Ni, whereNi is some neighborhood of node i in the graph. "
顯然作者在文中采用的是masked attention,DGL裡實作的也是如此,以下的解讀均基于這種方式。2 GAT并不難懂
和所有的attention mechanism一樣,GAT的計算也分為兩步走: 2.1 計算注意力系數(attention coefficient)對于頂點
,逐個計算它的鄰居們(
)和它自己之間的相似系數
解讀一下這個公式:
首先一個共享參數;
對于頂點
的變換後的特征進行了拼接(concatenate);
最後作者是通過 single-layer feedforward neural network實作的。
顯然學習頂點要注意這裡作者用了個
,至于原因嘛,估計是試出來的,畢竟深度玄學。
上面的步驟可以參考圖2進行了解
圖2 第一步運算示意圖
2.2 權重求和(aggregate)完成第一步,已經成功一大半了。第二步很簡單,
根據計算好的注意力系數,把特征權重求和(aggregate)一下。就是GAT輸出的對于每個頂點
的新特征(融合了鄰域資訊),
是激活函數。
式(3)看着還有點單薄,
俗話說一個籬笆三個樁,attention得靠multi-head幫!來進化增強一下
嗯,這次看起來就很健壯了,
multi-head attention也可以了解成用了ensemble的方法,畢竟convolution也得靠大量的卷積核才能大顯神威!上面的步驟可以參考圖3進行了解
圖3 第二步運算示意圖
3 談幾點深入的了解
3.1 與GCN的聯系與差別無獨有偶,我們可以發現本質上而言:
GCN與GAT都是将鄰居頂點的特征聚合到中心頂點上(一種aggregate運算),利用graph上的local stationary學習新的頂點特征表達。
不同的是GCN利用了拉普拉斯矩陣,GAT利用attention系數。一定程度上而言,GAT會更強,因為 頂點特征之間的相關性被更好地融入到模型中。
3.2 為什麼GAT适用于有向圖? 我認為最根本的原因是GAT的運算方式是逐頂點的運算(node-wise),這一點可從公式(1)—公式(3)中很明顯地看出。每一次運算都需要循環周遊圖上的所有頂點來完成。逐頂點運算意味着,擺脫了拉普利矩陣的束縛,使得有向圖問題迎刃而解。
3.3為什麼GAT适用于inductive任務? GAT中重要的學習參數是與此相反的是,
GCN是一種全圖的計算方式,一次計算就更新全圖的節點特征。學習的參數很大程度與圖結構相關,這使得GCN在inductive任務上遇到困境。目前,我們團隊利用GCN和GAT在交通預測領域有不少探索,歡迎感興趣的朋友參考。如果有幫助,還希望可以引用我們的論文。
Multistep speed prediction on traffic networks: A deep learning approach considering spatio-temporal dependencieswww.mendeley.com
- Zhang, Z., Li, M., Lin, X., Wang, Y., & He, F. (2019). Multistep speed prediction on traffic networks: A deep learning approach considering spatio-temporal dependencies.Transportation Research Part C: Emerging Technologies,105, 297-322.
https://www.tandfonline.com/doi/full/10.1080/21680566.2020.1822765www.tandfonline.com
- Ke Zhang, Fang He, Zhengchao Zhang, Xi Lin & Meng Li(2020)Graph attention temporal convolutional network for traffic speed forecasting on road networks,Transportmetrica B: Transport Dynamics,DOI:10.1080/21680566.2020.1822765