Self-Translation Network Embedding 閱讀筆記

Self-Translation Network Embedding 閱讀筆記

來自專欄每周一篇機器學習論文筆記5 人贊了文章

作者:Jie Liu, Zhicheng He, Lai Wei, and Yalou Huang

來源:KDD 2018

原文網址:STNE

轉載請註明出處:

每周一篇機器學習論文筆記?

zhuanlan.zhihu.com圖標

註:以下文章包括原paper內容和筆記作者個人理解,如有錯誤或出入請指正。

Abstract

在本篇文章中,作者認為節點的屬性與節點的結構信息在本質上是有著強烈的聯繫的,為了能夠使提取出來的特徵能夠更好地保留住這兩種信息,作者提出了Self-Translation Network Embedding模型(STNE)。在STNE中,作者主要利用了自然語言處理中的sequence to sequence模型網路進行特徵提取。

Introduction

眾所周知,網路結構往往都是稀疏的,這種稀疏性通常帶來了許多不確定因素,因此很多的Network Embedding方法選擇加入更多的相關信息來補全因為網路結構的稀疏性導致的信息缺失問題。其中,節點的自身屬性就是一種很好的選擇,因為很多情況下,網路結構的形成與其自身屬性有著千絲萬縷的關係。

比如,論文引用網路中,每個節點代表一篇論文,每條邊代表引用了引用關係。其中,每個節點自身屬性可能是文章的摘要,關鍵詞,研究領域等等。因此,雖然還沒有嚴格而科學的證明,但是直觀上,我們有理由相信,論文所形成的引用網路與論文自身的屬性是有強烈關係的。

在這篇文章中,作者指出,大多數現有的結合兩種信息來進行Network Embedding的文章都傾向於將結構信息和屬性信息分別進行embedding之後,再利用直接拼接或者一種後處理的方式結合兩者,從而形成最終的embedding結果。在後續實驗結果中,作者展示出了這種方法的效果並不能對embedding結果的提升幅度並不大。

在本論文中,作者提出了STNE方法,利用『翻譯』的思想,通過借鑒自然語言處理中的sequence to sequence (seq2seq)模型,將節點的內容信息翻譯成節點的結構信息,從而讓中間的特徵能夠以這種方式學到兩種信息,讓兩種信息得以更好地結合。

STNE模型的整體框架如下圖:

Framework of STNE

STNE框架總的來說可以分為兩個步驟:

  1. 作者首先利用隨機遊走法在網路中提取出一系列的節點作為節點序列,然後將節點序列分為兩個部分,一個是由節點屬性所構成的節點屬性序列,每一個節點屬性由節點屬性特徵向量來表示,另一個是節點指示序列,每一個節點由節點的指示向量(one-hot)來表示。
  2. 此後,針對這兩個序列,作者構建了一個seq2seq模型(文章中使用了Bi-LSTM模型),目的是能夠學習到一個低維特徵,這個特徵能夠在解碼的時候將節點的屬性『翻譯』成節點自身(即節點的指示向量)。

STNE在第一個步驟中,通過隨機遊走得到的節點指示序列本身就蘊含了網路的結構信息,而第二個步驟則通過將前向反饋與反向傳播,將節點序列的屬性特徵和結構特徵結合到中間的embedding中,從而提取出更具有表達能力的embedding結果。

*想要了解LSTM模型推薦上Understanding LSTM Networks,裡面介紹的非常清楚~

Algorithm

STNE模型

剛剛提到,STNE首先是將節點序列的屬性信息映射到低維特徵,然後再將低維特徵映射回節點序列的指示信息。這個過程我們可以分別理解為encode與decode,因此STNE可以分為了兩個部分,分別是encoder 與 decoder

  1. Content Sequence Encoder
    1. encoder內包含兩個步驟,這兩個步驟可以概括為兩個函數,第一個是特徵提取函數,函數將序列中的每個節點的屬性都映射到低維空間,得到對應的特徵,該函數用 mathcal{H(cdot,cdot)} 來表示,第二個是將各個節點映射得到的特徵進行拼接,用函數 mathcal{Q}(...) 來表示
  • 特徵提取

為了能夠提取序列順序特徵,作者使用RNN模型Bi-LSTM模型對特徵進行建模,總的來說,該模型和單向RNN不同之處就在於,它既有結合前一個細胞的輸出來訓練後一個細胞,也有結合後一個細胞的輸出來訓練前一個細胞,這樣就使得第t個點會得到兩個特徵,即:

stackrel{
ightarrow} {h_t} = mathcal{H^{fw}}(mathbf{v}_t^c,mathbf{h}_{t-1}),     stackrel{leftarrow}{h_t} = mathcal{H^{bw}}(mathbf{v}_t^c,mathbf{h}_{t+1})

其中 mathcal{H}(v_t,h_{t-1}) 代表的是第t時刻的LSTM的輸出,包含以下五個函數:

LSTM函數

函數的具體意義的可以在Understanding LSTM Networks上進行詳細的了解,為了防止篇幅過長,這裡就不做詳細的解釋

    • 特徵拼接

假設總共有T個節點,那麼經過Bi-LSTM模型之後,我們可以獲得 stackrel{
ightarrow}{h_1},...,stackrel{
ightarrow}{h_T}stackrel{leftarrow}{h_T},...,stackrel{leftarrow}{h_1} ,作者認為,前向傳播得到的最後一個特徵 stackrel{
ightarrow}{h_T} 有能力包含整個序列的特徵信息,同樣的,反向傳播得到的最後一個特徵 stackrel{leftarrow}{h_1} 也將有能力包含整個序列的特徵信息。

因此,作者利用拼接函數 mathcal{Q}() ,只取前向特徵序列的最後一項,以及反向特徵序列的最後一項進行拼接,得到最後的特徵:

mathbf{w}=mathcal{Q}({stackrel{
ightarrow}{h_1},...stackrel{
ightarrow}{h_T};stackrel{leftarrow}{h_T}...stackrel{leftarrow}{h_1}}) =[stackrel{
ightarrow}{h_T};stackrel{leftarrow}{h_1}]

2. Node Sequence Generation

該部分對應模型中的decoder,這一部分首先將得到的 mathbf{w} 仍然利用LSTM函數對其進行解碼,得到T個解碼序列 mathbf{d}_1,...,mathbf{d}_T 改過程可以表示為如下函數:

此後,對每一個解碼得到的特徵通過Sigmoid函數,進行概率的計算:

mathbf{g}_t=sigma(mathbf{W}_{fc} mathbf{d}_t+mathbf{b}_{fc})

這樣一來,我們就可以得到第t個節點由解碼特徵計算出來的概率向量 mathbf{g}_t

回想STNE模型的目的,它是為了將節點屬性序列翻譯成節點指示序列,而 mathbf{g}_t 是一個概率向量,那麼分布的概率向量要怎麼樣才能逼近一個指示向量呢?我們知道,第t個節點的指示向量就是在第t個位置的元素的值為1,其他位置均為0的one hot向量,因此,要想概率向量逼近,自然就是令第 mathbf{g}_t 的第t個元素的概率mathbf{g}_t(t) 相對於其他位置的元素佔比最大,因此目標函數如下:

p_t(j)=softmax(mathbf{g}_t)_t = frac{e^{g_t(t)}}{sum_{j}e^{mathbf{g}_t(j)}}

訓練完之後,每一個點的node embedding結果就是對應的 [stackrel{
ightarrow}{h_t};stackrel{leftarrow}{h_t}] ,但是因為隨機遊走會執行多次,一個點可能出現在很多不同的節點序列中,因此節點會學到很多不同的特徵,作者選擇將學到的特徵進行平均,從而作為節點的特徵。

Experiment

實驗數據集

評測指標

作者利用得到的向量進行one-vs-rest多分類任務,然後使用F1-score進行評測,具體如上, 其中TP(A)代表節點屬於A類型,並且被預測正確的數量,FP(A)則是節點不屬於A類型,但是被錯誤預測為A類型的數量,FN(A)則是節點屬於A類型,但是被錯誤預測為非A類型的數量。

實驗結果

總結

該論文第一次將seq2seq的思想運用於Network Embedding問題中,實現了將屬性與結構的無縫結合,但是似乎模型有點大部分照搬Bi-LSTM,或許應用於自然語言的模型需要進行一些修改才能更好地融合進Network Embedding任務中也說不定呢?

推薦閱讀:

Arxiv網路科學論文摘要12篇(2018-08-28)
社交網路使用手冊:明明是你想搭訕我,怎麼還表現的這麼囂張?
Arxiv網路科學論文摘要2篇(2018-09-07)
荷蘭之家邀你一起看新聞~德國政府喊你來買倉鼠啦!

TAG:數據挖掘 | 社交網路 | 自然語言處理 |