网络表示学习-Node2vec

论文粗读

论文标题:

node2vec: Scalable Feature Learning for Networks

数据挖掘领域的顶级会议KDD-2016

论文链接:

node2vec | Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mininghttps://dl.acm.org/doi/10.1145/2939672.2939754

文章背景:

       基于网络中节点和边的预测任务中的特征工程总是很麻烦的。虽然表示学习的自动学习特征已经有很大的帮助,但现有的特征学习方式无法对网络中连接模式的多样性进行足够的捕捉。 node2vec是本论文提出的一种对网络中的节点学习连续特征表达的框架。这是一个节点到低维特征空间的映射,该映射最大化了保留节点网络邻域的可能性。 

解决问题:

之前的工作存在着一些问题:

(1)特征需要依赖人手工定义,不是某个领域内专业人士无法从事工作,而且依靠人手工定义特征这件事本身就很悬,就算是领域专家也不能肯定某个提取出来的特征就一定管用,所以这种方法就很玄学了。

(2)一些非监督学习中的降维方法被拿来使用,但是这些方法计算效率低,准确度也不够,而且还不能反应出网络的结构特征。

在NLP中的方法为本文的作者提供了思路,其实跟DeepWalk的想法是一样的。用skip-gram模型来解决网络表示学习的问题。

创新点:

本文的“保存相邻节点可能性”来自于一篇自然语言处理论文,在自然语言中,源文件是线性的,只要设置一个“滑动窗口”即可方便实现。那么本文将该线性方法使用到非线性的图中,创新点就在于引入“Random Walks”的邻居节点选择方式。以及如何去把一张图来当作一篇文本,把图中的节点表示成文本中的token。然后调用现成的word2vec模型来生成向量。而图不同于文本的特点是,文本是一个线性的序列,图是一个复杂的结构。

解决方案(总体思路即可)    

node2vec的思想同DeepWalk一样:生成随机游走,对随机游走采样得到(节点,上下文)的组合,然后用处理词向量的方法对这样的组合建模得到网络节点的表示。不过在生成随机游走过程中做了一些创新 。

算法分析

1.Random Walks

随机游走的采样,本文分析了两种图的游走方式,DFS和BFS(BFS倾向于在初始节点的周围游走,可以反映出一个节点的邻居的微观特性;而DFS一般会跑的离初始节点越来越远,可以反映出一个节点邻居的宏观特性。)

本文改进DeepWalk中随机游走的方式,使它综合DFS和BFS的特性,所以引入了两个参数用来控制随机游走产生的方式。(返回概率p和出入参数q)参数p和q相当于调节BFS和DFS的程度。

随机游走的优点:时间复杂度和空间复杂度优于DFS/BFS.

(1)给源节点u,模拟一个长为l的随机游走。设ci为游走的第i个节点,起始节点c0=u。节点ci服从一下分布:

(2)直接设转移概率为边的权重π~(vx)=w~(vx)不能有效考虑网络结构和搜索不同的邻居空间,所以本论文是这样设置bias的.该随机游走有两个参数p和q。考虑刚刚遍历了边(t,v),现在在节点v要根据转移概率πvx觉得下一个节点x。设π~(vx)=α~(pq)(t,x)⋅w~(vx)

(3)如果t与x相等,那么采样x的概率为 1/p;

如果t与x相连,那么采样x的概率1;

如果t与x不相连,那么采样x概率为 1/q。

参数p、q的意义分别如下:

返回概率p: (1)如果 p>max(q,1) ,那么采样会尽量不往回走,对应上图的情况,就是下一个节点不太可能是上一个访问的节点t。 (2)如果 p<min(q,1) ,那么采样会更倾向于返回上一个节点,这样就会一直在起始点周围某些节点来回转来转去。

出入参数q: (1)如果 q>1 ,那么游走会倾向于在起始点周围的节点之间跑,可以反映出一个节点的BFS特性。 (2)如果 q<1 ,那么游走会倾向于往远处跑,反映出DFS特性。 当p=1,q=1时,游走方式就等同于DeepWalk中的随机游走。 

2.node2vec算法 

输入 (Graph G = (V,E,W), 维数 d, Walks per 结点 r, 游走长度 l, 上下文大小 k,返回概率p和出入参数q
        π = 预处理权重(G,p,q)
       G‘ = (V,E,π)
        初始化walks为空 Empty
       for iter = 1 to r do
              for all nodes u ∈ V do
                       walk = node2vecWalk(G 0 ,u,l)  (随机游走算法)
                      Append walk to walks
        f = StochasticGradientDescent(k, d, walks) (SGD)
        return f    

      伪代码比较好懂,转移概率矩阵可以提前算好,对图中的每个节点,进行r次随机游走得到r个长为l的walk。可以理解成每个给每个节点造句,r个l长的句子,全部节点的游走合起来就得到了这个网络的语料库,经过类似skip-gram的训练可得节点的Embedding.

实验数据集

(1)blogcatalog.mat是博客作者的社交关系网络。标签代表作者提供的主题类别。 大小:顶点10,312,边333,983;组数39  数据大小:1227KB

(2)整个英文维基百科页面构建了一个词共同网络 (加权无向图);顶点:1,085,098 边:1,000,924,086   标签:7

启发?    

本文的特征抽取方式类似于聚类分析的非监督方法,本质上都是利用相邻节点之间的联系。文中提到了网络中的节点一般有两种相似度量:1.内容相似性,2.结构相似性。其中内容相似性主要是相邻节点之间的相似性,而结构上相似的的点并不一定是相邻的,可能隔得很远,这也是文中为何要把BFS和DFS相结合来选择邻居节点的原因。    

文章的核心思想是采用Random Walk来代替DFS或者BFS。文章定义了一种二阶的Random Walk,拥有两个参数,来控制多大的概率反复经过一些Node和控制所谓的Inward和Outward。总之,整个Random Walk的目的就是在DFS和BFS之间采取某种平衡。

总结与收获:

和nlp的语料库不同的是,网络中每个节点的邻居集如何选择会很大程度的影响Embedding的效果。本论文的创新之处就在于提出了一种灵活的选择节点邻居的方法,并通过实验证明比其他的方法更有效。

另外有一个地方,link prediction中,在判断两节点是否有边相连的时候,论文讨论了如何结合两节点的特征。连续特征表示是一个非常底层的技术,就如word embedding相当于nlp的基石,在上面可以有各种应用,如机器翻译,阅读理解等等。node2vec也是相当于在各种网络问题上面加一层特征转化,以方便之后的各种任务。

与Deepwalk、LINE的比较

LINE中分别给出了网络中和向量表示中,两个node之间的一阶相似度和二阶相似度,共四个公式的定义。然后综合一阶相似度保持一致和二阶相似度保持一致,定义了目标函数。

DeepWalk和node2vec算法是先在网络中随机游走,得到node的序列。两个node同时出现在一个序列中的频率越高,两个node的相似度越高。然后构建一个神经网络,神经网络的输入是node,输出是其他node与输入的node同时出现的概率。同时出现的概率越高,两个node的相似度越高。为了保持相似度一致,得到目标函数。

从目标函数的定义上来看,LINE为了更好的保存网络的结构信息,提出了一阶相似度和二阶相似度的概念,并在目标函数中结合了两者。DeepWalk是提出了一个新的思路,但是对于原网络中node的相似度的定义不能很好的反映网络的结构,node2vec则着重解决了这一问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值