題目:ANRL: Attributed Network Representation Learning via Deep Neural Networks
作者:Zhen Zhang and Hongxia Yang and Jiajun Bu and Sheng Zhou and Pinggang Yu and Jianwei Zhang and Martin Ester and Can Wang
來源:IJCAI 2018
源碼:https://github.com/cszhangzhen/ANRL
傳統的基於網絡結構的網絡表示學習方法沒有利用屬性信息。結合拓撲結構和屬性的表示學習方法目前仍然屬於初步階段原因:
(1)網絡結構和節點屬性是兩種異構信息源,如何在同一個向量空間中保留他們的屬性是一個問題。
(2)觀察到的網絡數據通常不完整甚至有噪聲,難以得到有效的表示。
創新點
(1)自編碼器的用法:用屬性作爲輸入,重建的是並不是自身屬性,而是鄰居屬性的聚合(加權平均或中位數)。這樣聚合鄰居特徵有點類似GCN的做法,好處是聚合後的特徵能夠帶有本地拓撲信息。所以作爲中間層的表示也一定程度上考慮了本地結構信息。(但是這方面文中並沒有詳細解釋爲什麼好)
(2)屬性和拓撲的結合方式:用自編碼器的中間層作爲embedding;用embedding計算二階相似度來更新embedding。
模型
Neighbor Enhancement Autoencoder
輸入:節點vi的特徵 xi
輸出:節點 vi 鄰居的特徵重建值,重建的目標 T(vi) 聚合了鄰居的特徵
自編碼器loss定義
Lae=i=1∑n∥x^i−T(vi)∥22(2)
其中 T(⋅) 採取以下兩種方式:
-
Weighted Average Neighbor:
鄰居特徵的加權平均
T(vi)=∣N(i)∣1j∈N(i)∑wijxj
-
Elementwise Median Neighbor:
取每一維特徵在鄰居節點中的中位數
T(vi)=x~i=[x~1,x~2,⋯,x~m]
x~k=Median(wi1x1k,wi2x2k,⋯,wi∣N(i)∣X∣N(i)∣k)
Attribute-aware Skip-gram Model
給定節點 vi 和屬性 xi,對於所有的隨機遊走 c∈C,最小化以下損失函數
Lsg=−i=1∑nc∈C∑b≤b,j̸=0∑logp(vi+j∣xi)(3)
條件概率定義爲:
p(vi+j∣xi)=∑v=1nexp(vv′Tf(xi))exp(vi+j′f(xi))(4)
其中 Vi′ 是節點 vi 作爲上下文節點時的表示,f(⋅) 可以是任意屬性編碼函數,如用於圖像數據的CNN或者用於序列數據的RNN。
上式直接計算開銷大,用負採樣進行優化:
logσ(vi+j′Tf(xi))+s=1∑∣ neg ∣Evn∼Pn(v)[logσ(−vnTf(xi))](5)
負樣本的概率分佈採用word2vec論文裏採用的 Pn(v)∝dv3/4
聯合優化
模型包括兩個部分,共享自編碼器的encoder部分。其中左邊分支是一個decoder,重建輸入樣本的鄰居屬性;右邊是用輸入樣本對應表示預測其上下文。
兩個分支都共享了自編碼器的encoder部分,最終表示 yi(K) 同時捕捉了節點屬性和網絡結構。
聯合損失函數
L=Lsg+αLae+βLreg=−i=1∑nc∈C−b≤j≤b,j̸=0∑log∑v=1nexp(uvTyi(K))exp(ui+jTyi(K))+αi=1∑n∥x^i−T(vi)∥22+2βk=1∑K(∥∥∥W(k)∥∥∥F2+∥∥∥W^(k)∥∥∥F2)
其中n是節點總數,C是隨機遊走產生的節點序列,b是窗口大小。xi表示節點 vi 的屬性,yi(K) 是節點 vi 的表示。W(k),W(k) 分別是encoder和decoder第k層的權重矩陣。U 是圖結構上下文預測部分的權重矩陣,uv 是U 的第v列。
訓練
Q&A
-
f(⋅) 具體的作用和最終使用的函數
看了作者源碼實現裏直接用最後的表示yi(K) 計算skip-gram的loss,並沒有使用CNN或RNN。
def make_skipgram_loss(self):
loss = tf.reduce_sum(tf.nn.sampled_softmax_loss(
weights=self.nce_weights,
biases=self.nce_biases,
labels=self.labels,
inputs=self.Y,
num_sampled=self.config.num_sampled,
num_classes=self.N))
return loss
-
Lsg和 L ae 爲什麼不能同時優化?不同時優化,分步進行的先後順序是否有影響?
BiNE中也是兩項loss的組合,然後分開優化
-
文中自編碼器的輸入和輸出不同,與傳統的自編碼器用法帶來的額外好處是什麼?