1. 程式人生 > >gragh embedding相關論文小結(一)

gragh embedding相關論文小結(一)

以下是對所讀過的各篇論文中的思想簡短總結

  • A Comprehensive Survey of Graph Embedding-problems,Techniques and Applications
  • Graph Embedding Techniques,Applications,and Performance:A Survey
  • DeepWalk: Online Learning of Social Representations
  • code2vec: Learning Distributed Representations of Code
  • node2vec: Scalable Feature Learning for Networks
  • PRUNE:Preserving Pxoximity and Global Ranking for Network Embedding

A Comprehensive Survey of Graph Embedding-problems,Techniques and Applications

本文是一篇關於graph vector或者graph embedding或者graph representation的綜述,graph embedding有別於NRL(Network Representation Learning),後者有諸多論文可以拜讀,在此先記下連結:https://github.com/thunlp/NRLPapers/blob/master/README.md


本篇論文為一篇綜述,關於graph Embedding,即將graph表示為低維度的embedding。文中分為problem settings和embedding techniques兩部分。前者又分為graph input 和embedding output,input就有四種同質圖/非同質圖/輔助資訊圖/無關資料構造的圖,都有不同的特徵和資訊量。輸出也分為node embedding/edge embedding/hybrid embedding/whole-graph embedding。要實現graph embdding,首先面臨的選擇就是選擇到底想要哪種output embedding。在談到preserved graph property時,文中引入了常用的k-th-order proximity,其insight來源於”two nodes are more similar if they are connected by an edge with larger weight”,這需要又edge weight。解決技術方面又分為matrix factorization/Deep Learning/edge reconstruction/graph kernel/generative model/hybrid techniques。每種方法中的每種技術都有其insight,重點關注點在DL方法。Deep Learning方法又分為with random walk和without random walk。使用random walk的方法,將隨機遊走視為sampling method來對graph進行取樣得到可以刻畫graph property的N條path,首當其衝的論文便是DeepWalk,DeepWalk=random-walk+SkipGram。在其之後群雄並起,諸多論文進行改進,論文以圖表形式說明:
這裡寫圖片描述

而without random walk的DL方法中則是提到了autoencoder自編碼器,CNN-GCN和其他的方法:
這裡寫圖片描述
各種技術又自己的優點和缺點:

graph embedding的應用就有很多了,關鍵時轉化為vector之後可以容易操作,例如node classification,node clustering,node recommendation/randking,link prediction/triple classification,graph classification/visulizaiton等。最後文中提到了未來的研究方向,其一是計算效率的問題,計算量太大計算時間太長;其二是動態圖問題,之前提到的基本只適用於static graph而非dynamic graph,但是現實中一般都是動態圖,streaming graph;其三是對graph的操作粒度;其四是對embedding的應用擴充套件。

Graph Embedding Techniques,Applications,and Performance:A Survey

本篇論文仍然是一篇survey,關注點在於node embedding。似乎很多領域中開頭都有insight,就像執意中的靈感和原則一樣。”The higher the edge weight,the more similar the two nodes are expected to be”。論文中仍然提到了衡量graph節點結構和相似度的first-order proximity/second-order proximity/n-order proximity,一階估計值衡量兩個存在邊連結的節點的相似度,而二階衡量不直接相連節點的相鄰結構的相似度,更高階估計值可能衡量的範圍再基於每個點“往外擴”,更關鍵的是有效的演算法或者模型卻是都在試圖preserving這些proximity,而preserving更高的proximity則效果更好。作者提到用來定義higher-order proximity的方法有Katz Index,Rooted PageRank,Common Neighbors,Adamic Adar等,具體是什麼還沒有細看。同樣提到常用來表示graph的方式有鄰接矩陣(表示節點相鄰關係)/拉普拉斯矩陣(表示graph的一種巧妙方法,半正定,定義是度矩陣-鄰接矩陣)/節點概率轉移矩陣(猜測就是馬爾科夫n階概率轉移矩陣,這個可以通過C-K方程求解)/Katz相似度矩陣(表示節點相似度的有全域性相似度和區域性相似度,而全域性相似度方法有Katz/LHN相似度,區域性則是Jacard/Salton相似度)等。
論文中提到的具體方法:LLE(區域性線性表示),每個節點的embedding都是neighbors nodes的embedding的線性組合,所以就有了以差為核心的目標函式,也就成了帶約束的優化問題,這裡將其轉換為矩陣特徵值問題,這個暫時還不明白為什麼;Laplacian特徵對映,就是單純的使用拉普拉斯矩陣來求解,具體方式是對拉普拉斯矩陣進行特徵值分解得到最小的d個特徵值對應的特徵向量,這裡需要細看;柯西graph embedding,改了上面的拉普拉斯矩陣分解,具體改了之後的結果又成了帶約束的優化問題,更加關注相似節點;SPE,對拉普拉斯特徵對映的改進,由embedding重構graph;GF,第一個效率達到O(|E|)的演算法,具體方式就是對鄰接矩陣與兩個節點的embedding內積作差輔以正則化因子來最小化差,只針對有邊相連的vertice pair;GraRep,常常提到的方法,使用了節點轉移概率矩陣並通過最小化目標函式來試圖保留K-order proximity;HOPE,類似於GraRep,它用的是相似矩陣,而相似的度量方法有Katz Index/Rooted PageRank,Common Neighbors/Adamic-Adar score,並用上了SVD;或者把從矩陣得到embedding視為降維過程,或者藉助輔助資訊來解決;DeepWalk,random walk+word2vec;node2vec,兼顧DFS和BFS,實現更優的random walk;HARP,相較於DeepWalk採用更好的初始化權重的方法;Walklets,修改了DeepWalk的random walk策略,採用跳躍式的取樣,說是為了結合顯示模型和隱式的random walk;SDNE,旨在保留first&second order network proximity,既用到了autoencoder,又用到了拉普拉斯矩陣;DNGR,結合deep autoencoder和random surfing;GCN,對graph進行卷積操作。以及之後的一系列在GCN上修改的論文,這些方法不同在於卷積核的構造,大體分為spatial filter和spectral filter;LINE,用KL距離來最小化鄰接矩陣中對應的節點和embedding點積各自組成的聯合概率的差值。
與眾不同的是論文後面提到了各個不同應用和資料的實驗和分析,還有embedding維度d的規律,以及各演算法中超引數的重要度。實驗證明d對實驗結果的規律是先增後減的,有最優值 但是無法獲知。

DeepWalk: Online Learning of Social Representations

這是一篇發表於KDD 2014的論文,算是使用神經網路進行graph-to-vector鼻祖的論文,後續的很多論文在此基礎上或對其進行借鑑加以改進的。DeepWalk解決的問題就是學習到graph的特徵形成一個固定長度的實數值,連續的,稠密的特徵向量,之後就可以利用該向量去實現分類或者相似度檢測等應用,這裡的向量是針對節點的。採用的方法就是random walk+skip-gram。隨機遊走會從graph中選擇出各種固定長度的path,從某個點隨機走到相鄰的某點直至到達規定長度。random walk可以作為搜尋全域性最優點的方法,同時也可以模擬現實情況的演算法。論文實際將這條path類比成了NLP中的sentence或者phrase,節點類比於word,之後送入skip-gram模型進行處理。這裡不明白的是為什麼是skip-gram而非CBOW模型,CBOW模型的效果可能要好一些。當然得到的結果也是每一個node(word)表示為vector。其中也是用到skip-gram中的Hierarchical Softmax優化方法(利用haffuman樹來實現取代單純的softmax輸出層從而減少計算量加快速度,具體見https://blog.csdn.net/qq_35732097/article/details/78903981),用的圖符合power-law冪律分佈,論文中的實驗也是表明DeepWalk的效果要好於那些Baseline方法(SpectralClustering,Modularity,EdgeCluster,wvRN,Majority)
這種方法的好處在於:能夠並行,模擬實際graph建模的情況,而且抓住graph 的local information.可以應對大圖即節點非常多的graph。
這種方法的缺點在於:取樣方法上面,隨機遊走模擬隨機事件的發生,認為從i節點到相鄰的節點是等概率的,但是現實情況很多不是這樣的,節點之間的轉移很有可能不是等概率的,那如果還按照先採樣再訓練的思路來就要改變取樣策略,而這一切來源於實際應用情景的各種假設。另外取得固定長度導致注重local information而看不到global information。

code2vec: Learning Distributed Representations of Code

這篇論文是把一段程式碼轉化為vector,之後通過該vector預測這段程式碼的功用,相當於多標籤分類。論文中借鑑傳統的程式碼分析手段,將code解析為AST抽象語法樹,之後從這棵樹上開始取路徑path,實際上是認為這些path就可以刻畫出這段程式碼的特徵,取出的路徑包括三部分(起點,中間的節點和上下標誌,終點),之後將其視為三個向量,簡單拼接起來之後經過一層神經網路將拼接的向量轉化為一個固定長度的向量,假設取出了n條path,那麼得到n個長度為d的vec,之後採用attention機制,因為有些路徑包含反應程式碼中關鍵節點或者語法內容或者語義內容的節點,所以需要給出不同的權重從而想到使用注意力機制來實現,之後便可以得到一個長度為m的向量,這便是那個code2vec的vector,使用該vector經過一層softmax得到各預先設定好的函式名(函式名代表這段程式碼的功用)類別標籤對應的概率,從而可以使用SGD進行更新引數。模型的結構實際總體借鑑了NLP的CBOW模型,當然沒有用其的Hierarchical Softmax和negative sample優化方法,估計是因為沒有那麼大的標籤數量。這篇文章實際和《DeepWalk》那篇文章思想還是有些類似的,都是用某種方法提取path,之後用神經網路處理刻畫原始資料特徵的這些path,得到vector。
這樣做的好處是:
這樣做的壞處是:

node2vec: Scalable Feature Learning for Networks

PRUNE:Preserving Pxoximity and Global Ranking for Network Embedding

2017年NIPS上的一篇論文。看到這篇論文時心中狂喜,因為它第一個涉及到了node ranking值,就是節點重要度的衡量和學習。之前經典的PageRank和HITS演算法都是通過迭代來完成這種無監督學習任務的,而這裡通過一個”carefully designed objective function”來學習node ranking。但是仔細一讀,發現模型實際目標在於學習node embedding,而node ranking實際是其一部分task。論文中採用的是孿生神經網路,這種神經網路想法很巧妙,接受成對的輸入資料,經過相同引數結構的model之後用兩個輸出的function作為目標函式,來優化神經網路的引數,這樣不需要標籤完成無監督學習因為每次都有兩個結果來操作,這兩個結果可以進行數學運算,而Siamese neural network多用於相似度檢測/問答聯絡,在我看來應該是適用於輸入的兩個物件之間有聯絡的情況,這個聯絡可能是相同或相似,可能是問答,可能是對立。這個模型有兩個任務輸出:proximity represention和node ranking score,每次接受一個邊相連的兩個節點的node embedding。得到這兩個node對應的proximity presentation和ranking score之後就可以設計用於優化模型的目標函數了。其中論文花了最大的篇幅來講解那個精心設計的objective function:
這裡寫圖片描述
這個目標函式由兩部分組成,前面是為了proximity representation後面是為了node ranking,之後開始講解這個函式的推理得到的過程。論文之所以考慮到了node ranking,是因為認為加上node ranking之後得到的node embedding對於learning-to-ranking的效果更好,同時”it is beneficial for an embedding model to preserve a network property:global node importance ranking”,也就是說該模型所考慮的node ranking不是其主要的解決目標,而是為了輔助model來embedding node得到更好的node embedding。根據global node ranking preservation的目標函式,可以看出類似於pagerank的衡量標準:鄰居節點越重要,本節點就越重要。就是想縮小一個差距。之後的實驗learning-to-ranking說明這種考慮到node global ranking值的思路可以提高二分類精確度,不過論文是如何將learning-to-eanking轉化為二分類問題的還不曉得。