圖網絡筆記(1)——GNN, GCN, GraphSAGE, GAT


圖網絡筆記(1)——GNN, GCN, GraphSAGE, GAT

簡介

在這里簡單總結一下常見的一些圖網絡模型。

GNN

我們的目標是在圖的結構上從各結點的初始feature\(x_v\),通過圖的結構以及邊的特征\(x_{(u,v)}\)學到對應的hidden variable\(h_v\).

考慮一個圖\(G=(V, E)\)
原始的GNN是一個迭代算法,通過\(h_v^{t+1}=f(x_v, \{x_{(u,v)}, h_u^t, x_u: (u, v) \in E \})\)進行更新,最后收斂得到\(h_v\).
依照現代ML的主流哲學,當然是用一個NN來擬合f。

其收斂的依據是不動點定理,我們將更新的過程抽象成\(H^{t+1}=F(H^t, X)\)
只要\(F\)為壓縮映射,也就是\(F\)的Jaccobi矩陣的算子范數小於1,即可收斂。

那么只需要加一個penalty來實現這個restriction即可:
\(J=Loss + \lambda max(\Vert \nabla F\Vert - c, 0)\),其中\(c\in(0,1)\)

GNN也有各種變體(variations),例如Gated GNN等。

GCN

GNN也有很大的局限性,不夠靈活、需要迭代。
GCN與GNN相比,不是一個迭代算法,而是像CNN網絡一樣是由若干個層(layers)構成的模型,每層的參數是獨立的。

GCN有一定的理論支撐,例如原文章從圖譜理論的角度從一定程度上解釋了GCN的合理性,但是我個人認為不是重點,我們這里也略去。

總而言之,原文作者在最初的模型上做一些小改動實驗后發現加上一些諸如renormalization的trick后得到的效果最好的公式形如這樣:
\(H^{l+1} = \sigma(\hat{A}H^lW^l)\)

其中\(W\)是這層(第\(l\)層)的參數,\(\hat{A}=\widetilde{D}^{\frac{1}{2}}\widetilde{A}\widetilde{D}^{\frac{1}{2}}\),其中\(\widetilde{A}=A+I_N\),A為鄰接矩陣,\(\widetilde{D}\)為使得\(\hat{A}\)對角元為1的對角矩陣,即\(D_{ii}=\Sigma_{j}\widetilde{A}_{ij}\).

同樣可以像CNN網絡一樣將GCN layer疊起來(stack)構成一個典型的GCN模型。相比GNN,GCN顯得更加靈活,也在很多問題中取得了更好的效果。

GraphSAGE

但同樣,GCN存在的問題也十分明顯:計算時需要將整張圖存入內存,每次更新時也需要圖的全部信息,計算代價大、存儲代價高,不適合運用在大型圖上
。於是有了這篇Inductive Representation Learning on Large Graphs,提出了GraphSAGE.

GraphSAGE乍一看像是一個\(K\)層的GCN,但是它通過合理的采樣使得更便於計算,也極大地減小了運算和存儲的代價。(以下直接按照minibatch的setting進行說明)

首先每次會先抽取一個minibatch,因為每層會聚集一階鄰居(one-hop neighbours)的信息,所以\(K\)層至多會涉及到\(K\)階鄰居,於是我們先將minibatch中結點的至多\(K+1\)階鄰居和它們自己構成的子圖拿出來,接着在這個子圖上運行算法,只更新minibatch中結點的至多\(K\)階鄰居和它們本身。

我們再來看以下每次更新的公式:\(h_{N(u)}^k=AGGREGATE(\{h_{u^{'}}^{k+1}:u^{'}\in N(u)\})\), \(h_u^k=\sigma(W^k\cdot CONCAT(h_u^{k-1}, h_{N(u)}^k))\), \(h_u^k = \frac{h_u^k}{\Vert h_u^k \Vert }\).
這里的\(N(v)\)其實也是經過采樣的,每次會采樣固定數目個鄰居,方便構成固定形狀的tensor、便於計算。

GAT

Graph Attention Network顧名思義是在圖網絡中引入了注意力機制。注意力機制可以看成是在將一個結點的鄰居的feature聚合到這個結點時為每個鄰居節點分配的權重。

也就是說我們希望在訓練時學習到一個函數\(\widetilde{f}:E\rightarrow [0, 1]\)滿足\(\Sigma_{u\in N(v)}\widetilde{f}(v,u)=1\).

  • attention weights
    • \(\alpha_{i,j}=\frac{e_{i,j}}{\Sigma_{k\in N(v_i)}e_{i,k}}\)
    • GAT中選取了\(e_{i,j}=exp(LeakyReLU(a(Wx_i||Wx_j)))\),這里a是一個函數。(當然取a為一層線性變換時這里可以看成是行向量a和后面的矩陣乘法)
  • similarity weights
    • 例如取cos距離,類似前面,但是取的\(e_{i,j}\)不同:

      \(e_{i,j} = \beta cos(Wx_i, Wx_j)\) (兩向量夾角的余弦值)

參考文章

  • SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS
  • Inductive Representation Learning on Large Graphs
  • GRAPH ATTENTION NETWORKS


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM