????????隨著計算機行業和互聯網時代的不斷發展與進步,圖神經網絡已經成為人工智能和大數據的重要研究領域。圖神經網絡是對相鄰節點間信息的傳播和聚合的重要技術,可以有效地將深度學習的理念應用于非歐幾里德空間的數據上。本期推送圍繞圖神經網絡與圖注意力網絡相關知識進行概述。
1.什么是圖
1.1?定義
????圖表示的是一系列實體(節點)之間的關系(邊)。
-
V:節點信息(節點標識、節點鄰居數)
-
E:邊信息(邊標識、邊權重)
-
U:全局信息(節點數、最長路徑)
1.2?embedding
????為了深入表示每個節點、邊和整個圖,可以使用如下存儲方式:
????????把節點信息、邊信息和全局信息做embedding,通俗說即把這些信息存儲為向量的形式。例如上圖用向量來表示節點,形成一個長度為6的向量,表示節點的6個信息,高矮代表了值的大小。
1.3?將多種類型的數據表示成圖
(1)images as graphs(將圖片表示為圖)?
-
?把每個像素作為一個點,存在鄰接關系則形成一條邊
(2)text as graphs(將文本表示為圖)
-
把詞表示為頂點,詞與詞存在有向邊
(3)將現實生活中的關系表示成圖
-
分子結構(原子之間的關系)、社交網絡(人物交互圖)、引用(文章引用關系)
-
例如下圖為話劇《奧賽羅》中的人物交互圖,通過將同時出現在一個場景里的人物連上一條邊,將人物關系表示成圖。
1.4?在圖上可定義的問題類型
(1) 圖層面的任務
-
比如,給定一張圖,對該圖進行分類。
????????如上圖,預測出哪些分子是具有兩個環的。這個例子比較簡單,可以用圖的遍歷來完成,當圖非常復雜的時候,圖神經網絡可以發揮巨大作用。
(2)節點層面的任務
-
比如,將節點分類到不同的陣營。
????上圖是空手道俱樂部數據集,將學員分類到兩個老師的隊伍中。
(3)邊層面的任務? ??
-
比如,已知節點,學習節點之間的邊的信息。
????????在這個例子中,邊的預測是通過語義分割把人物、背景拿出來,然后分析實體間的關系。也就是給出節點之間的圖,對邊上的屬性進行預測。比如黃衣服的人在踢綠衣服的人,他們都站在地毯上。
1.5?在圖上使用神經網絡的挑戰
????????圖上有節點屬性、邊的屬性、全局信息、連接性四種類型的信息。
????????前面三個比較容易與神經網絡兼容,因為其可以表示成向量的形式。在利用連接性這種類型的信息時,通常會使用鄰接矩陣——但是存在圖太大無法存儲、交換行列本質不變但矩陣變化的情況。于是很多情況下會使用鄰接列表表示圖上的連接性關系。
????????如上圖,這張圖有8個頂點,7條邊。鄰接列表的長度與邊數相同,第i項表示第i條邊連接的哪兩個節點。
2.圖神經網絡
圖神經網絡的基本思想就是:
-
基于節點的局部鄰居信息對節點進行embedding。直觀來講,就是通過神經網絡來聚合每個節點及其周圍節點的信息。
對于這個圖來說,要計算節點A的Embedding,有以下的兩條想法:
-
節點A的Embedding,是它的鄰接節點B、C、D的Embedding傳播的結果
-
而節點B、C、D的Embedding,又是由它們各自的鄰接節點的Embedding傳播的結果。
????為了避免無窮無盡,以下圖為例,做兩層,可以構造該圖的傳播關系。
第0層即輸入層,為每個節點的初始向量,稱為初始Embedding。
第1層:
-
節點B的Embedding來自它的鄰接點A、C的Embedding的傳播。
-
節點C的Embedding來自它的鄰接點A、B、E、F的Embedding的傳播。
-
節點D的Embedding來自它的鄰接點A的Embedding的傳播。
第2層:
-
節點A的Embedding來自它的鄰接點B、C、D的Embedding的傳播。
????????但是,目前我們還不知道傳播到底是什么,圖中的小方塊在做什么,下面就對傳播機制進行介紹。
小方塊主要就做了兩件事情:
-
收集(Aggregation)
????????對上一層的所有鄰接節點的Embedding,如何進行匯總,獲得一個Embedding,供本層進行更新。
-
更新(Update)
????????對本層已“收集完畢”的鄰接點數據,是否添加自身節點的上一層Embedding,如果是,如何添加、如何激活等等,最終輸出本層的Embedding。
下面使用公式介紹一個具體例子:
符號解釋:h表示節點的embedding,下標v或u表示節點的索引,上標k表示第幾層,σ表示激活函數,??或??表示矩陣,N(v)表示節點v的鄰接點集合。
公式解釋:使用節點的輸入特征向量來初始化第0層節點的embedding。為了計算第k層節點v的embedding,需要用到上一層中節點v本身的embedding、節點v的鄰居節點在k-1層中的embedding平均值。
操作步驟:
-
收集——對上一層鄰居節點的Embedding求平均。
-
更新——收集完畢的Embedding與本節點上一層的Embedding進行加權和,然后再激活。
3.圖注意力網絡
3.1?基本思想
根據每個節點在其鄰節點上的attention,來對節點表示進行更新。
3.2?改進
-
GCN無法允許為鄰居中的不同節點指定不同的權重,GAT和GCN的核心區別在于如何收集并累和距離為1的鄰居節點的特征表示。
-
圖注意力網絡GAT用注意力機制替代了GCN中固定的標準化操作。
3.3?優點
-
在GAT中,圖中的每個節點可以根據鄰節點的特征,為其分配不同的權值。
-
引入注意力機制之后,只與相鄰節點有關,即共享邊的節點有關,無需得到整張圖的信息。
3.4?GAT架構
圖注意力層的輸入:N個節點特征的集合h
圖注意力層的輸出:經過學習之后的N個節點的特征向量h'?
特征增強:為了使得節點特征表達得更清晰,首先對每一個節點進行一個線性變換,即乘上一個權重向量。【W維度為𝐹′×𝐹,作用:比如將一個長向量轉為一個短向量,使得特征更容易提取】
對每個節點實行自注意力機制:注意力系數為
其中,??代表節點j的特征對節點i的影響,a代表計算兩個節點(特征向量)相關度的函數。
本文通過masked attention將圖結構加入到機制中,masked attention的含義是:僅將注意力分配到節點i的鄰居節點集上(包括i本身)。
為了使得注意力系數更容易計算和便于比較,引入了softmax對所有的i的相鄰節點j進行正則化。
公式2的含義:節點j對i的影響/節點i一階鄰居對i的影響之和。
注:??和??都叫做“注意力系數”,只不過??是在??基礎上進行歸一化后的。
????將公式1和2進行綜合,注意力系數??的計算過程即如上圖所示:W乘上i的特征,W乘上j的特征,然后連接起來,乘上權重向量a,形成圈里的值是??,再使用??進行歸一化,形成新的注意力系數。
????通過上述運算得到了歸一化后的不同節點之間的注意力系數,可以用來預測每個節點的輸出特征:
3.5?多頭注意力機制
????????因為多個注意力機制學習到的attention側重點可能略有不同,所以將K個獨立的注意力機制的結果進行級聯或者求平均,確保GAT更加穩定。下圖展示是K=3的情況,使得結果更加穩定。
4.總結
????????本期推送從什么是圖、圖神經網絡的基本思想、圖注意力網絡的基本思想三個方面對圖神經網絡相關的基礎知識進行了介紹。圖神經網絡從提出發展到現在,針對不同的領域一直在進行改進和優化,已經可以應用到非常多的方面,因為其解決圖相關問題的能力強大,所以未來仍有非常大的發展空間,會有更多優秀的模型被提出,解決更加復雜的問題。
5.參考文獻
[1] Distill《A Gentle Introduction to Graph Neural Networks》
[2] Hamilton W L, Ying R, Leskovec J. Representation learning on graphs: Methods and applications[J]. arXiv preprint arXiv:1709.05584, 2017.
[3] Velickovic P, Cucurull G, Casanova A, et al. Graph attention networks[J]. stat, 2017, 1050: 20.