持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第29天,点击查看活动详情
前言
Hello!
非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~
自我介绍 ଘ(੭ˊᵕˋ)੭
昵称:海轰
标签:程序猿|C++选手|学生
简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金,有幸在竞赛中拿过一些国奖、省奖...已保研。
学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语!
唯有努力💪
知其然 知其所以然!
本文只记录感兴趣的部分
3. Method
3.1. Notions
: 节点的邻域
:节点的度
the one-hop egonet of node :
- ,与顶点相连的节点集合
- :节点与它的邻域集合之间的顶点的边集合(也就是构成原图的子图)
:表示提取后的特征空间,m为特征的维度
低维向量空间(目标),其中
3.2. Model
RESD框架图
RESD包括三个部分
- 角色特征的提取过程
- 用于将特征组合成节点表示的变分自动编码器
- 用于增强学习嵌入的表示能力的基于节点度的正则化。
3.2.1. Feature extraction
如果两个节点和具有相似的结构同一性,则它们倾向于共享相同的角色。
尽管图的邻接矩阵包含了所有的拓扑信息,但由于邻接矩阵通常是稀疏的,而节点之间可能相距很远,甚至是不连通的,很难比较两个节点的结构一致性。
因此,结构相似性不能直接从邻接矩阵中学习,需要从邻接关系中提取紧凑的高阶结构特征。
早期的工作表明,许多高阶特征提取方法在角色发现中是有效的,如基于Motif计数的特征[12]、多跳邻居度数[31]和REFEX[20]。所有这些方法都可以作为框架RESD中的特征提取部分
在这里,我们采用了refex[20]
因为它的高效性和有效性,它通过以递归的方式聚合简单的局部和egonet特征来生成高阶结构特征
该方法为每个节点提取一个局部特征和五个基于egonet的特征。
对于节点,局部特征是节点度,基于的egonet特征定义如下:
3.2.2. Variational auto-encoder
由于现实网络中存在大量的噪声,所提取的高阶结构特征往往对噪声非常敏感,不能满足角色发现的需要。
因此,我们利用变分自动编码器(VAE)[24]将结构特征编码为结点表示
VAE参考资料: zhuanlan.zhihu.com/p/418352070 zhuanlan.zhihu.com/p/260627899…
VAE可以降低噪声,捕捉输入特征之间的非线性关系。与普通自动编码器(AE)相比,VAE有效地避免了过拟合问题,提高了输出嵌入的稳健性
我们使用多层感知器模型而不是图形神经网络(GNN)作为编码器
因为GNN总是平滑嵌入的事实会否定提取的特征。
在我们提出的RESD模型的VAE部分,给定提取的节点的特征向量,编码器定义如下:
- 和是第l层的权重和偏置bias
- L:编码器中的隐藏层数
- tanh(·)是双曲正切激活函数
- :编码器的输入
我们假设节点的表示服从高斯分布,其中的所有元素是独立的,并且
可以通过下面式子学习分布中的参数和
- 其中和分别是编码器最后一层的权重和偏置,之前的参数是共享的
我们对取对数,以保证标准方差始终为正。
然后,我们可以通过重新参数化技巧[24]获得节点表示Zj,这允许我们计算和的梯度
其中,是元素级乘积,服从标准高斯分布
对于RESD的解码器部分,我们同样使用多层感知器模型:
- 和为解码器中第隐含层的权重和偏差
- 为解码器的输入
- 为重构的特征矩阵,其中
最后,我们将VAE损失定义为:
3.2.3. Regularization
虽然上述VAE模型具有生成表达表示的能力,但在估计输入特征的分布时,它可能会丢失一些关键的结构信息
因此,在嵌入信息中添加约束来保存关键的结构信息是至关重要的。
从传统的基于图的角色发现方法的结构等价、规则等价等准则可以推断,扮演相同角色的节点具有相似的度。
因此,度是一个节点最重要的结构特征,并通过许多方法如Demo-Net[45]和DRNE[23]进行了实验验证
类似于DRNE[23],RESD定义基于等级的正则化器如下:
- 其中MLP(·)是一个修正线性单元激活ReLU(·)的多层感知器模型。
我们通过联合最小化特征重构和度正则化约束的损失来训练我们的深度学习框架RESD,如下所示:
- 其中β为基于度的正则化器的权重
RESD算法伪代码如下:
个人理解:
- 首先依据图的邻接矩阵 使用refex提取特征矩阵
- 然后依次遍历图中的节点
- 遍历到每一个节点时:
- 先使用等式(3)获得由于编码器得到的向量
- 再使用等式(5)计算由于VAE得到的损失
- 再使用等式(7)计算加上正则约束后的总损失
- 利用这个总的损失 反向传播 更新参数
- 应用训练好的参数,得到节点表示矩阵Z(就是最后我们需要的向量空间)
就是由编码器得到的组成的,也就是编码器得到的结果就是我们需要的在低维空间的嵌入!
3.3. Computational complexity analysis
给定网络G,设
- n表示节点数,
- e表示边数,
- r表示ReFeX的特征聚合数,
- m表示提取的特征矩阵X的维数
- k表示节点嵌入Z的维数
ReFeX的整个过程取
因为每次特征聚合的计算量都大于上一次聚合。
每个节点用VAE表示,计算复杂度为,正则化耗时。
因此在整个网络上的嵌入生成计算为。
由于r总是很小,且,所以RESD的整个计算。
因此,我们的RESD框架对于花费时间的大规模网络具有很大的潜力。
4. Experiments
4.1. Baselines
- node2vec [8]
- role2vec [12]
- struc2vec [31]
- RolX [21]
- DRNE [23]
- struc2gauss [48]
4.2. Datasets
数据集(无向无权图)
4.3. Experiment settings
在特征提取部分,我们使用ReFeX,设置
- 特征聚合次数为3次
- 箱数设置为5次
对于VAE的编码器和解码器,我们将
- 隐藏层的数量都设置为2
对于基于程度的正则化器,我们使用了一个带有ReLU激活函数的2层MLP模型
我们采用学习率为0.001的Adam SGD优化器[52],设置权重为0.001的L2正则化以避免过拟合。
对于大多数50个epoch,批大小设置为32。
在我们后来的实验中,如果没有特别说明,嵌入的维度设置为128,β设置为0.6。
4.4. Role classification
我们随机输入不同比例的数据来训练一个嵌入的线性逻辑回归分类器,而剩下的用于测试。
我们运行所有基线方法和RESD 20次,并计算它们在每个网络上的平均F1得分。
为了验证度保持约束的有效性,我们还运行了一个不含基于度的正则化器的RESD变体,称为RES
结果如下图:
4.5. Bot detection
在本节中,我们的目标是探索我们的模型是否可以检测到一些网络中的罕见角色。
我们选择了两个机器人只占总用户一小部分的维基百科谈话网络。
在这些网络中检测机器人是非常复杂的。
- 首先生成每个用户的表示
- 对于每个机器人,我们计算它与其他用户之间的欧氏距离
- 最后,我们选择与每个机器人最接近的K个用户,计算机器人的平均精度
大概意思是这样的: 首先对每一个user(包括bot机器人) 然后利用低维表示的bot 找到最接近它的k个user 看这k个user中 bot的比例是多少 若这个比例非常高 则说明对罕见角色嵌入的程度很高(模型越好)
结果如下表
- 在机器人检测任务上K个选定用户的精确度
- OT表示该方法不能在48小时内得到结果。
4.6. Parameter sensitivity and computational complexity
正则化的权重β和嵌入维数的参数敏感性
基线方法和RESD的运行时间
- 其中全值表示48小时内无法得到结果
- 所有这些方法的输出嵌入维数都设置为128
4.7. Visualization
采用的数据集: Brazil
利用t-SNE将嵌入的维数降至2以实现可视化
- 每个节点表示为一个点
- 颜色表示其角色
理想情况下,相同颜色的点之间应该很近,而不同颜色的点之间应该很远。
可视化结果:
5. Conclusion
不足:
- 模型中的结构特征过于简单
- 编码器忽略了网络结构
- 该模型只能应用在无权无向图上
在未来的工作中,我们计划利用图神经网络(GNN)来编码特征,同时提取节点之间的复杂关系。
我们也希望设计一个新颖的深度学习框架,产生比手工作品更富有表现力的结构特征。
据我们所知,大多数基于角色的网络嵌入方法只关注静态网络,而忽略了节点或边缘上的附加属性。为了更好地理解角色的影响,我们将进一步探索动态网络,引入属性来学习更有效的表示,这可能是未来有吸引力的工作。
读后总结
随着阅读论文的增加 读论文速度也快了起来
也没有之前那么生疏
对文章中提到的一些东西也还是有一点点懂的
这篇文章主要思路是:
- 通过邻接矩阵 使用Refex提取特征
- 再通过VAE 减少噪声对其的影响 提高模型的鲁棒性
- 又因为使用VAE会损失一些结构信息
- 再引入正则约束:度
- 二者结合 便于更好地提取节点的高阶特征
结语
文章仅作为个人学习笔记记录,记录从0到1的一个过程
希望对您有一点点帮助,如有错误欢迎小伙伴指正