携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第10天,点击查看活动详情
前言
Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ 自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金,有幸在竞赛中拿过一些国奖、省奖...已保研。 学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语! 唯有努力💪
知其然 知其所以然!
本文仅记录自己感兴趣的内容
简介
会议:CIKM '20: Proceedings of the 30th ACM International Conference on Information & Knowledge Management (CCF B类)
年度:2020/10
ABSTRACT
最近,人们对在 双曲空间( hyperbolic space) 中嵌入网络产生了兴趣,因为双曲空间已经被证明可以很好地捕捉图/网络结构,因为它可以自然地反映复杂网络的一些性质
然而,目前关于双曲空间网络嵌入的研究主要集中在微观节点嵌入上
在这项工作中,我们首次提出了一个框架,将节点的结构角色嵌入到双曲空间
我们的框架扩展了struct2vec,将其移动到双曲面模型,这是一种著名的保持结构作用的嵌入方法
我们在四个真实网络和一个合成网络上评估了我们的方法
我们的结果表明,双曲空间比欧几里得空间更有效地学习隐含表示节点的结构角色
1 INTRODUCTION
大多数的网络嵌入方法都注重在相邻的连通顶点之间保留局部结构信息,如一阶、二阶和高阶邻近性
使用语言模型来保存网络的微观结构是Perozzi等人在他们的工作DeepWalk[12]中首次提出的
- 该方法通过随机游走从网络中生成随机的节点序列
- 然后用aSkip-Gram模型[9]将节点序列作为句子处理
Grover等[5]证明deepwalk不能准确捕捉网络中连接模式的多样性,并引入了node2vec
- 他们定义了一个节点的网络邻域的灵活概念,并设计了一个二阶随机漫步策略来采样邻域节点
- 该方法可以实现宽度优先采样(BFS)和深度优先采样(DFS)之间的平滑插值
- 然而,这些方法的一个局限性是,它们不能捕捉结构角色的邻近性
结构角色邻近性描述了在网络中服务于类似“角色”的顶点之间的相似性,例如作为一个社区的中心,或两个社区之间的桥梁
与捕获节点之间局部相似性的 𝑘 阶接近度不同,结构角色接近度试图发现彼此远离(甚至不连接)但共享等效结构角色的节点之间的相似性
早期用于学习结构节点嵌入的无监督方法之一是rolx[6]
- 该方法通过列举网络中节点的各种结构特征,为该联合特征空间寻找更适合的基向量,然后为每个节点分配一个角色分布。
struc2vec [13] 确定图中每个节点对之间的结构相似性,考虑到 𝑘 跳数邻域大小
- 它构造一个加权多层图来为每个节点生成一个上下文。
GraphWave[4] 使用一种矩阵分解方法,该方法基于以下假设:
- 如果网络中的两个节点具有相似的结构角色,则从它们开始的图小波将类似地扩散到它们的邻居中
最近还出现了一种将网络嵌入双曲线空间的趋势
这是由于认识到复杂的网络可能有潜在的双曲几何
这是因为双曲几何可以很自然地反映复杂网络[7]的一些性质(如层次结构和无标度结构)
一种新兴的网络嵌入方法是将网络嵌入到双曲空间[1,3,8,10,11,15],例如:
- HEAT[8]通过属性网络学习嵌入
- HHNE[15]通过双曲空间异构信息网络学习嵌入
然而,就我们所知,现有的双曲嵌入方法中没有一种能够获得结构角色等价
为了填补这一空白,我们提出了一个框架,将节点的结构角色嵌入到双曲空间
我们的框架扩展了struct2vec,将其移动到双曲面模型,这是一种著名的保持结构作用的嵌入方法
2 OUR FRAMEWORK
𝐺 = (𝑉 , 𝐸) 是一个无向和无权网络
- 𝑉 是一组顶点
- 𝐸 ⊆ 𝑉 × 𝑉 是 𝑉 中顶点之间的未加权边的集合
我们考虑将图𝐺 = (𝑉 , 𝐸) 表示为 𝑛 维双曲面 的低维向量集的问题,其中
所描述的问题是无监督的
我们的框架由两部分组成:
- 构建衡量节点对之间结构相似性的多层图
- 使用有偏随机游走生成的每个节点的上下文来学习双曲面嵌入
2.1 Constructing the Multi-layer graph
本文提出的架构可以使用任何已知的节点结构嵌入方法来生成节点上下文
在本文中,我们扩展了 Ribeiro 等人提出的框架 struct2vec[13]
让 表示在𝐺(跳数)中距离𝑢的节点度数的有序序列
考虑到它们之间距离为 𝑘 的节点集合,两个节点 𝑢和 𝑣 的结构角色相似性可以定义为两个有序序列 和 的相似性
请注意,这两个序列的大小可能不相等,并且它们的元素是 范围内的整数
我们使用快速动态时间规整 (FastDTW)[14] 来测量两个有序度序列之间的距离
动态时间规整算法 (DTW) 能够找到两个任意长度时间序列之间的最佳对齐方式,但具有二次时间和空间复杂度,这将其仅用于小型时间序列数据集
FastDTW 是 DTW 的近似值,它将时间和空间复杂度都限制在 𝑂 (𝑛)
由于序列和的元素是节点的度数,我们对FastDTW采用上述两个序列中第和元素的距离函数如下:
这个距离不是测量度数的绝对差,而是测量更适合度数差异的相对差。
考虑到它们的 𝑘-hop 邻域,两个节点 𝑢 和𝑣 的结构角色距离可以定义为:
接下来,我们构建了一个多层加权图𝑀,它对节点之间的结构相似性进行编码
每一层 由一个加权无向完全图构成,该图具有原始图 𝐺 的所有节点
𝑀内部层𝑘的边定义为:
请注意,如果一个节点 𝑢 在当前层 中有太多或太少结构相似的节点,那么它应该更改层以获得更精细的上下文
上移一层,相似节点的数量将减少,而下移一层,相似节点的数量将增加
因此,我们将层间边定义如下:
其中 表示层 𝑘 中有多少结构相似的节点,即权重大于层 𝑘 的平均权重的传入边的数量,更具体地说:
然后我们采用随机游走的方法来获得每个节点的结构保持上下文
对于每一步,它既可以在一层内走,也可以在层间走。 我们定义了层变化常数𝛼,使得每一步停留在当前层的概率为 1 - 𝛼,向上或向下一层的概率为 𝛼
因此,给定当前节点 ,移动到当前层节点 的归一化概率为:
移动到上一层节点的归一化概率 为:
同样,移动到下一层节点的归一化概率 为:
2.2 Learning a Hyperboloid Model
最后,我们在生成的随机游走序列上训练双曲面模型,以获得结构角色保持嵌入
双曲空间是负曲率恒定的齐次空间 它不能在不失真的情况下嵌入欧几里得空间
然而,有几种双曲模型可以计算梯度
最常用的有双曲面、Poincaré球和Poincaré半空间
与以往使用Poincaré球模型和近似梯度不同,我们使用双曲面模型进行网络嵌入
因为该模型的梯度计算是精确的[16],并且我们可以在其上采用支持向量机(SVM)
2.2.1 Review of the Hyperboloid Model.
双曲面模型与球面模型有很多相似之处,类似于环境欧几里得空间中的球体
双曲面模型可以被视为环境空间中的“伪球体”,称为𝑀𝑖𝑛𝑘𝑜𝑤𝑠𝑘𝑖 𝑠𝑝𝑎𝑐𝑒
考虑一个具有内积的 (n+1) 维空间,其形式由下式给出:
我们使用 来表示 Minkowski 空间
类似于欧几里得空间中的单位球面,双曲面可以使用以下等式来描述:
对于给定的向量 ,该点的切线空间是一组点,其形式为
2.2.2 Gradient calculation on the Hyperboloid
类似于球体的情况,在 上定义的给定函数𝐸的梯度计算有几个步骤 [16]
𝑆𝑡𝑒𝑝 1:计算E在环境空间中的梯度,即
𝑆𝑡𝑒𝑝 2:将该向量投影到切线空间
请注意,符号在投影向量的表达式中被翻转:
𝑆𝑡𝑒𝑝 3:将梯度向量映射到双曲面上
这种操作称为指数映射
2.2.3 Hyperboloid Embedding Learning
在生成随机游走序列后,我们使用滑动窗口扫描所有序列并将出现在窗口内的节点对添加到多集𝑂作为所有正样本对
请注意,与常见的采样方法不同,每对节点𝑢和𝑣可以在𝑂中出现多次
直观地说,采样对的次数表明了该对的重要性。 在之前的工作 [11] 中,Nickel 等人使用两个节点的距离来定义链接的可能性
类似地,我们将两个节点的结构角色相似性定义为它们在嵌入双曲空间中的距离:彼此靠近的节点具有高相似性,反之亦然
我们将节点𝑢和𝑣之间的结构角色距离定义为
其中
- 是节点 𝑢 在双曲面模型中的嵌入
- 可以通过 来计算
然而,计算公式 15 的梯度涉及对 𝑉 的所有节点求和,并且对于大型网络效率低下
为了解决这个问题,我们利用对少量负对象进行采样的负采样方法来增强正样本的影响
因此,我们对于嵌入 的损失函数 𝐿 可以写成如下:
其中
- 是负样本集,其概率与𝑣在𝑂中的出现频率成正比
- 𝑀 是负样本的数量
其梯度的计算遵循方程 12、13和14,这使得模型学习的梯度下降
3 EXPERIMENTS
3.1 Model Training
...
3.2 Barbell Graph
3.3 Karate Network
3.4 Node classification
4 CONCLUSION
本文提出了一种将网络节点嵌入到保留结构角色信息的双曲空间的新方法
据我们所知,这是双曲模型的第一次尝试,可以学习节点结构的角色接近
我们的算法在一个合成杠铃图和四个真实的时间数据集上优于几个基线,用于嵌入可视化和节点分类
读后总结
2022/07/21 第一次阅读
文章的思路主体上借鉴了struc2vec
主要思路是
- 利用提取节点的节点信息
- 使用fastDTW计算两个节点之间的结构角色相似性
- 用struc2vec类似的方法构建层次图
- 然后使用随机游走在层次图上游走得到序列,一个序列中的节点结构角色相近
- 然后再将其嵌入双曲空间
与struc2vec不同在于
- 利用结构角色相似性构图
- 嵌入不适用Skip-Gram模型 ,使用双曲模型
对于双曲模型,细节不太懂,若有需要再仔细研读
结语
文章仅作为个人学习笔记记录,记录从0到1的一个过程
希望对您有一点点帮助,如有错误欢迎小伙伴指正