最近的有GNN學習需要,但這部分的資料整理還不算太多。本篇主要是作爲知識梳理,主要參考綜述性論文:Graph Neural Networks: A Review of Methods and Applications ,在此基礎上結合理解進行翻譯和補充,首先想搞清楚目前的發展狀況和一些主要的研究方向。
注:下文中出現的所有名詞圖 的說法即爲Graph ,在此不討論Graph與Network 的區別。個人理解圖是數學上提出的概念,網絡是一種特殊的圖,圖由其鄰接矩陣 中包含的結構信息定義,網絡可能在其頂點具有任意數量的輔助信息,邊緣可以具有容量或重量等屬性,也可以是其他變量的函數。
Graph研究簡介
Graph是一種數據結構,常見的圖結構包含節點(node)和邊(edge),其中,節點包含了實體(entity)信息,邊包含實體間的關係(relation)信息。圖神經網絡(GNN)是基於圖結構的一種深度學習。 圖是種非結構化(也可以表達結構化數據,只算是一種特例)的數據表達方法,這恰好對應到現實生活中的很多信息,在實際情況下我們面對的許多任務都需要處理非結構化的數據,如物理系統建模(physics system)、學習分指紋(molecular fingerprints)、蛋白質接口預測(protein interface)以及疾病分類(classify diseases),這些都需要模型能夠從圖結構的輸入中學習相關的知識。
還有一些任務如文本(texts)和圖片(images),並能夠在提取出的圖結構中進行推理(reasoning),比如句子的關係依賴樹(dependency tree of sentences)和圖片的情景圖(scene graph of images),這些都需要圖推理模型。GNN通過網絡中節點之間的信息傳遞(message passing)來獲取圖中的 依存關係(dependence of graph) ,GNN通過從節點任意深度的鄰居來更新該節點狀態 ,這個狀態能夠表示狀態信息。
GNN模型基於信息傳播機制,每個節點通過互相交換信息更新該節點自身的節點狀態,直到達到某個穩定值。
GNN起源
卷積神經網絡(CNN)和圖嵌入(graph embedding) 啓發了GNN的出現和發展。
首先,CNN因爲能夠提取出多尺度的局部空間特徵 而被熟知,並將它們進行組合來構建更加高級的表示(expressive representations)。如果深入研究CNN和圖結構的特點,可以發現CNN的核心特點在於:
局部連接(local connection)
權值共享(shared weights)
多層結構(multi-layer)
歐幾里得空間(左下)和非歐空間示意圖(右下): 這些同樣適用於圖問題上,因爲圖結構是最典型的局部連接結構,其次,共享權重可以減少計算量,另外,多層結構是處理分級模式(hierarchical patterns)的關鍵 。最主要的不同之處在於,CNN只能在歐幾里得數據(Euclidean data),比如二維圖片和一維文本數據上進行處理,而這些數據只是圖結構的特例而已,對於一般的圖結構,可以發現很難將CNN中的卷積核(convolutional filters)和池化操作(pooling operators)遷移到圖的操作上。
對於圖嵌入(Graph Embedding),實際上嵌入(Embedding)就是對圖的節點、邊或者子圖(subgraph)學習得到一個低維的向量表示,傳統的機器學習方法通常基於人工特徵工程來構建特徵,但是這種方法受限於靈活性不足、表達能力不足以及工程量過大的問題,我們常提及的詞嵌入方法常見的模型有Skip-gram,CBOW 等,而圖嵌入領域的常見模型有DeepWalk,Node2Vec 等,但是這些方法有兩種缺點 :
節點編碼中權重未共享,導致權重數量隨着節點增多出現線性增大,
直接嵌入方法缺乏泛化能力,意味着無法處理動態圖以及泛化到新的圖。
GNN和傳統神經網絡的區別
再次比較一下GNN和先提出的一些神經網絡的區別,比如當前常用的深度神經網絡CNN和RNN,輸入是結構化的數據,如圖像和文本序列,因爲它們都需要節點的特徵按照一定的順序進行排列,但是,對於圖結構而言,並沒有天然的順序而言,如果使用順序來完整地表達圖的話,那麼就需要將圖分解成所有可能的序列,然後對序列進行建模,這種方式非常的冗餘以及計算量非常大,與此相反,**GNN採用在每個節點上分別傳播(propagate)**的方式進行學習,由此忽略了節點的順序,相當於GNN的輸出會隨着輸入的不同而不同。
另外,圖結構的邊表示節點之間的依存關係 ,傳統的神經網絡不是顯式地表達中這種依存關係,而是通過不同節點特徵來間接地表達節點之間的關係。通常來說,GNN通過鄰居節點的加權求和來更新節點的隱藏狀態。
最後,就是對於更高階段的人工智能來說,可靠的推理能力是一個非常重要的研究主題,人類大腦的推理過程基本上都是基於圖的方式,這個圖是從日常的生活經歷中學習得到的。GNN的作用是從非結構化數據比如情景圖片和故事文本中產生結構化的圖 ,因爲目前能夠使用和存儲的數據還是以結構化的數據爲主,最終目的是能爲更高層的AI系統作補充。
GNN分類
這篇論文對GNN模型分類如下:
圖卷積網絡(Graph convolutional networks)和圖注意力網絡(graph attention networks),因爲涉及到傳播步驟(propagation step)。
圖的空域網絡(spatial-temporal networks),因爲該模型通常用在動態圖(dynamic graph)上。
圖的自編碼(auto-encoder),因爲該模型通常使用無監督學習(unsupervised)的方式。
圖生成網絡(generative networks),因爲是生成式網絡。
GNN模型概覽
在該節中,首先提出原始的圖神經網絡問題以及處理方法,然後介紹各種GNN的變體模型,用來解決原始GNN的一些缺點,最後介紹三種通用的框架,包括MPNN、NLNN和GN。 如下表是論文通用的符號表示以及對應含義說明: 圖神經網絡 圖神經網絡的概念第一次在The Graph neural model 一文中提出,該論文將現存的神經網絡模型擴展到處理圖領域的數據。在一個圖結構中,每一個節點由它自身的特徵以及與其相連的節點特徵來定義該節點 。GNN的目標是學習得到一個狀態的嵌入向量(embedding)
h
v
∈
R
s
\mathbf{h}_{v} \in \mathbb{R}^{s}
h v ∈ R s ,這個向量包含每個節點的鄰居節點的信息,其中,
h
v
\mathbf{h}_{v}
h v 表示節點
v
v
v 的狀態向量,這個向量可以用於產生輸出
o
v
\mathbf{o}_{v}
o v ,比如輸出可以是節點的標籤,假設
f
f
f 是帶有參數的函數,叫做局部轉化函數(local transition function),這個函數在所有節點中共享,並根據鄰居節點的輸入來更新節點狀態,假設
g
g
g 爲局部輸出函數(local output function),這個函數用於描述輸出的產生方式。那麼
h
v
\mathbf{h}_{v}
h v 和
o
v
\mathbf{o}_{v}
o v 按照如下式子產生:
h
v
=
f
(
x
v
,
x
c
o
[
v
]
,
h
n
e
[
v
]
,
x
n
e
[
v
]
)
(1)
\mathbf{h}_{v}=f\left(\mathbf{x}_{v}, \mathbf{x}_{c o[v]}, \mathbf{h}_{n e[v]}, \mathbf{x}_{n e[v]}\right)\tag{1}
h v = f ( x v , x c o [ v ] , h n e [ v ] , x n e [ v ] ) ( 1 )
o
v
=
g
(
h
v
,
x
v
)
(2)
\mathbf{o}_{v}=g\left(\mathbf{h}_{v}, \mathbf{x}_{v}\right)\tag{2}
o v = g ( h v , x v ) ( 2 ) 其中,
x
v
\mathbf{x}{v}
x v ,
x
c
o
[
v
]
\mathbf{x}{c o[v]}
x c o [ v ] ,
h
n
e
[
v
]
\mathbf{h}_{n e[v]}
h n e [ v ] ,
x
n
e
[
v
]
\mathbf{x}_{n e[v]}
x n e [ v ] 分別表示節點
v
v
v 的特徵向量,節點
v
v
v 邊的特徵向量,節點
v
v
v 鄰居節點的狀態向量和節點
v
v
v 鄰居節點特徵向量。
假設將所有的狀態向量,所有的輸出向量,所有的特徵向量疊加起來分別使用矩陣
H
\mathbf{H}
H ,
O
\mathbf{O}
O ,
X
\mathbf{X}
X 和
X
N
\mathbf{X}_{N}
X N 來表示,那麼可以得到更加緊湊的表示:
H
=
F
(
H
,
X
)
(3)
\mathbf{H}=F(\mathbf{H}, \mathbf{X})\tag{3}
H = F ( H , X ) ( 3 )
O
=
G
(
H
,
X
N
)
(4)
\mathbf{O}=G\left(\mathbf{H}, \mathbf{X}_{N}\right) \tag{4}
O = G ( H , X N ) ( 4 )
其中,
F
F
F 表示全局轉化函數(global transition function),
G
G
G 表示全局輸出函數(global output function),分別是所有節點
f
f
f 和
g
g
g 的疊加形式,
H
\mathbf{H}
H 是公式(3) 不動點,並且在
F
F
F 爲收縮映射的假設下
H
\mathbf{H}
H 被唯一地定義。根據Banach的不動點定理,GNN使用如下的傳統迭代方法來計算狀態參量:
H
t
+
1
=
F
(
H
t
,
X
)
(5)
\mathbf{H}^{t+1}=F\left(\mathbf{H}^{t}, \mathbf{X}\right)\tag{5}
H t + 1 = F ( H t , X ) ( 5 ) 其中,
H
t
\mathbf{H}^{t}
H t 表示
H
\mathbf{H}
H 的第
t
t
t 個迭代週期的張量,按照方程(5) 迭代的系統按照指數級速度收斂收斂到最終的不動點解。
整個圖更新的過程如下: 上面的過程定義了GNN的框架,下一個任務是學習函數
f
f
f 和
g
g
g 的參數,使用目標信息(使用
t
v
\mathbf{t}_v
t v 表示特定節點的標籤)來進行監督學習,loss可以定義如下:
l
o
s
s
=
∑
i
=
1
p
(
t
i
−
o
i
)
(6)
l o s s=\sum_{i=1}^{p}\left(\mathbf{t}_{i}-\mathbf{o}_{i}\right)\tag{6}
l o s s = i = 1 ∑ p ( t i − o i ) ( 6 ) 其中,
p
p
p 表示監督的節點數量,學習算法使用梯度下降法,整個過程按照如下步驟進行:
狀態
h
v
t
按
照
方
程
\mathbf{h}_{v}^{t}按照方程
h v t 按 照 方 程 (1) 的公式迭代更新
T
T
T 個輪次,這時得到的
H
\mathbf{H}
H 會接近不動點的解
H
(
T
)
≈
H
\mathbf{H}(T) \approx \mathbf{H}
H ( T ) ≈ H 。
權重
W
\mathbf{W}
W 的梯度從loss計算得到。
權重
W
\mathbf{W}
W 根據上一步中計算的梯度更新。
原始的GNN有如下的缺點 :
對不動點使用迭代的方法來更新節點的隱藏狀態,效率並不高
在迭代過程中,原始GNN使用相同的參數 ,而其他比較著名的模型在不同的網絡層採用不同的參數,使得模型能夠學習到更加深的特徵表達,而且,節點隱藏層的更新是順序流程,可以從GRU和LSTM的cell的結構中獲取靈感。
一些邊(edges)上可能會存在某些信息特徵不能被有效地考慮進去 。
如果需要學習節點的向量表示而不是圖的表示,那麼使用不動點的方法是不妥當的,因爲在不動點的向量表示分佈在數值上會非常的平滑 ,這樣的向量對於區分不同的節點並無太大幫助。
GNN的網絡變體
在該節中,論文首先列出各種GNN變體在不同的圖類型上的操作方式 ,這些變體擴展了原始模型的表達能力,然後,論文列出了在傳播步驟上的幾種結構(包括卷積、門機制、注意力機制和跳過連接) ,最後描述使用特定的訓練方法來提高訓練效率 。
不同的圖類型
原始的GNN輸入的圖結構包含帶有標籤信息的節點 和無向邊 ,這是最簡單的圖結構,其它種類的圖結構主要有有向圖、異質圖、帶有邊信息圖和動態圖。圖類型以及主要的模型如下圖:
有向圖(Directed Graphs) :無向邊可以看成是兩個有向邊的結合,但是,有向邊比無向邊能夠提供更多的信息,比如在知識圖譜裏面,邊開始於頭實體(head entity),結束於尾實體(tail entity),通常有向邊表示兩個節點之間存在某種關係 。
論文DGP-Rethinking Knowledge Graph Propagation for Zero-Shot Learning 使用兩種權重矩陣
W
p
\mathbf{W}_{p}
W p 和
W
c
\mathbf{W}_{c}
W c 來結合更加精確的結構化信息,DGP的傳播方式如下:
H
t
=
σ
(
D
p
−
1
A
p
σ
(
D
c
−
1
A
c
H
t
−
1
W
c
)
W
p
)
(7)
\mathbf{H}^{t}=\sigma\left(\mathbf{D}_{p}^{-1} \mathbf{A}_{p} \sigma\left(\mathbf{D}_{c}^{-1} \mathbf{A}_{c} \mathbf{H}^{t-1} \mathbf{W}_{c}\right) \mathbf{W}_{p}\right)\tag{7}
H t = σ ( D p − 1 A p σ ( D c − 1 A c H t − 1 W c ) W p ) ( 7 ) 其中,
D
p
−
1
A
p
\mathbf{D}_{p}^{-1} \mathbf{A}_{p}
D p − 1 A p 和
D
c
−
1
A
c
\mathbf{D}_{c}^{-1} \mathbf{A}_{c}
D c − 1 A c 分別是雙親(parents)和後代(children)的歸一化鄰接矩陣。
異質圖(Heterogeneous Graphs) :異質圖含有多種不同的節點種類 ,處理這種圖最簡單的方法是將每種節點的類型轉化爲One-hot特徵向量,然後將One-hot向量和原始的節點特徵進行連接,作爲該節點的特徵向量。其中,論文GraphInception 提出將元路徑(metapath)概念用在異質圖的信息傳播上,通過元路徑的方式,我們可以根據節點類型和距離來對局部範圍內節點進行分組,對於每一組,GraphInception將它作爲異質圖的一個子圖,然後在子圖內進行傳播,並將不同異質圖得到的結果進行連接得到綜合的節點表示。
帶有邊信息的圖(Graphs with Edge Information) :在這種圖變體中,每一個邊都帶有額外的信息 ,比如權重和邊的類型,我們可以使用兩種方法來處理這種圖:
一種方式是將原始的圖轉化爲一個二分圖(bipartite graph),處理方式爲將原始的邊轉化爲一個節點以及兩條新的邊,論文G2S 的編碼器使用如下的傳播函數:
h
v
t
=
ρ
(
1
∣
N
v
∣
∑
u
∈
N
v
W
r
(
r
v
t
⊙
h
u
t
−
1
)
+
b
r
)
(8)
\mathbf{h}_{v}^{t}=\rho\left(\frac{1}{\left|\mathcal{N}_{v}\right|} \sum_{u \in \mathcal{N}_{v}} \mathbf{W}_{r}\left(\mathbf{r}_{v}^{t} \odot \mathbf{h}_{u}^{t-1}\right)+\mathbf{b}_{r}\right)\tag{8}
h v t = ρ ( ∣ N v ∣ 1 u ∈ N v ∑ W r ( r v t ⊙ h u t − 1 ) + b r ) ( 8 ) 其中,
W
r
\mathbf{W}_r
W r 和
b
r
\mathbf{b}_r
b r 是不同邊類型的傳播參數。 另一種方式是在不同種類的邊上,使用不同的權重矩陣來進行傳播的方式,也就是說,每一種邊類型都關聯一個權重矩陣,顯然,對於邊類型有很多的情況下,這種方式的參數量會非常大,論文Modeling Relational Data with Graph Convolutional Networks 採用兩種方法來減小參數。
動態圖(Dynamic Graphs) :動態圖類型有靜態的圖結構,並且能夠處理動態的輸入信號。DCRNN和STGCN首先使用GNN獲取空域信息,然後將該信息輸入到一個序列模型,比如sequence-to-sequence模型或者CNN模型。與此相反的是,Structural-RNN和ST-GCN同時獲取時間信息和空間信息。
傳播類型
論文中的傳播(propagation)指的是彙集從鄰居節點和連接的邊的信息 ,來對節點進行更新的過程,這個過程在模型中獲取節點(或邊)的隱藏狀態是非常重要的。對於信息傳播步驟(propagation step),有幾種主要的GNN變體,而在輸出步驟(output step)中,研究者通常使用簡單的前向傳播的神經網絡 。
不同的GNN的信息傳播變體使用下表進行列出,這些變體採用不同的信息傳播方式來從鄰居節點中獲取信息,並通過設定的更新器(updater)來對節點的隱藏狀態進行更新。
圖的節點更新的主要信息傳播(information aggregator)類型以及主要的模型如下圖:
不同類別模型的Aggregator計算方法和Updater計算方法如下表
非頻域的方法直接在圖上定義卷積操作,也就是在空域上相鄰的鄰居節點上進行操作。這種非頻域方法的主要難點在於如何定義擁有不同鄰居數量的卷積操作 以及保持CNN的局部不變性 。主要的模型有如下一些:
Neural FPs:論文 對不同度的節點使用不同的權重矩陣
x
=
h
v
t
−
1
+
∑
i
=
1
∣
N
v
∣
h
i
t
−
1
(15)
\mathbf{x}=\mathbf{h}_{v}^{t-1}+\sum_{i=1}^{\left|\mathcal{N}_{v}\right|} \mathbf{h}_{i}^{t-1}\tag{15}
x = h v t − 1 + i = 1 ∑ ∣ N v ∣ h i t − 1 ( 1 5 )
h
v
t
=
σ
(
x
W
t
∣
N
v
∣
)
(16)
\mathbf{h}_{v}^{t}=\sigma\left(\mathbf{x} \mathbf{W}_{t}^{\left|\mathcal{N}_{v}\right|}\right)\tag{16}
h v t = σ ( x W t ∣ N v ∣ ) ( 1 6 )
其中,
W
t
∣
N
v
∣
\mathbf{W}_{\mathbf{t}}^{\left|\mathcal{N}_{\mathbf{v}}\right|}
W t ∣ N v ∣ 是在第
t
t
t 層的度爲
∣
N
v
∣
\left|\mathcal{N}_{v}\right|
∣ N v ∣ 的節點的權重矩陣,這種方法的缺點在於不能應用到節點度比較大的graph上。
論文的應用場景是分子指紋(Molecular Fingerprints)領域 ,通過圖神經網絡的方式來學習分子表示 ,從而提供下游任務比如相似度評估任務或分類任務需要的向量表示。
算法的實現步驟如下
模型缺點:
計算量較大 :和傳統的Circular fingerprints方法相比,有相近的atoms複雜度和網絡深度複雜度 ,但是會有額外的矩陣乘法複雜度 。對於網絡深度爲
R
R
R ,fingerprint長度爲
L
L
L ,以及
N
N
N 個原子的分子,卷積網絡的特徵維度爲
F
F
F ,計算複雜度爲
O
(
R
N
F
L
+
R
N
F
2
)
\mathcal{O}(RNFL+RNF^2)
O ( R N F L + R N F 2 ) 。
每一層有計算量限制
信息傳播效率限制 :在圖上進行信息傳播的效果會受到圖深度的影響。
無法區分立體異構 :分子還會存在同分子式不同空間結構的情況,但是論文網絡架構無法區分後者。
DCNN:論文 提出了擴散卷積神經網絡,轉化矩陣用來定義節點的鄰居,對於節點分類任務,有
H
=
f
(
W
c
⊙
P
∗
X
)
(17)
\mathbf{H}=f\left(\mathbf{W}^{c} \odot \mathbf{P}^{*} \mathbf{X}\right)\tag{17}
H = f ( W c ⊙ P ∗ X ) ( 1 7 ) 其中,
X
\mathbf{X}
X 是一個
N
×
F
N\times{F}
N × F 的輸入特徵張量(
N
N
N 是節點的數量,
F
F
F 是特徵的維度),
P
∗
\mathbf{P}^*
P ∗ 是一個
N
×
K
×
N
N\times{K}\times{N}
N × K × N 的張量,包含矩陣
P
\mathbf{P}
P 的power series
{
P
,
P
2
,
.
.
.
,
P
K
}
\{\mathbf{P},\mathbf{P}^2,...,\mathbf{P}^K\}
{ P , P 2 , . . . , P K } ,
P
\mathbf{P}
P 是來自於圖鄰接矩陣
A
\mathbf{A}
A 的度標準(degree-normalized)的轉化矩陣。
DGCN:論文 提出了對偶圖卷積網絡,同時考慮到圖上的局部一致性和全局一致性,它使用兩組卷積網絡來獲取局部/全局的一致性,並採用一個無監督的loss來組合它們,第一個卷積網絡和方程KaTeX parse error: Undefined control sequence: \eqref at position 1: \̲e̲q̲r̲e̲f̲{eq:14} 相同,第二個卷積網絡將鄰接矩陣替換爲PPMI(positive pointwise mutual information)矩陣
H
′
=
ρ
(
D
P
−
1
2
X
P
D
P
−
1
2
H
Θ
)
(18)
\mathbf{H}^{\prime}=\rho\left(\mathbf{D}_{P}^{-\frac{1}{2}} \mathbf{X}_{P} \mathbf{D}_{P}^{-\frac{1}{2}} \mathbf{H} \Theta\right)\tag{18}
H ′ = ρ ( D P − 2 1 X P D P − 2 1 H Θ ) ( 1 8 ) 其中,
X
P
\mathbf{X}_{P}
X P 爲PPMI矩陣,
D
P
\mathbf{D}_{P}
D P 爲
X
P
\mathbf{X}_{P}
X P 的對角度矩陣。
GraphSAGE:論文 提出了一個一般的歸納框架,這個框架通過從一個節點的局部鄰居中採樣和聚合特徵,來產生節點的embedding
h
N
v
t
=
AGGREGATE
t
(
{
h
u
t
−
1
,
∀
u
∈
N
v
}
)
(19)
\mathbf{h}_{\mathcal{N}_{v}}^{t}=\text { AGGREGATE }_{t}\left(\left\{\mathbf{h}_{u}^{t-1}, \forall u \in \mathcal{N}_{v}\right\}\right)\tag{19}
h N v t = AGGREGATE t ( { h u t − 1 , ∀ u ∈ N v } ) ( 1 9 )
h
v
t
=
σ
(
W
t
⋅
[
h
v
t
−
1
∥
h
N
v
t
]
)
(20)
\mathbf{h}_{v}^{t}=\sigma\left(\mathbf{W}^{t} \cdot\left[\mathbf{h}_{v}^{t-1} \| \mathbf{h}_{\mathcal{N}_{v}}^{t}\right]\right)\tag{20}
h v t = σ ( W t ⋅ [ h v t − 1 ∥ h N v t ] ) ( 2 0 )
但是,上述的方程並不會採用所有的鄰居節點進行計算,而是使用均勻採樣來得到固定大小的鄰居節點集合,該論文推薦使用三種聚合函數:
平均值聚合(Mean aggregator) :使用如下方式計算
h
v
t
=
σ
(
W
⋅
MEAN
(
{
h
v
t
−
1
}
∪
{
h
u
t
−
1
,
∀
u
∈
N
v
}
)
\mathbf{h}_{v}^{t}=\sigma\left(\mathbf{W} \cdot \operatorname{MEAN}\left(\left\{\mathbf{h}_{v}^{t-1}\right\} \cup\left\{\mathbf{h}_{u}^{t-1}, \forall u \in \mathcal{N}_{v}\right\}\right)\right.
h v t = σ ( W ⋅ M E A N ( { h v t − 1 } ∪ { h u t − 1 , ∀ u ∈ N v } ) 平均值聚合和其他的聚合方式不同,因爲它不用進行連接操作。
LSTM聚合(LSTM aggregator) :基於LSTM的聚合器有更好的表達能力,然而,LSTM以序列的方式順序地處理輸入,因此,它並沒有排列不變性 ,論文采用重排列節點鄰居的方式,在無序集合中使用LSTM操作。
池化聚合(Pooling aggregator) :每一個鄰居的隱藏狀態輸入到一個全連接層,然後使用最大池化操作應用到鄰居節點集合。
h
N
v
t
=
max
(
{
σ
(
W
p
o
o
l
h
u
t
−
1
+
b
)
,
∀
u
∈
N
v
}
)
\mathbf{h}_{\mathcal{N}_{v}}^{t}=\max \left(\left\{\sigma\left(\mathbf{W}_{\mathrm{pool}} \mathbf{h}_{u}^{t-1}+\mathbf{b}\right), \forall u \in \mathcal{N}_{v}\right\}\right)
h N v t = max ( { σ ( W p o o l h u t − 1 + b ) , ∀ u ∈ N v } ) 值得一提的是,任何對稱的函數都可以用來替換這裏的最大池化操作。
門機制(Gate) :目前在信息傳播步驟中使用的門機制類似於GRU和LSTM模型,這種機制可以減小原始GNN模型的約束,並提升在圖結構中的長期的信息傳播 。
論文 提出了門控圖神經網絡(GGNN),在信息傳播步驟中使用GRU,將遞歸循環展開固定數量的步數
T
T
T ,並使用按照時間序的反向傳播來計算梯度。
具體來說,傳播的基本遞歸循環是模型如下
a
v
t
=
A
v
T
[
h
1
t
−
1
…
h
N
t
−
1
]
T
+
b
z
v
t
=
σ
(
W
z
a
v
t
+
U
z
h
v
t
−
1
)
r
v
t
=
σ
(
W
r
a
v
t
+
U
r
h
v
t
−
1
)
h
~
v
t
=
tanh
(
W
a
v
t
+
U
(
r
v
t
⊙
h
v
t
−
1
)
)
h
v
t
=
(
1
−
z
v
t
)
⊙
h
v
t
−
1
+
z
v
t
⊙
h
v
t
~
\begin{aligned} \mathbf{a}_{v}^{t} &=\mathbf{A}_{v}^{T}\left[\mathbf{h}_{1}^{t-1} \ldots \mathbf{h}_{N}^{t-1}\right]^{T}+\mathbf{b} \\ \mathbf{z}_{v}^{t} &=\sigma\left(\mathbf{W}^{z} \mathbf{a}_{v}^{t}+\mathbf{U}^{z} \mathbf{h}_{v}^{t-1}\right) \\ \mathbf{r}_{v}^{t} &=\sigma\left(\mathbf{W}^{r} \mathbf{a}_{v}^{t}+\mathbf{U}^{r} \mathbf{h}_{v}^{t-1}\right) \\ \widetilde{\mathbf{h}}_{v}^{t} &=\tanh \left(\mathbf{W} \mathbf{a}_{v}^{t}+\mathbf{U}\left(\mathbf{r}_{v}^{t} \odot \mathbf{h}_{v}^{t-1}\right)\right) \\ \mathbf{h}_{v}^{t} &=\left(1-\mathbf{z}_{v}^{t}\right) \odot \mathbf{h}_{v}^{t-1}+\mathbf{z}_{v}^{t} \odot \widetilde{\mathbf{h}_{v}^{t}} \end{aligned}
a v t z v t r v t h
v t h v t = A v T [ h 1 t − 1 … h N t − 1 ] T + b = σ ( W z a v t + U z h v t − 1 ) = σ ( W r a v t + U r h v t − 1 ) = tanh ( W a v t + U ( r v t ⊙ h v t − 1 ) ) = ( 1 − z v t ) ⊙ h v t − 1 + z v t ⊙ h v t
按照第一個公式,節點
v
v
v 首先從它的鄰居節點彙集信息 ,其中,
A
v
\mathbf{A}_v
A v 爲圖鄰接矩陣
A
\mathbf{A}
A 的子矩陣,表示節點
v
v
v 和它的鄰居節點的連接關係。然後,類似於GRU的節點更新函數將該節點前一個時刻的信息 和與該節點相鄰的其它節點的信息 結合起來,以此來更新每一個節點的隱藏狀態。
a
\mathbf{a}
a 彙集了節點
v
v
v 周圍節點的信息,
z
\mathbf{z}
z 和
r
\mathbf{r}
r 分別是更新門(update gate)和 重置門(reset gate) 。LSTM同樣使用類似的方法來進行信息傳播過程。
論文 提出了兩個LSTM的擴展結構,Child-Sum Tree-LSTM 和N-ary Tree-LSTM ,類似於標準的LSTM單元,每一個Tree-LSTM單元(爲
v
v
v )包含輸入門(input gate)
i
v
\mathbf{i}_v
i v 和輸出門(output gate)
o
v
\mathbf{o}_v
o v ,記憶單元(memory cell)
c
v
\mathbf{c}_v
c v 和隱藏狀態(hidden state)
h
v
\mathbf{h}_v
h v ,但與LSTM(LSTM單元只包含一個遺忘門(forget gate))不同的是,Tree-LSTM單元對每一個孩子節點
k
k
k 都有一個遺忘門
f
v
k
\mathbf{f}_{vk}
f v k ,這樣就可以從孩子節點中選擇性地彙集並組合信息。Child-Sum Tree-LSTM的轉換方程如下
h
v
t
−
1
~
=
∑
k
∈
N
v
h
k
t
−
1
i
v
t
=
σ
(
W
i
x
v
t
+
U
i
h
v
t
−
1
~
+
b
i
)
f
v
k
t
=
σ
(
W
f
x
v
t
+
U
f
h
k
t
−
1
+
b
f
)
o
v
t
=
σ
(
W
o
x
v
t
+
U
o
h
v
t
−
1
~
+
b
o
)
u
v
t
=
tanh
(
W
u
x
v
t
+
U
u
h
v
t
−
1
~
+
b
u
)
c
v
t
=
i
v
t
⊙
u
v
t
+
∑
k
∈
N
v
f
v
k
t
⊙
c
k
t
−
1
h
v
t
=
o
v
t
⊙
tanh
(
c
v
t
)
\begin{aligned} \widetilde{\mathbf{h}_{v}^{t-1}} &= \sum_{k \in \mathcal{N}_{v}} \mathbf{h}_{k}^{t-1} \\ \mathbf{i}_{v}^{t} &=\sigma\left(\mathbf{W}^{i} \mathbf{x}_{v}^{t}+\mathbf{U}^{i} \widetilde{\mathbf{h}_{v}^{t-1}}+\mathbf{b}^{i}\right) \\ \mathbf{f}_{v k}^{t} &=\sigma\left(\mathbf{W}^{f} \mathbf{x}_{v}^{t}+\mathbf{U}^{f} \mathbf{h}_{k}^{t-1}+\mathbf{b}^{f}\right) \\ \mathbf{o}_{v}^{t} &=\sigma\left(\mathbf{W}^{o} \mathbf{x}_{v}^{t}+\mathbf{U}^{o} \widetilde{\mathbf{h}_{v}^{t-1}}+\mathbf{b}^{o}\right) \\ \mathbf{u}_{v}^{t} &=\tanh \left(\mathbf{W}^{u} \mathbf{x}_{v}^{t}+\mathbf{U}^{u} \widetilde{\mathbf{h}_{v}^{t-1}}+\mathbf{b}^{u}\right) \\ \mathbf{c}_{v}^{t} &=\mathbf{i}_{v}^{t} \odot \mathbf{u}_{v}^{t}+\sum_{k \in \mathcal{N}_{v}} \mathbf{f}_{v k}^{t} \odot \mathbf{c}_{k}^{t-1} \\ \mathbf{h}_{v}^{t} &=\mathbf{o}_{v}^{t} \odot \tanh \left(\mathbf{c}_{v}^{t}\right) \end{aligned}
h v t − 1
i v t f v k t o v t u v t c v t h v t = k ∈ N v ∑ h k t − 1 = σ ( W i x v t + U i h v t − 1
+ b i ) = σ ( W f x v t + U f h k t − 1 + b f ) = σ ( W o x v t + U o h v t − 1
+ b o ) = tanh ( W u x v t + U u h v t − 1
+ b u ) = i v t ⊙ u v t + k ∈ N v ∑ f v k t ⊙ c k t − 1 = o v t ⊙ tanh ( c v t )
x
v
t
\mathbf{x}_v^t
x v t 是標準LSTM中在時刻
t
t
t 的輸入。
如果一個樹每一個節點最多有
K
K
K 個分支,並且節點所有的孩子節點都是有序的,比如,這些孩子節點可以被從
1
1
1 編號到
K
K
K ,那麼可以使用N-ary Tree-LSTM,對於節點
v
v
v ,
h
v
k
t
\mathbf{h}_{vk}^t
h v k t 和
c
v
k
t
\mathbf{c}_{vk}^t
c v k t 分別表示在
t
t
t 時刻,它的第
k
k
k 個孩子節點的隱藏狀態和記憶單元,轉化方程爲
i
v
t
=
σ
(
W
i
x
v
t
+
∑
l
=
1
K
U
l
i
h
v
l
t
−
1
+
b
i
)
f
v
k
t
=
σ
(
W
f
x
v
t
+
∑
l
=
1
K
U
k
l
f
h
v
l
t
−
1
+
b
f
)
o
v
t
=
σ
(
W
o
x
v
t
+
∑
l
=
1
K
U
l
o
h
v
l
t
−
1
+
b
o
)
u
v
t
=
tanh
(
W
u
x
v
t
+
∑
l
=
1
K
U
v
l
t
⊙
c
v
l
t
−
1
+
b
u
)
c
v
t
=
i
v
t
⊙
u
v
t
+
∑
l
=
1
K
f
v
l
t
⊙
c
v
l
t
−
1
h
v
t
=
o
v
t
⊙
tanh
(
c
v
t
)
\begin{aligned} \mathbf{i}_{v}^{t} &=\sigma\left(\mathbf{W}^{i} \mathbf{x}_{v}^{t}+\sum_{l=1}^{K} \mathbf{U}_{l}^{i} \mathbf{h}_{v l}^{t-1}+\mathbf{b}^{i}\right) \\ \mathbf{f}_{v k}^{t} &=\sigma\left(\mathbf{W}^{f} \mathbf{x}_{v}^{t}+\sum_{l=1}^{K} \mathbf{U}_{k l}^{f} \mathbf{h}_{v l}^{t-1}+\mathbf{b}^{f}\right) \\ \mathbf{o}_{v}^{t} &=\sigma\left(\mathbf{W}^{o} \mathbf{x}_{v}^{t}+\sum_{l=1}^{K} \mathbf{U}_{l}^{o} \mathbf{h}_{v l}^{t-1}+\mathbf{b}^{o}\right) \\ \mathbf{u}_{v}^{t} &=\tanh \left(\mathbf{W}^{u} \mathbf{x}_{v}^{t}+\sum_{l=1}^{K} \mathbf{U}_{v l}^{t} \mathbf{\odot} \mathbf{c}_{v l}^{t-1}+\mathbf{b}^{u}\right) \\ \mathbf{c}_{v}^{t}&=\mathbf{i}_{v}^{t} \odot \mathbf{u}_{v}^{t}+\sum_{l=1}^{K} \mathbf{f}_{v l}^{t} \odot \mathbf{c}_{v l}^{t-1} \\ \mathbf{h}_{v}^{t}&=\mathbf{o}_{v}^{t} \odot \tanh \left(\mathbf{c}_{v}^{t}\right) \end{aligned}
i v t f v k t o v t u v t c v t h v t = σ ( W i x v t + l = 1 ∑ K U l i h v l t − 1 + b i ) = σ ( W f x v t + l = 1 ∑ K U k l f h v l t − 1 + b f ) = σ ( W o x v t + l = 1 ∑ K U l o h v l t − 1 + b o ) = tanh ( W u x v t + l = 1 ∑ K U v l t ⊙ c v l t − 1 + b u ) = i v t ⊙ u v t + l = 1 ∑ K f v l t ⊙ c v l t − 1 = o v t ⊙ tanh ( c v t ) 對每個孩子節點
k
k
k 都賦予一個單獨的參數矩陣,使得該模型相比於Child-Sum Tree-LSTM能夠學習得到更加細微的節點表示 。這兩種類型的Tree-LSTM都能夠很容易地應用到圖
論文 提出了一個Graph LSTM的變體,用於關係抽取(relation extraction)的任務上。圖和樹的主要區別在於,圖結構的邊有它們自己的label,由此,論文采用不同的權重矩陣來表示不同的label
i
v
t
=
σ
(
W
i
x
v
t
+
∑
k
∈
N
v
U
m
(
v
,
k
)
i
h
k
t
−
1
+
b
i
)
f
v
k
t
=
σ
(
W
f
x
v
t
+
U
m
(
v
,
k
)
f
h
k
t
−
1
+
b
f
)
o
v
t
=
σ
(
W
o
x
v
t
+
∑
k
∈
N
v
U
m
(
v
,
k
)
o
h
k
t
−
1
+
b
o
)
u
v
t
=
tanh
(
W
u
x
v
t
+
∑
k
∈
N
v
U
m
(
v
,
k
)
t
−
1
h
k
t
−
1
+
b
u
)
c
v
t
=
i
v
t
⊙
u
v
t
+
∑
k
∈
N
v
f
v
k
t
⊙
c
k
t
−
1
h
v
t
=
o
v
t
⊙
tanh
(
c
v
t
)
\begin{array}{l}{\mathbf{i}_{v}^{t}=\sigma\left(\mathbf{W}^{i} \mathbf{x}_{v}^{t}+\sum_{k \in \mathcal{N}_{v}} \mathbf{U}_{m(v, k)}^{i} \mathbf{h}_{k}^{t-1}+\mathbf{b}^{i}\right)} \\ {\mathbf{f}_{v k}^{t}=\sigma\left(\mathbf{W}^{f} \mathbf{x}_{v}^{t}+\mathbf{U}_{m(v, k)}^{f} \mathbf{h}_{k}^{t-1}+\mathbf{b}^{f}\right)} \\ {\mathbf{o}_{v}^{t}=\sigma\left(\mathbf{W}^{o} \mathbf{x}_{v}^{t}+\sum_{k \in \mathcal{N}_{v}} \mathbf{U}_{m(v, k)}^{o} \mathbf{h}_{k}^{t-1}+\mathbf{b}^{o}\right)} \\ {\mathbf{u}_{v}^{t}=\tanh \left(\mathbf{W}^{u} \mathbf{x}_{v}^{t}+\sum_{k \in \mathcal{N}_{v}} \mathbf{U}_{m(v, k)}^{t-1} \mathbf{h}_{k}^{t-1}+\mathbf{b}^{u}\right)} \\ {\mathbf{c}_{v}^{t}=\mathbf{i}_{v}^{t} \odot \mathbf{u}_{v}^{t}+\sum_{k \in \mathcal{N}_{v}} \mathbf{f}_{v k}^{t} \odot \mathbf{c}_{k}^{t-1}} \\ {\mathbf{h}_{v}^{t}=\mathbf{o}_{v}^{t} \odot \tanh \left(\mathbf{c}_{v}^{t}\right)}\end{array}
i v t = σ ( W i x v t + ∑ k ∈ N v U m ( v , k ) i h k t − 1 + b i ) f v k t = σ ( W f x v t + U m ( v , k ) f h k t − 1 + b f ) o v t = σ ( W o x v t + ∑ k ∈ N v U m ( v , k ) o h k t − 1 + b o ) u v t = tanh ( W u x v t + ∑ k ∈ N v U m ( v , k ) t − 1 h k t − 1 + b u ) c v t = i v t ⊙ u v t + ∑ k ∈ N v f v k t ⊙ c k t − 1 h v t = o v t ⊙ tanh ( c v t ) 其中,
m
(
v
,
k
)
m(v,k)
m ( v , k ) 表示在節點
v
v
v 和
k
k
k 之間邊的label。
注意力機制(Attention) :注意力機制在很多基於序列任務(sequence-based tasks)比如機器翻譯、機器閱讀理解等等上都產生了非常好的效果。
論文 提出了圖注意力網絡(graph attention network, GAT)將注意力機制引入到信息傳播步驟,這個模型通過對它的鄰居節點增加註意力來計算節點的隱藏狀態,和self-attention 策略類似。
該論文定義了一個graph attentional layer ,並通過疊加這種層來構建任意的圖注意力網絡,這個層計算節點對
(
i
,
j
)
(i,j)
( i , j ) 的注意力係數(coefficients),計算方式如下:
α
i
j
=
exp
(
Leaky ReLU
(
a
T
[
W
h
i
∥
W
h
j
]
)
)
∑
k
∈
N
i
exp
(
Leaky ReLU
(
a
T
[
W
h
i
∥
W
h
k
]
)
)
\alpha_{i j}=\frac{\exp \left(\text { Leaky ReLU }\left(\mathbf{a}^{T}\left[\mathbf{W} \mathbf{h}_{i} \| \mathbf{W} \mathbf{h}_{j}\right]\right)\right)}{\sum_{k \in \mathcal{N}_{i}} \exp \left(\text { Leaky ReLU }\left(\mathbf{a}^{T}\left[\mathbf{W} \mathbf{h}_{i} \| \mathbf{W} \mathbf{h}_{k}\right]\right)\right)}
α i j = ∑ k ∈ N i exp ( Leaky ReLU ( a T [ W h i ∥ W h k ] ) ) exp ( Leaky ReLU ( a T [ W h i ∥ W h j ] ) ) 其中,
α
i
j
\alpha_{ij}
α i j 是節點
j
j
j 對
i
i
i 的注意力係數,
N
i
\mathcal{N}_i
N i 表示圖中節點
i
i
i 的鄰居節點集合,節點特徵的輸入集合是
h
=
{
h
1
,
h
2
,
…
,
h
N
}
,
h
i
∈
R
F
\mathbf{h}=\left\{\mathbf{h}_{1}, \mathbf{h}_{2}, \ldots, \mathbf{h}_{N}\right\},\mathbf{h}_{i} \in\mathbb{R}^{F}
h = { h 1 , h 2 , … , h N } , h i ∈ R F ,其中
N
N
N 是節點的個數,
F
F
F 是每個節點的特徵維度。這個層會產生一個新的節點特徵集(可能有不同的特徵維度
F
′
F'
F ′ )
h
′
=
{
h
1
′
,
h
2
′
,
…
,
h
N
′
}
,
h
i
′
∈
R
F
′
\mathbf{h}^{\prime}=\left\{\mathbf{h}_{1}^{\prime}, \mathbf{h}_{2}^{\prime}, \ldots, \mathbf{h}_{N}^{\prime}\right\},\mathbf{h}_{i}^{\prime} \in \mathbb{R}^{F^{\prime}}
h ′ = { h 1 ′ , h 2 ′ , … , h N ′ } , h i ′ ∈ R F ′ ,作爲該層的輸出,
W
∈
R
F
′
×
F
\mathbf{W} \in \mathbb{R}^{F^{\prime} \times F}
W ∈ R F ′ × F 是共享的線性變換的權重矩陣,
a
∈
R
2
F
′
\mathbf{a} \in \mathbb{R}^{2 F^{\prime}}
a ∈ R 2 F ′ 是單層的前向神經網絡的權重向量,通過softmax函數對它進行歸一化,然後使用LeakyReLU(
α
=
0.2
\alpha=0.2
α = 0 . 2 )非線性函數。
最後每個節點的輸出特徵可以通過如下方程獲得
h
i
′
=
σ
(
∑
j
∈
N
i
α
i
j
W
h
j
)
\mathbf{h}_{i}^{\prime}=\sigma\left(\sum_{j \in \mathcal{N}_{i}} \alpha_{i j} \mathbf{W h}_{j}\right)
h i ′ = σ ⎝ ⎛ j ∈ N i ∑ α i j W h j ⎠ ⎞ 另外,這個注意力層採用multi-head attention 使得網絡學習過程更加穩定 ,它使用
K
K
K 個獨立的注意力來計算隱藏狀態,然後將計算出的
K
K
K 個特徵連接(或者求平均),得到最終的輸出表示
h
i
′
=
∥
k
=
1
K
σ
(
∑
j
∈
N
i
α
i
j
k
W
k
h
j
)
\mathbf{h}_{i}^{\prime}=\|_{k=1}^{K} \sigma\left(\sum_{j \in \mathcal{N}_{i}} \alpha_{i j}^{k} \mathbf{W}^{k} \mathbf{h}_{j}\right)
h i ′ = ∥ k = 1 K σ ⎝ ⎛ j ∈ N i ∑ α i j k W k h j ⎠ ⎞
h
i
′
=
σ
(
1
K
∑
k
=
1
K
∑
j
∈
N
i
α
i
j
k
W
k
h
j
)
\mathbf{h}_{i}^{\prime}=\sigma\left(\frac{1}{K} \sum_{k=1}^{K} \sum_{j \in \mathcal{N}_{i}} \alpha_{i j}^{k} \mathbf{W}^{k} \mathbf{h}_{j}\right)
h i ′ = σ ⎝ ⎛ K 1 k = 1 ∑ K j ∈ N i ∑ α i j k W k h j ⎠ ⎞
其中,
α
i
j
k
\alpha_{i j}^{k}
α i j k 是歸一化的注意力係數,由第
k
k
k 個注意力機制得到。
這篇論文的注意力機制結構有如下幾個特點:(1)node-neighbor pair的計算可以是並行化的 ,因此操作的效率高;(2)通過給鄰居節點賦予任意的權重,可以用在有不同度的圖節點 上;(3)可以容易地用於歸納學習問題 上。
跳過連接(Skip connection) :許多應用都會將圖神經網絡層進行疊加,以此來實現更好的結果,因爲更多的層意味着每一個節點能夠從更多的鄰居節點中獲取信息 ,但是,許多實驗發現,更深的模型並不會表現更好,反而可能表現更壞,主要因爲隨着指數個數上升的相鄰節點數量,更多的層可能會彙集到更多的噪聲信息 。
一個直接的想法是使用殘差網絡(residual network),但是即使使用殘差連接,有更多層的GCN在很多數據上並沒有2層的GCN表現的更好。
論文 提出了Highway GCN,類似於highway network,使用了「逐層門機制」(layer-wise gates),一個層的輸出公式如下:
T
(
h
t
)
=
σ
(
W
t
h
t
+
b
t
)
h
t
+
1
=
h
t
+
1
⊙
T
(
h
t
)
+
h
t
⊙
(
1
−
T
(
h
t
)
)
\begin{aligned} \mathbf{T}\left(\mathbf{h}^{t}\right) &=\sigma\left(\mathbf{W}^{t} \mathbf{h}^{t}+\mathbf{b}^{t}\right) \\ \mathbf{h}^{t+1} &=\mathbf{h}^{t+1} \odot \mathbf{T}\left(\mathbf{h}^{t}\right)+\mathbf{h}^{t} \odot\left(1-\mathbf{T}\left(\mathbf{h}^{t}\right)\right) \end{aligned}
T ( h t ) h t + 1 = σ ( W t h t + b t ) = h t + 1 ⊙ T ( h t ) + h t ⊙ ( 1 − T ( h t ) ) 通過增加highway gates,在該論文指定的特定問題上,模型在4層的表現最好。
分層池化(Hierarchical Pooling) :在計算機視覺中,一個卷積層後通常會接一個池化層,來得到更加一般的特徵。與這種池化層類似的是,在圖結構中,一種分層池化層也能夠起到類似的效果,複雜的和大規模的圖通常會包含豐富的分層結構 ,這種結構對於節點層次(node-level)和圖層次(graph-level)的分類任務非常重要。
訓練方法
原始的圖卷積神經網絡在訓練和優化方法上有一些缺點,比如,GCN需要計算整個圖拉普拉斯矩陣 ,這個操作對於大型的圖計算量非常大,另外,在第
L
L
L 層的節點的embedding,是通過第
L
−
1
L-1
L − 1 層其周圍所有鄰居節點的embedding遞歸循環得到的,因此,單個節點的感受野會隨着層數的增加而指數上升 ,由此,計算單個節點的梯度會非常耗時,另外,GCN是對固定的圖結構進行訓練 ,缺乏歸納學習的能力。有以下幾種改進的方法
採樣(Sampling) :GraphSAGE將full graph Laplacian替換爲可學習的聚合函數(aggregation function)。在學習到聚合函數和傳播函數後,GraphSAGE能夠對未見過的節點產生embedding。另外,GraphSAGE使用鄰居節點採樣(neighbor sampling)的方法來緩和感受野擴展的擴展速度。
感受野控制(Receptive Field Control)
數據增強(Data Augmentation) :論文 考慮到GCN需要許多額外的標籤數據集用於驗證,以及卷積核局部化問題,爲了解決這些問題,這篇論文提出Co-Training GCN和Self-Training GCN來擴充訓練數據集。
無監督訓練(Unsupervised Training)
GNN一般框架
除了一些GNN的變體之外,一些一般性的框架也用於將不同的模型結合到一個單一框架中,比如MPNN(結合了各種GNN和GCN方法),NLNN(結合幾種self-attention的方法),GN(結合MPNN和NLNN以及其它一些GNN變體)。下面對這三種框架進行仔細介紹:
Message Passing Neural Networks
該模型提出一種general framework,用於在graph上進行監督學習。模型包含兩個過程,message passing phase 和readout phase 。信息傳遞階段就是前向傳播階段,該階段循環運行T個steps,並通過函數
M
t
M_t
M t 獲取信息,通過函數
U
t
U_t
U t 更新節點,該階段方程如下
m
v
t
+
1
=
∑
w
∈
N
v
M
t
(
h
v
t
,
h
w
t
,
e
v
w
)
h
v
t
+
1
=
U
t
(
h
v
t
,
m
v
t
+
1
)
\begin{aligned} \mathbf{m}_{v}^{t+1} &=\sum_{w \in \mathcal{N}_{v}} M_{t}\left(\mathbf{h}_{v}^{t}, \mathbf{h}_{w}^{t}, \mathbf{e}_{v w}\right) \\ \mathbf{h}_{v}^{t+1} &=U_{t}\left(\mathbf{h}_{v}^{t}, \mathbf{m}_{v}^{t+1}\right) \end{aligned}
m v t + 1 h v t + 1 = w ∈ N v ∑ M t ( h v t , h w t , e v w ) = U t ( h v t , m v t + 1 ) 其中,
e
v
w
\mathbf{e}_{vw}
e v w 表示從節點
v
v
v 到
w
w
w 的邊的特徵向量。
readout 階段計算一個特徵向量用於整個圖的representation,使用函數
R
R
R 實現
y
^
=
R
(
{
h
v
T
∣
v
∈
G
}
)
\hat{\mathbf{y}}=R\left(\left\{\mathbf{h}_{v}^{T} | v \in G\right\}\right)
y ^ = R ( { h v T ∣ v ∈ G } ) 其中
T
T
T 表示整個時間step數,其中的函數
M
t
M_t
M t ,
U
t
U_t
U t 和
R
R
R 可以使用不同的模型設置。
例如,考慮GGNN模型的例子,有如下函數設置
M
t
(
h
v
t
,
h
w
t
,
e
v
w
)
=
A
e
v
w
h
w
t
U
t
=
G
R
U
(
h
v
t
,
m
v
t
+
1
)
R
=
∑
v
∈
V
σ
(
i
(
h
v
T
,
h
v
0
)
)
⊙
(
j
(
h
v
T
)
)
\begin{aligned} M_{t}\left(\mathbf{h}_{v}^{t}, \mathbf{h}_{w}^{t}, \mathbf{e}_{v w}\right) &=\mathbf{A}_{\mathbf{e}_{vw}} \mathbf{h}_{w}^{t} \\ U_{t} &=G R U\left(\mathbf{h}_{v}^{t}, \mathbf{m}_{v}^{t+1}\right) \\ R &=\sum_{v \in V} \sigma\left(i\left(\mathbf{h}_{v}^{T}, \mathbf{h}_{v}^{0}\right)\right) \odot\left(j\left(\mathbf{h}_{v}^{T}\right)\right) \end{aligned}
M t ( h v t , h w t , e v w ) U t R = A e v w h w t = G R U ( h v t , m v t + 1 ) = v ∈ V ∑ σ ( i ( h v T , h v 0 ) ) ⊙ ( j ( h v T ) ) 其中,
A
e
v
w
\mathbf{A}_{\mathbf{e}_{vw}}
A e v w 表示鄰接矩陣,
i
i
i 和
j
j
j 是函數
R
R
R 的神經網絡。
Non-local Neural Networks
該NLNN模型用於使用神經網絡獲取長遠依賴信息 ,一個位置的non-local操作使用所有positions的特徵向量的加權和來作爲該位置的信息。以下爲通用的non-local operation定義
h
i
′
=
1
C
(
h
)
∑
∀
j
f
(
h
i
,
h
j
)
g
(
h
j
)
\mathbf{h}_{i}^{\prime}=\frac{1}{\mathcal{C}(\mathbf{h})} \sum_{\forall j} f\left(\mathbf{h}_{i}, \mathbf{h}_{j}\right) g\left(\mathbf{h}_{j}\right)
h i ′ = C ( h ) 1 ∀ j ∑ f ( h i , h j ) g ( h j ) 其中,
i
i
i 是輸出位置(節點)的索引,
j
j
j 是所有可能位置(節點)索引,
f
(
h
i
,
h
j
)
f\left(\mathbf{h}_{i}, \mathbf{h}_{j}\right)
f ( h i , h j ) 函數得到一個scalar,用於計算節點
i
i
i 與節點
j
j
j 之間的關聯度,
g
(
h
j
)
g\left(\mathbf{h}_{j}\right)
g ( h j ) 表示輸入
h
j
\mathbf{h}_{j}
h j 的轉換函數,因子
1
C
(
h
)
\frac{1}{\mathcal{C}(\mathbf{h})}
C ( h ) 1 用於對結果進行歸一化。對於這幾個函數有多種設置,各種函數配置說明如下
線性轉換函數 ,即
g
(
h
j
)
=
W
g
h
j
g\left(\mathbf{h}_{j}\right)=\mathbf{W}_{g} \mathbf{h}_{j}
g ( h j ) = W g h j ,其中,
W
g
W_g
W g 爲可學習的權重矩陣。
高斯函數 ,對函數
f
f
f 使用高斯配置
f
(
h
i
,
h
j
)
=
e
h
i
T
h
j
f\left(\mathbf{h}_{i}, \mathbf{h}_{j}\right)=e^{\mathbf{h}_{i}^{T} \mathbf{h}_{j}}
f ( h i , h j ) = e h i T h j 其中,
h
i
T
h
j
\mathbf{h}_{i}^{T} \mathbf{h}_{j}
h i T h j 爲點積相似度,
C
(
h
)
=
∑
∀
j
f
(
h
i
,
h
j
)
\mathcal{C}(\mathbf{h})=\sum_{\forall j} f\left(\mathbf{h}_{i}, \mathbf{h}_{j}\right)
C ( h ) = ∑ ∀ j f ( h i , h j ) 。
Embedded Guassian ,對Guassian函數的擴展,用於計算嵌入空間的相似度
f
(
h
i
,
h
j
)
=
e
θ
(
h
i
)
T
ϕ
(
h
j
)
f\left(\mathbf{h}_{i}, \mathbf{h}_{j}\right)=e^{\theta\left(\mathbf{h}_{i}\right)^{T}} \phi\left(\mathbf{h}_{j}\right)
f ( h i , h j ) = e θ ( h i ) T ϕ ( h j ) 其中,
θ
(
h
i
)
=
W
θ
h
i
\theta\left(\mathbf{h}_{i}\right)=\mathbf{W}_{\theta} \mathbf{h}_{i}
θ ( h i ) = W θ h i ,
ϕ
(
h
j
)
=
W
ϕ
h
j
\phi\left(\mathbf{h}_{j}\right)=W_{\phi} \mathbf{h}_{j}
ϕ ( h j ) = W ϕ h j ,
C
(
h
)
=
∑
∀
j
f
(
h
i
,
h
j
)
\mathcal{C}(\mathbf{h})=\sum_{\forall j} f\left(\mathbf{h}_{i}, \mathbf{h}_{j}\right)
C ( h ) = ∑ ∀ j f ( h i , h j ) 。
Dot product ,對函數
f
f
f 使用點積相似度
f
(
h
i
,
h
j
)
=
θ
(
h
i
)
T
ϕ
(
h
j
)
f\left(\mathbf{h}_{i}, \mathbf{h}_{j}\right)=\theta\left(\mathbf{h}_{i}\right)^{T} \phi\left(\mathbf{h}_{j}\right)
f ( h i , h j ) = θ ( h i ) T ϕ ( h j ) 在這種情況下,
C
(
h
)
=
N
\mathcal{C}(\mathbf{h})=N
C ( h ) = N ,其中
N
N
N 爲位置(節點)的個數。
Concatenation ,即
f
(
h
i
,
h
j
)
=
Re
L
U
(
w
f
T
[
θ
(
h
i
)
∥
ϕ
(
h
j
)
]
)
f\left(\mathbf{h}_{i}, \mathbf{h}_{j}\right)=\operatorname{Re} \mathrm{L} \mathrm{U}\left(\mathbf{w}_{f}^{T}\left[\theta\left(\mathbf{h}_{i}\right) \| \phi\left(\mathbf{h}_{j}\right)\right]\right)
f ( h i , h j ) = R e L U ( w f T [ θ ( h i ) ∥ ϕ ( h j ) ] ) 其中,
w
f
\mathbf{w}_{f}
w f 是一個權重向量,用於將一個vector映射成一個scalar,
C
(
h
)
=
N
\mathcal{C}(\mathbf{h})=N
C ( h ) = N 。
Graph Networks
首先介紹網絡的的定義 ,一個Graph Networks定義爲三元組
G
=
(
u
,
H
,
E
)
G=(\mathbf{u}, H, E)
G = ( u , H , E ) ,這裏使用
H
=
{
h
i
}
i
=
1
:
N
v
H=\left\{\mathbf{h}_{i}\right\}_{i=1 : N^{v}}
H = { h i } i = 1 : N v 表示節點集合,
h
i
\mathbf{h}_{i}
h E ) ,這裏使用
H
=
{
h
i
}
i
=
1
:
N
v
H=\left\{\mathbf{h}_{i}\right\}_{i=1 : N^{v}}
H = { h i } i = 1 : N v 表示節點集合,
h
i
\mathbf{h}_{i}
h i 爲節點的屬性向量,
u
\mathbf{u}
u 是全局屬性,
E
=
{
(
e
k
,
r
k
,
s
k
)
}
k
=
1
:
N
e
E=\left\{\left(\mathbf{e}_{k}, r_{k}, s_{k}\right)\right\}_{k=1 : N^{e}}
E = { ( e k , r k , s k ) } k = 1 : N e 爲邊的集合,其中,
e
k
\mathbf{e}_{k}
e k 爲邊的屬性向量,
r
k
r_k
r k 爲receiver node索引,
s
k
s_k
s k 爲sender node索引。
然後是GN block 的結構,一個GN block 包含三個update functions(
ϕ
\phi
ϕ )和三個aggregation functions(
ρ
\rho
ρ )