GraphGAN: Graph Representation Learning with Generative Adversarial Nets
代码:https://github.com/hwwang55/GraphGAN
数据集:https://snap.stanford.edu/data/ca-AstroPh.html
https://snap.stanford.edu/data/ca-GrQc.html
http://socialcomputing.asu.edu/datasets/BlogCatalog
http://www.mattmahoney.net/dc/textdata
https://grouplens.org/datasets/movielens/1m/
3. Motivation
网络表示学习方法可以分成两个类别。
一种是Generative model(生成式模型),假定对于每一个顶点,在图中存在一个潜在的、真实的连续性分布 P t _t t r _r r u _u u e _e e(v|v c _c c), 图中的每条边都可以看作是从P t _t t r _r r u _u u e _e e里采样的一些样本。生成式方法都试图将边的似然概率最大化,来学习vertex embedding。例如DeepWalk (KDD 2014) and node2vec (KDD 2016)。
Discriminative Model(判别式模型)将两顶点联合作为feature,预测两点之间存在边的概率。例如SDNE (KDD 2016) and PPNE (DASFAA, 2017)。
LINE (WWW 2015) 尝试将两者结合起来。
目标
在GraphGAN的学习过程中训练两个模型:
- 生成器G( v v v| v c v_c vc),它尽可能地拟合潜在的真实连通性分布 P t P_t Pt r _r r u _u u e _e e( v v v| v c v_c vc),并生成最有可能与 v c v_c vc连接的顶点;
- 鉴别器D( v v v, v c v_c vc),它试图区分好连通顶点对和不连通顶点对,并计算 v v v和 v c v_c vc之间是否存在边的概率。在提出的GraphGAN中,G和D在minimax博弈中扮演两个角色:生成器试图在鉴别器提供的指导下生成最难区分的“fake”顶点,而鉴别器则试图在True和“fake”之间划清界限,在这个博弈中促使他们两个都提高自己的能力,直到D无法与真实的连通性分布区分开来。
- G和D的目标函数为:(GAN学习笔记(1))
GraphGAN框架
在每一次迭代中,用来自
P
t
P_t
Pt
r
_r
r
u
_u
u
e
_e
e(·|
v
c
v_c
vc)(绿色顶点)的正样本和来自生成器G(·|
v
c
v_c
vc;
θ
G
θ_G
θG)(带蓝色条纹的顶点)的负样本训练鉴别器D,并在D的指导下用策略梯度更新生成器G。G和D之间的博弈促使它们改进各自的方法,直到G与真实的连通性分布无法区分为止。
Discriminator Optimization
在GraphGAN中,将D定义为两个输入顶点内积的sigmoid函数:
这里任何判别模型都可以作为D,如SDNE
式(2)只涉及v和
v
c
v_c
vc,这表明给定一个样本对(v,
v
c
v_c
vc),我们只需要通过相对于它们的梯度上升来更新
d
v
d_v
dv和
d
v
d_v
dv
c
_c
c
Generator Optimization
policy gradient
果一个生成节点被识别出是负样本节点,那么概率D(V,VC;θD)就会很小,则生成节点的梯度对应的权重就会很大,从而使得整个梯度会变大。
论文中,将生成器定义为所有其他顶点上的softmax函数
g
v
_v
v和g
v
_v
v
c
_c
c是生成器产生的向量,更新采用随机梯度下降
缺陷:
公式(5)中Softmax的计算涉及到图中的所有顶点,这意味着对于每个生成的样本v,我们需要计算梯度∇θglog(v | vc;θG)并更新所有顶点。这在计算上效率低下,尤其是对于具有数百万顶点的真实世界大型图。2) 图结构编码了丰富的顶点之间的接近信息,而softmax在不加区分地处理顶点时,完全忽略了对图中结构信息的利用。
改进:Graph Softmax for Generator
Graph Softmax仍然是用于计算预估的连接分布G(▪|VC;θG),它需要满足的条件是:
(1)Normalized 归一化:需要满足有效的概率分布,
(2)Graph-structure-aware:利用网络结构信息,简单的想法就是,对于图中的两个顶点,它们的连通概率应该随着其最短距离的增加而降低。
(3)Computationally efficient:G(V|VC;θD)的计算,应该仅仅涵盖图中少量节点,比如一些与节点VC较为密切的节点。
为了去求这样的graph softmax,论文首先是对原网络ω进行BFS,将它展开成以
V
C
V_C
VC为根节点的树
T
C
T_C
TC。给定
T
C
T_C
TC,令N
C
_C
C
(
_(
(
V
_V
V
)
_)
)表示的是节点V的邻居节点集合(直接相邻的一阶邻居节点,在树中即为父母节点和孩子节点)。假设给定节点
V
V
V以及邻居V
i
_i
i∈N
C
_C
C
(
_(
(
V
_V
V
)
_)
),定义给定V的V
i
_i
i的关联概率为:
要计算G(V|V
C
_C
C;θ
G
_G
G)的话,每一个节点V都是可以由根节点V
C
_C
C开始的唯一一条路径到达,定义这个路径为P
v
c
v_c
vc→v =(V
r
0
r_0
r0,V
r
1
r_1
r1,…,V
r
m
r_m
rm),其中V
r
0
r_0
r0=V
c
_c
c,V
r
m
r_m
rm)=V。Graph Softmax定义的G(V|V
C
_C
C;θ
G
_G
G)为:
生成式模型G最后要做的还是要采样,一种简单的方法就计算出所有的graph softmax值G(V|V
C
_C
C;θ
G
_G
G),然后再根据这个概率值进行带权重的随机采样。论文中提出了另一种在线采样策略:从树T
C
_C
C的根节点
V
C
V_C
VC开始随机游走,如果当前游走到的节点V的下一步是要游走回父母节点,则V即被选择为采样的节点。
下图展示的就是一个生成器G在线采样策略的图解:
最后,整个GraphGAN算法框架如下
实验
数据集见开头
1.Link Prediction
在原始图中随机隐藏10%的边作为基本事实,训练后,得到所有顶点的表示向量,并用logistic回归方法预测给定顶点对的边存在概率。测试集由原始图中隐藏的10%的顶点对(边)作为正样本,随机选取断开的顶点对作为相等数量的负样本。我们使用arXiv AstroPh和arXiv GrQc作为数据集,并在表1中报告精度和宏F1的结果。我们发现:
1)LINE和struc2vec在链路预测方面的性能较差,因为它们不能很好地捕捉到图中边的存在模式。
2) DeepWalk和node2vec的性能优于LINE和struc2vec。这可能是因为DeepWalk和node2vec都使用了基于随机行走的Skip-Gram模型,这种模型在提取顶点之间的邻近信息方面更为有效。
3) GraphGAN在链路预测方面优于所有基线。特别是,GraphGAN将arXiv AstroPh和arXiv GrQc的精度分别提高了1.18%到4.27%和0.59%到11.13%。我们的解释是,对抗训练为graph提供了比单模型基线训练更高的学习灵活性。
学习曲线:
生成器的性能在收敛后表现突出,而鉴别器的性能开始提高,但逐渐下降到0.8以下。请注意,鉴别器不会降级到随机猜测级别,因为生成器在实际操作中仍然提供大量的真实负样本。
Node Classification
在节点分类中,为每个顶点指定一个或多个标签。在我们观察到一小部分顶点及其标签之后,我们的目标是预测剩余顶点的标签。因此,节点分类的性能可以揭示不同图表示学习方法下顶点的可区分性。为了进行实验,在整个图上训练GraphGAN和基线以获得顶点表示,并使用logistic回归作为分类器,以9:1的训练测试比进行节点分类。我们使用BlogCatalog和Wikipedia作为数据集。表2给出了精度和宏-F1的结果。
Recommendation
使用Movielens-1M作为推荐数据集。对于每个用户,目标是推荐一组尚未观看但可能会被用户喜欢的电影
首先将所有的4星和5星评级作为边,得到一个二分图,然后随机隐藏原始图中10%的边作为测试集,为每个用户构造一个BFS树。注意,与上述两个实验场景不同的是,连通性分布是在特定顶点的所有其他顶点上定义的,在推荐中,一个用户的连通概率仅分布在图中的一小部分顶点上,如所有电影上。因此,我们“shortcut”所有用户顶点在BFS树(除了根)添加直接边在所有电影对由一个用户顶点链接。在训练并获得用户和电影的代表性后,针对每一个用户,我们选择其内部产品最高的未匹配电影中的K作为推荐结果。结果精度@K以及召回@K如图5所示,