题目:node2vec:网络的可拓展特征学习
会议:KDD2016
论文地址:node2vec: Scalable Feature Learning for Networks
本文将解读斯坦福大学的Aditya Grover和Jure Leskovec在KDD2016上发表的论文《Scalable Feature Learning for Networks》。该论文提出了一种高效的网络的可拓展特征学习方法–node2vec。本篇论文是北邮计算机学院大数据组2021年夏令营的考核论文,考核方式为:面试前一天告知论文名称,一天准备时间,面试中考察基本理论和实验。
本文实验很多,所以全文略长。
网络中节点和边的预测任务都需要一个好的特征工程工作。 目前的特征学习方法不足以表达网络中观察到的连接模式的多样性。
因此,本文提出了node2vec方法:一种用于学习网络中节点的连续特征表示的算法框架。在node2vec 中,可以学习到节点到低维特征空间的映射,以最大化保留节点网络邻域的可能性。
node2vec的核心在于定义了一个节点网络邻域的灵活概念,并设计了一个有偏差的随机游走过程,这有效地探索了不同的邻域。
网络分析中许多重要的任务都涉及到了对节点和边的预测。
在一个节点分类任务中,我们可以预测该网络中某个节点最有可能的标签。比如在社交网络中,我们可以预测某个用户可能感兴趣的对象;又或者在蛋白质-蛋白质网络中,我们可以预测蛋白质的功能标签。
如果是链接(边)预测,我们可以预测网络中两个节点是否应该相连。比如社交网络中预测两个用户是否是朋友关系。
显然,任何有监督的机器学习算法都需要一组特征。在网络预测问题中,这意味着我们需要为节点和边构造一个特征向量表示。 典型的方法是基于专家知识来手动构造,但显然这是没法在不同的预测任务中推广的。
另一种方法是通过解决一个优化问题来实现特征表示。然而,目前的技术无法很好地定义和优化一个合理的目标来实现网络中可伸缩的无监督特征学习。
经典方法如线性和非线性降维技术,有很大局限性:
PCA的数学过程可以参考:降维基础知识(样本均值、样本方差、中心矩阵)与PCA(最大投影方差,最小重构代价,SVD分解)
除了传统的方法,我们还可以设计一个优化目标,以寻求保存节点的局部邻域,该目标可以通过SGD来进行优化。但这种方式依赖于一个严格的网络邻域概念,这导致这些方法在很大程度上对网络特有的连接模式不敏感。具体来说,网络中的节点可以根据其所属的社区进行组织(即同质性);在其他情况下,可以基于网络中节点的结构角色进行组织。
比如在图1中:节点 u u u和 s 1 s_1 s1属于同一个紧密结合的节点社区,而节点 u u u和 s 6 s_6 s6在两个不同的社区中都扮演着中枢节点的角色。
本文的主要贡献是定义了一个灵活的节点网络邻域概念。通过一个有偏随机游走来有效地探索给定节点的不同社区,然后返回一个游走序列。
算法是灵活的,可以通过可调参数控制搜索空间,而不是像之前的方法那样死板。
搜索什么?我们需要学到一个节点的特征向量表示,在此之前,我们首先要找到该节点的邻域节点,这些节点可以通过某种方法来生成,而这也是本文的重点。
有了节点的特征表示后,通过将两个节点的特征表示进行某种组合,就能这对节点的特征表示,也就是边的特征表示,进而就能进行边的预测。
本文的实验部分主要进行了在网络中两个比较常见的预测任务:
总结本文贡献:
这一节简单回顾了网络特征学习的相关工作。
无监督特征学习方法通常利用图的各种矩阵表示的性质,特别是拉普拉斯矩阵和邻接矩阵来进行特征学习。这点有在前文中提到,计算代价很大,并且效果也不是很好。
nlp中表示学习的最新进展为词汇等离散对象的特征学习开辟了新途径。Skip-gram模型旨在通过优化邻域保持似然目标来学习单词的连续特征表示。
skip-gram可以参考:论文阅读:Efficient Estimation of Word Representations in Vector Space
对于基于节点和基于边的预测任务,最近也有很多新的工作,这些体系结构使用多层非线性转换直接最小化下游预测任务的损失函数,从而获得较高的精度,但由于训练时间要求高,可扩展性不强。
于是必须提出一种新的方法!!
这部分介绍node2vec的细节。
将网络中的特征学习定义为一个最大似然优化问题。 G = ( V , E ) G=(V,E) G=(V,E)表示网络。 f : V → R d f:V \to R^d f:V→Rd表示节点到其特征表示的映射函数, d d d是特征表示的维度, f f f是一个大小为 ∣ V ∣ × d |V| \times d ∣V∣×d的矩阵, ∣ V ∣ |V| ∣V∣是节点个数,也就是说每个节点的特征表示都是一个 d d d维的向量。
对每一个节点 u u u,定义 N s ( u ) N_s(u) Ns(u)是通过邻域抽样策略 S S S生成的节点 u u u的网络邻域, N s ( u ) N_s(u) Ns(u)是原始图中结点集 V V V的子集。
将nlp中的skim-gram架构扩展到网络学习中:优化以下目标函数(使一个节点u根据其特征表示( f f f)观察到网络邻域 N s ( u ) N_s(u) Ns(u)的对数概率最大化)
P r ( N s ( u ) ∣ f ( u ) ) P_r(N_s(u)|f(u)) Pr(Ns(u)∣f(u))表示根据一个节点的特征表示来观察其邻域的对数概率。最大化该概率的意义是什么?个人理解:经过 f f f的映射后可以很好地保持各个节点间的邻居概念。
为了使上述优化问题易于处理,作者给出了两点假设:
在上述两个假设下,公式1中的优化问题可以简化为:
其中 Z u Z_u Zu的表达式如下所示:
Z u = ∑ v ∈ V e x p ( f ( u ) ⋅ f ( v ) ) Z_u=\sum_{v \in V}exp(f(u)\cdot f(v)) Zu=v∈V∑exp(f(u)⋅f(v))
对于大型网络,每个节点的 Z u Z_u Zu的计算代价很高,因此使用负采样来近似它。
那怎么得到 N s ( u ) N_s(u) Ns(u)呢?下面将一一介绍!
对节点的邻域进行采样的经典策略主要包括两种:BFS和DFS,如下所示:
给定一个源节点 u u u,我们的任务是找到它的邻域节点集合 N s ( u ) N_s(u) Ns(u),假设我们需要采样 k k k个节点。
根据同质性假设,属于相似网络集群的高度互联节点应该嵌入到一起,比如上图中的 u u u和 s 1 s_1 s1,它们就属于同一网络集群。
而根据结构等价假设,在网络中具有相似结构角色的节点应该嵌入到一起,比如上图中的 u u u和 s 6 s_6 s6,虽然属于不同网络集群,但是它们都是相应集群的中枢节点,角色类似。
结构等价不同于同质性,它不强调节点间必须互连,它们可能距离很远,这一点很重要。
BFS仅限于与源节点相连的节点,倾向于在初始节点的周围游走,可以反映出一个节点的邻居的微观特性。
而DFS(可以重复访问)一般会跑得离源节点越来越远,可以反映出一个节点邻居的宏观特性。
两种方法的局限都很明显:BFS只能探索图的很小一部分,而DFS移动到更大的深度会导致复杂的依赖关系,因为采样节点可能远离源,并且可能不太具有代表性。
DFS和BFS都有各自的优缺点,于是本文提出了node2vec。下面介绍node2vec的细节。
给定一个源节点 u u u,我们需要获得一个采样序列,序列长度为 l l l。节点由以下分布生成:
其中 c i c_i ci表示第 i i i个采样的节点。可以看出,第 i i i个采样的节点与第 i − 1 i-1 i−1个采样的节点有着密切关系。 π v x \pi_{vx} πvx表示两个节点间的非归一化转移概率, Z Z Z是归一化常数。
简单解释下上述分布: 当第 i i i个节点是 v v v时(初始为 u u u),我们采样下一个节点时,先找出所有与 v v v相连的结点,然后算出 v v v与这些结点间的非归一化转移概率,随后再进行采样。
上图中,对于一个随机游走,如果已经采样了 ( t , v ) (t, v) (t,v) ,也就是说现在停留在节点 v v v上,那么下一个要采样的节点 x x x是哪个?作者定义了一个概率分布,也就是一个节点到它的不同邻居的转移概率:
简单解释一下:
要注意这里 t t t已经被采样了!!
本文提出了返回参数 p p p和出入参数 q q q:参数用于控制随机游走产生的方式。需要说明的是,距离取值只能为 0 , 1 , 2 0,1,2 0,1,2。
其中返回参数 p > m a x ( q , 1 ) p>max(q,1) p>max(q,1)(第二种或者第三种情况),选取下一个点时会尽量不往回走;如果 p < m i n ( q , 1 ) p
出入参数q>1会倾向于在初始节点周围节点之间跑,反映出BFS特性,如果q比较小会往远处跑,表现出DFS特性。
看一下算法的参数:图 G G G、节点特征向量的维度 d d d、每个节点生成的游走个数 r r r,游走长度 l l l,上下文的窗口长度 k k k,以及之前提到的 p 、 q p、q p、q参数。
首先根据 p 、 q p、q p、q和之前的公式计算一个节点到它的邻居的转移概率,此时形成了新的图 G ′ G^{'} G′。
具体的node2vec算法:为某一个节点 u u u生成一个游走序列。描述如下:
node2vec算法可以得到网络中节点的特征向量表示。为了进行链路预测,也就是判断两个节点之间是否相连,我们需要将节点对表示成一个特征向量。具体做法就是在两个节点特征向量的基础上构造一个二元算子,比如平均,相加或者相减:
其中 f ( u ) f(u) f(u)和 f ( v ) f(v) f(v)表示两个节点的特征向量表示。经过上述运算后,就能得到节点对 ( u , v ) (u, v) (u,v)的特征向量表示。注意 u u u和 v v v间可以不存在边。
网络来自于小说《Les Misérables network》中的人物关系。该网络有77个节点和254条边,令 d = 16 d=16 d=16,即我们需要给每个节点找到一个长度为16的特征向量表示。
图3中顶部那副图对应 p = 1 , q = 0.5 p=1,q=0.5 p=1,q=0.5的情况。即 p = 1 , q = 0.5 p=1,q=0.5 p=1,q=0.5时算出每个节点的特征表示,然后根据特征表示进行聚类。在这个设置下,node2vec发现了小说中经常互动的角色集群。
为了发现哪些节点具有相同的结构角色,使用相同的网络,设置 p = 1 , q = 2 p= 1,q= 2 p=1,q=2,使用node2vec获取节点特征,然后根据获得的特征对节点进行聚类,结果如图3底部所示。蓝色节点代表了小说中不同次要情节之间的桥梁,他们具有相似的结构角色。
通过与下面三个特征学习算法对比来评估node2vec的性能:
node2vec的参数设置与DeepWalk和Line的典型值一致: d = 128 , r = 10 , l = 80 , k = 10 d= 128, r= 10,l= 80,k= 10 d=128,r=10,l=80,k=10。
在多标签分类设置中,每个节点被分配一个或更多的标签,任务是预测节点的标签。
有以下三个数据集:
节点特征表示被输入到一个L2正则化的一对一逻辑回归分类器,进而完成分类任务。
实验结果:
表2使用Macro-F1分数来衡量性能。可以看出,node2vec在三个网络的多标签分类中都取得了最好的结果。
上图给出了三个网络中各个模型在不同数据分割情况下的效果:横轴表示标记数据的比例,即测试集的比例。
可以发现:
在图5a上图中,使用50%分割(测试集占一半)来检查参数pq的不同选择如何影响BlogCatalog数据集上的性能。可以发现:node2vec的性能随着出入参数p和返回参数q的减少而提高。 性能的提高可以基于我们期望在BlogCatalog中看到的同质性和结构等效性。
图5a下图这幅图显示了其它参数对性能的影响,即上文提到的 r , l , k r,l,k r,l,k等。可以发现:增加它们都能提升性能,但会有饱和!
对于许多真实的网络,我们无法获得关于网络结构的准确信息。于是本文分析了node2vec对于两种与BlogCatalog网络中的边缘结构相关的不完全信息场景的性能。结果如图5b所示:
图5b上图显示了随着缺失边数的增加node2vec的性能,可以看到随着数据集中缺失边越来越多,性能是越来越差的,但是总体来说下降斜率比较平缓。
图5b下图显示了随着噪声边的增加node2vec的性能,可以看出噪声越多,性能越差,但其下降速率在不断变慢。
为了测试可扩展性,做了如下实验:
将图的节点从100个增加到1000000个,node2vec的时间复杂度在线性增加。
在链接预测中,网络去掉了一定比例的边,而我们需要预测这些缺失的边。
之前学术界关于链接预测的方案主要可以分为三类:启发式方法(Heuristic Methods),Network Embedding的方法和图神经网络方法。
数据集:
实验结果如下表所示:
分析:最上边的一部分为启发式方法的预测效果,作为基准。
原文中本部分叙述较多,大致总结一下: