《Graph Learning》| 圖傳播算法(上)

從本章開始,我們就會陸續講一些圖算法。本文首先給大家聊一聊圖傳播算法,對於圖傳播算法,並沒有確切的定義,但是這類算法都有着十分明確和統一的範式,理解了這一範式之後,就能迅速掌握此類算法。


給定圖G={V,E},V表示節點集合,E表示邊集合,設N(Vi)表示節點Vi的鄰居節點構成的集合,若G爲有向圖:

其中Nin(Vi)表示Vi的入邊節點集合,Nout(Vi)表示Vi的出邊節點集合。


假設我們對Vi節點的衡量指標表示爲Rvi(比如後面會具體談到的指標PageRank值、hub值、Authority值等)衡量指標的更新規則爲函數f,則圖傳播算法的一般步驟執行如下:

1、初始化Rvi

2、While(不滿足停止條件)

3、

上述步驟的核心在於第三行中的更新函數f,一般來說f具有以下兩個特點:


a. f是無參的,就是說f是直接進行量化計算的,不需要參數學習過程。這樣的特點就決定了f的設計需要十分精巧,符合一定的基本經驗直覺,總結來說就是:

b. f是作用在節點一階鄰域上的。這一點是很多以節點爲中心的算法的共同特點,每一次節點在更新過程中,只有鄰居節點參與運算,但是隨着更新次數的增加,信息的流通也變得更Global。


另外,停止條件一般選取一個最大的迭代輪數或者Rvi不再變化。下面,我們結合4個經典的圖傳播算法來看看該範式是怎麼發揮實際作用的。


第一個:PageRank

如果將每一個網頁都抽象成一個節點,網頁A有鏈接指向B,則存在一條有向邊從節點A指向節點B,那麼整個Web網頁就抽象成爲一張有向圖。PageRank算法要做的就是對圖中的每個節點進行重要性排名。


經驗假設:

  • 數量假設——被更多網頁鏈接到的網頁更重要;

  • 權重假設——有更少外鏈的網頁將會傳遞更高的權重。


數量假設表示重要性的計算是加和的,權重假設是說重要性的計算是加權的,因此,如果要量化重要性的計算,其在數學形式上一定是加權求和的。


下面我們直接給出更新函數的向量化形式:


Rvi表示節點Vi的重要度排名

Vj的權重

下面我們舉個經典的例子來說明PageRank算法是怎麼計算的。假設有A,B,C,D四個網頁,其構成的有向圖如下:

鄰接矩陣


Adj(ij)=1,則表示有節點從j指向節點i的邊,對Adj按列進行歸一化得到:

我們稱M爲轉移矩陣(Transition,Matrix)Mij表示從節點j跳轉到節點i的概率,可以看到:

初始時設每個網頁的排名都是1/N

依據上面更新函數,將其寫成矩陣形式則更新後:

之後,不斷重複這個過程會發現,R最終是收斂的。這裏我們需要注意到一個重要的性質,如果R初始化後加和爲1,則R在之後的迭代過程中,R的加和永遠保持爲1,我們可以證明下:

R=MR,兩邊求和,我們看右邊

Mcol爲M矩陣列向量之和組成的向量,由M的定義可知,M矩陣每一列加和爲1,所以這裏Mcol是一個全1向量,因此:

由於R初始化後加和爲1,則上式恆等於1。更嚴格來說,如果有向圖是強連通的(任意兩個節點之間至少存在一條路徑可達),R的初始化加和爲1,則可證明R是收斂的。實際上,Web網頁並不是強連通的圖,存在以下兩種情況導致PageRank計算失敗:


1、DeadEnds,有節點不存在外鏈。這會導致什麼問題呢?我們舉個例子:

D節點不存在任何外鏈,如果我們進行迭代計算,由於上面的性質可得:

可以看到,新得到的R的求和是不斷減小的,這個過程如果一直不斷迭代下去,R全部都會變成0,使得計算失效。


2、Spider traps:有些節點只存在指向自己的外鏈,這又會導致什麼問題呢?同樣舉個例:

節點D只存在指向自己的外鏈,首先

符合R永遠是加和爲1的,但是注意

可以看到D的排名R4永遠比上一輪大,因此計算下去會快速的發現最後D的R值爲1,其他節點都爲0。


在實際應用中,爲了有效避免上述兩個問題,會使用到一個小技巧,就是假設每個節點都有一個假想的外鏈指向其它任一節點,這樣整個圖就變成了一個強連通圖了。當然,爲了儘量不影響最終計算的PageRank值,節點通過假想外鏈傳遞的PageRank值會乘一個權重因子β,β一般取0.2或者更小。因此,實際中PageRank的更新公式變成了:

如果按照這個更新公式下去,每個頁面都會得到一個合理的排名值。


關於其他的算法,我們會在下篇中繼續介紹。


相關閱讀:

《Graph Learning》| 第一章:繽紛的圖世界

《淺析圖卷積神經網絡》


關注微信公衆號geetest_jy 獲取更多關於圖學習的資料

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