«上一篇 下一篇»
  计算机工程  2021, Vol. 47 Issue (2): 60-68, 76  DOI: 10.19678/j.issn.1000-3428.0056978
0

引用本文  

高宏屹, 张曦煌, 王杰. 生成对抗式分层网络表示学习的链路预测算法[J]. 计算机工程, 2021, 47(2), 60-68, 76. DOI: 10.19678/j.issn.1000-3428.0056978.
GAO Hongyi, ZHANG Xihuang, WANG Jie. Link Prediction Algorithm of Generative Adversarial Hierarchical Network Representation Learning[J]. Computer Engineering, 2021, 47(2), 60-68, 76. DOI: 10.19678/j.issn.1000-3428.0056978.

基金项目

江苏省产学研合作项目(BY2015019-30)

作者简介

高宏屹(1995-), 男, 硕士研究生, 主研方向为网络表示学习;
张曦煌, 教授、博士;
王杰, 硕士研究生

文章历史

收稿日期:2019-12-20
修回日期:2020-01-20
生成对抗式分层网络表示学习的链路预测算法
高宏屹 , 张曦煌 , 王杰     
江南大学 物联网工程学院, 江苏 无锡 214122
摘要:针对当前链路预测算法无法有效保留网络图高阶结构特征的问题,提出一种生成对抗式分层网络表示学习算法。根据网络图的一阶邻近性和二阶邻近性,递归地对网络图进行边缘折叠和顶点合并,形成逐层规模变小的子网络图,使用Node2vec算法对规模最小的子网络图进行预处理,并将预处理结果输入到生成对抗式网络(EmbedGAN)模型中,学习得到最小子网络图顶点的低维向量表示,将其输入至上一层子网络的EmbedGAN模型中,作为上一层子网络图顶点的低维向量表示。按照该方法进行逐层向上回溯学习,直至学习到原始网络图,从而得到原始网络图顶点的低维向量表示。在多个不同领域的真实网络数据集上进行链路预测,实验结果表明,该算法的准确率与稳定性均优于LP、Katz和LINE算法。
关键词链路预测    网络表示学习    邻近性    生成对抗式网络    分层网络    
Link Prediction Algorithm of Generative Adversarial Hierarchical Network Representation Learning
GAO Hongyi , ZHANG Xihuang , WANG Jie     
School of Internet of Things Engineering, Jiangnan University, Wuxi, Jiangsu 214122, China
Abstract: To address the problem that existing link prediction algorithms cannot effectively retain the high-order structural features of network graph, this paper proposes a generative adversarial hierarchical Network Representation Learning(NRL) algorithm.According to the first-order proximity and second-order proximity of the network graph, the method recursively performs edge collapsing and vertex merging on the network graph to form sub-networks whose scale becomes smaller layer by layer.The Node2vec algorithm is used to pre-process the sub-network with the smallest scale, and the result is input into the Embed Generative Adversarial Network(EmbedGAN) model to learn low-dimensional vector representation of the vertices of the subnetwork graph at the previous level.According to this method, learning process is recursively performed back upward layer by layer until the original network graph is learned, and a low-dimensional vector representation of all vertices of the original network graph is obtained.Experimental results of link prediction on real network data sets in different fields show that the accuracy and stability of this algorithm are better than those of LP, Katz and LINE algorithms.
Key words: link prediction    Network Representation Learning(NRL)    proximity    Generative Adversarial Network(GAN)    hierarchical network    
0 概述

随着互联网的高速发展,各个领域的复杂网络[1]变得越来越庞大。在这些复杂网络中,所有顶点代表现实系统中的实体,顶点之间的链接代表实体之间的联系。复杂网络中的链路预测[2]既包含对已经存在但未知的链接的预测,也包含对未来可能产生的链接的预测。

在现实世界中的链路预测有着广泛的应用场景,如在复杂的社交网络[3]中,通过链路预测方法可以判断两个人之间是否存在着一定的联系,这样就可以为用户进行朋友推荐,在电子商务网络中,也可以通过链路预测方法为用户进行商品推荐。现在已知的链接可能只是网络中所有顶点间存在的链接的较少部分,网络中还有着大量未知的但可能存在的链接。如果只通过收集数据、实验等方法了解这些链接,则需要耗费大量的人力物力。因此,研究链路预测算法具有非常重要的意义。

目前传统的链路预测算法计算效率较低,且不能很好地保留网络的高阶结构特点。本文提出一种生成对抗式分层网络表示学习算法以进行链路预测。该算法对网络图进行分层,并利用生成式对抗模型递归回溯地求得每一层网络图中顶点的低维向量表示,将其作为上一层网络图的初始化,直至回溯到原始网络图,求得原始网络图中所有顶点的低维向量表示进行链路预测。

1 相关工作

目前传统的链路预测算法主要包括基于似然分析的链路预测算法和基于相似性的链路预测算法[4]

1)基于似然分析的链路预测算法是根据网络结构的产生和组织方式,以及目前已知的链路来计算网络的似然值。然后将似然值最大化,计算出每一对顶点间存在边缘的概率。

2)在基于相似性的链路预测算法中,如果两个顶点之间存在链接,则代表这两个顶点是相似的。因此,基于相似性的链路预测算法最主要的问题就是如何确定两个顶点的相似性。基于相似性的链路预测分为以下两类:

(1)基于顶点属性相似性的链路预测[5]。此类链路预测方法大多应用在社交网络等含有标签的复杂网络中。利用顶点的标签,可以方便地计算出顶点属性的相似性,两个顶点的属性越相似,这两个顶点之间存在边的概率就越大。

(2)基于网络结构相似性的链路预测[5]。此类链路预测方法大多应用在难以获取顶点属性信息的复杂网络中。这类方法主要分为基于局部信息的相似性指标、基于路径的相似性指标和基于随机游走的相似性指标。基于局部信息相似性的指标主要包括共同邻居(Common Neighbors,CN)指标[4]、优先链接(Preferential Attachment,PA)指标[4]、AA(Adamic-Adar)指标[4];基于路径的相似性指标主要包括局部路径(Local Path,LP)指标[4]和Katz指标[4];基于随机游走的相似性指标主要包括SimRank指标[6]、平均通勤时间指标[7]和Cos+指标[7]

传统的链路预测算法普遍是根据邻接矩阵的稀疏表示而设计的,计算成本高,计算效率较低,且无法保留网络图的高阶结构特性,因此,无法在大规模网络上运行。

近年来,随着网络表示学习(Network Representation Learning,NRL)[8]的发展,基于网络表示学习的链路预测算法取得了很好的效果。该算法根据网络中顶点的邻近性,训练得到顶点的低维向量表示,从而计算出顶点间存在边缘的概率,它能很好地保留网络结构,降低计算成本,提高计算效率。

2014年,PEROZZI等人提出的Deepwalk[9]算法是利用构造节点在复杂网络中随机游走的路径,生成节点序列,并利用Skip-Gram和Hierarchical Softmax[10]模型对节点序列进行处理,最终得到顶点的向量表示。2015年,TANG等人提出的LINE[11]算法是基于Deepwalk进行改进,LINE通过显式地建模一阶邻近性和二阶邻近性来学习顶点表示,而不是利用随机游走来捕获网络结构。2016年,GROVER等人提出的Node2vec[12]算法同样是在Deepwalk的基础上进行的改进,在随机游走的过程中设置一个偏置参数,通过控制偏置参数的大小来控制模型的搜索方式是偏向于宽度优先搜索[13]还是深度优先搜索[14]。2018年,WANG等人提出了GraphGAN[15]算法,该算法用生成式对抗网络学习网络图中顶点的低维向量表示。

上述网络表示学习算法存在两个共同问题:1)仅关注网络图的局部特性,忽视了网络图的高阶结构特性;2)在没有先验知识的情况下,通常用随机数来初始化向量表示,存在收敛到较差的局部最小值的风险。

本文算法根据原始网络图的一阶邻近性和二阶邻近性对原始网络图进行分层。每一次分层处理都将上一层子网络图中具有较高一阶邻近性和二阶邻近性的顶点进行合并,以形成规模更小的子网络图。这样不仅保留了原始网络图的局部特性,并且在规模变小的过程中原始网络图的高阶邻近性得到了降阶,使高阶邻近性更容易显现出来,从而有效地保留了网络图的高阶邻近性。本文算法将规模较小的子网络图学习到的向量表示作为其上一层子网络图的初始向量表示,避免了随机初始化导致的局部最小值的风险。

2 算法描述 2.1 算法定义描述

本文主要运用以下5种定义:

1)复杂网络:设$ G=(V, E) $为给定的网络图,其中$ V=\{{v}_{1}, {v}_{2}, \cdots, {v}_{V}\} $表示顶点集,每个顶点表示一个数据对象,$ E=\{{e}_{ij}{\}}_{i, j=1}^{V} $表示边集。对于给定的一个顶点$ {v}_{c} $,设$ N\left({v}_{c}\right) $为与顶点$ {v}_{c} $直接相连的顶点(即$ {v}_{c} $的直接邻居)。

2)生成式对抗网络(GAN):生成式对抗网络包括生成器和鉴别器两部分,生成器和鉴别器都是一个完整的神经网络,通过生成器和鉴别器相互博弈,可以达到根据原有数据集生成近似真实数据的新数据。

首先对生成器输入一个真实的数据分布,生成器模仿真实的数据集,生成一个近似真实的数据,将其与真实数据集一起输入给鉴别器。鉴别器则根据自身知识对输入数据进行鉴别,尽量为其分配正确标签,再与真实标签进行对比,并根据对比结果进行自我更新,同时反馈给生成器一个反馈信息。生成器根据鉴别器传回的反馈信息进行自我更新。以此循环,直到生成器和鉴别器达到拟合为止,最终生成器可以模拟出与真实数据几乎一致的数据。

3)一阶邻近性[11]:网络中的一阶邻近性表示两个顶点之间的局部相似度,对于两个顶点uv,如果它们之间存在边缘(uv),则顶点uv具有一阶邻近性。

4)二阶邻近性[11]:网络中一对顶点之间的二阶邻近性是它们的邻域网络结构之间的相似性。如果两个顶点uv拥有相同的邻居节点,则顶点uv具有二阶邻近性。

5)高阶邻近性:网络中一对顶点之间的高阶邻近性是全局网络结构之间的相似性。以三阶邻近性为例,对于两个顶点uv,如果它们分别与两个具有二阶邻近性的顶点相连,则顶点uv具有三阶邻近性。

2.2 基本算法指标

本文主要应用以下3种指标:

1)AA指标:对于复杂网络中的节点,它的邻居的数量称为这个节点的度。AA指标根据两个节点共同邻居的度信息,为两个节点的每个共同邻居赋予一个权重,度越小的邻居节点权重越大。AA指标定义为:

${S_{x,y}} = \sum\limits_{z \in N\left( x \right) \cap N\left( y \right)} {\frac{1}{{{\rm{lg}}k\left( z \right)}}} $ (1)

其中,$ N\left(x\right) $为节点x的邻居,$ k\left(x\right)=\left|N\left(x\right)\right| $为节点x的度。每个共同邻居的权重等于度的对数的倒数。

2)局部路径指标(Local Path,LP):LP指标考虑两个顶点间路径长度为2和3的共同邻居,利用顶点间路径长度为2和3的不同路径的数量信息来表示顶点之间的相似度。LP指标定义为:

$ {S}_{x, y}={A}_{x, y}^{2}+\alpha {A}_{x, y}^{3} $ (2)

其中,$ \alpha $为控制三阶路径比重的可调参数,A为邻接矩阵,$ {A}_{x, y}^{n} $表示顶点xy之间长度为n的路径数。

3)Katz指标:Katz指标在LP指标的基础上考虑两顶点间所有路径长度的共同邻居,对路径长度较小的共同邻居赋予较大权重,定义为:

$ {S}_{x, y}=\beta {A}_{x, y}+{\beta }^{2}{A}_{x, y}^{2}+{\beta }^{3}{A}_{x, y}^{3}+\cdots $ (3)

其中,$ \beta $为权重衰减因子,$ \beta $取值小于邻接矩阵最大特征值的倒数。

2.3 算法框架

本文算法框架如图 1所示。

Download:
图 1 本文算法框架 Fig. 1 Framework of the proposed algorithm

算法主要分为3个部分:

1)网络图分层处理。如图 1中的①、②所示,利用网络图分层算法(NetLay)对原始网络图G0递归地进行边缘折叠和顶点合并,形成多层规模逐层变小的子网络图G0Gn图 1中以三层结构举例,n=2)。

2)获得网络图中顶点的低维向量表示。如图 1中的③~⑦所示,首先用Node2vec[12]算法对规模最小的子网络图Gn进行预处理,生成$ {\rm{init}}{\mathit{\boldsymbol{E}}_{{G_n}}} $。然后用生成式对抗网络EmbedGAN生成子网络图Gn的低维向量表示$ {\mathit{\boldsymbol{E}}_{{G_n}}} $。接着将$ {\mathit{\boldsymbol{E}}_{{G_n}}} $作为上一层子网络图Gn-1的初始向量表示$ {\rm{init}}{\mathit{\boldsymbol{E}}}_{{G}_{n-1}} $输入到EmbedGAN模型中,生成子网络图Gn-1的低维向量表示$ {\mathit{\boldsymbol{E}}}_{{G}_{n-1}} $。按照此方法进行回溯,直到求得原始网络图G0的低维向量表示$ {\mathit{\boldsymbol{E}}}_{{G}_{0}} $为止。

3)如图 1中的⑧所示,根据训练所得的顶点的低维向量表示$ {\mathit{\boldsymbol{E}}}_{{G}_{0}} $,计算出顶点间的相似性来预测两个节点间是否存在边缘。

2.4 网络图分层

本文利用网络图分层算法对原始网络图G进行分层,生成一系列规模逐层变小的子网络图$ {G}_{0}, {G}_{1}, \cdots, {G}_{n} $,其中$ {G}_{0}=G $

在网络分层算法中包含边缘折叠和顶点合并两个关键部分。

2.4.1 边缘折叠

边缘折叠是一种可以有效保留顶点间一阶邻近性的算法,如图 2所示,顶点$ {v}_{2} $与顶点$ {v}_{1} $相连,且$ {v}_{2} $$ {v}_{1} $不存在于任何一个闭环中,则说明顶点$ {v}_{2} $与顶点$ {v}_{1} $具有较高的一阶邻近性,算法对网络图中具有较高一阶邻近性的顶点进行边缘折叠。如图 2过程a所示,将边($ {v}_{1} $$ {v}_{2} $)折叠,把顶点$ {v}_{1} $和顶点$ {v}_{2} $合并成一个顶点$ {v}_{\mathrm{1, 2}} $。利用边缘折叠方法可以将网络图中具有一阶邻近性的顶点进行合并,合并后的子网络图很好地保留了原始网络图中顶点间的一阶邻近性。

Download:
图 2 网络图分层算法示例 Fig. 2 Example of network graph layering algorithm
2.4.2 顶点合并

在现实世界的网络图中,有大量的顶点无法通过边缘折叠算法进行合并,但这些顶点间可能存在大量的共同邻居,即具有较高的二阶邻近性。本文用顶点合并方法对这些具有较高二阶邻近性的顶点进行合并,不仅可以有效地缩小网络图的规模,还可以保留原始网络图中顶点间的二阶邻近性。如图 2过程b所示,在网络图中,顶点$ {v}_{\mathrm{1, 2}} $$ {v}_{\mathrm{6, 7}} $都具有共同邻居$ {v}_{3} $$ {v}_{4} $$ {v}_{5} $,它们具有较高的二阶邻近性,则可以利用顶点合并方法将它们合并成一个顶点$ {v}_{\mathrm{1, 2}, \mathrm{6, 7}} $

2.4.3 网络图分层算法NetLay

网络图分层算法对每一层网络图先进行边缘折叠,再进行顶点合并,直至生成规模小于所设定的阈值的子网络图(本文设定阈值为顶点数小于原始网络图中顶点数的1/2),网络图分层算法如下:

算法1  网络图分层算法NetLay

输入  网络图$ G=(V, E) $

输出  规模逐层变小的子网络图$ {G}_{0}, {G}_{1}, \cdots, {G}_{n} $

1.$ \mathrm{n}=0 $

2.$ {\mathrm{G}}_{0}=\mathrm{G} $

3.while $ \left|{\mathrm{V}}_{\mathrm{n}}\right|\ge \mathrm{t}\mathrm{h}\mathrm{r}\mathrm{e}\mathrm{s}\mathrm{h}\mathrm{o}\mathrm{l}\mathrm{d} $

4.$ {\mathrm{G}}_{\mathrm{n}} $ = Edge Collapsing($ {\mathrm{G}}_{\mathrm{n}} $

5.$ {\mathrm{G}}_{\mathrm{n}+1} $= Vertex Merging($ {\mathrm{G}}_{\mathrm{n}} $

6.$ \mathrm{n}=\mathrm{n}+1 $

7.return $ {\mathrm{G}}_{0}, {\mathrm{G}}_{1}, \cdots, {\mathrm{G}}_{\mathrm{n}} $

由于边缘折叠算法保留了原始图的一阶邻近性,顶点合并算法保留了原始图的二阶邻近性,因此分层后的网络图与原始网络图具有相似的结构特性,很好地保留了原始图的局部结构,且与原始图相比,规模减小了很多,所以更易于映射到低维向量空间。

网络分层算法对不易显现的高阶邻近性进行降阶,有效地保留了原始网络图的高阶结构特性。如图 3所示(以三阶邻近性为例),在左侧网络图中,$ {v}_{3} $$ {v}_{4} $具有三阶邻近性,且由图中可以看出$ {v}_{3} $$ {v}_{4} $具有较高的结构相似性。根据上述网络分层算法,对左侧网络图进行边缘折叠以及顶点合并,得到右侧子网络图。可见,由于将$ {v}_{1} $$ {v}_{2} $合并为一个顶点$ {v}_{1,2} $,因此$ {v}_{3} $$ {v}_{4} $间的三阶邻近性降阶为二阶邻近性,且仍保留相似的结构特性。

Download:
图 3 网络图分层示例 Fig. 3 Example of network graph layering
2.5 EmbedGAN网络框架

对网络进行分层后,递归地用生成式对抗网络EmbedGAN处理每一层网络图。EmbedGAN框架由生成器$ G\left(v\right|{v}_{c};{\theta }_{G}) $和鉴别器$ D(v, {v}_{c};{\theta }_{D}) $两部分组成。

对于给定的一个顶点$ {v}_{c} $,条件概率$ {p}_{\mathrm{t}\mathrm{r}\mathrm{u}\mathrm{e}}\left(v\right|{v}_{c}) $表示顶点$ {v}_{c} $的真实的连通性分布。生成器G通过有偏差的随机游走[16]方法抽取节点,并设置两个偏置系数来控制随机游走的方式,试图生成尽可能相似于$ {v}_{c} $的真实的直接邻居$ v $,来拟合$ {v}_{c} $的真实的连通性分布$ {p}_{\mathrm{t}\mathrm{r}\mathrm{u}\mathrm{e}}\left(v\right|{v}_{c}) $。鉴别器则尽可能地区分这些顶点是与$ {v}_{c} $真实相连的顶点还是由生成器生成的顶点。生成器和鉴别器类似于在做一个关于价值函数$ V(G, D) $的最大最小值游戏,通过交替地进行最大化和最小化价值函数$ V(G, D) $来确定生成器和鉴别器的最佳参数,如式(4)所示。在这个竞争中,生成器和鉴别器共同进步,直到鉴别器无法区分生成器生成的分布与真正的连通性分布为止。

$\begin{array}{*{20}{l}} {\mathop {{\rm{min}}}\limits_{{\theta _G}} {\kern 1pt} {\kern 1pt} \mathop {{\rm{max}}}\limits_{{\theta _D}} V(G,D) = }\\ \begin{array}{l} \sum\limits_{c = 1}^V {\left( {{E_{v \sim {p_{{\rm{true}}}}( \cdot \left| {{v_c}} \right.)}}\left[ {{\rm{lb}}{\kern 1pt} D(v,{v_c};{\theta _D})} \right] + } \right.} \\ \left. {{E_{v \sim G( \cdot \left| {{v_c};{\theta _G}} \right.)}}\left[ {{\rm{lb}}(1 - D(v,{v_c};{\theta _D}))} \right]} \right) \end{array} \end{array}$ (4)
2.5.1 鉴别器优化

本文将鉴别器$ D(v, {v}_{c};{\theta }_{D}) $定义为两个输入顶点的低维向量表示内积的sigmoid函数,如式(5)所示:

$ D(v,{v_c}) = \sigma \left( {\mathit{\boldsymbol{d}}_v^{\rm{T}}{\mathit{\boldsymbol{d}}_{vc}}} \right) = \frac{1}{{1 + {\rm{exp}}( - \mathit{\boldsymbol{d}}_v^{\rm{T}}{\mathit{\boldsymbol{d}}_{vc}})}} $ (5)

其中,$ {\mathit{\boldsymbol{d}}}_{v} $$ {\mathit{\boldsymbol{d}}}_{vc} $是鉴别器低维向量表示矩阵中顶点$ v $$ {v}_{c} $对应的低维向量表示。当输入为由生成器生成的负样本和真实存在的正样本时,鉴别器根据sigmoid函数求得源节点$ {v}_{c} $和邻居节点$ v $之间存在边缘的概率,并为所有正负样本分配标签,再与真实标签进行对比。根据对比结果,使用梯度下降法来更新顶点$ v $$ {v}_{c} $的低维向量表示$ {\mathit{\boldsymbol{d}}}_{v} $$ {\mathit{\boldsymbol{d}}}_{vc} $,使鉴别器为正负样本分配正确标签的概率最大化。

在随机梯度下降的过程中,算法设置的学习速率会随着迭代次数的增加而递减,当梯度较大时,学习速率也相对较大,使求解更迅速。当梯度慢慢下降时,学习速率也随之减小,使梯度下降过程更稳定,如式(6)所示:

${\nabla _{{\theta _D}}}V\left( {G,D} \right) = \left\{ {\begin{array}{*{20}{l}} {{\nabla _{{\theta _D}}}{\rm{lb}}{\kern 1pt} {\kern 1pt} D(v,{v_c}),{\kern 1pt} {\kern 1pt} {\kern 1pt} v \sim {p_{{\rm{true}}}}}\\ {{\nabla _{{\theta _D}}}(1 - {\rm{lb}}{\kern 1pt} {\kern 1pt} D(v,{v_c})),{\kern 1pt} {\kern 1pt} {\kern 1pt} v \sim G} \end{array}} \right.$ (6)
2.5.2 生成器优化

生成器尽可能地采样近似于真实连通性分布的负样本,使鉴别器为正负样本正确分配标签的概率最小化。由于生成器的采样是离散的,因此$ V(G, D) $关于$ {\theta }_{G} $的梯度计算如式(7)所示,生成器根据鉴别器反馈的信息,利用梯度下降法更新生成器低维向量表示矩阵。

$\begin{array}{*{20}{l}} {{\nabla _{{\theta _G}}}V\left( {G,D} \right) = {\nabla _{{\theta _G}}}\sum\limits_{c = 1}^V {{E_{v \sim G( \cdot |{v_c})}}} \left[ {{\rm{lb}}(1 - D(v,{v_c}))} \right] = }\\ {\sum\limits_{c = 1}^V {\sum\limits_{i = 1}^N {{\nabla _{{\theta _G}}}} } G({v_i}|{v_c}){\rm{lb}}(1 - D({v_i},{v_c})) = }\\ {\sum\limits_{c = 1}^V {{E_{v \sim G( \cdot |{v_c})}}} \left[ {{\nabla _{{\theta _G}}}{\rm{lb}}{\kern 1pt} {\kern 1pt} G(v|{v_c}){\rm{lb}}(1 - D(v,{v_c}))} \right] = }\\ {\sum\limits_{c = 1}^V {\sum\limits_{i = 1}^N G } ({v_i}|{v_c}){\nabla _{{\theta _G}}}{\rm{lb}}{\kern 1pt} {\kern 1pt} G({v_i}|{v_c}){\rm{lb}}(1 - D({v_i},{v_c}))} \end{array}$ (7)
2.5.3 生成器采样方法

生成器采用步长为l的有偏差的随机游走方式对负样本进行采样。假设源节点为$ {v}_{c} $,当前节点为$ v $,上一跳节点为t,则需要决定下一跳节点x。定义$ N\left(v\right) $为顶点$ v $的直接邻居的集合(即图中所有与$ v $直接相连的顶点),$ v $与它的邻居$ {v}_{i}\in N\left(v\right) $的转移概率定义如式(8)所示:

${p_v}\left( {{v_i}|v} \right) = \frac{{{\rm{exp}}\left( {\mathit{\boldsymbol{g}}_{{v_i}}^{\rm{T}}{\mathit{\boldsymbol{g}}_v}} \right)}}{{\sum\limits_{{v_j} \in N\left( v \right)} {\rm{e}} {\rm{xp}}\left( {\mathit{\boldsymbol{g}}_{{v_j}}^{\rm{T}}{\mathit{\boldsymbol{g}}_v}} \right)}}$ (8)

其中,$ {\mathit{\boldsymbol{g}}}_{{v}_{i}} $$ {\mathit{\boldsymbol{g}}}_{v} $是顶点$ {v}_{i} $$ v $相对于生成器的k维向量表示。

在每一步游走时,根据式(8)计算出当前节点$ v $与其邻居节点的转移概率$ {p}_{v}\left({v}_{i}|v\right) $。再用随机游走的偏差系数$ \alpha $对转移概率$ {p}_{v}\left({v}_{i}|v\right) $进行加权处理,得出非标准化的转移概率$ {w}_{v}\left({v}_{i}|v\right)=\alpha \left(t, {v}_{i}\right)·{p}_{v}\left({v}_{i}|v\right) $,根据非标准化转移概率,抽取随机游走的下一跳节点。

$ \alpha \left(t, {v}_{i}\right) $设置如式(9)所示:

$ \alpha \left(t, {v}_{i}\right)=\left\{\begin{array}{l}\frac{1}{p}, {d}_{t{v}_{i}}=0\\ 1, {d}_{t{v}_{i}}=1\\ \frac{1}{q}, {d}_{t{v}_{i}}=2\end{array}\right. $ (9)

其中,$ {d}_{t{v}_{i}} $表示节点t$ {v}_{i} $之间的最短路径距离,参数pq控制游走过程中离开源节点$ {v}_{c} $的邻域的速度,使游走的形式可以在宽度优先搜索和深度优先搜索之间转换。

参数p负责控制向前回溯的概率。如图 4所示,当参数p设置为一个较高的值$ \left(\mathrm{大}\mathrm{于}\mathrm{m}\mathrm{a}\mathrm{x}\right(q, 1\left)\right) $时,则使下一跳节点重新遍历已遍历过的顶点的概率变小。反之,当p设置为一个较低的值$ \left(\mathrm{小}\mathrm{于}\mathrm{m}\mathrm{i}\mathrm{n}\right(q, 1\left)\right) $时,向前回溯到顶点t的概率变大。

Download:
图 4 随机游走中偏差系数的设置 Fig. 4 Setting of deviation coefficient in random walk

参数q负责控制下一跳节点是否靠近上一跳节点t。如图 4所示,当参数$ q>1 $时,随机游走方式类似于宽度优先搜索,倾向于访问与上一跳节点t相连的顶点。当参数$ q<1 $时,随机游走方式则类似于深度优先搜索,倾向访问远离上一跳节点t的顶点。

通过改变参数pq的大小,可以控制随机游走的方式。这样,抽取的节点就并不是一味地远离给定的源节点$ {v}_{c} $,从而提高采样效率。

当得到非标准化转移概率$ {w}_{v}\left({v}_{i}|v\right) $后,再利用Alias Method[17]选取一个节点作为下一跳节点x。当游走的步长达到设置的长度l时,当前节点$ v $就被抽取为负样本顶点,生成器的采样策略如算法2所示。

算法2  生成器采样策略

输入  网络图$ G=(V, E) $,图中顶点的向量表示$ {\left\{{\mathit{\boldsymbol{g}}}_{i}\right\}}_{i\in V} $,步长l,偏差参数pq,顶点间的距离信息d,源节点$ {v}_{c} $

输出  抽取出节点$ {v}_{\mathrm{g}\mathrm{e}\mathrm{n}} $

1.$ \mathrm{t}={\mathrm{v}}_{\mathrm{c}} $$ \mathrm{v}={\mathrm{v}}_{\mathrm{c}} $

2.for j in range(l):

3.for $ {\mathrm{v}}_{\mathrm{i}} $ in $ \mathrm{N}\left(\mathrm{v}\right) $

4.calculate relevance probability $ {\mathrm{p}}_{\mathrm{v}}\left({\mathrm{v}}_{\mathrm{i}}|\mathrm{v}\right) $ according to Eq.(5)

5.if $ {\mathrm{d}}_{\mathrm{t}{\mathrm{v}}_{\mathrm{i}}}=0 $

6.$ {\mathrm{w}}_{\mathrm{v}}\left({\mathrm{v}}_{\mathrm{i}}|\mathrm{v}\right)=\frac{1}{\mathrm{p}}·{\mathrm{p}}_{\mathrm{v}}\left({\mathrm{v}}_{\mathrm{i}}|\mathrm{v}\right) $

7.elif $ {\mathrm{d}}_{\mathrm{t}{\mathrm{v}}_{\mathrm{i}}}=2 $

8.$ {\mathrm{w}}_{\mathrm{v}}\left({\mathrm{v}}_{\mathrm{i}}|\mathrm{v}\right)=\frac{1}{\mathrm{q}}·{\mathrm{p}}_{\mathrm{v}}\left({\mathrm{v}}_{\mathrm{i}}|\mathrm{v}\right) $

9.else:

10.$ {\mathrm{w}}_{\mathrm{v}}\left({\mathrm{v}}_{\mathrm{i}}|\mathrm{v}\right)={\mathrm{p}}_{\mathrm{v}}\left({\mathrm{v}}_{\mathrm{i}}|\mathrm{v}\right) $

11.select x with Alias Method

12.$ \mathrm{t}=\mathrm{v} $$ \mathrm{v}=\mathrm{x} $

13.$ {\mathrm{v}}_{\mathrm{g}\mathrm{e}\mathrm{n}}=\mathrm{x} $

14.return $ {\mathrm{v}}_{\mathrm{g}\mathrm{e}\mathrm{n}} $

从源节点$ {v}_{c} $到抽取的顶点$ {v}_{\mathrm{g}\mathrm{e}\mathrm{n}} $之间的路径为$ {P}_{{v}_{c}\to {v}_{\mathrm{g}\mathrm{e}\mathrm{n}}}=({v}_{{r}_{0}}, {v}_{{r}_{1}}, \cdots, {v}_{{r}_{m}}) $,其中,$ {v}_{{r}_{0}}={v}_{c} $$ {v}_{{r}_{m}}={v}_{\mathrm{g}\mathrm{e}\mathrm{n}} $,则连通性$ G\left(v\right|{v}_{c};{\theta }_{G}) $定义如式(10)所示:

$G\left( {v|{v_c}} \right) \buildrel \Delta \over = \left( {\prod\limits_{j = 1}^m p ({v_{{r_j}}}|{v_{{r_{j - 1}}}})} \right)$ (10)
2.5.4 EmbedGAN算法

EmbedGAN算法框架如图 5所示,EmbedGAN算法模型是将输入向量作为生成器和鉴别器的初始向量表示矩阵。每次迭代,生成器为每个源节点生成一定数量的负样本,并抽取等量的正样本交给鉴别器进行训练,见图 5中的①。鉴别器根据自身低维向量表示,对正负样本分配标签,并与真实标签进行对比得到误差。再利用随机梯度下降方法更新自身低维向量表示以最小化误差,见图 5中的②。鉴别器将误差信息传递给生成器,生成器根据鉴别器反馈的误差信息对自身低维向量表示进行更新。生成器与鉴别器在对抗中不断更新自身低维向量表示,直到鉴别器无法区分正负样本为止,生成器的低维向量表示就是最终输出的网络图顶点的低维向量表示,见图 5中的③。

Download:
图 5 EmbedGAN算法框架 Fig. 5 EmbedGAN algorithm framework

利用生成式对抗网络EmbedGAN生成网络图中顶点的低维向量表示算法,如算法3所示。

算法3  EmbedGAN算法

输入  网络图$ G=(V, E) $,图中顶点的初始向量表示$ {\left\{{\mathit{\boldsymbol{g}}}_{i}\right\}}_{i\in V} $,步长l,偏差参数pq,顶点间的距离信息d

输出  网络图G中顶点的低维向量表示EG

1.pre-train $ \mathrm{G}\left(\mathrm{v}\right|{\mathrm{v}}_{\mathrm{c}};{\mathrm{\theta }}_{\mathrm{G}}) $ and $ \mathrm{D}(\mathrm{v}, {\mathrm{v}}_{\mathrm{c}};{\mathrm{\theta }}_{\mathrm{D}}) $

2.while EmbedGAN no converge:

3.for G-steps:

4.$ \mathrm{G}\left(\mathrm{v}\right|{\mathrm{v}}_{\mathrm{c}};{\mathrm{\theta }}_{\mathrm{G}}) $ generates s vertices for each vertex $ {\mathrm{v}}_{\mathrm{c}} $according to Algorithm 2

5.update $ {\mathrm{\theta }}_{\mathrm{G}} $ according to Eq.(7),Eq.(8),Eq.(10)

6.update $ {\left\{{\mathrm{g}}_{\mathrm{i}}\right\}}_{\mathrm{i}\in \mathrm{V}} $

7.for D-steps:

8.sample t positive vertices from ground truth and t negative vertices from $ \mathrm{G}\left(\mathrm{v}\right|{\mathrm{v}}_{\mathrm{c}};{\mathrm{\theta }}_{\mathrm{G}}) $ for each vertex $ {\mathrm{v}}_{\mathrm{c}} $

9.update $ {\mathrm{\theta }}_{\mathrm{D}} $ according to Eq.(5)and Eq.(6)

10.update $ {\left\{{\mathrm{d}}_{\mathrm{i}}\right\}}_{\mathrm{i}\in \mathrm{V}} $

11.return $ {\left\{{\mathrm{g}}_{\mathrm{i}}\right\}}_{\mathrm{i}\in \mathrm{V}} $$ {\left\{{\mathrm{d}}_{\mathrm{i}}\right\}}_{\mathrm{i}\in \mathrm{V}} $

2.6 GAHNRL算法

本文GAHNRL算法流程如下:

1)根据算法1中网络图分层算法对原始网络图G进行分层,生成一系列规模逐层减小的子网络图$ {G}_{0}, {G}_{1}, \cdots, {G}_{n} $,其中$ {G}_{0}=G $

2)利用Node2vec算法对规模最小的子网络图$ {G}_{n} $进行预处理,生成该层子网络图中顶点的初始向量表示。

3)从$ {G}_{n} $开始,递归地将每层子网络图以及图中顶点的初始向量表示输入至生成式对抗网络中进行训练。

4)利用算法3中EmbedGAN算法学习得到$ {G}_{n} $中顶点的低维向量表示,并将学习到的低维向量表示作为上一层子网络图$ {G}_{n-1} $的初始向量表示,递归地进行回溯学习,直到学习至初始网络图$ {G}_{0} $为止,最终得到所有顶点的低维向量表示$ {\mathit{\boldsymbol{E}}}_{{G}_{0}} $

5)根据$ {\mathit{\boldsymbol{E}}}_{{G}_{0}} $计算出顶点间的相似性,预测两个节点间是否存在边缘。

GAHNRL算法框架如算法4所示。

算法4  GAHNRL算法

输入  网络图$ G=(V, E) $,步长l,偏差参数pq,顶点间的距离信息d

输出  网络图G中顶点的低维向量表示$ {\mathit{\boldsymbol{E}}}_{{G}_{0}} $

1.$ {\mathrm{G}}_{0} $= $ \mathrm{G} $

2.for j in range(1,n)

3.$ {\mathrm{G}}_{\mathrm{j}} $ = NetLay($ {\mathrm{G}}_{\mathrm{j}-1} $

4.$ {\rm{init}}{\mathrm{E}}_{{\mathrm{G}}_{\mathrm{n}}} $= Node2vec($ {\mathrm{G}}_{\mathrm{n}} $

5.$ {\mathrm{E}}_{{\mathrm{G}}_{\mathrm{n}}} $= EmbedGAN($ {\mathrm{G}}_{\mathrm{n}} $$ {\rm{init}}{\mathrm{E}}_{{\mathrm{G}}_{\mathrm{n}}} $

6.for i = n–1 to 0

7.$ {\rm{init}}{\mathrm{E}}_{{\mathrm{G}}_{\mathrm{i}}} $=$ {\mathrm{E}}_{{\mathrm{G}}_{\mathrm{i}+1}} $

8.$ {\mathrm{E}}_{{\mathrm{G}}_{\mathrm{i}}} $= EmbedGAN($ {\mathrm{G}}_{\mathrm{i}} $$ {\rm{init}}{\mathrm{E}}_{{\mathrm{G}}_{\mathrm{i}}} $

9.return $ {\mathrm{E}}_{{\mathrm{G}}_{0}} $

3 实验结果与分析 3.1 实验数据集

本文选择了4个不同领域中具有代表性的真实网络数据集,其中包括社交网络Facebook[18]、Wiki-Vote[19]、合作网络CA-GrQc[20]及细胞代谢网络Metabolic[21]。4个数据集均忽略各边的权重与方向,详细信息如表 1所示,其中,N表示节点数,E表示边数。

下载CSV 表 1 网络数据集信息 Table 1 Information of networks datasets
3.2 评价标准

本文实验在原始网络图中随机抽取10%的边缘作为正样本加入测试集,90%作为训练集,在随机生成与测试集中正样本数量相同的边作为负样本加入测试集。

本文采用准确率(Precision)和AUC指标来评价本文算法链路预测任务上的性能,准确率和AUC指标是链路预测任务中最常用的两种评价指标。

Precision是在测试集中L个预测边被准确预测是否存在链接的比例。假如测试集中有L个正样本和L个负样本,根据算法计算每个样本中顶点对间可能存在链接的概率,并按从大到小排列,若排在前L个的样本中,有m个正样本,则Precision定义为m/L

AUC是在测试集中随机抽取一个正样本和一个负样本,即正样本分数高于负样本分数的概率。在n次独立重复的实验中,有n1次正样本分数高于负样本分数,有n2次正样本分数等于负样本分数,则AUC的定义为:

$ \mathrm{A}\mathrm{U}\mathrm{C}=\frac{{n}_{1}+0.5\times {n}_{2}}{n} $ (11)
3.3 实验设置

在本文算法中,步长l设置为10,针对不同的参数pq设置在4组数据集上进行实验。在Metabolic数据集上的准确率如表 2所示,在Facebook数据集上的准确率如表 3所示,在Wiki-Vote数据集上的准确率如表 4所示,在CA-GrQc数据集上的准确率如表 5所示。由表 2~表 4可知,在Metabolic、Facebook、Wiki-Vote 3个数据集上,当参数p设置为1.5,参数q设置为1时,实验效果最好(见粗体)。在CA-GrQc数据集上,当参数p设置为1,参数q设置为1时,实验效果最好,但是当参数p设置为1.5,参数q设置为1时,实验效果与最佳结果相差不大,所以本文对所有数据集均将参数p设置为1.5,参数q设置为1。

下载CSV 表 2 在Metabolic数据集上不同参数设置的实验结果 Table 2 Experimental results for different parameter settings on Metabolic dataset
下载CSV 表 3 在Facebook数据集上不同参数设置的实验结果 Table 3 Experimental results for different parameter settings on Facebook dataset
下载CSV 表 4 在Wiki-Vote数据集上不同参数设置的实验结果 Table 4 Experimental results for different parameter settings on Wiki-Vote dataset
下载CSV 表 5 在CA-GrQc数据集上不同参数设置的实验结果 Table 5 Experimental results for different parameter settings on CA-GrQc dataset
3.4 结果分析

为证明实验的稳定性和准确性,本文进行了10次重复实验,并将10次实验结果的平均值作为最终的结果。本节介绍了3种传统算法和4种网络表示学习算法与本文算法在相同条件下链路预测准确率和AUC的对比,准确率如表 6所示,AUC如表 7所示(其中前两个最优值用粗体突出显示)。

下载CSV 表 6 不同算法准确率对比结果 Table 6 Comparison results of different algorithms accuracy
下载CSV 表 7 不同算法AUC对比结果 Table 7 Comparison results of different algorithms AUC

表 6表 7中,传统算法包括LP、Katz和AA,网络表示学习算法包括LINE、DeepWalk、Node2vec和GraphGAN。

表 6表 7中可以看出:

1)本文GAHNRL算法在4个数据集上的准确率和AUC值均优于4种网络表示学习算法和传统Katz算法。

2)与传统LP算法相比,除Wiki-Vote数据集外,本文算法在其他3个数据集上的准确率和AUC值均优于LP算法。

3)与传统AA算法相比,本文算法在GA-GrQc数据集和Metabolic数据集上准确率和AUC值优于AA算法,在Facebook数据集上AUC值优于AA算法。

传统算法是采用one-hot的形式表示网络顶点的邻接矩阵,计算成本较大且无法保留网络图的高阶结构特性。当训练集中的样本数减少时,传统算法无法保持算法的稳定性,准确率明显降低。而本文算法对网络图进行分层处理,更好地保留原始网络图的高阶结构特性,因此在训练集样本很少的情况下具有较好的稳定性。本文算法与传统算法在样本数减少的情况下准确率变化如图 6所示。

Download:
图 6 不同数据集上准确率变化结果 Fig. 6 Results of accuracy changes on different datasets

实验按照10%~90%划分成训练集,分别测试在不同训练集比率下准确率的变化。通过观察图 6可知,由于AA算法采取one-hot的形式表示网络的邻近关系,因此在网络规模较小,且已知的可训练的边缘充足时,在Facebook数据集和Wiki-Vote数据集中,训练集比率为40%~90%时优于GAHNRL,但是当训练集比率为10%~30%时,网络中可用于训练的已知边缘减少,AA算法的准确率明显下降,但GAHNRL算法能保持较好的稳定性。如图 7所示,由于AA算法采用one-hot形式,占用内存较多,而GAHNRL算法采用低维向量来表示邻接矩阵,内存占用率明显小于AA算法。从整体来看,GAHNRL算法波动较小,性能更优。

Download:
图 7 AA算法和GAHNRL算法的内存占用率 Fig. 7 Memory usage of AA algorithm and GAHNPL algorithm
4 结束语

链路预测作为复杂网络分析的重要研究方向,具有较强的应用前景。本文提出一种生成式对抗分层网络表示学习的链路预测算法。该算法保留原始网络图的局部特性与高阶结构特性,将生成式对抗网络模型运用到网络表示学习中以达到更好的效果,通过对网络图进行分层,将下一层子网络图学习获得的向量表示作为上层网络图的初始向量表示进行迭代求解,解决随机初始化可能产生的局部最小值的问题。实验结果表明,与LP、Katz等算法相比,该算法性能更加稳定。下一步将针对异构网络和动态网络对算法进行优化,并加入标签及节点属性信息,使算法具有更广的应用场景。

参考文献
[1]
SPOMA O. The human connectome:a complex network[J]. Annals of the New York Academy of Sciences, 2012, 1224(1): 109-125.
[2]
YIN Guisheng, YIN Wansi, DONG Yuxin.A new link prediction algorithm: node link strength algorithm[C]//Proceedings of 2014 IEEE Symposium on Computer Applications and Communications.Washington D.C., USA: IEEE Press, 2014: 5-9. https://www.researchgate.net/publication/286668799_A_New_Link_Prediction_Algorithm_Node_Link_Strength_Algorithm
[3]
LLBEN-NOWELL D, KLEINBERG J. The link prediction problem for social networks[J]. Journal of the American Society for Information Science and Technology, 2003, 58(7): 1019-1031.
[4]
LU Linyuan, ZHOU Tao. Link prediction in complex networks:a survey[J]. Physica A:Statistical Mechanics & Its Applications, 2010, 390(6): 1150-1170.
[5]
CHEN Bolun, CHEN Ling, LI Bin. A fast algorithm for predicting links to nodes of interest[J]. Information Sciences, 2016, 329(1): 552-567.
[6]
FUJIWARA Y, NAKATSJUI M, SHIOKAWA H.Efficient search algorithm for SimRank[C]//Proceedings of IEEE International Conference on Data Engineering.Washington D.C., USA: IEEE Press, 2013: 589-600. https://www.researchgate.net/publication/261345353_Efficient_search_algorithm_for_SimRank
[7]
BEHNAZ M, MOHAMMAD R M. Link prediction based on temporal similarity metrics using continuous action set learning automata[J]. Physica A:Statistical Mechanics and Its Applications, 2016, 460(1): 361-373.
[8]
ZHANG Daokun, YIN Jie, ZHU Xingquan, et al. Network representation learning:a survey[J]. IEEE Transactions on Big Data, 2018, 1(1): 1-25.
[9]
PEROZZI B, Al-RFOU R, SKIENA S.DeepWalk: online learning of social representations[C]//Proceedings of the 20th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining.New York, USA: ACM Press, 2014: 701-710. 10.1145/2623330.2623732
[10]
GOLDBERG Y, LEVY O.Word2vec explained: deriving Mikolovet al.'s negative-sampling word-embedding method[EB/OL].[2019-11-10].https://arxiv.org/abs/1402.3722.
[11]
TANG Jian, QU Meng, WANG Mingzhe, et al.LINE: large-scale information network embedding[C]//Proceedings of the 24th International Conference on World Wide Web.Washington D.C., USA: IEEE Press, 2015: 1067-1077. https://www.researchgate.net/publication/273471480_LINE_Large-scale_Information_Network_Embedding
[12]
GROVER A, LESKOVEC J.Node2vec: scalable feature learning for networks[C]//Proceedings of KDD'16.New York, USA: ACM Press, 2016: 1-10. https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5108654/
[13]
KURANT M, MARKOPOULOU A, THIRAN P. Towards unbiased BFS sampling[J]. IEEE Journal on Selected Areas in Communications, 2011, 29(9): 1799-1809. DOI:10.1109/JSAC.2011.111005
[14]
ZHANG Tao, LI Hui, HONG Wenxue, et al. Deep first formal concept search[J]. The Scientific World Journal, 2014(8): 1-13.
[15]
WANG Hongwen, WANG Jia, WANG Jianlin, et al. GraphGAN:graph representation learning with generative adversarial nets[J]. IEEE Transactions on Knowledge and Data Engineering, 2018, 1(1): 1-8.
[16]
CODLING E A, BEARON R N, THOM G J. Diffusion about the mean drift location in a biased random walk[J]. Ecology, 2010, 91(10): 3106-3113. DOI:10.1890/09-1729.1
[17]
KRONMAL R A, PETERSON A V. On the alias method for generating random variables from a discrete distribution[J]. American Statistician, 1979, 33(4): 214-218.
[18]
MCAULEY J J, LESKOVEC J.Learning to discover social circles in ego networks[C]//Proceedings of IEEE International Conference on Neural Information Processing Systems.Washington D.C., USA: IEEE Press, 2012: 1-9. https://www.researchgate.net/publication/283598027_Learning_to_discover_social_circles_in_ego_networks
[19]
LESKOVEC J, HUTTENLOCHER D, KLEINBERG J.Predicting positive and negative links in online social networks[EB/OL].[2019-11-10].https://www.oalib.com/paper/4079408.
[20]
LESKOVEC J, KLEINBERG J, FALOUITSOS C. Graph evolution:densification and shrinking diameters[J]. ACM Transactions on Knowledge Discovery from Data, 2006, 1(1): 1-42.
[21]
ROGER G, LUIS A N A. Functional cartography of complex metabolic networks[J]. Nature, 2005, 433(7028): 895-900. DOI:10.1038/nature03288