日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

初探GNN-文本表示学习

發布時間:2025/3/19 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 初探GNN-文本表示学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引言

現實世界中的許多問題都可以通過圖結構表述,例如基因序列關系、蛋白質結構、知識圖譜和社交網絡,鑒于這種廣泛存在的結構特征,研究者們自然會嘗試將特定結構融入學習模型中,概率圖模型(PGM: probabilistic graphical model)和圖神經網絡(GNN: Graph Neural Networks)應該算是兩個代表性的方向;其中結合深度學習的圖神經網絡近幾年發展迅速,在CV、NLP和推薦系統的應用場景中的表現出巨大潛力。丁香園團隊希望能在GNN領域中找到合適的文本知識表示學習方法,因此本文將從表示學習的角度出發,通過列舉GNN領域一些有代表性的工作介紹圖表示學習的實驗思路。

Graph Embedding

傳統Graph Embedding算法在表示學習任務中其實表現不俗,而且當圖的規模不斷增長時,訓練GNN也不是一件容易的事,此外今天GNN做表示學習的基本框架與傳統算法的區別并不大,因此本文首先介紹傳統Graph Embedding算法,首先是圖表示先驅的Deepwalk。

  • DeepWalk: Online Learning of Social Representations [1]

Deepwalk的思路非常直白,在持有結構化數據(建好的圖)的條件下,基本可以看作采樣+Word2vec的兩段式,可以大致認為Deepwalk就是「如何將帶結構信息的數據喂給word2vec」。我們知道word2vec的訓練方式(原文采用SkipGram)是通過中心詞(target)預測窗口內的詞(context),所以Deepwalk的采樣過程可以看作「如何定義和獲取圖上節點的context」。這里Deepwalk給出最基本的方法,就是定義任意中心節點到鄰接節點的跳轉概率,然后跳轉一定次數作為該中心節點的context,這樣就組成了word2vec接受的輸入樣本:(target,context)

可以認為Deepwalk確立了一種通用的Graph Embedding求解框架,即:(1) 定義中心節點的鄰域及采樣方法;(2) 設計(target, neighbors)的embedding模型。后續的Graph Embedding模型及很多復雜的GNN模型其實也都是改進這兩個框架的具體操作,例如下面的LINE和Node2vec。

  • LINE: Large-scale Information Network Embedding [2]

在Deepwalk之后較短的時段內(2014年之后),多數工作直接延用了word2vec訓練embedding向量的方式,并將重點放在如何改進中心節點鄰域的采樣方法上。LINE的關鍵改進就在于對context的設定,作者提出了一階和二階兩種鄰域關系,如下圖所示

一階相鄰就是直接相連,二階相鄰則是取兩個鄰接節點鄰居的重合部分;這樣,一階關系可以采樣出(target, neighbor),二階關系則會采樣出(target, neighbors);對此,可以分別用sigmoid和softmax計算二元組的概率分布;在計算loss時,如果將兩種采樣方式合并計算,會得到一組embedding,也可以考慮分開計算loss,得到兩組embedding weights,再用concat([first_order_embed, second_order_embed])合并。

  • node2vec: Scalable Feature Learning for Networks [3]

Node2vec也沿用了word2vec的訓練方式,而在采樣上比LINE更接近Deepwalk的思路。不過作者進一步思考了節點間的距離和節點本身的位置這些結構信息的意義。

我們知道圖的遍歷有深度優先(DFS)和廣度優先(BFS)兩種,采用DFS會更容易采樣到較遠的點,而BFS傾向于發掘周圍的點。對此,作者提出了兩個概念來描述這種位置結構:(1): 同質性(homophily),指緊密圍繞從而形成一個社群(community)的節點,比如圖上的 u 和 s_2 ; (2): 結構性(structural equivalence),只雖然距離較遠因而不能構成同一個社群,但彼此社群中都處于類似的位置,比如圖上的 u 和 s_6 (注意,作者表示DFS更側重同質性,BFS傾向于結構性,和大家的理解一致么)

基于這兩種結構性質,作者擴展了Deepwalk的采樣方法,設定了兩個概率參數 p 和 q ,分別是回退參數(p: return parameter)和進出參數(q: in-out parameter),如上圖所示,當前節點從 t 到 v ,如果 p 降低,則退回到 t 的概率就越大,q 降低則驅使算法走向新節點;控制這兩個參數就可以改變context的采樣結果,影響最終emebdding結果。

還有諸如SDNE,EGES這類工作都屬于Graph Embeding方法,操作簡單實用性高,在圖的節點數量很大時,下面的GNN方法不太容易訓練應用,傳統Graph Embeding方法依然有大量戲份。

Graph Neural Networks

GNN的正式定義大約來源于2009年的這篇文章[4],隨后經歷了大約6年的沉寂直到2014年,受word2vec的啟發,包括前文提到的一系列Graph Embedding算法相繼出現;再之后,大概2017年起,各類結合了Gated機制,CNN,Attention的GNN模型結構不斷被提出;時至今日,基于GNN的研究已經深入諸多領域,新穎概念層出不窮;筆者初窺門徑,以下僅選個別有代表性的工作簡單介紹。

  • GCN: SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS [5]

融入CNN形成的GCN框架可能是最流行的GNN之一,然而CV領域大放異彩的CNN并不能直接用在屬于非歐空間的圖結構上,直觀的說法是"圖結構中鄰居節點的個數不固定,卷積核無法計算",因此需要某種轉換操作,要么固定鄰居節點個數,要么將非歐空間的圖轉換到歐式空間,本節文章中的GCN就屬于后者,這就引出了GCN的核心之一的Laplacian算子;下面我們先解釋圖的空間變換。

描述Laplacian算子不得不提Fourier變換,我們知道Fourier變換可以將時域函數轉換到頻域的"線性變換",公式大概長這樣:

需要關注的是 e^{-2 piixv} 這個"基向量",就是它將時域函數f(x)映射到以它為基的頻域空間;那么對于GCN,關鍵就在于找到這個"基向量",通過"圖Fourier變換"完成非歐空間到歐式空間的映射,這才引出Laplacian算子;參照wiki上的中文定義[6]:拉普拉斯算子或是拉普拉斯算符(Laplace operator, Laplacian)是由歐幾里得空間中的一個函數的梯度的散度給出的微分算子;先做梯度運算,再做散度運算,簡單說就是二階導數,它描述了二維空間中某種量的傳播狀態;最終,研究者們找到了拉普拉斯矩陣L作為Laplacian算子,并用L的特征向量作為基向量執行"圖Fourier變換",L就是圖的度矩陣減去鄰接矩陣,取L的特征向量組U為"圖Fourier變換"的基向量(這里僅簡單描述Laplacian算子的作用意義,有關Laplacian算子和Fourier變換的公式推導有很多精彩的文章珠玉在前,這里便不做贅述)。

Laplacian算子和圖Fourier變換是GCN的基石,不過GCN的內容遠不止如此,圖卷積網絡的框架是多篇文章不斷改進的結果,這里引用的工作算是博采眾長,早在2014年[7]就有研究提出了用拉普拉斯矩陣的特征分解實現卷積,但計算中包含的特征分解計算復雜度高,因此另一個讓GCN應用廣泛的貢獻是通過切比雪夫多項式(Chebyshev)近似圖卷積計算,引文第二段集中介紹了該近似過程,綜合改進后的GCN如引文中的公式2所示,其中HW就如同CNN運算一般,前面矩陣A和D的運算就是圖卷積的近似。

最后,這類對整張圖做特征提取的方法被稱為Transductive approaches,下面要介紹另一類Inductive approaches中有代表性的GraphSAGE。

  • GraphSAGE: Inductive Representation Learning on Large Graphs [8]

Transductive approaches都有一個問題,就是必須要對全圖操作,這樣一方面內存會限制圖的規模,另一方面想更新圖結構就不得不重新處理整張圖;GraphSAGE的一個好處就是"以偏概全",不再對整張圖做變換和卷積,而是采樣固定個數鄰居并基于這種target-neighbors的子圖結構訓練聚合函數(AGGREGATE),這樣一方面可以根據需求,通過控制鄰居個數來增減圖的規模,另一方面對于新加入的節點,完全可以用訓練好的聚合函數獲得embedding表示或其他下有任務結果。

其實看算法流程很容易想象整個流程,基本也符合deepwalk的兩段式,值得注意的就是其中的AGGREGATE,文中對比了四種聚合函數:lstm,gcn,mean,pool(max);大家可以參照文中的對比實驗選擇合適自己任務的方法。此外,作者在文中也給出了針對無監督和有監督的不同loss設定,無監督繼續采用類似word2vec的方式,有監督任務則替換成適合特定目標的損失即可,另外本文發表于2017年,Transformer也是同年發表,而今結合self-attention做聚合函數的工作已經非常多了,框架上基本也和GraphSAGE一致,很容易替換擴展。

總體來說,本文無論是思路,結構還是源碼都比較簡單,對應到工程落地,可以參考同一團隊在KDD2018發表的,基于Pinterest公司推薦系統的實踐工作[9];不過,我們嘗試用GraphSAGE直接學習文本知識的embedding時,感覺并不十分理想,首先是當圖的規模非常大時訓練比較慢,收斂情況與子圖采樣密切相關,找采樣參數需要大量實驗;另外需要注意,源碼中構造圖結構用的是Python的networkx庫,這個庫是基于dict存儲的,比較費內存;最后,我們的文本知識包含大約150w節點,1億條邊,無監督訓練的結果不夠理想,當然很可能是數據量不足以及還沒找到合適的采樣參數,不過,這種規模的圖對我們來說已經很大了,用稀疏矩陣存儲會更省資源,不過得用sparse的API重寫整個結構,所以如果有辦法可以直接對稀疏矩陣做計算得到embedding豈不省事許多,下一節的ProNE。

  • ProNE: Fast and Scalable Network Representation Learning [10]

本文大概應該歸為Graph Embedding一類,因為并沒有GCN和GraphSAGE這些框架中的多層網絡結構,不過本文第二部分的embedding過程應用了GCN中spectual方法的思路,在GCN之后介紹也更合適。本文將圖表示學習的模型分為三類,GNN歸為一類,前文的Deepwalk、LINE、node2vec屬于skip-gram類,ProNE則屬于矩陣分解類模型。

ProNE整體可分為兩部分,第一部分對無向圖結構的鄰接矩陣做稀疏矩陣分解。作者定義了如下損失函數最大化節點 r 和鄰居 c 的共現頻率p,同時最小化負采樣鄰居概率:

最小化loss的充分條件是loss對 r{i}^{T} c{j} 的偏導數為0,可得節點 r 和鄰居 c 的的距離公式并構造距離矩陣

對距離矩陣 M 做tSVD(truncated Singular Value Decomposition)并取最后top-d的奇異值和對應向量作為這一部分的節點embedding表示,為了效率,作者用randomized tSVD加速運算。

第二部分利用高階Cheeger不等式(higher-order Cheeger's inequality),上一步僅利用了每個節點的局部鄰居,這里借鑒GCN中spectrum方法的思路設計了傳播策略(propagation strategy),目的是獲取圖結構中的局部平滑(localized smoothing)信息和全局聚類(global clustering)信息,而Cheeger不等式為我們解釋了圖結構譜方法的特征值與局部平滑(localized smoothing)信息和全局聚類(global clustering)信息之間的關系。

首先,GCN部分的引文中其實介紹了,圖Fourier變換實際上是一次圖Fourier變換加一次逆變換,這個過程可以理解為:先由拉普拉斯矩陣的特征向量組 U 將 X 映射到對應向量空間,用特征值lambda_k 縮放 X ,再被逆變換處理;然后,在圖分割理論(graph partition)中有一個 k-way Cheeger 常量 \rho_{G}(k) ,這個常量越小表示圖的劃分越好,直觀的表述大概是"子圖聚合程度越高,該常量對應越小,相對的劃分就越好";最后我們通過高階Cheeger不等式將拉普拉斯矩陣的特征值和這個常量聯系起來

上式表明Cheeger 常量對應著特征值的上下界,更小的常量對應更小的特征值,也對應著更內聚(clustering)的子圖,反之對應更大的特征值,此時圖結構中的子圖更為平滑(smoothing);因此,在這部分里,作者設計了一個函數 g 用于控制特征值的取值范圍,此時的圖Fourier變換為

最后,再參照GCN中利用切比雪夫多項式近似計算 \widetilde{L} 即可,整個過程可以看作限制特征值范圍的GCN,注意最后為保證正交性,還需要對Embedding結果做一次SVD。

我們知道通常對于大規模圖結構,Graph Embedding在效率上的價值更為明顯,ProNE在效率方面比Deepwalk、LINE、node2vec都要出色,文中的時間對比表明,在5個常見的GNN數據集上(PPI、Wiki、BlogCatalog、DBLP、Youtube),ProNE比效率最好的LINE快大概9-50倍;我們用150w節點,1億條邊的稀疏矩陣做文本知識學習,默認參數(128維向量,迭代10次)耗時大概1小時以內;具體來說,我們試圖識別出每個文本知識詞匯中包含的特定類別詞,例如下面的"口腔咽喉黏膜充血"中的"口腔、咽喉、黏膜"均為身體部位;"卵巢雄激素腫瘤"中包含的"卵巢"屬于身體部位類詞匯,"腫瘤"屬于常見病癥詞的詞根,按照包含詞以及類別構建鄰接圖,應用ProNE方法,并按cosine計算相關詞匯,結果看起來還不錯:

出色的efficient兼顧不錯的effective,源碼的Python版是用networkx加載圖結構,這部分完全可以用scipy.sparse的API替換,只有一點美中不足,和GCN一樣不能直接應用于有向圖,所以下面為大家介紹一篇有關文本有向圖Embedding的工作SynGCN。

  • Incorporating Syntactic and Semantic Information in Word Embeddings using Graph Convolutional Networks [11]

本文將GNN應用于Word Embedding任務,框架上基本采用GraphSAGE的鄰居采樣+編碼函數聚合信息的模式,訓練上也與word2vec類似,值得關注的是其融合有向圖的SemGCN結構

具體而言,word2vec的context在這里由target詞的知識組成,在編碼過程中我們希望對有向邊做特別處理,其實這里有向圖就起到了一個線性組合的作用,對有向圖的融合非常簡單,就是構造一個有向圖的鄰接矩陣,對原有的特征embedding矩陣 M 做線性變換,與 M 疊加后再過下一個編碼層。這種線性組合的方式很容易上手,而且至少對個別節點做微調效果立竿見影,不過大規模應用是否普遍有效還需要進一步檢驗,我們還沒做進一步試驗,這里僅作為一種思路介紹。

總結

本文僅簡要列舉了幾項圖結構表示學習發展中有代表性的工作供大家參考;GCN和GraphSAGE代表了圖結構轉換兩種處理角度,就表示學習而言,或許是受圖規模和計算資源的限制,后續工作中傾向于后者的采樣方法的占比較高,但"圖Fourier變換"的思路非常精彩不容忽視,而且在流形學習等領域也有諸多應用;基于子圖訓練聚合函數的方向上,除了嘗試更有效的編碼結構外,如何擴展和結合更豐富的圖結構信息應該是更關鍵的方向,除了上文提到的有向圖外,在推薦系統中已經出現了很多基于異構信息網絡(heterogeneous information network[12])的工作,用于結合節點和邊對應的不同類別或語義;當然回歸工程實踐,我們不該忽略Graph Embedding類的方法,也不該將其與GNN割裂開,上文提到的ProNE中的傳播策略完全可以用于其他方法的Embedding向量上,基于此類方法再訓練GraphSAGE有可能更容易收斂,簡單的有向圖線性組合也具有指導意義。下一步我們也希望在ProNE的基礎上嘗試更多深層結構,并基于有向圖線性組合的思路,調整圖結構來貼合不同應用任務。


參考文獻

[1]?https://arxiv.org/abs/1403.6652

[2]?https://arxiv.org/abs/1503.03578

[3]?https://arxiv.org/abs/1607.00653

[4]?https://persagen.com/files/misc/scarselli2009graph.pdf

[5]?https://arxiv.org/abs/1609.02907

[6]?https://zh.wikipedia.org/wiki/拉普拉斯算子

[7]?https://arxiv.org/abs/1312.6203

[8]?https://papers.nips.cc/paper/6703-inductive-representation-learning-on-large-graphs.pdf

[9]?https://arxiv.org/pdf/1806.01973.pdf

[10]?https://www.ijcai.org/Proceedings/2019/594

[11]?https://www.aclweb.org/anthology/P19-1320/?

[12]?https://arxiv.org/pdf/1511.0485

?轉載自:https://zhuanlan.zhihu.com/p/122285764

總結

以上是生活随笔為你收集整理的初探GNN-文本表示学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。