【图神经网络】GNN从入门到精通
文章目錄
- 1.Graph基本介紹
- 1.1 圖的表示
- 1.2 圖的特性
- ? 子圖 Subgraph
- ? 接通圖 Connected Graph
- ? 連通分量 Connected Component
- ? 最短路徑 Shortest Path
- ? 圖直徑 Diameter
- 1.3 圖中心性. Centrality
- ? 度中心性 Degree Centrality
- ? 特征向量中心性 Eigenvector Centrality
- ? 中介中心性 Betweenness Centrality
- ? 連接中心性 Closeness Centrality
- 1.4 圖矩陣
- 關聯矩陣
- 度矩陣
- 鄰接矩陣
- 拉普拉斯矩陣
- 1.5 網頁排序算法
- ? PageRank
- ? HITS
- 2.Graph Embedding
- 2.1 DeepWalk
- 2.2 LINE
- 2.3 node2vec
1.Graph基本介紹
1.1 圖的表示
什么是圖?
圖是由節點與邊構成的數據結構。
圖的表示?
無向圖(兩個節點之間的邊沒有方向)
有向圖(兩個節點之間的邊有方向)
如何去表示一張圖?
使用鄰接矩陣:矩陣中兩個節點有邊則為1,無邊為0
圖的性質:度(degree)
無向圖的度:節點邊的條數
有向圖的度:分為出度(該節點指向其它節點的邊的條數)、入度(其它節點指向該節點的邊的條數)
1.2 圖的特性
? 子圖 Subgraph
? 大圖的一部分,子圖中所有節點與邊以及節點和邊的關系都是大圖的一部分。
? 接通圖 Connected Graph
對于一個無向圖,如果任意的節點i能夠通過一些邊到達節點j ,則稱之為連通圖
有向圖的連通性:
? 強連通圖:給定有向圖G=(VE),并且給定該圖G中的任意兩個結點u和v,如果結點u與節點v互相可達,即至少存在一條路徑可以由結點u開始,到結點v終止,同時存在至少有一條路徑可以由結點v開始,到結點u終止,那么就稱該有向圖G是強連通圖。
? 若連通圖:若至少有一對結點不滿足單向連通,但去掉邊的方向后從無向圖的觀點看是連通圖,則D稱為弱連通圖。
? 連通分量 Connected Component
連通分量:無向圖G的一個極大連通子圖稱為G的一個連通分量(或連通分支)。
連通圖只有一個連通分量,即其自身。
非連通圖有多個連通分量。
? 最短路徑 Shortest Path
連接圖中兩個節點的最短路徑。
? 圖直徑 Diameter
圖中兩兩結點最短路徑的最大值。
1.3 圖中心性. Centrality
? 度中心性 Degree Centrality
NdegreeN_{degree}Ndegree? : 節點N的度,nnn : 節點總數
? 特征向量中心性 Eigenvector Centrality
對圖的鄰接矩陣求特征值與特征向量,計算出最大的特征值所對應的特征向量就表示是這個節點的特征向量中心性。
? 其中AAA 為鄰接矩陣,所求的特征值有五個,其中2.4811943為最高值,對應的特征向量為小紅框的內容,乘以-1 對結果不影響,所以特征向量中心性為下面的值,其中1結點與5結點的值最大,表示1結點與5結點的度最大。其中4結點比2、3結點特征向量中心性大的原因是4結點連接的兩個節點度大。
? 不知考慮了自身節點度的情況還考慮了與它相鄰節點度的情況。表示了在圖中該節點所屬的位置情況。
? 中介中心性 Betweenness Centrality
圖中其余兩兩節點如果想要最短路徑到達那么經過一個節點的次數就是中介中心性。
在第一個式子中計算曹操的中介中心性時,分子中第一個括號里的內容表示蔡文姬到其余節點最短路徑的次數,0:蔡文姬到甄姬最短路徑為1,經過曹操節點的次數為0,1:蔡文姬到司馬懿與夏侯惇的最短路徑為3,經過曹操節點的次數為1,0.5:蔡文姬到典韋的最短路徑是2,有兩條路,所以為0.5。
? 連接中心性 Closeness Centrality
1.4 圖矩陣
一個圖G= (V,E)由它的頂點與邊之間的關聯關系唯一確定,也由它的頂點對之間的鄰接關系唯一確定.圖的這種關系均可以用矩陣來描述,分別稱為G的關聯矩陣與鄰接矩陣.
一個圖的矩陣表示不僅僅是給出了圖的一種表示方法,重要的是可通過對這些矩陣的討論得到有關圖的若干性質.此外,在圖論的應用中,圖的矩陣表示也具有重要的作用.。
關聯矩陣
度矩陣
形狀:numnodes(G)×numnodes(G)
對角線為節點的度,其他為0。
鄰接矩陣
性質
形狀:numnodes(G)×numnodes(G)
對角線為0,其他看兩節點間是否有關系連接,如果有則為1,沒有則為0.
拉普拉斯矩陣
對于一個給定的圖G=(V,E),拉普拉斯矩陣定義為L=D-W,D被稱為圖的度矩陣,W是圖的鄰接矩陣。度矩陣由鄰接矩陣轉換,W和D之間的關系如下:
將W每列元素相加,放到對應行的對角線上就是D,那么拉普拉斯矩陣就是 L = D - W。
L 的對角線元素指示節點的度,即 L(j,j) 是節點 j 的度。
拉普拉斯矩陣。L 是對稱的稀疏方陣,大小為numnodes(G)×numnodes(G)。對于具有自環的圖,未定義圖拉普拉斯矩陣。
1.5 網頁排序算法
? PageRank
PageRank谷歌提出的網頁排序算法。
邊的PageRank值等于這個節點的PageRank值除以指向其它節點邊的條數。
節點的PageRank值等于所有指向該節點邊的PageRank值之和。
阻尼系數:上個節點的PageRank值有多大的概率不傳到下一個節點。
? HITS
節點的Hub值等于這個節點指向的節點的authority值的和。(出)
節點的authority的值等于指向該節點的節點Hub值的和。(入)
2.Graph Embedding
想要表示圖中的每一個節點可能會使用n維長度的one-hot編碼向量,n為節點個數。
one-hot缺點:
1.如果節點比較多的話,向量長度就比較大。
2. 丟失了節點在圖中的信息情況。
網絡嵌入就是將網絡中的點用一個低維的向量表示,并且這些向量要能反應原先網絡的某些特性,比如如果在原網絡中兩個點的結構類似,那么這兩個點表示成的向量也應該類似。
graph embedding(GE) = graph representation embedding(GRE) = network embedding(NE) = network presentation embedding(NPE)
Graph embedding的作用:簡化了節點的特征長度,保留了節點在圖上的信息。
Graph embedding算法:
2.1 DeepWalk
【論文筆記】DeepWalk
一種網絡嵌入的方法叫DeepWalk,它的輸入是一張圖或者網絡,輸出為網絡中頂點的向量表示。DeepWalk通過截斷隨機游走(truncated random walk)學習出一個網絡的社會表示(social representation),在網絡標注頂點很少的情況也能得到比較好的效果。并且該方法還具有可擴展的優點,能夠適應網絡的變化。
網絡節點的表示(node representation)就是利用了詞嵌入(詞向量)的的思想。詞嵌入的基本處理元素是單詞,對應網絡網絡節點的表示的處理元素是網絡節點;詞嵌入是對構成一個句子中單詞序列進行分析,那么網絡節點的表示中節點構成的序列就是隨機游走。
所謂隨機游走(random walk),就是在網絡上不斷重復地隨機選擇游走路徑,最終形成一條貫穿網絡的路徑。從某個特定的端點開始,游走的每一步都從與當前節點相連的邊中隨機選擇一條,沿著選定的邊移動到下一個頂點,不斷重復這個過程。下圖所示綠色部分即為一條隨機游走。
關于隨機游走的符號解釋:以 viv_ivi? 為根節點生成的一條隨機游走路徑(綠色)為 WviW_{v_i}Wvi?? ,其中路徑上的點(藍色)分別標記為 Wvi1,Wvi2,Wvi3...W^1_{v_i},W^2_{v_i},W^3_{v_i}...Wvi?1?,Wvi?2?,Wvi?3?... …,截斷隨機游走(truncated random walk)實際上就是長度固定的隨機游走。
使用隨機游走有兩個好處:
并行化,隨機游走是局部的,對于一個大的網絡來說,可以同時在不同的頂點開始進行一定長度的隨機游走,多個隨機游走同時進行,可以減少采樣的時間。
適應性,可以適應網絡局部的變化。網絡的演化通常是局部的點和邊的變化,這樣的變化只會對部分隨機游走路徑產生影響,因此在網絡的演化過程中不需要每一次都重新計算整個網絡的隨機游走。
Algorithm
整個DeepWalk算法包含兩部分,一部分是隨機游走的生成,另一部分是參數的更新。
其中第2步是構建Hierarchical Softmax,第3步對每個節點做γ次隨機游走,第4步打亂網絡中的節點,第5步以每個節點為根節點生成長度為t的隨機游走,第7步根據生成的隨機游走使用skip-gram模型利用梯度的方法對參數進行更新。
參數更新的細節如下:
2.2 LINE
DeepWalk在無向圖上,LINE在有向圖可以使用。
論文名稱:LINE: Large-scale Information Network Embedding
這篇論文同樣是做網絡嵌入,文章的主要特點是:
將下面兩種情況的兩個頂點歸結為相似頂點:
這兩種相似性在文中被描述成了1階相似性和2階相似性。1階相似性認為兩個頂點的邊權重越大,兩個頂點越相似。2階相似性認為兩個頂點的共同鄰居越多,兩個頂點越相似。
相關工作中diss了一波傳統方法的效果,有一些方法使用的是矩陣分解的思想,對圖的特征矩陣(拉普拉斯矩陣、鄰接矩陣)做特征分解,然而這些方法需要大量的計算,并且效果也有局限性。文中還提到了上一篇論文DeepWalk,將本文與Deepwalk做了對比。
2.3 node2vec
論文名稱:node2vec: Scalable Feature Learning for Networks
node2vec的思想同DeepWalk一樣:生成隨機游走,對隨機游走采樣得到(節點,上下文)的組合,然后用處理詞向量的方法對這樣的組合建模得到網絡節點的表示。不過在生成隨機游走過程中做了一些創新。
首先介紹了復雜網絡面對的幾種任務,一種是網絡節點的分類,通俗點說就是將網絡中的節點進行聚類,我們關心的是哪些節點具有類似的屬性,就將其分到同一個類別中。另一種是鏈接預測,就是預測網絡中哪些頂點有潛在的關聯。
一種結構特征是很多節點會聚集在一起,內部的連接遠比外部的連接多,我們稱之為社區。另一種結構特征是網絡中兩個可能相聚很遠的點,在邊的連接上有著類似的特征。比如下圖,u,s1,s2,s3.s4u,s_{1},s_2,s_3.s_4u,s1?,s2?,s3?.s4? 就屬于一個社區,而 u,s6u,s_6u,s6? 在結構上有著相似的特征。
那么要設計的網絡表示學習算法的目標必須滿足這兩點:
說到隨機游走的采樣,本文分析了兩種圖的游走方式,深度優先游走(Depth-first Sampling,DFS)和廣度優先游走(Breadth-first Sampling,BFS),之前的圖中也畫出了兩種游走的路徑,學過圖論或者數據結構的很好理解。游走的路徑就是采樣后得到的隨機游走。
復雜網絡處理的任務其實離不開兩種特性,前面也提到過:一種是同質性,就是之前所說的社區。一種就是結構相似性,值得注意的是,結構相似的兩個點未必相連,可以是相距很遠的兩個節點。
BFS傾向于在初始節點的周圍游走,可以反映出一個節點的鄰居的微觀特性;而DFS一般會跑的離初始節點越來越遠,可以反映出一個節點鄰居的宏觀特性。
鋪墊了這么多終于到本文的工作了,能不能改進DeepWalk中隨機游走的方式,使它綜合DFS和BFS的特性呢?所以本文引入了兩個參數用來控制隨機游走產生的方式。
上圖中,對于一個隨機游走,如果已經采樣了 (t,v)(t,v)(t,v),也就是說現在停留在節點v上,那么下一個要采樣的節點x是哪個?作者定義了一個概率分布,也就是一個節點到它的不同鄰居的轉移概率:
![在這里
下面來逐行看看論文中提供的算法:
首先看一下算法的參數,圖G、表示向量維度d、每個節點生成的游走個數r,游走長度l,上下文的窗口長度k,以及之前提到的p、q參數。
根據p、q和之前的公式計算一個節點到它的鄰居的轉移概率。
將這個轉移概率加到圖G中形成G’。
walks用來存儲隨機游走,先初始化為空。
外循環r次表示每個節點作為初始節點要生成r個隨機游走。
然后對圖中每個節點。
生成一條隨機游走walk。
將walk添加到walks中保存。
然后用SGD的方法對walks進行訓練。
第6步中一條walk的生成方式如下:
將初始節點u添加進去。
walk的長度為l,因此還要再循環添加l-1個節點。
當前節點設為walk最后添加的節點。
找出當前節點的所有鄰居節點。
根據轉移概率采樣選擇某個鄰居s。
將該鄰居添加到walk中。
Experiments
下圖是一些實驗結果和可視化效果:
總結
以上是生活随笔為你收集整理的【图神经网络】GNN从入门到精通的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pci设备身份识别码介绍说明
- 下一篇: 【Django】基于PythonWeb的