Graph 6 - GraphSAGE and GAT
24 Jun 2021 Paragraph : 2310 words.GraphSAGE是一種讓AGG function更彈性的模型,GAT則是加入了Attention機制,對於GCN來說每個neighbor一樣重要,而GAT會去學習哪些neighbor比較重要。
GraphSAGE
前面介紹到把neighbor embedding以自訂的方式(前面用mean舉裡)聚合起來,有人提出一個更彈性的作法,把原本的Wh+Bh的形式改成用一個自訂的AGG function來聚合neighbor,然後用concate的方式接上Bh_v,這樣帶來的好處是把neighbor當成是一個獨立的matrix來看待,除了可以用mean外,作者也提出用pool或LSTM來當AGG。
- Normal GCN
- GraphSAGE
GraphSAGE 不同於原本GNN是W*h得到msg後再AGG,GraphSAGE是先AGG所有鄰居的h後跟自己的h concate再乘以W,然後丟進activation function。
- AGG原作者也提出了幾種 Mean,Pool,LSTM
- Pool是多塞一層MLP作為transformation再取mean
- LSTM則是Reshuffle後依序丟進LSTM
- 在丟出每層的h之前會再做一個L2-norm(除以 平方和開根號),在某些情況下效果會比較好
Sum Pool LSTM
GAT (Graph Attention Network)
繼GCN、GraphSAGE後,出現了新的GNN種類,GAT 新增一個alpha作為可學習的Attention weight,sigma(alpha_vu * W * h) 公式跟前面兩個不同地方在把除以鄰居數N(v)改成乘以alpha_vu,原本的除以鄰居數是默認每個鄰居一樣重要,GAT認為有些鄰居對node的影響較大,alpha是用來學習哪些鄰居比較重要的。
Q 這個alpha要怎麼訂?
定義一個變數e_vu = a(msg_u,msg_v) 代表對node v來說node u的msg的重要性,有了e,可以有很多方法得到alpha,最常用的是softmax,因為可以把機率normalize成總和為1。
Q 那function a是哪來的?
a是attention mechanism function,可以用single layer neural network,因為是NN,可以有trainable weight。這個a與整個GAT一起train就行了,一起更新。
Multi-head attention
有一個穩定attention的方法叫Multi-head attention 就是用不同的參數設定train出好幾個attention score,然後用mean, sum或自訂的方法當做AGG算下一輪的attention score,雖然能讓score更穩定,但要多train,需要取捨。
Attention的好處
- 把鄰居的重要性也考慮進去
- 運算有效率,算attention時可以平行化
- 參數固定,空間是夠用的