轉自本人:https://blog.csdn.net/New2World/article/details/105410276node
前面幾課時講的主要是圖的性質、一些基本結構和針對結構的算法。而從如今開始就要涉及到具體的 learning 任務了。這一講要解決的主要問題是:給定一個網絡以及網絡裏一部分節點的標籤,咱們如何爲其它節點分類。(semi-supervised)
咱們使用的模型叫 collective classification model,其中有三種近似推斷的方法,它們都是迭代型算法。算法
exact inference
vs.approximate inference
例如在一個圖裏每一個節點都是離散的隨機變量,而全部節點的類別的聯合分佈爲 \(p\)。那麼咱們要獲得某個節點的類別的分佈就是求 \(p\) 在該節點上的邊沿分佈。而邊沿分佈須要累加其它全部節點,這個計算量爆炸,所以須要近似推斷。
近似推斷其實就是縮小傳播範圍的過程,與其考慮全部節點,咱們只關心目標節點的鄰接點。這裏涉及到信息傳遞,就是相似 GNN 裏的 aggregation,後面會說到。網絡
給節點分類,咱們的第一想法是節點間經過邊的鏈接存在着相關性,那咱們直接經過相關性對節點進行分類。關聯性主要有三種app
那麼將這種關聯性的特色應用在節點分類裏,類似的節點間通常會有直接的聯繫,互相鏈接的點頗有可能屬於同一類別,這就是 guilt-by-association (關聯推斷)。而節點類別的判斷能夠基於節點的特徵以及鄰接節點的類別和特徵。
因爲作的是近似推斷,因此這裏須要作出馬爾可夫假設,即節點 \(i\) 的類別 \(Y_i\) 只取決於它的鄰接節點 \(N_i\)。所以有 \(P(Y_i|i)=P(Y_i|N_i)\)ide
Collective classification 大致分爲三步:oop
基本思路很簡單,每一個節點類別的機率是其鄰接節點的加權平均。
首先將有標籤的點的類別初始化爲標籤,沒有標籤的點初始化爲隨機。而後按隨機順序進行鄰接節點類別加權,直到整個網絡收斂或達到最大迭代次數。但這樣作有兩個問題,第一不保證收斂;其次這樣的模型並無用到節點的特徵。學習
其實就是加上節點特徵後的迭代過程。(1) Bootstrap phase,經過訓練集訓練兩個分類器,一個針對節點自己的特徵,一個針對節點和網絡鏈接特徵 (數據來自其它網絡),好比 SVM 什麼的。而後對每一個節點提取特徵並用第一個分類器來初始化標籤。由於分類器並無考慮網絡信息,所以還須要 (2) Iteration phase 對網絡中的關聯進行迭代,即便用第二個分類器每一個節點根據其鄰接點更新特徵和標籤,直到收斂或達到最大迭代次數。然而這個方法依然沒法保證收斂。
slide 裏給了一個用 word-bag 做爲特徵的網頁分類的例子,感興趣能夠去看看。網站
接下來是一個 iterative classification 的應用,對 fake reviewer/review 進行分類。它將 reviewer 和網頁做爲二分圖處理,雖然也能夠加上 reviewer 間的關係,但那樣作會破壞這個方法的兩個優勢:(1) 迭代次數有上界;(2) 時間複雜度和邊的條數成線性。
論文裏給 reviewer,review 和網頁都定義了 quality score。而後大體按照上面講的方法對這些值進行迭代更新。ui
有學生問到一個問題:若是一我的對全部網頁都給 good review,那他算不算 fake?
Michele 的回答是這樣作只會讓這我的的評分趨近 \(0.5\) 而不會像那種給好網頁評負分的真正的 fake reviewer 那樣得分趨近 \(0\)
另外一個有意思的問題是,若是某我的口味獨特,給某些奇怪的網站評了高分,會不會被認爲是 fake?
我很好奇口味有多獨特,奇怪的網頁指什麼。但實際上世界很大,網絡規模也很大,有獨特癖好的不止你一個,所以你不孤單。總有那麼一羣人給這些奇怪的網頁評高分,相對來講也就不會被分爲 fake。不過這個問題也得看實際狀況。spa
信念傳播是一個動態規劃的過程,主要用於解決圖模型中的條件機率問題。不過在看它究竟是什麼東西前咱們先了解下信息傳遞是怎麼回事。想象一羣高度近視的人不戴眼鏡在操場上排了個縱隊,他們只能看到前面和後面一我的。這種狀況下如何讓他們知道本身在第幾個?很簡單,第一我的告訴第二我的「你前面有一我的(就是第一我的本身)」,第二我的告訴第三我的「你前面倆人」,依次類推全部人都知道本身第幾了。同理,若是從最後一我的開始往前,那麼就能知道隊伍的總人數了(正數和倒數第幾都有了)。這個道理用到網絡裏其實差很少,每一個節點能知道本身的大概位置。可是一旦遇到環,這個方法就沒完了……這個咱們待會兒再說。該介紹信念傳播的算法了:Loopy Belief Propagation
在上圖的簡單網絡結構中,節點 \(i\) 發給 \(j\) 的信息包含了節點 \(k\) 發給 \(i\) 的信息。所以先作以下定義
這個式子應該很好理解:節點 \(i\) 爲 \(Y_i\) 時,有個先驗 \(\phi\),同時它會收到節點 \(k\) 的信息 \(m_{k\rightarrow i}(Y_i)\),而後根據相似轉移矩陣的 \(\psi\) 獲得節點 \(j\)。這裏的 \(\alpha\) 相似於學習率。
老規矩,隨機順序迭代,直到收斂,而後就獲得了節點 \(i\) 是類別 \(Y_i\) 的信念。
好,信念傳播的過程和模型介紹了,須要來解決環的問題了。在傳播過程當中,環的存在可能會致使信念的重複累加,但這樣對結果不會形成太大影響,由於它無非就是讓節點更加確信結果而已。其最主要的問題是可能會致使本來相關的信息被做爲獨立信息來處理,以下圖中圈出的兩個信息。這兩條信息實際上是同一條,但由於信念傳播是局部算法,所以它會將這兩條信息做爲相互獨立的兩條信息來對待。那咱們怎麼解決呢?我沒理解錯的話 Michele 的意思是不用處理……由於這個例子很極端,而實際中環的影響很弱,好比有些環很~長,而大多數環存在至少一種弱相關性[1]。
圖裏那兩個
T4F1
應該是T4F2
核心算法已經講了,後面還舉了個栗子,本身看 slide 吧。
這裏的 weak correlation 不太明白是什麼意思。弱相關能解環?仍是說這裏的 correlation 就是 link 的意思,而後 weak 表明傳播的機率在這裏很小? ↩︎