1. 程式人生 > >網路表示學習總結

網路表示學習總結

我的GitHub部落格:咖啡成癮患者

最近看了paperweekly的兩次關於網路表示學習的直播,塗存超博士與楊成博士講解了網路表示學習的相關知識。本文將網路表示學習中的一些基本知識,結合自己的一些粗淺的理解,整理記錄下來。

網路的鄰接矩陣表示

用鄰接矩陣是最直觀的對網路資料的表示方法。在一個N個節點網路中,一個節點可以用N維向量來表示。

對一個N個節點的網路,用N*N的矩陣來表示一個網路,兩個節點之間有邊,則在對應的位置標記1(或者邊的權值)。

下圖所示為一個簡單無向圖的鄰接矩陣表示,其中矩陣是沿對角對稱的。

若圖為一個無向圖,鄰接矩陣不一定沿對角對稱。

鄰接矩陣表示一個圖,可以將矩陣的每一行,看做一個節點對應的向量,這種表示方法與文字表示中詞的One-Hot表示方法。這種表示方法能夠完整地表示圖資料,準確地表示網路中的連結關係,但是弊端也很明顯,對於一個N個節點的網路,表達這個網路需要N*N的矩陣,並且矩陣過於稀疏,不利於儲存大規模網路。

網路的分散式表示

分散式表示(Distributed Representation)最早是由Hinton在1986年提出的一種詞向量的表示方法,其核心思想是將詞向量對映到一個K維的向量空間中,這樣每個詞可以用K維向量來表示。大名鼎鼎的Word2vec就是一種對詞的分散式表示方案。

同理,將這個概念應用於網路資料中,即網路的分散式表示,網路中的每個節點對應文字中的每個單詞,其表示過程就是將每個節點對映到一個K維的向量空間(通常情況下,K遠小於網路中節點個數),用K維向量來表示每個節點。事實上,我們可以將這個過程理解為對網路結點的向量表示進行降維的過程,對於一個N個節點的網路,鄰接矩陣表示法用N維向量來表示一個節點。但通過這樣的降維過程,僅使用K維向量就可以表示一個節點,並且節點向量還能包含一定的“語義”資訊,例如連線緊密的結點向量的距離也很相近。這樣就將一個高緯向量表示為低維稠密的實值向量。

通常情況下,我們通過對每個節點的向量進行一定的限定,從而給定一個優化方向進行優化,得到一個最優化的結果,即為節點的表示向量。優化目標的設計,往往希望能夠儘可能多的將網路資訊通過向量表示出來,並使得到的向量具有一定的計算能力。在這個目標的前提下,在優化的過程中,往往會將網路的結構、節點的資訊、邊的資訊等“嵌入”到節點向量中,因此,我們也常常將網路的表示學習過程叫做網路嵌入(Network Embedding)。通過設計特定的優化目標,我們可以將節點的不同資訊嵌入到向量中,將節點對映到不同的低維向量空間。

下圖所示的是Deepwalk1論文中所展示的節點向量,左圖為原始網路,右圖為將其對映到二維向量空間後的散點圖,我們可以從圖中看到,原始圖中聯絡緊密的結點在對映到二維向量空間後距離較近,相同顏色的結點在原始圖中聯絡緊密,在二維向量空間中分佈較為密集。

網路表示學習的經典工作

Deepwalk

Deepwalk2是2014年發表在KDD上的一篇論文,這篇文章受到了word2vec3的啟發,文章的思路就是對網路應用了word2vec的SkipGram模型。SkipGram模型原本是針對文字的,或者說是針對有序序列的,所以文章先應用隨機遊走得到一系列的網路中有序的節點序列,這些節點序列類似於文字中的句子,將這些“句子”跑SkipGram模型,從而得到“句子”每個“單詞”的向量表示。過程如下圖所示:

Deepwalk的隨機遊走過程事實上是對網路進行取樣的過程,將網路中的節點通過隨機遊走的方式表示出來,兩個節點聯絡越緊密,在一個隨機遊走過程中共現的可能性越大,反之若兩個節點根本不連通,則一個隨機遊走過程是不可能將兩個節點共現。因此deepwalk能很好的將網路的連線情況進行表達,且實驗證明在網路規模較大時具有很高的效率。

LINE

LINE4是2015年提出的一中網路表示學習方法,該方法提出了一階相似度與二階鄰近度的概念,基於這兩個鄰近度,提出了優化函式,得到的最優化結果即為每個節點的向量表示。

該方法的優化過程可以理解為基於兩個假設:

  1. 直接相連的節點表示儘可能相近(一階鄰近度),如圖中6,7。文中兩個節點的聯合概率表示其一階鄰近度:

    p1(vi,vj)=11+exp(u⃗ Tiu⃗ j)
  2. 兩個節點公共的鄰居節點越多,兩個節點的表示越相近(二階鄰近度),如圖中5,6。文中用兩個節點的條件概率表示其二階鄰近度:

    p1(vj|vi)=exp(u⃗ Tju⃗ i)|V|k=1exp(u⃗ Tku⃗ i)

node2vec

node2vec5是2016年提出的一種方法,該方法在deepwalk的基礎上進行了優化。deepwalk中的隨機遊走過程,實際是就是一種簡單的深搜過程,每次隨機隨出一個與當前節點直接相連的節點作為後繼節點,這種方法雖然能夠保證取樣到網路中的全域性資訊,但是對於該節點為中心的區域性資訊往往不能很好的進行取樣。node2vec改進了這個隨機遊走的過程,它將廣度優先搜尋與深度優先搜尋相結合。

node2vec的隨機遊走是一個引數控制的隨機遊走,不同於deepwalk的隨機遊走,當前節點到後繼節點的概率並不是完全相等的。例如下圖所示的情況,v為隨機遊走的當前節點,它的前驅節點為t,那麼下一步需要判斷v相連的下一個節點,以便進行進一步的遊走,這時與其相連的節點的型別有三種:一種是t,v的前驅節點;第二種是x1,不僅與v相連,還與其前驅節點相連;第三種是x2x3,不是v的前驅同時也不與其前驅相連。

如果節點向第一種節點遊走,則返回前驅節點;向第二種節點遊走,則為廣搜的過程;向第三種節點遊走則為深搜的過程。為了控制廣搜與深搜,因此設計了引數pq,通過這兩個引數計算出偏移a,則真正的遊走概率為原始概率的基礎上乘上a得到。通過調整這兩個引數,可以控制廣搜和深搜的程度。所以deepwalk中的隨機遊走過程,就是一個p=1q=1的node2vec。

網路表示學習的相關論文

塗存超博士在github上整理了一些相關論文,我就直接拿來主義了,鏈到塗存超博士的github上。

  1. Perozzi B, Al-Rfou R, Skiena S. Deepwalk: Online learning of social representations[C]//Proceedings of the 20th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2014: 701-710.
  2. Perozzi B, Al-Rfou R, Skiena S. Deepwalk: Online learning of social representations[C]//Proceedings of the 20th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2014: 701-710.
  3. Mikolov T, Sutskever I, Chen K, et al. Distributed representations of words and phrases and their compositionality[C]//Advances in neural information processing systems. 2013: 3111-3119.
  4. Tang J, Qu M, Wang M, et al. Line: Large-scale information network embedding[C]//Proceedings of the 24th International Conference on World Wide Web. International World Wide Web Conferences Steering Committee, 2015: 1067-1077.
  5. Grover A, Leskovec J. node2vec: Scalable feature learning for networks[C]//Proceedings of the 22nd ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2016: 855-864.