深入浅出——网络嵌入算法DeepWalk

DeepWalk是一种利用的截断随机游走获得网络的结构信息,来进行网络嵌入的算法。将网络中的节点嵌入到一个潜在的连续空间中。

一.随机游走

DeepWalk是利用截断随机游走来获取节点的上下文信息(可以认为是网络的局部结构信息)。

随机游走:从一个节点出发,随机选择它的一个邻居节点,接着从这个邻居节点出发到该邻居节点的邻居节点,重复这个步骤直到经过所有节点。

在DeepWalk中是采用截断的方法,提取终止随机游走,得到一个比较短的随机游走序列。提前设置参数 t t t为一次随机游走的长度,达到这个长度就会停止随机游走。另外在游走过程中是会以一定概率回到根节点的,在DeepWalk的论文中只表示存在这种可行性,但是实验并没有表明存在回到根节点的概率会提高模型效果。
这种短距离的随机游走有两个好处:

  1. 并行性。局部的随机游走,可以在网络的各个部分同时进行。
  2. 适应性。适应网络结构较小的改变,不需要重新进行全局的计算。只需要在改变的区域进行随机游走,来更新模型
    由于DeepWalk游走的方式,DeepWalk只适用于无权图

二.幂律分布

幂律分布表现为一条斜率为幂指数的负数的直线,这一线性关系是判断给定的实例中随机变量是否满足幂律的依据。

社交网络中的无标度现象也是一种幂律分布。

节点的度往往是幂律分布的,那么通过随机游走得到的序列中,节点出现的频率就应该是幂律分布的。

下图就是论文中的图,也证明了随机游走得到的序列,节点出现的次数是服从幂律分布的。

因为自然语言处理的模型是用于幂律分布的单词的,所以也可以用于幂律分布的网络。

在这里插入图片描述

三.模型

1.Skip-Gram

在一般的词向量模型中,给点一个单词序列 W = ( w 0 , w 1 , . . . w n ) W=(w_0,w_1,...w_n) W=(w0,w1,...wn),在训练集上的优化目标就变成:
m a x ( P r ( w n ∣ w 0 , w 1 . . . w n − 1 ) ) max (Pr(w_n| w_0,w_1...w_{n-1})) max(Pr(wnw0,w1...wn1))

这里借鉴了skip-gram里的思想(利用缺失值来估计上下文),给点网络中的节点,来最大化随机游走得到的序列中其它节点的共现似然概率。
Skip-gram模型的特点有三个:

  1. 利用缺失值来预测上下文,而不是用上下文来预测缺失值。应用到网络中就是用节点来估计其邻近节点,而不是用邻近节点来估计其节点
  2. 同时考虑左右两个窗口,对于 w 2 w_2 w2来说, w 1 w_1 w1 w 3 w_3 w3都是要考虑的。
  3. 不考虑顺序,对于 w 2 w_2 w2来说, w 1 w_1 w1 w 3 w_3 w3都是等价的。

文中将特点3的优点分为了两个部分:(也导致只适用于无向图)

  1. 更好的体现随机游走中的邻近关系。
  2. 只需要计算一个顶点的向量,减少了计算量。这里可以理解为算法2中第4行只更新一个用户的表征。
    所以目标函数就变成了:
    m i n − l o g P r ( v i − w , . . . v i − 1 , v i + 1 , . . . v i + w ∣ v i ) min-log Pr(v_{i-w},...v_{i-1},v_{i+1},...v_{i+w}|v_i) minlogPr(viw,...vi1,vi+1,...vi+wvi)

2.算法流程

算法主要分为两个部分:随机游走序列的生成,参数更新。
算法1为DeepWalk的整体算法。
在这里插入图片描述
算法2为参数更新部分,这里是借鉴了SkipGram.
在这里插入图片描述

3.Hierarchical Softmax

这一部分也是word2vec里面关于单词处理的部分,主要作用是加速计算。将时间复杂度从O(|V|)提高到O(log|V|)

具体实现可以参考之前写的文章https://blog.csdn.net/weixin_44467105/article/details/110926452

4.并行化

这里的并行化是利用了 ‘FASTER ASYNCHRONOUS SGD’ 论文里提出的异步随机梯度下降。这里不详述。

论文:DeepWalk: Online Learning of Social Representations

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值