概要
struc2vec模型的基本思想:网络图中的相似结构的节点具有相似性。如图所示,节点u和节点v具有相似的结构,但是它们在图中可能相距很远。struc2vec则利用这种图结构信息训练出节点的隐含信息表示。
struc2vec根据节点在图中的结构信息评估节点的相似性,包含它的边关系、邻接节点的位置、标签等信息。struc2vec模型不要求图是连通图,即若两个节点不连通,只要在网络图中的结构信息相似即可。
构建分层体系测量结构的相似性,允许渐进地对结构上的相似性有更严格的定义。例如,在分层底部,结构相似依赖节点的度,在分层顶部,则依赖整个网络(从节点的角度)。
为节点生成随机的上下文。通过加权随机遍历多层图(而不是原始网络)观察到结构相似的节点序列。因此,经常出现在相似上下文中的两个节点可能具有相似的结构。语言模型可以利用这种上下文来学习节点的潜在表示。
Struc2Vec模型
Struc2Vec的两个目标:
- 两个节点的表示向量的距离和两个节点的结构相似有很强的关联,不同结构的两个节点的距离应该尽可能远。
- 节点的向量表示和任何节点以及节点标签和边的属性没有关系。
Struc2Vec模型分为四个主要步骤:
- 对于不同的邻域大小,确定图中每个顶点对之间的结构相似性。在节点之间的结构相似度度量中引入了一个层次结构,提供了更多的信息来评估层次结构的每个级别的结构相似度。
- 构造一个加权的多层图,其中网络中的所有节点都呈现在每一层中,每一层对应于层次结构的一个层次来度量结构相似性。并且各层内每个节点对之间的边权值与其结构相似性成反比。
- 使用多层图为每个节点生成上下文。特别地,在多层图上使用有偏随机游走来生成节点序列。这些序列可能包括结构更相似的节点。
- 应用一种技术来学习由节点序列所给出的上下文的潜在表示,例如Skip-Gram。
如何计算节点的结构相似度
模型的第一步就是计算节点之间的结构相似度。论文引入分层结构计算两个节点之间的结构相似度,具体的:其中并且。表示节点的有序度序列,之间的距离,且。当节点和的阶邻接节点是同构的,则。
可知(式1)是一个递归式,,想要求,则需要求出,即节点和的有序度序列之间的距离。因为节点和的k阶邻接节点的个数可能不一样,导致它们的有序度序列长度也可能不一样,所以论文采用动态时间规整(Dynamic Time Warping,简称DWT)计算。
对于序列中元素之间的距离论文中采用其中属于节点的有序度序列中的元素,属于节点的有序度序列中的元素。例如度为1和2的差异为,而度为101和102的差异为,它们的结果是符合我们预期的。这个距离函数的定义可以根据特定的需求自己定义。
构造多层带权图
构建多层带权图的目的是为了编码节点之间的结构相似度。
论文定义每一层节点之间的权重为根据(式1)可知,,则。当且仅当节点的距离为0(即)时边权重等于1。同一层节点之间的边是无向的。
不同层次上的同一顶点论文中使用有向边进行连接。则每一层中的每个节点都和该节点在上一层()和下一层()进行连接。其边的权重定义为:其中是第层与节点相连的边的权重大于第层所有边权重平均值的边的数量。其公式为其中是第层所有边权的平均值,,为层边的数量。
构建节点序列
上一步构造了多层图,计算了节点间的结构相似度(仅仅依赖于节点的度,不包含节点任何的标签信息),构造节点序列论文采用的是有偏随机游走策略,根据多层图的边权重随机游走的概率。而在每一步游走之前需要先判断是否需要改变当前层游走,这个判断是根据一个概率,(论文中并没有将这个概率是超参还是训练得到)。
当概率,随机游走保留着当前层,并且从节点到的游走概率为:其中为归一化因子,。有概率公式可知,游走会更加偏向结构相似的节点。
当概率,随机游走会改变层进行游走,而改变到层还是层,则根据节点到、的概率决定:
语言模型
在上一步中构建了节点的序列之后,便是利用节点序列训练生成节点的向量表示。论文采用的是Skip-Gram模型。
对模型复杂度的优化
1、 减少有序度序列的长度
虽然在层的有序度序列界限为,其中表示第层的最大度数,但是对于某些图来说,即使,其空间复杂度为。论文的解决方案是对序列进行压缩存储,统计每个序列中度数出现的次数,形成**(度数、出现次数)**的二元组,因为网络中有很多相同度数的节点。然后修改DTW距离计算函数其中 为度数,
2、减少节点对相似度计算的次数
原框架中每一层中的任意两个节点对都需要计算其结构相似度。然而两个不同度数的节点(如度数为2和20)即使其机构相似距离也很大,因此最后得到的边的权重很小。故这种节点对的相似度计算是没有意义。
论文给的方案是只计算节点度数接近的节点对的相似度,如何找到节点度数接近的节点?在对应节点的有序度序列中使用二分查找获取度数接近的节点。这个过程的时间复杂度为,所以总的时间复杂度为。
3、减少多层图的层数
多层图的层数由原图谱的“直径”决定,对很多图来说,图的直径会远远大于顶点之间的平均距离。当层数接近“直径”时,环上的度序列长度相对变短了,因此和也变得更接近了。故将层数限制在。使用最重要的一些层来评估结构相似度。
总结
struc2vec模型完全是利用图的结构信息训练节点的向量表示,没有利用节点的任何标签信息。在实际运用中这可以是一个优化方案。
相对于DeepWalk和Node2Vec来说,Struc2Vec是从另一个角度出发构造节点序列。更加侧重节点的同构信息。
如有理解不对的地方,欢迎留言指正,谢谢!
论文地址