LINE学习

LINE

Abstract

LINE 是一种将大规模网络结点表征成低维向量的算法,可很方便用于网络可视化,结点分类,链路预测,推荐。
source codegit

Advantage

LINE相比于其余算法来讲有以下几点优点:github

  1. 适用于大规模网络。
  2. 有明确的目标函数(这一点DEEPWALK是没有的,DW没有提出一个明确的目标函数来告知什么网络属性被保留下来,直观上讲,DW更偏向于结点间有更高的二阶类似度的有类似的表征)该目标函数既反映了局部结构又反映了全局结构。LINE同时考虑了一阶类似度和二阶类似度
  • 局部结构:顶点间的一阶类似性(由观察到的顶点间的连接强度表示,连接强度大的两结点有类似的向量表示,不足以反映图的全局结构,所以引入二阶类似度)
  • 全局结构:顶点间的二阶类似性(由顶点间的共享邻域来决定,具备共享邻居的结点更多是类似的)

用一张图来直观理解

关联图中6,7结点的是一条强边,所以结点6,7的向量表示应该类似(一阶类似度);而结点5,6由于共享了类似的邻居,所以5,6的向量表示也应该类似(二阶类似度)。算法

  1. 提出一种新颖的边采样的方法解决了随机梯度降低算法的局限性。(因为现实网络中边权的方差每每是很是大的,SGD可能致使梯度爆炸,损害性能)

ps:具体措施:以正比于边权大小的几率来采样边,将被采样的边做为二值边(0 无边,1有边)进行模型更新。
在这种采样过程当中,目标函数保持不变,边的权重再也不影响梯度。网络

  1. LINE可适用于任何类型的网络:有向无向,有权无权(DW只能适用于无权网络)

Definition

  • 一阶类似度:两个结点u,v之间的边权表明u与v之间的一阶类似度。若u,v之间无边,则一阶类似度为0.
  • 二阶类似度:两个结点u,v的二阶类似度由两个结点共同邻居的个数决定。

Model Description

LINE with First-order Proximity

首先,了解一下KL散度和一阶类似度的概念app

KL散度Dkl(p,q):指用q分布来近似p分布的信息损失。函数

一阶类似度:对于两个有边连接的顶点,其边的强度越大,则该两顶点关系越密切,即越类似。性能

模型大致过程:学习

  1. 首先计算两个结点的联合几率密度
  2. 其次计算两结点经验分布几率
  3. 最小化下列目标函数
    这里的d,两个分布的距离能够用KL散度来计算,最终目标函数以下:
    即对图中每条边,计算相关联两顶点的kl散度,求各个结点向量表示ui,使得该目标函数达到最小。

(我的理解PS:可是为何使得联合几率分布近似经验分布的信息损失最小就是保留一阶类似度?经验分布,边权除以边权总和必定程度上体现了边权的重要性,而边权的大小又是描绘一阶类似度的重要信息,所以能够将该经验分布理解成保留了一阶类似度的分布,而求各个结点的向量表示,使得两节点的联合分布近似于经验分布的信息损失最小,即该组向量表示就是体现一阶类似度的最优的向量表示)优化

上述一阶类似度只适用于无向图,而不适用于有向图。ui


LINE with Second-order Proximity

首先要理解二阶类似度的相关概念

  1. 二阶类似度既适用于有向图也适用于无向图。
  2. 二阶类似度即指,有相同上下文(邻居)的顶点越类似。

模型大致过程

  1. 首先,每一个顶点由两个向量表示,ui表示该顶点i自己的向量表示,当顶点i被当作是其余顶点的上下文来考虑时,ui’为其向量表示。
  2. 其次计算在顶点i出现的条件下,下一个顶点是j的几率(条件几率)利用该公式,咱们能够算出顶点i的条件分布,即
    所以 根据二阶类似度的定义,咱们不难推出,具备类似条件分布的顶点彼此类似。
  3. 所以,相似于一阶类似度,为了更好保留二阶类似度,咱们须要使得每一个结点i的条件分布近似于自身条件经验分布的信息损失最小。即最小化下述目标函数其中:

  • 为每一个结点在网络中的权重(考虑到每一个结点在网络中的重要性可能不一样)。该权重能够经过度来衡量,或者一些算法来计算,好比PageRank算法。
  • 条件经验分布以下计算
  1. 最后仍然使用kl散度来衡量两分布的距离。
    最终目标函数以下:

经过学习每一个结点i的两个向量表示ui,ui’来最小化上述目标函数,最终能够获得每一个结点的向量表示。


Combining first-order and second-order proximities

那么如何同时结合一阶类似度和二阶类似度呢?这篇论文提出时涉及了两种方案:

  1. 分别训练基于一阶类似度的和基于二阶类似度的,获得每一个结点的两种向量表示,
    再链接该两种向量表示。
  2. 同时优化两个目标函数(3)和(6)来学习向量表示。留待将来研究。

Model Optimization

ps:我的对这部分理解不够成熟,可能有误。

优化上述目标函数(6)须要很大的计算开销(须要对每一条边进行采样来训练模型)。这里使用负采样来解决问题。

  • Optimization via Edge Sampling

负采样根据必定的策略选取部分更重要的边来进行训练,每次训练只对神经网络的部分权重进行更新,大大减小了SGD过程当中的计算量。

(ps:正比于边的权重做为几率进行边的采样。通常来讲,边权越大的应该被采样的几率要越高,在语言学领域:出现单词对频率越高的应该被采样的几率越大)
上述这种边采样策略提升了随机梯度降低的效率。

  • 时间复杂度

LINE 时间复杂度是边的线性函数,与顶点个数V无关。以下:


Discussion

1. 低度顶点的嵌入表示

因为低度顶点邻居数目极少,原网络中提供的信息有限,尤为在基于二阶类似度的LINE算法中是很是依赖于顶点的邻居数目的,那么如何肯定低度顶点的向量表示呢?

一种直观的方法:添加更高阶的邻居(如邻居的邻居)来做为该低度结点的直接邻居。 与新添邻居边的权重以下:

dk是结点k的出边的权重总和。(实际上,能够只添加与低度顶点i有边的,且边权最大的顶点j的邻居做为顶点i的二阶邻居)

2. 如何找到网络中新添加顶点的向量表示

若是已知新添加的顶点i与现有顶点的联系(即存在边),则可获得其经验分布
以后经过最小化目标函数(3)或(6)可获得新加顶点i的向量表示

若是未能观察到新添顶点与其余现有顶点的联系,咱们只能求助其余信息,好比顶点的文本信息,留待之后研究。

6.Conclusion

LINE 适用于大规模网络;既保留了一阶类似度,又保留了二阶类似度;提出边采样算法,只采样部分且只更新神经网络部分权值,而且将采样的边处理成二进制边,解决了加权边梯度降低的局限性(即梯度爆炸----边权直接乘以梯度,且若边权方差过大 可能致使梯度爆炸),加快了效率。

将来的拓展:一阶二阶之外更高阶的类似度以及在异构网络中的应用。

相关文章
相关标签/搜索