【網絡表示學習】BiNE

題目:BiNE: Bipartite Network Embedding

作者:Ming Gao, Leihui Chen, Xiangnan He & Aoying Zhou

來源:SIGIR 2018

源碼:https://github.com/clhchtcjj/BiNE

當前的許多網絡表示學習方法主要是針對同質網絡的,忽略了二部圖的特殊性質。本文提出一種的專門針對二部圖的網絡表示學習方法。通過有偏隨機遊走,生成的節點序列很好地保留節點在原始二部圖中的長尾分佈。本文基於節點的顯式聯繫和隱式聯繫,提出一種新的優化方法。

傳統NE方法對於二部圖而言不是最優的理由:

(1)沒有考慮節點類型。與同質網絡不同,二部圖中有兩種類型節點,雖然同類型節點之間不存在邊,但是具有隱式聯繫。傳統的隨機遊走方法雖然能夠捕捉高階隱式聯繫,但是不夠高效。

(2)產生的序列可能無法保留二部圖的特性。例如經過deepwalk隨機遊走採樣後的序列,節點度並不滿足冪律分佈。而冪律分佈是二部圖的一個重要特性。

模型

總體流程

(1)通過原始的二部圖分別生成U和V兩張圖

(2)在U和V上分別進行有偏隨機遊走,得到序列集合 DUD^UDVD^V

(3)SGA更新代表節點 uiu_ivjv_j 的embedding向量 ui\overrightarrow{\mathbf{u}}_{i}vj\overrightarrow{\mathbf{v}}_{j}

我們定義一個二部圖 G=(U,V,E)G=(U, V, E) ,其中 UUVV 分別代表兩種類型節點集合。EU×VE \subseteq U \times V 表示邊,每條邊有一個非負權值 wijw_{ij} ,其中 W=[wij]RU×V\mathbf{W}=\left[w_{i j}\right] \in \mathbb{R}^{|U|\times|V|} 。以下使用 ui\overrightarrow{\mathbf{u}}_{i}vj\overrightarrow{\mathbf{v}}_{j} 代表節點 uiu_ivjv_j 的embedding向量,模型將二部圖上的所有節點都映射成一個 dd 維的embedding向量。f:UVRdf : U \cup V \rightarrow \mathbb{R}^{d}

建模顯式關係

二部圖中,存在於兩種類型節點之間的邊提供了顯式關係。與LINE建模一階相似度類似,本文將二部圖節點的顯式關係建模爲兩個相連節點的局部相似性,uiu_ivjv_j 聯合概率爲(經驗分佈):
(1)P(i,j)=wijeijEwij P(i, j)=\frac{w_{i j}}{\sum_{e_{i j} \in E} w_{i j}}{\tag 1}
uiu_ivjv_j embedding的內積來估計局部相似性(重建分佈)
(2)P^(i,j)=11+exp(uiTvj) \hat{P}(i, j)=\frac{1}{1+\exp \left(-\overrightarrow{\mathbf{u}}_{i}^{T} \overrightarrow{\mathbf{v}}_{j}\right)}{\tag 2}
用KL散度衡量兩個分佈的差異,通過最小化該目標函數,學習得到表示
(3) minimize O1=KL(PP^)=eijEP(i,j)log(P(i,j)P^(i,j))eijEwijlogP^(i,j) \begin{aligned} \text { minimize } O_{1} &=K L(P \| \hat{P})=\sum_{e_{i j} \in E} P(i, j) \log \left(\frac{P(i, j)}{\hat{P}(i, j)}\right) \\ & \propto-\sum_{e_{i j} \in E} w_{i j} \log \hat{P}(i, j) \end{aligned}{\tag 3}
以上部分與LINE一階相似度相同

建模隱式關係

兩個同類型節點之間沒有邊直接連接,但是如果存在節點間存在路徑,則二者之間存在某種隱式關係;其中路徑的數目和長度表明該隱式關係的強度。直接計算兩個節點之間的路徑計算開銷大,在大規模網絡中難以實現。本文采用DeepWalk等工作中採用的隨機遊走策略。具體地,首先通過執行隨機遊走將二分圖轉換爲兩個頂點序列語料庫; 然後從語料庫中學習嵌入。

構建節點序列語料庫

由於週期性的原因,二分圖上沒有靜態的隨機遊走分佈,所以直接在二分圖上執行隨機遊走可能失敗。爲了解決該問題,我們考慮在兩個具有同類型節點二階節點相似度的同質圖上進行隨機遊走。

定義兩個節點的二階相似度如下:
(4)wijU=kVwikwjk;wijV=kUwkiwkj w_{i j}^{U}=\sum_{k \in V} w_{i k} w_{j k} ; \quad w_{i j}^{V}=\sum_{k \in U} w_{k i} w_{k j}{\tag 4}
相當於 wijU=wiwjw_{i j}^{U} = w_{i\cdot} \cdot w_{j \cdot} ;使用矩陣 WU=[wijU]RU×U\mathbf{W}^{U}=\left[w_{i j}^{U}\right] \in \mathbb{R}^{|U|\times|U|}WV=[wijV]RV×V\mathbf{W}^{V}=\left[w_{i j}^{V}\right] \in \mathbb{R}^{|V|\times|V|} 分別表示兩個同質網絡。

此時可以使用截斷隨機遊走分別生成兩個語料以訓練得到高階隱式關係。但是爲了保留真實二部圖的節點分佈特徵,本文提出使用一種有偏、自適應的隨機遊走方法

隨機遊走

【1】從某個節點開始進行隨機遊走的次數,與該節點的重要性正相關。節點重要性可由中心度(centrality)衡量。

【2】設置每一步隨機遊走停止的概率。deepwalk及其他方法中使用的是固定長度的遊走序列,本文的遊走序列是可變長度的,目的是爲了與自然語言中句子長度可變的事實更接近。

隨機遊走的具體算法如下:

建模隱式關係

隱式關係與LINE二階相似度定義相同,如果兩個節點上下文相似,則兩個節點存在隱式關係。

二部圖中有U和V兩種節點,其中以U爲例,令 DUD^{U} 爲U節點序列構成的語料,CS(ui)C_{S}\left(u_{i}\right) 代表節點 uiu_i 的上下文節點;最大化下列條件概率
(5) maximize O2=uiSSDUucCS(ui)P(ucui) \text { maximize } O_{2}=\prod_{u_{i} \in S \wedge S \in D^{U}} \prod_{u_{c} \in C_{S}\left(u_{i}\right)} P\left(u_{c} | u_{i}\right){\tag 5}
同理對於V節點
(6) maximize O3=vjSSDVvcCS(vj)P(vcvj) \text { maximize } O_{3}=\prod_{v_{j} \in S \wedge S \in D^{V}} \prod_{v_{c} \in C_{S}\left(v_{j}\right)} P\left(v_{c} | v_{j}\right){\tag 6}
類似於LINE,使用內積和softmax來定義條件概率
(7)P(ucui)=exp(uiTθc)k=1Uexp(uiTθk),P(vcvj)=exp(vjTϑc)k=1Vexp(vjTθk) P\left(u_{c} | u_{i}\right)=\frac{\exp \left(\overrightarrow{\mathbf{u}}_{i}^{T} \overrightarrow{\boldsymbol{\theta}_{c}}\right)}{\sum_{k=1}^{|U|} \exp \left(\overrightarrow{\mathbf{u}}_{i}^{T} \overrightarrow{\boldsymbol{\theta}_{k}}\right)}, \quad P\left(v_{c} | v_{j}\right)=\frac{\exp \left(\overrightarrow{\mathbf{v}}_{j}^{T} \overrightarrow{\boldsymbol{\vartheta}}_{c}\right)}{\sum_{k=1}^{|V|} \exp \left(\overrightarrow{\mathbf{v}}_{j}^{T} \overrightarrow{\boldsymbol{\theta}_{k}}\right)}{\tag 7}

負採樣

跟LINE相同,式(7)計算複雜度太高,使用負採樣。首先根據節點的鄰居,使用局部敏感哈希(LSH)將節點分桶。給定一箇中心節點,就從其他桶裏隨機挑選一個節點作爲負樣本。該方法可以保證得到高質量、多樣化的負樣本。

負樣本條件概率如下:
(8)p(uc,NSns(ui)ui)=z{uc}NSns(ui)P(zui) p\left(u_{c}, N_{S}^{n s}\left(u_{i}\right) | u_{i}\right)=\prod_{z \in\left\{u_{c}\right\} \cup N_{S}^{n s}\left(u_{i}\right)} P\left(z | u_{i}\right){\tag 8}
式(7)中的聯合概率分佈可以簡化爲:
P(zui)={σ(uiTθz), if z is a context of ui1σ(uiTθz),zNSns(ui) P\left(z | u_{i}\right)=\left\{\begin{array}{ll}{\sigma\left(\overrightarrow{\mathbf{u}}_{i}^{T} \vec{\theta}_{z}\right),} & {\text { if } z \text { is a context of } u_{i}} \\ {1-\sigma\left(\overrightarrow{\mathbf{u}}_{i}^{T} \vec{\theta}_{z}\right),} & {z \in N_{S}^{n s}\left(u_{i}\right)}\end{array}\right.
定義和LINE中相同,注意sigmid函數的特性 σ(x)=1σ(x)\sigma(-x) = 1-\sigma(x)

聯合優化

聯合優化總體目標函數:
(9) maximize L=αlogO2+βlogO3γO1 \text { maximize } L=\alpha \log O_{2}+\beta \log O_{3}-\gamma O_{1} {\tag 9}
使用梯度上升算法(SGA)優化聯合,考慮到上式三個部分對一個訓練實例的定義不同,採用以下的梯度更新方式:

Setp1:對於一個隱式關係,通過最大化上式最後一個部分L1=γO1L_{1}=-\gamma O_{1} ,更新ui\overrightarrow{\mathbf{u}}_{i}vj\overrightarrow{\mathbf{v}}_{j}
(10)ui=ui+λ{γwij[1σ(uiTvj)]vj} {\overrightarrow{\mathbf{u}}_{i}=\overrightarrow{\mathbf{u}}_{i}+\lambda\left\{\gamma w_{i j}\left[1-\sigma\left(\overrightarrow{\mathbf{u}}_{i}^{T} \overrightarrow{\mathbf{v}}_{j}\right)\right] \cdot \overrightarrow{\mathbf{v}}_{j}\right\}}{\tag{10}}

(11)vj=vj+λ{γwij[1σ(uiTvj)]ui} {\overrightarrow{\mathbf{v}}_{j}=\overrightarrow{\mathbf{v}}_{j}+\lambda\left\{\gamma w_{i j}\left[1-\sigma\left(\overrightarrow{\mathbf{u}}_{i}^{T} \overrightarrow{\mathbf{v}}_{j}\right)\right] \cdot \overrightarrow{\mathbf{u}}_{i}\right\}}{\tag{11}}

Setp2:將 uiu_ivjv_j 作爲中心節點,用SGA最大化目標函數 L2=αlogO2L_{2}=\alpha \log O_{2}L3=βlogO3L_{3}=\beta \log O_{3} ,可以最大化保留隱式關係。對於給定的中心節點 uiu_i (或 vjv_j)以及上下文節點 ucu_cvcv_c,更新它們的embedding:
(12)ui=ui+λ{z{uc}NSns(ui)α[I(z,ui)σ(uiTθz)]θz} \overrightarrow{\mathbf{u}}_{i}=\overrightarrow{\mathbf{u}}_{i}+\lambda\left\{\sum_{z \in\left\{u_{c}\right\} \cup N_{S}^{n s}\left(u_{i}\right)} \alpha\left[I\left(z, u_{i}\right)-\sigma\left(\overrightarrow{\mathbf{u}}_{i}^{T} \vec{\theta}_{z}\right)\right] \cdot \vec{\theta}_{z}\right\}{\tag{12}}

(13)vj=vj+λ{z{vc}Nns(vi)β[I(z,vj)σ(vjTϑz)]ϑz} \overrightarrow{\mathbf{v}}_{j}=\overrightarrow{\mathbf{v}}_{j}+\lambda\left\{\sum_{z \in\left\{v_{c}\right\} \cup N^{n s}\left(v_{i}\right)} \beta\left[I\left(z, v_{j}\right)-\sigma\left(\overrightarrow{\mathbf{v}_{j}}^{T} \vec{\vartheta}_{z}\right)\right] \cdot \vec{\vartheta}_{z}\right\}{\tag{13}}

其中 I(z,ui)I\left(z, u_{i}\right) 是指示函數用來判斷節點 zz 是否爲 uiu_i 的上下文。同理更新上下文向量
(14)θz=θz+λ{α[I(z,ui)σ(uiTθz)]ui} \overrightarrow{\boldsymbol{\theta}_{z}}=\overrightarrow{\boldsymbol{\theta}_{z}}+\lambda\left\{\alpha\left[I\left(z, u_{i}\right)-\sigma\left(\overrightarrow{\mathbf{u}_{i}}^{T} \overrightarrow{\boldsymbol{\theta}}_{z}\right)\right] \cdot \overrightarrow{\mathbf{u}}_{i}\right\}{\tag{14}}

(15)ϑz=ϑz+λ{β[I(z,vj)σ(vjTϑz)]vj} \vec{\boldsymbol{\vartheta}}_{z}=\vec{\boldsymbol{\vartheta}}{z}+\lambda\left\{\beta\left[I\left(z, v_{j}\right)-\sigma\left(\overrightarrow{\mathbf{v}_{j}}^{T} \overrightarrow{\boldsymbol{\vartheta}}_{z}\right)\right] \cdot \overrightarrow{\mathbf{v}}_{j}\right\}{\tag{15}}

總體訓練過程如下:

實現

預訓練

聯合優化函數eq(9)是一個非凸函數,所以初始化對於找到合適的解非常重要。本文通過預訓練eq(9)得到節點embedding初始值。

計算複雜度

總結

  1. 相比於傳統的同質圖NE方法,BiNE能夠有效地利用二部圖(異質圖)的特點,生成不同類型節點的embedding。效果更好
  2. 異質圖NE的SOTA方法Metapath++認爲顯式聯繫和隱式聯繫的作用相等,並且忽略了圖上節點之間的權重信息;而BiNE考慮了限制聯繫和隱式聯繫分別的作用,並且很好地利用了權重信息。
  3. 本文提出的隨機遊走生成方法,每個節點採樣的遊走序列數與節點的重要性相關,並且序列長度不固定。更符合圖的原始分佈。

Q&A

  1. 二部圖的特點

節點符合冪律分佈

Suchit Pongnumkul and Kazuyuki Motohashi. A bipartite fitness model for online music streaming services. Physica A: Statistical Mechanics and its Applications, 490:1125–1137, 2018.

  1. deepwalk採樣序列節點度不滿足冪律分佈,對二部圖結果造成影響的分析

  2. 隨機遊走停止概率p的設置,什麼時候句子長,什麼時候句子短

  3. 負採樣方法,LSH和loguniform分佈採樣,哪個好

    LSH挑選其他桶的樣本,保證負樣本與當前節點不相似;O(1)時間複雜度,O(n)空間複雜度

    loguniform分佈採樣,根據熱度採樣,懲罰熱門節點 ;O(1)時間複雜度,O(1)空間複雜度

    採樣時間複雜度?

參考資料

  1. 二部圖節點排序

Xiangnan He, Ming Gao, Min-Yen Kan, and Dingxian Wang. Birank: Towards ranking on bipartite graphs. TKDE, 29(1):57–71, 2017

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