概要

struc2vec模型的基本思想:网络图中的相似结构的节点具有相似性。如图所示,节点u和节点v具有相似的结构,但是它们在图中可能相距很远。struc2vec则利用这种图结构信息训练出节点的隐含信息表示。

Cohere Embed cohere embedding_相似度


struc2vec根据节点在图中的结构信息评估节点的相似性,包含它的边关系、邻接节点的位置、标签等信息。struc2vec模型不要求图是连通图,即若两个节点不连通,只要在网络图中的结构信息相似即可。

构建分层体系测量结构的相似性,允许渐进地对结构上的相似性有更严格的定义。例如,在分层底部,结构相似依赖节点的度,在分层顶部,则依赖整个网络(从节点的角度)。

为节点生成随机的上下文。通过加权随机遍历多层图(而不是原始网络)观察到结构相似的节点序列。因此,经常出现在相似上下文中的两个节点可能具有相似的结构。语言模型可以利用这种上下文来学习节点的潜在表示。

Struc2Vec模型
Struc2Vec的两个目标:
  • 两个节点的表示向量的距离和两个节点的结构相似有很强的关联,不同结构的两个节点的距离应该尽可能远。
  • 节点的向量表示和任何节点以及节点标签和边的属性没有关系。
Struc2Vec模型分为四个主要步骤:
  1. 对于不同的邻域大小,确定图中每个顶点对之间的结构相似性。在节点之间的结构相似度度量中引入了一个层次结构,提供了更多的信息来评估层次结构的每个级别的结构相似度。
  2. 构造一个加权的多层图,其中网络中的所有节点都呈现在每一层中,每一层对应于层次结构的一个层次来度量结构相似性。并且各层内每个节点对之间的边权值与其结构相似性成反比。
  3. 使用多层图为每个节点生成上下文。特别地,在多层图上使用有偏随机游走来生成节点序列。这些序列可能包括结构更相似的节点。
  4. 应用一种技术来学习由节点序列所给出的上下文的潜在表示,例如Skip-Gram。
如何计算节点的结构相似度

模型的第一步就是计算节点之间的结构相似度。论文引入分层结构计算两个节点之间的结构相似度,具体的:Cohere Embed cohere embedding_相似度_02其中Cohere Embed cohere embedding_人工智能_03并且Cohere Embed cohere embedding_层次结构_04Cohere Embed cohere embedding_相似度_05表示节点的有序度序列Cohere Embed cohere embedding_图嵌入_06Cohere Embed cohere embedding_层次结构_07之间的距离,且Cohere Embed cohere embedding_相似度_08。当节点Cohere Embed cohere embedding_图嵌入_09Cohere Embed cohere embedding_相似度_10Cohere Embed cohere embedding_Cohere Embed_11阶邻接节点是同构的,则Cohere Embed cohere embedding_人工智能_12

可知(式1)是一个递归式,Cohere Embed cohere embedding_相似度_08,想要求Cohere Embed cohere embedding_图嵌入_14,则需要求出Cohere Embed cohere embedding_图嵌入_15,即节点Cohere Embed cohere embedding_图嵌入_09Cohere Embed cohere embedding_相似度_10的有序度序列之间的距离。因为节点Cohere Embed cohere embedding_图嵌入_09Cohere Embed cohere embedding_相似度_10的k阶邻接节点的个数可能不一样,导致它们的有序度序列长度也可能不一样,所以论文采用动态时间规整(Dynamic Time Warping,简称DWT)计算。

对于序列中元素之间的距离论文中采用Cohere Embed cohere embedding_相似度_20其中Cohere Embed cohere embedding_Cohere Embed_21属于节点Cohere Embed cohere embedding_图嵌入_09的有序度序列中的元素,Cohere Embed cohere embedding_Cohere Embed_23属于节点Cohere Embed cohere embedding_相似度_10的有序度序列中的元素。例如度为1和2的差异为Cohere Embed cohere embedding_Cohere Embed_25,而度为101和102的差异为Cohere Embed cohere embedding_层次结构_26,它们的结果是符合我们预期的。这个距离函数的定义可以根据特定的需求自己定义

构造多层带权图

构建多层带权图的目的是为了编码节点之间的结构相似度。

论文定义每一层Cohere Embed cohere embedding_层次结构_27节点之间的权重为Cohere Embed cohere embedding_人工智能_28根据(式1)可知,Cohere Embed cohere embedding_Cohere Embed_29,则Cohere Embed cohere embedding_人工智能_30。当且仅当节点的距离为0(即Cohere Embed cohere embedding_层次结构_31)时边权重等于1。同一层节点之间的边是无向的

不同层次上的同一顶点论文中使用有向边进行连接。则每一层Cohere Embed cohere embedding_Cohere Embed_11中的每个节点Cohere Embed cohere embedding_图嵌入_09都和该节点Cohere Embed cohere embedding_图嵌入_09在上一层(Cohere Embed cohere embedding_图嵌入_35)和下一层(Cohere Embed cohere embedding_图嵌入_36)进行连接。其边的权重定义为:Cohere Embed cohere embedding_层次结构_37Cohere Embed cohere embedding_Cohere Embed_38其中Cohere Embed cohere embedding_图嵌入_39是第Cohere Embed cohere embedding_Cohere Embed_11层与节点Cohere Embed cohere embedding_图嵌入_09相连的边的权重大于第Cohere Embed cohere embedding_Cohere Embed_11层所有边权重平均值的边的数量。其公式为Cohere Embed cohere embedding_层次结构_43其中Cohere Embed cohere embedding_Cohere Embed_44是第Cohere Embed cohere embedding_Cohere Embed_11层所有边权的平均值,Cohere Embed cohere embedding_Cohere Embed_46Cohere Embed cohere embedding_Cohere Embed_47Cohere Embed cohere embedding_Cohere Embed_11层边的数量。

构建节点序列

上一步构造了多层图,计算了节点间的结构相似度(仅仅依赖于节点的度,不包含节点任何的标签信息),构造节点序列论文采用的是有偏随机游走策略,根据多层图的边权重随机游走的概率。而在每一步游走之前需要先判断是否需要改变当前层游走,这个判断是根据一个概率Cohere Embed cohere embedding_Cohere Embed_49,(论文中并没有将这个概率是超参还是训练得到)。

当概率Cohere Embed cohere embedding_层次结构_50,随机游走保留着当前层,并且从节点Cohere Embed cohere embedding_图嵌入_09Cohere Embed cohere embedding_相似度_10的游走概率为:Cohere Embed cohere embedding_Cohere Embed_53其中Cohere Embed cohere embedding_层次结构_54为归一化因子,Cohere Embed cohere embedding_Cohere Embed_55。有概率公式可知,游走会更加偏向结构相似的节点。

当概率Cohere Embed cohere embedding_图嵌入_56,随机游走会改变层进行游走,而改变到Cohere Embed cohere embedding_层次结构_57层还是Cohere Embed cohere embedding_相似度_58层,则根据节点Cohere Embed cohere embedding_人工智能_59Cohere Embed cohere embedding_人工智能_60Cohere Embed cohere embedding_相似度_61的概率决定:Cohere Embed cohere embedding_相似度_62Cohere Embed cohere embedding_图嵌入_63

语言模型

在上一步中构建了节点的序列之后,便是利用节点序列训练生成节点的向量表示。论文采用的是Skip-Gram模型。

对模型复杂度的优化

1、 减少有序度序列的长度
虽然在Cohere Embed cohere embedding_Cohere Embed_11层的有序度序列界限为Cohere Embed cohere embedding_相似度_65,其中Cohere Embed cohere embedding_相似度_66表示第Cohere Embed cohere embedding_Cohere Embed_11层的最大度数,但是对于某些图来说,即使Cohere Embed cohere embedding_人工智能_68,其空间复杂度为Cohere Embed cohere embedding_相似度_69。论文的解决方案是对序列进行压缩存储,统计每个序列中度数出现的次数,形成**(度数、出现次数)**的二元组,因为网络中有很多相同度数的节点。然后修改DTW距离计算函数Cohere Embed cohere embedding_层次结构_70其中 Cohere Embed cohere embedding_图嵌入_71为度数, Cohere Embed cohere embedding_层次结构_72

2、减少节点对相似度计算的次数
原框架中每一层中的任意两个节点对都需要计算其结构相似度。然而两个不同度数的节点(如度数为2和20)即使Cohere Embed cohere embedding_相似度_73其机构相似距离也很大,因此最后得到的边的权重很小。故这种节点对的相似度计算是没有意义。

论文给的方案是只计算节点度数接近的节点对Cohere Embed cohere embedding_人工智能_74的相似度,如何找到节点Cohere Embed cohere embedding_图嵌入_09度数接近的节点Cohere Embed cohere embedding_相似度_10?在对应节点Cohere Embed cohere embedding_图嵌入_09的有序度序列中使用二分查找获取度数接近的节点。这个过程的时间复杂度为Cohere Embed cohere embedding_图嵌入_78,所以总的时间复杂度为Cohere Embed cohere embedding_层次结构_79

3、减少多层图的层数
多层图的层数由原图谱的“直径”Cohere Embed cohere embedding_Cohere Embed_80决定,对很多图来说,图的直径会远远大于顶点之间的平均距离。当层数Cohere Embed cohere embedding_Cohere Embed_11接近“直径”Cohere Embed cohere embedding_Cohere Embed_80时,环上的度序列长度相对变短了,因此Cohere Embed cohere embedding_图嵌入_14Cohere Embed cohere embedding_层次结构_84也变得更接近了。故将层数Cohere Embed cohere embedding_图嵌入_85限制在Cohere Embed cohere embedding_图嵌入_86。使用最重要的一些层来评估结构相似度。

总结

struc2vec模型完全是利用图的结构信息训练节点的向量表示,没有利用节点的任何标签信息。在实际运用中这可以是一个优化方案。

相对于DeepWalk和Node2Vec来说,Struc2Vec是从另一个角度出发构造节点序列。更加侧重节点的同构信息。

如有理解不对的地方,欢迎留言指正,谢谢!

论文地址