Line 算法与deepwalk的对比

2019-06-0311:54:43数据结构与算法Comments3,543 views字数 1343阅读模式

用户的关注关系本身就是一个图结构,要从用户关注关系生成用户的embedding表示,其实就是做graph的emebding表示。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

deepwalk+word2vec 比较简单,效果也还可以。这种方法再此不再介绍。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

接下里记下我对line算法的一些理解。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

先说line算法要解决的问题。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

1、需要能够表示有向图。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

2、能够体现节点的权重,边的权重。节点的权重论文中使用了节点的出度作为节点的权重。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

3、能够体现节点的结构相似性,其实就是有相似的上下文。这个line算法分别提出了一阶相似和二阶相似。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

接下来详细说说一阶和二阶相似性。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

其中一阶相似是指直接有边相连的节点i,j 。用i节点的向量推出j节点向量的概率有多大。如果i和j没有边相连接,则一阶相似性为0。如果对应于用户的关注关系组成的图的话,这个其实就是好友间的相似。还需要指出的是一阶对于边直接认为是无向图的边,不考虑方向性。对于用户间一阶相似性的边权重可以通过用户间互动行为,统计出来一个亲密度。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

二阶相似性,为了解决一阶相似没有考虑朋友的朋友间的相似性,而提出的。这种朋友的朋友之间的相似性是通过给每个顶点增加一个上下文向量来实现的。一个顶点有两个向量分别是上下文向量和本身的节点向量。上下文向量是说一个节点可以作为其相邻节点的上下文。两个不直接相连的节点越相似,也就是说他们的共同上下文节点越多,也就是他们的共同好友越多。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

二阶相似性,会考虑边的权重,和节点的权重。论文中节点的权重使用节点的出度。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

line算法与deepwalk的对比:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

line考虑了边的权重,二阶相似还会考虑有向图的情况,类似单向的关注关系。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

line算法在实现和训练过程中优化:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

line算法定义了一阶和二阶相似的经验概率,就是从i节点推出j节点的经验概率,如何算。然后对于一阶的话是直接i节点向量和j节点向量来算,但是对于二阶需要计算softmax,softmax分母需要计算所有节点的上下文向量与节点i向量的点乘概率,直接算复杂度高。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

line算法的代价函数是经验概率与计算的概率之间的KL散度,KL散度的优化其实等价于交叉熵。这一步存在的问题是代价函数会乘以权重。如果权重的方差比较大,那么这个训练就很成问题了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

对于计算softmax的问题,当然还是和训练word2vec时候一样通过选一些负样本,对负样本做采样来解决。在采样的时候使用alias算法减少时间复杂度。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

解决权重系数对梯度传到的影响(乘系数之后会导致梯度特别大或者梯度特别小),通过对边按照权重进行采样来解决。采样之后就不需要乘权重了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

其实负采样和过采样的采样比例其实也等同于对这种类型的样本乘以系数。不过我的疑问就是这样采样之后有些边就不参与训练了吧。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

存在的问题:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

line的一阶和二阶向量是分开训练的,一阶向量和二阶向量如何结合。论文给出的方法是直接拼接起来,然后给一阶和二阶不同的权重。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

line虽然考虑了一阶和二阶。但是也只是到邻居的邻居。对于有些节点边比较少,这种如何更好的训练。论文中提出了一个增加边的方式,构造些邻居的邻居之间的边,以及设置边权重的方式。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

算法效果:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

在稀疏数据上 line的一阶比二阶要好,增加邻居到邻居的边之后对效果有所提升。边比较多的话,一阶和二阶结合比单独使用一阶和二阶效果要更好。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13277.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/suanfa/13277.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定