graph embedding相關論文小結(三)

GNN模型

  • The Graph Neural Network Model
  • Graph Attention Networks
  • An Experimental study of neural networks for avariable Graphs
  • Skip-Graph: Learning graph embeedings with an encoder-decoder model

The Graph Neural Network Model
Franco Scarselli再2009年發表的GNN論文在最近幾年纔開始popular,被譽爲“人工智能2.0”的模型,類似於一種通用的神經網絡,可惜他並不是什麼特殊的神經網絡。我猜想它的來源起於Google的PageRank算法,同樣的收集鄰居節點的信息,同樣的一輪一輪的更新自己的值只是這個值對於PageRank是Node Ranking值而對於GNN來說是node embedding向量值,就像論文中說的那樣“GNNs are based on an information diffusion machanism”,也就是信息傳播理論。當然GNN及其變種可以實現Graph embedding操作。而且在researchGate上面也發現Franco Scarselli寫了諸多篇GNN和PageRank相關的論文。或許Graph的特點就在於“用我的鄰居來刻畫我自身”。當然GNN又和遞歸神經網絡和馬爾科夫鏈有一定關係。GNN簡單的看就只兩個函數f()和g(),當然函數就可以用神經網絡來代替導致後來衍生出那麼多種GNN版本來,這兩個函數作用於每一輪中的每一個節點上面,各個節點之間參數共享,類似於卷積操作,但是Graph不是grid-structure數據不屬於歐幾里得幾何空間。函數f()生成node embedding,而函數g()需要藉助該node embedding得到預測值。通過label設定損失函數來優化參數值。總體的邏輯在這篇論文中的那幅圖中非常清楚:
在這裏插入圖片描述
最核心的兩個公式也就是原始論文中的(5)式子:
在這裏插入圖片描述
GNN的根本理論在於Banach fixed point theorem,也就是Banach固定點理論保證收斂性以及解的唯一性。當然GNN的優化過程如果懂得RNN的BPTT向後傳播優化過程的話就不難理解了。後來論文分析了GNN的計算複雜性和優化過程。
GNN難以適用於動態圖,總不能新加一條邊或一個點就重新訓練一次吧。而且GNN對於邊的利用情況,對周圍節點的具體操作導致了後來的諸多改進版本。
另外GNN我認爲說白了就是在做卷積操作,只是Graph上的convolution。如果真的是這樣的話,計算機領域所謂的卷積看似是加權求和的啊,而對應到信號處理領域便是大名鼎鼎的“傅里葉變換”,也就是說GNN實際就是Graph上的傅里葉變換,據說傅里葉變換是一種“世界觀”,而且在諸多地方出現了Fourier transform的身影,所以本質還是在Graph Fourier transform,這是和圖信號處理領域相關的內容,還需要不斷地學習。當然相關教程有一個很好的關於傅里葉級數和傅里葉變換的入門文章來自知乎。

Graph Attention Networks
GAT圖注意力神經網絡,在GNN的基礎上加入了注意力機制優化權重值的分配策略提升效果。論文中提到的用了self-attention和multi-head attention,自注意力機制衡量某中心節點的鄰居節點與該節點的關係進而給出權重值,加權求和。多頭注意力就是多次加權求和提升效果。注意力模型當然借鑑自然語言處理中的諸多注意力模型機制。實驗效果發現PPI數據集上效果提升很大而其他實驗數據集上提升不怎麼樣,注意力機制在大規模圖中可能會更有power。而且作者認爲GAT可能能夠用於indective settings情況。
在這裏插入圖片描述

Skip-Graph: Learning graph embeedings with an encoder-decoder model
論文目的在於學習Graph embedding,具體我認爲是藉由sub-graph embedding來得到graph embedding。文章中說的很清楚,靈感來源於發表在2015NIPS上的skip-thought模型,簡單的說就是將以往word2vec模型基於詞共現的情況擴展成了句子,一句話和它前一句話以及後一句話相關聯。如果把這種“套路”放到Graph embedding而不再是word embedding或者sentence embedding,作者採取的方法就是先random walk隨機遊走採樣得到一條一條的採樣序列,之後每條序列斷成三段當作三句話。借用自然語言處理裏面的encoder-decoder模型,encoder輸入的是中間那段node seq,輸出預測值是前一段node seq或者後一段node seq。當然encoderh和decoder具體用的是GRU。文章將encoder與decoder鏈接的hidden vector也就是那個context vector看作這條序列Si的embedding,然後想通過某些方法由多條序列得到的embedding來生成整個圖的embedding,這些方法包括直接用一條長長的seq來生成representation當作graph embedding的single walk方法,逐元素平均操作得到graph representation的average方法,逐元素取絕對值最大值的Max方法和聚類方法。實驗做的是Graph classification,當時看了半天沒看明白到底做什麼實驗。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章