网络表示学习论文阅读之HARP

HARP: Hierarchical Representation Learning for Networks 阅读笔记


摘要

在这篇文章中,作者提出了一种新的方法,能够在做 network embedding 的时候保持网络高阶的结构特征,具体的做法是通过将原网络图进行合并,合并为多个层次的网络图。这个算法应该可以说是一个通用处理框架,可以用于改进现有算法的效果,这个在实验中也有所展示。

介绍

Network embedding 领域在近几年发展迅猛,出现了许多效果公认不错的算法,比如:DeepWalkNode2VecLINE 这三个算法。不过,对于这些算法,它们有两个共同的问题:

  1. 基本都把考虑的重点放在了网络的局部结构关系(如:一阶相似性和二阶相似性),而忽略了距离较长的全局关系。

  2. 它们都是通过随机梯度下降法对一个非凸的目标函数进行优化,这样如果初始化不好就很容易陷入局部最优。

所以,作者提出的 HARP 算法希望通过递归地粗粒化方式,将原网络图的节点和边通过合并划分成一系列分层的结构更小的网络图,然后再利用现有的算法进行不断的特征提取,从而实现最终的 network embedding 特征提取。所以,在这篇文章中,作者的工作可以总结为以下几点:

  1. 提出新的表示学习范式

  2. 改进优化过程的效果

  3. 更好的 embedding 效果,有利于接下来的任务

算法

对于给定的图 G = ( V , E ) ,图表示学习的任务是找到一个映射函数 Φ : V R | V | × d , d | V | ,在这篇文章中,作者希望找到比原图 G 更小的图 G s = ( V s , E s ) ,其中 | V s | | V | | E s | | E | ,我们得到的图 G s 会更加有利于做 embedding,原因有以下两个:

  1. 相比于原图 G G s 的节点对之间关系更少,即 | V s | 2 表示的空间要比 | V | 2 更小。

  2. G s 的直径要比图 G 小,当小到一定程度时,基于局部结构的算法也能利用到图的全局结构。

对于整个算法来说,大致可以看成是以下流程:

  1. 给定一个大的网络图 G 和一个映射函数 f ,并使用 θ 进行初始化,得到 f : G × θ Φ G

  2. 化简 G 为一系列更小的图 G 0 . . . G L

  3. 学习粗粒度 embedding Φ G L = f ( G L , ϕ )

  4. 通过迭代地应用 Φ G i = f ( G i , Φ G i + 1 ) , 0 i < L ,改善粗粒度 embedding Φ G

总的算法流程如下图:

HARP算法流程

上述算法中,第 1 行是将原图划分为多层次的小图,具体算法后面会介绍;第 2-3 行是初始化参数 θ G L 是划分到最后最小的图,直接利用现有算法对其求 embedding,第 *4-7 行是迭代地对比较高层次的(较大的)图和对较低层次的(较小的)图的 embedding 结果进行结合延伸,作为较大图的 embedding 参数输入进行 embedding,最后第 8 行返回原图的 embedding 结果。

图粗粒度化

作者使用一种混合图粗粒度化的方法来维护不同规模的图结构信息,包括边合并和中心点合并,分别维护的是一阶相似度和二阶相似度。示意图如下:

图粗粒度化

边合并

边合并是为了保持图结构中的一阶相似度,先选择 E E ,使得 E 中的两条边不会连接于相同的点,然后对于 E 中的每个节点对 ( u i , v i ) ,合并为单一节点 w i ,并把之间的边去掉,这样,图的规模就能够大大的减小了。效果如上图 2(a)

中心点合并

在真实世界中的网络,经常符合无标度特性,也就是说,某一个中心节点往往同时连接着非常多的节点,如果按照边合并的策略,则这种情况对图的粗粒度化作用非常不明显,如上图 2(b),所以,作者同时又采用了中心点合并的方法来进行粗粒度化操作,而它也能保持图结构中的二阶相似度。中心点合并的方法也很简单,就是把共同以中心点为邻居的节点两两进行合并,如上图 2(c)

混合粗粒度化

因为算法中用到了两种粗粒度化操作,所以,作者使用了一个简单的方法将它们结合起来,就是先进行中心点合并,再将合并结果进行边合并,这样得到一张图 G i ,然后再用 G i 进行下一步合并,直到图的节点小于某一个阈值为止。算法如下图:

混合粗粒度化

嵌入延伸

当图 G i + 1 的表示被学习之后,我们可以利用学习的结果结合到上一层的图 G i 的初始化中。对于图 G i + 1 中的任意节点 v 来说, v 在图 G i 中要不就是对应节点 v ,要不就是 v 和另外节点合并的节点。所以,直接使用 v G i + 1 中的 embedding 结果来初始化 v 都是合理的。

实验结果

实验部分,作者用了自己的框架来改进几个经典算法:DeepWalkNode2VecLine,并与自身之前的算法进行比较,分类结果都有提高,说明算法可行。效果如图:

实验结果

猜你喜欢

转载自blog.csdn.net/wangyang163wy/article/details/80299782
今日推荐