術語(Terminology)
-
Aggregation
Aggregation是Convolution在GNN中的推廣。Aggregation就是在某一個layer中用某node及其neighbor的feature得到下一個layer中該node的feature。
-
Readout
Readout有點像是全連接在GNN中的推廣。Readout就是匯總整個圖的信息,最終得到一個特征來表示這整個圖(Graph Representation)。
NN4G(Neural Network for Graph)
論文鏈接:https://ieeexplore.ieee.org/document/4773279
-
輸入層
假如是一個化學分子,輸入層的圖中的結點就是一個原子。不同原子有不同的特征, 其特征可以是任何和原子相關的化學特征,所以需要embedding(將高維特征映射到低維特征),做完embedding也就得到了隱藏層\(h^0\)。
-
隱藏層\(h^0\)
如何做embedding呢?讓原特征乘以embedding matrix就得到隱藏層\(h^0\)。如下圖所示,以1個結點為例,輸入層中結點\(v_3\)的特征是\(x_3\),該結點embedding時的計算式為\(h^0_3=\bar w_0\cdot x_3\)。embedding后就得到了隱藏層\(h^0\),然后再對隱藏層\(h^0\)進行Aggregation就得到了隱藏層\(h^1\)。
-
隱藏層\(h^1\)
如何做Aggregation呢?如下圖所示,以1個結點為例,在隱藏層\(h^0\)中,結點\(h^0_3\)和$h0_0,h0_2,h0_4$3個結點相鄰,則Aggregation時計算式為$h1_3=\hat w_{1,0}(h0_0+h0_2+h^0_4)+\bar w_1\cdot x_3$。經過多次Aggregation,最后需要Readout。
-
Readout
如何做Readout呢?如下圖所示,假設有3個隱藏層,那Readout的計算式為\(y=MEAN(h^0)+MEAN(h^1)+MEAN(h^2)\)。
DCNN(Diffusion-Convolution Neural Network)
論文鏈接:https://arxiv.org/abs/1511.02136
-
輸入層
假如我們有1個和上例中(NN4G)一樣的輸入圖。
-
隱藏層\(h^0\)
如下圖所示,從輸入層到隱藏層\(h^0\)的計算式為\(h^0_3=w^0_3MEAN(d(3,\cdot)=1)\),其中\(d(3,\cdot)=1\)表示所有與結點\(x_3\)距離為1的輸入層結點的特征。
-
隱藏層\(h^1\)
如下圖所示,從隱藏層\(h^0\)到隱藏層\(h^1\)的計算式為\(h^1_3=w^1_3MEAN(d(3,\cdot)=2)\),其中\(d(3,\cdot)=2\)表示所有與結點\(x_3\)距離為2的輸入層結點的特征。
以此類推,疊加k個隱藏層后就可以獲取各結點k范圍內的信息。如下圖所示,令1個隱藏層中多個結點的特征形成矩陣(1行是1個結點的特征),多個隱藏層的特征就形成多個通道\(H^0,H^1,\dots,H^k\)。
-
Node features
如何表達整個圖的特征呢?如下圖所示,將每個通道的特征flatten,然后再乘以參數\(w\)得到\(y_1\)即可。
也有其它做法,ICLR2018中DGC(Diffusion Graph Convolution)不是flatten,而是相加,如下圖所示。
MoNET(Mixture Model Networks)
NN4G、DCNN都是將鄰居結點的特征直接相加,並沒有考慮各個鄰居結點特征的重要性,而MoNET考慮了這個問題。
論文鏈接:https://arxiv.org/abs/1611.08402
MoNET定義了結點距離的概念,基於結點距離表示各個鄰居結點特征的重要性然后對各個鄰居結點進行加權求和,而不是簡單地取均值或求和。
如下圖所示,假如我們有和上例一樣的輸入圖,隱藏層\(h^0\)中結點\(v_3\)的特征為\(h^0_3\),結點\(v_3\)和結點\(v_0\)的距離為\(u_{3,0}\)。
定義結點\(x,y\)的距離\(u(x,y)=(\frac{1}{\sqrt{deg(x)}},\frac{1}{\sqrt{deg(y)}})^T\),其中\(deg(x)\)表示結點\(x\)的度(degree,度是連接到每個節點的邊的數量)。
GraphSAGE
SAmple and aggreGatE(GraphSAGE),在transductive和inductive setting上都能work。
論文鏈接:https://arxiv.org/abs/1706.02216
GraphSAGE的Aggregation除了mean,還有max pooling和LSTM。LSTM用來處理序列數據,但圖中結點的鄰居並沒有序列關系,但如果每次在鄰居中隨機取樣出不同順序,那也許可以忽略順序學習到順序無關的信息。
GAT(Graph Attention Networks)
論文鏈接:https://arxiv.org/abs/1710.10903
GAT不只是做加權求和(weighted sum),而其中的weight是通過學習得到的,方法就是對鄰居做attention。
假如我們有1個和上例中(NN4G)一樣的輸入圖。在做aggregation時,我們通過函數\(f\)計算各個鄰居結點\(v_0,v_2,v_4\)對結點\(v_3\)的重要性,然后做加權求和。
GIN(Graph Isomorphism Network)
這篇論文偏理論,證明出有些方法是work的,有些是不會work的。
比如提取特征時不要用mean或max(在一些情況下會fail),要用sum,如下圖所示。
Github(github.com):@chouxianyu
Github Pages(github.io):@臭咸魚
知乎(zhihu.com):@臭咸魚
博客園(cnblogs.com):@臭咸魚
B站(bilibili.com):@絕版臭咸魚
微信公眾號:@臭咸魚
轉載請注明出處,歡迎討論和交流!