論文名稱:GraphGAN: Graph Representation Learning with Generative Adversarial Nets

Introduction

這篇文章將NE方法按照另一種角度分成了兩類:生成模型和判別模型。

生成模型:網路中節點和邊並不是隨機的,生成模型的目的是在找網路中一個節點鄰居的概率分布,也就是一個節點的連接偏好。給定一個 v_c ,想找到一個 v_c 的鄰居服從的分布 p_{true}(v|v_c) 。比如DeepWalk、noce2vec。

判別模型:判別模型並不考慮節點與鄰居的分布,它以網路中的邊為出發點,衡量兩個節點之間是否有邊關係。給定兩個節點 v_iv_j ,判別模型給出兩個節點有邊的概率 p(edge|(v_i,v_j))

Graph Generative Adversarial Nets

首先是一些符號:

N(v_c) 表示 v_c 的直接鄰居;

p_{true}(v|v_c) 表示 v_c 的鄰居服從的真實分布,也就是 v_c 的連接偏好。從採樣的角度來看, N(v_c) 就是概率分布 p_{true}(v|v_c) 的採樣結果。

G(v|v_c;	heta_G) 表示G所做的工作就是模擬出 p_{true}(v|v_c) 的分布,模型的參數由 	heta_G 控制。

D(v,v_c;	heta_D) 衡量 vv_c 之間有邊的概率, 即 p(edge|(v,v_c)) 。它的輸出是一個常量。

具體的優化細節:

D量化兩個節點之間有邊的概率,文中給的公式是:

其中d分別代表兩個節點的表示向量。如果v是通過 p_{true} 採樣得到的,那麼D應該給出一個高分,如果v是G生成的,那麼D應該給一個低分。用梯度上升更新兩個節點表示。

G衡量節點的鄰居分布,文中的公式是:

就是一個softmax函數,輸出鄰居是每個節點的概率。

到這裡G和D的模型和優化目標都確定了,但是還有一個最大的問題,這個G和D的定義並沒有反映任何網路的特徵。

解決方案:Graph Softmax

D的定義並沒有問題,有問題的是G中的softmax函數,它的問題有兩個:

  • 並沒有反映任何網路特徵。
  • 每個節點都要算一遍,複雜度太高。

那麼這個重定義的softmax有怎樣的特點呢?

  • Normalized:畢竟是概率,加一起要等於1,即 sum_{v
e v_c}G(v|v_c;	heta_G)=1
  • Graph-structure-aware:網路特徵特現在什麼方面,比如兩個節點相距越遠,連接的可能性越低。
  • computationally efficient:計算 G(v|v_c;	heta_G) 的時候最好只用到一部分節點,而不用把所有節點都算一遍。

解決辦法就是對於每一個節點 v_c ,以它為根節點BFS遍歷形成一棵生成樹,樹中兩個節點之間的邊對應的概率由以下公式給出。

從根開始自頂向下,每個節點和它子節點之間的邊都對應一個概率,如果要計算 G(v_i|v_c) ,只要找到一條從根 v_cv_i 的路徑,將路徑經過的邊對應的概率相乘就算出來了。

那麼G應該怎麼生成鄰居節點呢?一種簡單的方法就是把每個節點對應的概率都算出來,然後根據每個節點的概率大小採樣。文中給出了另一種採樣方法:從根開始一條隨機遊走,按照之前算的概率選擇下一個節點,直到某次選擇的下一個節點是它的父節點,這個節點就是被採樣的節點。

Experiments

鏈接預測任務在效果上並沒有提升太多,比DeepWalk好,跟node2vec差不多。

Reference

GraphGAN: Graph Representation Learning with GAN - Xullll的文章 - 知乎 zhuanlan.zhihu.com/p/47


推薦閱讀:
相关文章