LINE算法介绍

大家好,这里是Linzhuo, 最近依然在孜(tou)孜(tou)不(mo)倦(yu)地学习图表示的相关知识。最近刚刚毕业,感谢一直以来帮助过我的小伙伴们。今天给大家带来的是图表示方法中的LINE方法。

我们已经介绍了Deepwalk方法和Node2Vec方法。接下来,我们将介绍一种应用在大型网络中的Embedding技术:LINE。该方法将图结构中first-order相似性和second-order相似性结合,来获取更丰富的图表示结果。我们接下来将详细说明。

本文约含1.3K字,阅读时长约8分钟。主要分为以下部分:

  • First-order 与 Second-order
    • First-order相似性定义
    • Second-order相似性定义
  • LINE实现细节
  • 总结

First-order 与 Second-order

我们以图1为例举例说明first-order 与 second-order。其中线的粗细代表着权重的大小,我们可以看到,由于节点6与节点7直接相连,且有着较大的权值,因此它们的first-order相似性较高。同时,虽然节点5与节点6没有直接相连,但它们的有着共同的邻接节点,因此它们的embedding理应有着相近的距离,因此节点5和节点6有着较高的second-order相似性。

图1 first-order 与 second-order的说明。
First-order相似性定义

First-order是针对每个无向边进行建模,首先,我们给出节点转移的概率分布
p 1 ( v i , v j ) = 1 1 + e x p ( − u i T . u j ) p_1(v_i,v_j)=\frac{1}{1+exp(-u_i^T.u_j)} p1(vi,vj)=1+exp(uiT.uj)1
其中 u i u_i ui u j u_j uj分别为节点 i i i 和节点 j j j的embedding向量表示,同时我们依据边的权值,也可得经验分布
p 1 ′ ( i , j ) = w i j W W = ∑ i , j ∈ E w i j p_1'(i,j) = \frac{w_{ij}}{W} \quad W = \sum_{i,j\in E} w_{ij} p1(i,j)=WwijW=i,jEwij
其中 W W W为图中边的权值之和。为了保证first-order的相似性,我们保持经验分布​与概率分布近似,因此我们使用KL散度来衡量两种分布的相似性。我们去掉常数项后,得到的损失函数如下:
L 1 = − ∑ ( i , j ) ∈ E w i j l o g ( p 1 ( v i , v j ) ) L_1 = -\sum_{(i,j)\in E} w_{ij}log(p_1(v_i,v_j)) L1=(i,j)Ewijlog(p1(vi,vj))
因此只要最小化 L 1 L_1 L1,我们即可保证图中节点embedding的First-order相似性。

Second-order相似性定义

Second-order既适用有向图也适用于无向图。我们首先定义节点转移的概率分布:
p 2 ( v j ∣ v i ) = e x p ( u j ′ T . u i ) ∑ k = 1 ∣ V ∣ e x p ( u k ′ T . u i ) p_2(v_j|v_i) = \frac{exp(u_j^{'T}.u_i)}{\sum_{k=1}^{|V|} exp(u_k^{'T}.u_i)} p2(vjvi)=k=1Vexp(ukT.ui)exp(ujT.ui)
其中 u i u_i ui为节点 i i i的embedding向量, u j ′ u'_j uj为节点 j j j的上下文向量。 ∣ V ∣ |V| V为图中的节点总数或者上下文节点的数量。

同时我们给出second-order 的经验分布定义:
p 2 ′ ( v j ∣ v i ) = w i j d i d i = ∑ k ∈ N ( i ) w i k p'_2(v_j|v_i) = \frac{w_{ij}}{d_i}\quad d_i = \sum_{k\in N(i)}w_{ik} p2(vjvi)=diwijdi=kN(i)wik
其中 d i d_i di为节点 i i i的出度, N ( i ) N(i) N(i)为节点 i i i的邻近节点。为了保证second-order的相似性,我们需要保持经验分布概率分布近似,因此我们使用KL散度来衡量两种分布的相似性。在去掉常数项和进行一系列近似后,我们得到的损失函数如下:
L 2 = − ∑ ( i , j ) ∈ E w i j l o g ( p 2 ( v j ∣ v i ) ) L_2 = -\sum_{(i,j)\in E}w_{ij}log(p_2(v_j|v_i)) L2=(i,j)Ewijlog(p2(vjvi))
在论文中,作者分别训练了first-order相似性和second-order相似性的模型,然后将两种模型的表示结合起来。

LINE实现细节

由于目标损失函数 L 2 L_2 L2中的softmax需要遍历所有节点,在大型的图结构中,需要耗费较多的计算资源。 因此,同word2vec算法,我们用负采样来对训练速度进行优化,对于边 ( i , j ) (i,j) (i,j),我们的损失函数为:
l o g   σ ( u j ′ T . u i ) + ∑ i = 1 K E v n ∼ P n ( v ) [ l o g   σ ( − u n ′ T . u i ) ] log\ \sigma(u'^{T}_{j}.u_i) + \sum_{i=1}^{K}E_{v_n \sim P_n(v)}[log \ \sigma(-u'^T_n . u_i)] log σ(ujT.ui)+i=1KEvnPn(v)[log σ(unT.ui)]
其中 P n ( v ) P_n(v) Pn(v)(采样概率)与节点v的 d v 3 / 4 d_v^{3/4} dv3/4 成正比。由于参数的稀疏性,我们采用异步随机梯度下降的方法进行参数更新(ASGD)。其中参数的更新过程中,梯度与边的权值相关。在实际应用过程中,边的权值方差较大,因此很难找到一个合适的学习率,来保证每个边的参数更新不会出现梯度消失或者梯度爆炸。论文中采用的方法为:将每个边的采样概率与权值成正比,并将采样过后的原始边视为权值为1的二元边。其中对于加权采样问题,作者采用了Alias算法。

如果图中有新加入的顶点 i i i,且该顶点与其他的顶点有相连,我们只需要固定其他顶点的参数,专注于优化下列两个损失函数之一即可:
− ∑ j ∈ N ( i ) w i j l o g ( p 1 ( v i , v j ) ) , o r − ∑ j ∈ N ( i ) w i j l o g ( p 2 ( v j ∣ v i ) ) -\sum_{j\in N(i)} w_{ij}log(p_1(v_i,v_j)) ,or-\sum_{j\in N(i)}w_{ij}log(p_2(v_j|v_i)) jN(i)wijlog(p1(vi,vj)),orjN(i)wijlog(p2(vjvi))

总结

总的来说,LINE同时考虑到了节点之间的first-order和second-order相似性,并可适用于各种类型的网络和大型网络。但一些顶点由于其邻接点少,导致embedding向量的学习不充分,对高阶信息的利用不足,因此,这也是接下来的改进方向。

参考资料

[1]: https://zhuanlan.zhihu.com/p/56478167

[2]:Tang J, Qu M, Wang M, et al. Line: Large-scale information network embedding[C]//Proceedings of the 24th International Conference on World Wide Web. International World Wide Web Conferences Steering Committee, 2015: 1067-1077.

[3]:https://mp.weixin.qq.com/s/4_dOPQonYrJDlMQw-XOwxQ

更多算法基础知识介绍,前沿论文解读,欢迎关注微信公众号:口袋AI算法
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值