圖深度學習(Graph Deep Learning) 多年來一直在加速發展。許多現實生活問題使GDL成為萬能工具:在社交媒體、藥物發現、芯片植入、預測、生物信息學等方面都顯示出了很大的前景。
本文將流行的圖神經網絡及其數學細微差別的進行詳細的梳理和解釋,圖深度學習背后的思想是學習具有節點和邊的圖的結構和空間特征,這些節點和邊表示實體及其交互。
圖
在我們進入圖神經網絡之前,讓我們先來探索一下計算機科學中的圖是什么。
圖G(V,E)是包含一組頂點(節點)i∈v和一組連接頂點i和j的邊eij∈E的數據結構,如果連接兩個節點i和j,則eij=1,否則eij=0。可以將連接信息存儲在鄰接矩陣A中:
我假設本文中的圖是無加權的(沒有邊權值或距離)和無向的(節點之間沒有方向關聯),并且假設這些圖是同質的(單一類型的節點和邊;相反的是“異質”)。
圖與常規數據的不同之處在于,它們具有神經網絡必須尊重的結構;不利用它就太浪費了。下面的圖是一個社交媒體圖的例子,節點是用戶,邊是他們的互動(比如關注/點贊/轉發)。
對于圖像來說,圖像本身就是一個圖!這是一種叫做“網格圖”的特殊變體,其中對于所有內部節點和角節點,來自節點的外向邊的數量是恒定的。在圖像網格圖中存在一些一致的結構,允許對其執行簡單的類似卷積的操作。
圖像可以被認為是一種特殊的圖,其中每個像素都是一個節點,并通過虛線與周圍的其他像素連接。當然,以這種方式查看圖像是不切實際的,因為這意味著需要一個非常大的圖。例如,32×32×3的一個簡單的CIFAR-10圖像會有3072個節點和1984條邊。對于224×224×3的較大ImageNet圖像,這些數字會更大。
與圖片相比,圖的不同的節點與其他節點的連接數量不同,并且沒有固定的結構,但是就是這種結構為圖增加了價值。
圖神經網絡
單個圖神經網絡(GNN)層有一堆步驟,在圖中的每個節點上會執行:
- 消息傳遞
- 聚合
- 更新
這些組成了對圖形進行學習的構建塊,GDL的創新都是在這3個步驟的進行的改變。
節點
節點表示一個實體或對象,如用戶或原子。因此節點具有所表示實體的一系列屬性。這些節點屬性形成了節點的特征(即“節點特征”或“節點嵌入”)。
通常,這些特征可以用Rd中的向量表示. 這個向量要么是潛維嵌入,要么是以每個條目都是實體的不同屬性的方式構造的。
例如,在社交媒體圖中,用戶節點具有可以用數字表示的年齡、性別、政治傾向、關系狀態等屬性。在分子圖中,原子節點可能具有化學性質,如對水的親和力、力、能量等,也可以用數字表示。
這些節點特征是GNN的輸入,每個節點i具有關聯的節點特征xi∈Rd和標簽yi(可以是連續的,也可以是離散的,就像單獨編碼一樣)。
邊
邊也可以有特征aij∈Rd '例如,在邊緣有意義的情況下(如原子之間的化學鍵)。我們可以把下面的分子想象成一個圖,其中原子是節點,鍵是邊。雖然原子節點本身有各自的特征向量,但邊可以有不同的邊特征,編碼不同類型的鍵(單鍵、雙鍵、三鍵)。不過為了簡單起見,在本文中我將省略邊的特性。
現在我們知道了如何在圖中表示節點和邊,讓我們從一個具有一堆節點(具有節點特征)和邊的簡單圖開始。
消息傳遞
gnn以其學習結構信息的能力而聞名。通常,具有相似特征或屬性的節點相互連接(比如在社交媒體中)。GNN利用學習特定節點如何以及為什么相互連接,GNN會查看節點的鄰域。
鄰居Ni,節點I的集合定義為通過邊與I相連的節點j的集合。形式為Ni={j: eij∈E}。
一個人被他所處的圈子所影響。類似地GNN可以通過查看其鄰居Ni中的節點i來了解很多關于節點i的信息。為了在源節點i和它的鄰居節點j之間實現這種信息共享,gnn進行消息傳遞。
對于GNN層,消息傳遞被定義為獲取鄰居的節點特征,轉換它們并將它們“傳遞”給源節點的過程。對于圖中的所有節點,并行地重復這個過程。這樣,在這一步結束時,所有的鄰域都將被檢查。
讓我們放大節點6并檢查鄰域N6={1,3,4}。我們取每個節點特征x1、x3和x4,用函數F對它們進行變換,函數F可以是一個簡單的神經網絡(MLP或RNN),也可以是仿射變換F(xj)=Wj?xj+b。簡單地說,“消息”是來自源節點的轉換后的節點特征。
F 可以是簡單的仿射變換或神經網絡。現在我們設F(xj)=Wj?xj為了方便計算 ? 表示簡單的矩陣乘法。
聚合
現在我們有了轉換后的消息{F(x1),F(x3),F(x4)}傳遞給節點6,下面就必須以某種方式聚合(“組合”)它們。有很多方法可以將它們結合起來。常用的聚合函數包括:
假設我們使用函數G來聚合鄰居的消息(使用sum、mean、max或min)。最終聚合的消息可以表示為:
更新
使用這些聚合消息,GNN層就要更新源節點i的特性。在這個更新步驟的最后,節點不僅應該知道自己,還應該知道它的鄰居。這是通過獲取節點i的特征向量并將其與聚合的消息相結合來操作的,一個簡單的加法或連接操作就可以解決這個問題。
使用加法
其中σ是一個激活函數(ReLU, ELU, Tanh), H是一個簡單的神經網絡(MLP)或仿射變換,K是另一個MLP,將加法的向量投影到另一個維度。
使用連接:
為了進一步抽象這個更新步驟,我們可以將K看作某個投影函數,它將消息和源節點嵌入一起轉換:
初始節點特征稱為xi,在經過第一GNN層后,我們將節點特征變為hi。假設我們有更多的GNN層,我們可以用hli表示節點特征,其中l是當前GNN層索引。同樣,顯然h0i=xi(即GNN的輸入)。
-
芯片
+關注
關注
456文章
50965瀏覽量
424847 -
神經網絡
+關注
關注
42文章
4774瀏覽量
100909 -
數學
+關注
關注
0文章
99瀏覽量
19264
發布評論請先 登錄
相關推薦
評論