整合在一起
現(xiàn)在我們已經(jīng)完成了消息傳遞、聚合和更新步驟,讓我們把它們放在一起,在單個節(jié)點i上形成單個GNN層:

這里我們使用求和聚合和一個簡單的前饋層作為函數(shù)F和H。設(shè)hi∈Rd, W1,W2?Rd ' ×d其中d '為嵌入維數(shù)。
使用鄰接矩陣
到目前為止,我們通過單個節(jié)點i的視角觀察了整個GNN正向傳遞,當給定整個鄰接矩陣a和X?RN×d中所有N=∥V∥節(jié)點特征時,知道如何實現(xiàn)GNN正向傳遞也很重要。
在 MLP 前向傳遞中,我們想要對特征向量 xi 中的項目進行加權(quán)。這可以看作是節(jié)點特征向量 xi∈Rd 和參數(shù)矩陣 W?Rd′×d 的點積,其中 d′ 是嵌入維度:

如果我們想對數(shù)據(jù)集中的所有樣本(矢量化)這樣做,我們只需將參數(shù)矩陣和特征矩陣相乘,就可以得到轉(zhuǎn)換后的節(jié)點特征(消息):

在gnn中,對于每個節(jié)點i,消息聚合操作包括獲取相鄰節(jié)點特征向量,轉(zhuǎn)換它們,并將它們相加(在和聚合的情況下)。
單行Ai對于Aij=1的每個指標j,我們知道節(jié)點i和j是相連的→eij∈E。例如,如果A2=[1,0,1,1,0],我們知道節(jié)點2與節(jié)點1、3和4連接。因此,當我們將A2與Z=XW相乘時,我們只考慮列1、3和4,而忽略列2和5:



比如說A的第二行。

矩陣乘法就是A中的每一行與Z中的每一列的點積,這就是消息聚合的含義!!
獲取所有N的聚合消息,根據(jù)圖中節(jié)點之間的連接,將整個鄰接矩陣A與轉(zhuǎn)換后的節(jié)點特征進行矩陣乘法:

但是這里有一個小問題:觀察到聚合的消息沒有考慮節(jié)點i自己的特征向量(正如我們上面所做的那樣)。所以我們將自循環(huán)添加到A(每個節(jié)點i連接到自身)。
這意味著對角線的而數(shù)值需要進行修改,用一些線性代數(shù),我們可以用單位矩陣來做這個!


添加自循環(huán)可以允許GNN將源節(jié)點的特征與其鄰居節(jié)點的特征一起聚合!!
有了這些,你就可以用矩陣而不是單節(jié)點來實現(xiàn)GNN的傳遞。
?要執(zhí)行平均值聚合(mean),我們可以簡單地將總和除以1,對于上面的例子,由于A2=[1,0,0,1,1]中有三個1,我們可以將∑j∈N2Wxj除以3,但是用gnn的鄰接矩陣公式來實現(xiàn)最大(max)和最小聚合(min)是不可能的。
GNN層堆疊
上面我們已經(jīng)介紹了單個GNN層是如何工作的,那么我們?nèi)绾问褂眠@些層構(gòu)建整個“網(wǎng)絡(luò)”呢?信息如何在層之間流動,GNN如何細化節(jié)點(和/或邊)的嵌入/表示?
- 第一個GNN層的輸入是節(jié)點特征X?RN×d。輸出是中間節(jié)點嵌入H1?RN×d1,其中d1是第一個嵌入維度。H1由h1i: 1→N∈Rd1組成。
- H1是第二層的輸入。下一個輸出是H2?RN×d2,其中d2是第二層的嵌入維度。同理,H2由h2i: 1→N∈Rd2組成。
- 經(jīng)過幾層之后,在輸出層L,輸出是HL?RN×dL。最后,HL由hLi: 1→N∈RdL構(gòu)成。
這里的{d1,d2,…,dL}的選擇完全取決于我們,可以看作是GNN的超參數(shù)。把這些看作是為MLP層選擇單位(“神經(jīng)元”的數(shù)量)。

節(jié)點特征/嵌入(“表示”)通過GNN傳遞。雖然結(jié)構(gòu)保持不變,但節(jié)點表示在各個層中不斷變化。邊表示也將改變,但不會改變連接或方向。
HL也可以做一些事情:
我們可以沿著第一個軸(即∑Nk=1hLk)將其相加,得到RdL中的向量。這個向量是整個圖的最新維度表示。它可以用于圖形分類(例如:這是什么分子?)

我們可以在HL中連接向量(即?Nk=1hk,其中⊕是向量連接操作),并將其傳遞給一個Graph Autoencoder。當輸入圖有噪聲或損壞,而我們想要重建去噪圖時,就需要這個操作。

我們可以做節(jié)點分類→這個節(jié)點屬于什么類?在特定索引hLi (i:1→N)處嵌入的節(jié)點可以通過分類器(如MLP)分為K個類(例如:這是碳原子、氫原子還是氧原子?)

我們還可以進行鏈接預(yù)測→某個節(jié)點i和j之間是否存在鏈接?hLi和hLj的節(jié)點嵌入可以被輸入到另一個基于sigmoid的MLP中,該MLP輸出這些節(jié)點之間存在邊的概率。

這些就是GNN在不同的應(yīng)用中所進行的操作,無論哪種方式,每個h1→N∈HL都可以被堆疊,并被視為一批樣本。我們可以很容易地將其視為批處理。
對于給定的節(jié)點i, GNN聚合的第l層具有節(jié)點i的l跳鄰域。節(jié)點看到它的近鄰,并深入到網(wǎng)絡(luò)中,它與鄰居的鄰居交互。
這就是為什么對于非常小、稀疏(很少邊)的圖,大量的GNN層通常會導(dǎo)致性能下降:因為節(jié)點嵌入都收斂到一個向量,因為每個節(jié)點都看到了許多跳之外的節(jié)點。對于小的圖,這是沒有任何作用的。
這也解釋了為什么大多數(shù)GNN論文在實驗中經(jīng)常使用≤4層來防止網(wǎng)絡(luò)出現(xiàn)問題。
以節(jié)點分類為例訓(xùn)練GNN
在訓(xùn)練期間,對節(jié)點、邊或整個圖的預(yù)測可以使用損失函數(shù)(例如:交叉熵)與來自數(shù)據(jù)集的ground-truth標簽進行比較。也就是說gnn能夠使用反向傳播和梯度下降以端到端方式進行訓(xùn)練。
訓(xùn)練和測試數(shù)據(jù)
與常規(guī)ML一樣,圖數(shù)據(jù)也可以分為訓(xùn)練和測試。這有兩種方法:
訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)都在同一個圖中。每個集合中的節(jié)點相互連接。只是在訓(xùn)練期間,測試節(jié)點的標簽是隱藏的,而訓(xùn)練節(jié)點的標簽是可見的。但所有節(jié)點的特征對于GNN都是可見的。
我們可以對所有節(jié)點進行二進制掩碼(如果一個訓(xùn)練節(jié)點i連接到一個測試節(jié)點j,只需在鄰接矩陣中設(shè)置Aij=0)。

訓(xùn)練節(jié)點和測試節(jié)點都是同一個圖的一部分。訓(xùn)練節(jié)點暴露它們的特征和標簽,而測試節(jié)點只暴露它們的特征。測試標簽對模型隱藏。二進制掩碼需要告訴GNN什么是訓(xùn)練節(jié)點,什么是測試節(jié)點。
2、Inductive
另外一種方法是單獨的訓(xùn)練圖和測試圖。這類似于常規(guī)的ML,其中模型在訓(xùn)練期間只看到特征和標簽,并且只看到用于測試的特征。訓(xùn)練和測試在兩個獨立的圖上進行。這些測試圖分布在外,可以檢查訓(xùn)練期間的泛化質(zhì)量。

與常規(guī)ML一樣,訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)是分開保存的。GNN只使用來自訓(xùn)練節(jié)點的特征和標簽。這里不需要二進制掩碼來隱藏測試節(jié)點,因為它們來自不同的集合。
反向傳播和梯度下降
在訓(xùn)練過程中,一旦我們向前通過GNN,我們就得到了最終的節(jié)點表示hLi∈HL, 為了以端到端方式訓(xùn)練,可以做以下工作:
- 將每個hLi輸入MLP分類器,得到預(yù)測^yi
- 使用ground-truth yi和預(yù)測yi→J(yi,yi)計算損失
- 使用反向傳播來計算?J/?Wl,其中Wl是來自l層的參數(shù)矩陣
- 使用優(yōu)化器更新GNN中每一層的參數(shù)Wl
- (如果需要)還可以微調(diào)分類器(MLP)網(wǎng)絡(luò)的權(quán)重。

-
芯片
+關(guān)注
關(guān)注
462文章
53552瀏覽量
459292 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4829瀏覽量
106809 -
數(shù)學(xué)
+關(guān)注
關(guān)注
0文章
99瀏覽量
19863
發(fā)布評論請先 登錄
matlab 神經(jīng)網(wǎng)絡(luò) 數(shù)學(xué)建模數(shù)值分析
matlab 中亮劍數(shù)學(xué) 全面掌握控制 神經(jīng)網(wǎng)絡(luò)就在腳下
關(guān)于開關(guān)磁阻電機的matlab BP神經(jīng)網(wǎng)絡(luò)數(shù)學(xué)建模方面的資料
【PYNQ-Z2試用體驗】神經(jīng)網(wǎng)絡(luò)基礎(chǔ)知識
BP神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)數(shù)學(xué)知識分享
人工神經(jīng)網(wǎng)絡(luò)基礎(chǔ)描述詳解
卷積神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)原理介紹
深入卷積神經(jīng)網(wǎng)絡(luò)背后的數(shù)學(xué)原理
深度:了解訓(xùn)練神經(jīng)網(wǎng)絡(luò)時所用到的數(shù)學(xué)過程
圖解:卷積神經(jīng)網(wǎng)絡(luò)數(shù)學(xué)原理解析
詳解圖神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)原理1
詳解圖神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)原理3

詳解圖神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)原理2
評論