携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详情
前言
Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ 自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金,有幸在竞赛中拿过一些国奖、省奖...已保研。 学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语! 唯有努力💪
知其然 知其所以然!
本文仅记录自己感兴趣的内容
简介
原文链接:www.mdpi.com/2227-7390/1…
年度:2022/02/22
Abstract
利用具有节点属性信息的复杂网络来表示对象之间的复杂关系
属性网络嵌入研究融合了属性网络在公共潜在表示空间中的拓扑和节点属性信息,将高维稀疏网络信息编码为低维密集向量表示,有效地提高了网络分析任务的性能
目前属性网络嵌入的研究面临着属性特征矩阵的高维稀疏性和属性信息利用不足的问题
本文提出了一种采用变分图自动编码器的网络嵌入算法(NEAT-VGA)
- 该算法首先对网络节点的属性特征进行预处理,即网络节点的属性特征学习
- 然后,将网络的特征学习矩阵和邻接矩阵输入到变分图自动编码算法中,得到势向量的高斯分布,更容易生成高质量的节点嵌入表示向量
- 然后,在结构和属性损失的情况下,对通过采样该高斯分布获得的节点的嵌入进行重建
- 通过迭代训练使损失函数最小,直到能够更好地获得包含网络结构信息和节点属性信息的低维向量表示,并通过链路预测实验结果对算法的性能进行了评估
1. Introduction
属性网络被广泛地用来建模现实世界中实体之间的联系,其中节点的连通边表示对象之间的关系以及关于节点本身的描述中节点的属性信息
例如
- 引文网络[1,2]描述学术作者的文章之间的引用,节点属性信息描述文章的摘要和主题。社交网络[3,4]描述人与人之间的人际关系,节点还包含用户区域、电子邮件,以及发布文字、图片和视频等。=
- 蛋白质相互作用网络[5]:除了蛋白质相互作用的拓扑信息外,每个节点还具有关于生物中蛋白质的属性信息
对这些属性网络进行数据分析和数据挖掘,利用网络信息进行预测和决策,发现隐藏在其中的有用信息,具有很强的学术和商业价值
常见的网络分析任务包括节点分类[6]、节点聚类[7]、社区检测[8-10]、链接预测[11,12]和异常检测[13]
在大数据时代,网络的规模越来越大,有些达到数亿个节点,维度高而稀疏,不仅结构复杂,而且信息丰富
如果将这种大规模的网络直接应用于数据挖掘,不仅会消耗大量的数据存储资源,而且计算的时间复杂度高,不利于算法的部署和应用
属性网络嵌入[14]使得属性网络的拓扑结构信息和节点属性信息能够有效地融合在共同的潜在表示空间中,从而保留了两者的信息
属性网络嵌入的原理图如图1所示
- 在以往只考虑网络结构信息的基础上
- 通过利用节点属性信息增强网络节点向量表示
- 进一步提高了下游网络分析任务的准确性
图神经网络(GNN)[15]也被用来执行网络嵌入
- 图形卷积网络(GCN)[16]和GraphSAGE模型[17]使用图形卷积网络、采样节点和用于特征聚集的局部邻居来学习节点的矢量表示
- 图自动编码器(GAES)[18]算法是一种属性网络嵌入算法,它引入了深度自动编码器,基于自动编码器的思想,在使用GCN编码后,在解码器中重构结构错误以学习节点的矢量表示
- 变分图自动编码器(VGAE)[18]通过使用图变分自动编码器来学习属性网络的嵌入表示,从而构建在GAE之上
- 静态属性网络共嵌入模型(CSAN)[19]也是一种基于图自动编码的属性网络嵌入算法,但在属性重构部分,采用了图卷积网络的GCN编码器的矩阵乘积和多层感知器MLP处理来重构属性错误
GAE算法是在提取网络属性特征时,属性特征矩阵作为GCN编码器的输入
节点属性特征矩阵一般通过使用词袋模型或TF-IDF模型对节点的描述信息进行处理而获得 如果词表太大,它往往具有高维稀疏性和巨大的算法复杂性的特点 此外,这些特征矩阵直接用作编码器输入,没有反映或充分利用节点属性信息
此外,GAE算法在编码部分采用单一的映射方法生成节点嵌入向量,而变差函数自动编码器生成潜在向量的分布,更有能力在采样后生成高质量的潜在向量,并且GAE算法没有考虑属性信息的重构损失。
针对上述问题,提出了一种采用变分图自动编码器的网络嵌入算法(NEAT-VGA)
NEATVGA算法的主要思想是
- 首先对属性特征进行预处理
- 然后将得到的属性特征学习向量与邻接矩阵一起输入到变分图自动编码器中,完成属性网络的嵌入任务
步骤为:
- 首先,利用MHRWAE算法学习属性网络中节点的属性特征,得到节点属性的低维向量表示
- 然后,将网络的特征学习矩阵和邻接矩阵作为变差函数自动编码算法的输入,以生成潜在向量的高斯分布,对高斯分布进行采样,得到节点的嵌入向量,重构结构损失和属性损失,迭代训练属性网络嵌入
最后的实验结果表明,与基准比较算法相比,本文提出的算法具有更好的链路预测结果,即本文提出的网络表示学习算法具有更好的表示性能
2. Related Works
DeepWalk[20]算法受到word2vec[21]的启发,该算法将网络中随机遍历得到的节点序列视为文本中的句子,将序列中的节点视为文本中的单词,通过使用跳图模型最大化预测节点上下文的概率来获得节点的嵌入表示
LINE[22]算法学习节点的嵌入表示,通过定义节点的一阶和二阶相似度来设计和优化目标函数。一阶相似度是指节点之间存在相邻的边,而二阶相似度是指节点之间的公共邻居节点。由于引入了二阶相似性,LINE极大地缓解了网络的稀疏性问题,所得到的节点嵌入表示也能最大程度地保持网络的局部和全局结构信息
基于DeepWalk,Node2Vec[23]引入了参数来控制随机行走的路径,允许选择是向深度还是向广度偏向随机行走,以及由随机行走生成的节点序列,从而更好地保留了网络的局部和全局结构信息。
随着深度学习在自然语言处理和计算机视觉领域的发展,也出现了许多利用深度学习进行网络嵌入的算法,它利用神经网络来提取属性网络结构和属性信息,结合得到网络节点的嵌入表示
- 自翻译网络嵌入(STNE)[24]算法使用序列模型将节点的内容信息序列映射到节点序列以进行网络嵌入
- 属性社会网络嵌入(ASNE)[25]算法结合了学习节点嵌入过程中社会网络中节点的属性信息
- 属性网络表示学习(ANRL)[26]算法是一种利用邻域增强的自动编码器和属性感知跳图模型来获取节点属性和网络结构信息的属性网络嵌入算法,该算法将节点的属性信息作为自动编码器的输入来重构相邻节点的属性信息。
3. Methodology
NEAT-VGA算法由以下5个组件组成:
- Node Attribute Feature Learning
- 我们使用Metropolis-Hastings随机游走(MHRW)算法[27]采样、节点序列生成语料库和Doc2Vec[28]模型训练来对属性信息进行预处理,即属性特征学习,称为MHRWAE算法
- 高维稀疏属性特征矩阵学习可以得到低维的属性特征学习矩阵,更好地反映属性特征学习矩阵
- Attribute Network Encoder Encoder
- 将邻接矩阵和属性特征学习矩阵作为变分图自动编码的输入,采用GCN进行编码,并将属性网络映射为高斯分布
- Structure Reconstruction Decoder
- 对高斯分布进行采样得到节点的矢量表示,利用结构解码器重构网络的邻接矩阵,即网络的结构信息。
- Attribute Reconstruction Decoder
- 对所述高斯分布进行采样以获得节点的矢量表示,并使用所述属性解码器重构所述编码器输入的属性特征学习矩阵
- Loss Function Definition
- 我们定义了一种新的损失函数,并将解码器重建的矩阵与变差函数自动编码器的输入信息进行比较来构造损失函数,同时考虑了结构重建和属性重建的影响
- 最终的学习产生了在低维空间中对于结构和属性都尽可能好的矢量表示。图2显示了NEAT-VGA算法的框架
NEAT-VGA算法的框架
3.1. Preliminaries
NEAT-VGA算法的目标是基于属性网络图学习每个节点的特征向量
符号和说明如表1所示
3.2. Aggregation-MHRWAE
基于随机游动的网络嵌入算法对节点序列进行随机游动采样,使得采样后的序列在很大程度上偏向节点,在训练过程中没有考虑节点的属性信息
结构向量与属性向量之间的拼接关系过于复杂,不能很好地实现结构与属性的直接融合
在这篇论文中,我们提出了MHRWAE算法,它是NEAT-VGA算法的一个模块
其主要功能是对属性网络中节点的属性特征进行预处理
MHRWAE算法的主要思想是,如果某些节点具有相似的属性,并且相邻节点的属性分布相似,则它们在网络中的嵌入应该更加相似
满足两个条件:节点具有相似的属性(属性特征) && 相邻节点的属性分布相似(结构特征)
该算法的框架如图3所示
MHRWAE算法使用MHRW生成固定长度的节点序列,并利用网络结构信息基于节点邻域关系和节点属性信息的聚合生成语料库
然后使用带负采样的跳图训练语料库,融合节点的网络结构和属性信息,得到每个节点的低维表示向量
(1)使用MHRW算法进行无偏随机漫游以生成节点序列
MHRW算法对节点进行不偏向较大度的采样,采样生成的节点序列反映了节点之间的连通性,即网络结构信息
MHRW算法的采样过程是在随机游走算法中使用MH算法的传输概率来确定当前节点被采样到相邻节点时的传输概率
假设在MH算法中给出的概率分布为,并且假设选举概率为
则如公式(1)所示,采样从节点到其相邻节点的转移概率如下
其中
- ,和分别表示节点和的次数
- 表示节点停留在当前节点的概率
(2)语料库生成
在MHRWAE算法生成语料库的过程中,与DeepWalk使用多组节点和节点上下文节点作为语料库不同
它使用多组节点和节点邻域节点属性作为SGNS训练的语料库
使用邻域节点属性聚合来生成语料库,其中生成给定长度的节点序列,并且对于序列中的每个节点,将节点及其邻域节点的属性配对并添加到多集,序列中的每个节点完成迭代的节点属性聚合操作以形成最终语料库
(3)Doc2Vec模型训练语料库
Doc2Vec是一个生成文档的矢量表示的模型,模型中的PV-DBOW方法支持SGN
使用语料库作为输入,使用Doc2Vec模型对语料库进行训练,并生成每个文档的向量表示,即获得每个节点的向量表示
3.3. NEAT-VGA
算法1显示了NEAT-VGA算法的训练过程。
3.3.1. Node Attribute Feature Learning
节点属性信息的预处理采用MHRWAE算法,由MHRW算法采样、节点序列生成语料库、Doc2Vec模型训练三部分组成
节点将其相邻节点的属性包含在它们的属性中
因此,每个节点的属性是属性的句子,句子中的词是节点的属性和相邻节点的属性
对于每个节点,都有一个对应的语句描述该节点的属性,而邻域属性的加入使得结构更相似的节点成为具有更相似节点属性的语句。
最后,在Doc2Vec模型上训练节点编号和属性语句,得到每个节点的属性特征学习向量。
对于属性网络,根据MHRWAE算法,给定每个节点的属性嵌入表示的向量维度、采样节点序列的数量、每个采样节点序列的长度、节点属性聚合时的邻域大小,并且可以获得负采样参数
3.3.2. Attribute Network Encoder
该算法是通过使用GCN在网络结构中引入变分自编码器来实现的,GCN用于捕获关于底层属性网络的信息
GCN编码器考虑了高阶节点的邻近性,解决了网络稀疏性的问题,通过多层、非线性变换捕获数据的非线性信息
每层的图形卷积网络可以用式(2)来表示具体的卷积过程,如下所示:
其中
- 是l层卷积层的输入
- 是层卷积层的输出,这意味着网络的邻接矩阵和单位矩阵相加在一起
- 是对角线矩阵,并且的值与对角线有关。具体的计算公式是
- σ(·)是一个非线性的激活函数,例如Relu(X)=max(0,x)
在编码阶段,NEAT-VGA算法获得每个节点的高斯分布,并对该高斯分布进行采样,得到属性网络嵌入表示矩阵,该高斯分布可以由均值、μ、方差、δ唯一确定,而编码部分是通过GCN编码器获得μ和δ的过程
NEAT-VGA算法首先使用两层广义遗传算法来分担权值,在提取特征后,再加入一层广义遗传算法得到μ,σ,以及权值,
因此,每个μ和σ的生成是通过三层GCN编码获得的,但在前两个中,分层时共享参数的网络编码器被用作属性网络编码器
图的每一层卷积网络的激活函数为,具体的属性网络编码过程如公式(3)-(6)所示:
在得到μ和σ后,即每个节点的高斯分布的均值向量协方差矩阵之后,可以进行进一步采样,以计算属性网络嵌入的表示矩阵
通过均值和方差获得Z的具体公式如公式(7)所示:
其中ε服从标准,Z服从
因此,首先从标准分布中随机抽样一个ε,然后通过方程计算Z
然后通过反向传播进一步更新梯度,并迭代训练得到新的μ和σ。
3.3.3. Structure Reconstruction Decoder
在属性网络编码部分,得到属性网络嵌入表示矩阵
通过矩阵预测两个节点之间是否有边,可以得到重构的邻接矩阵B,Z,计算如公式(8)所示,如下:
该函数可以将输入变量映射到(0,1)之间
它是神经网络中经常使用的激活函数,是矩阵Z的转置矩阵
对于结构错误,通过计算重构的邻接矩阵与原始邻接矩阵之间的误差来预测原始网络中的节点对之间是否存在连接,这可以被视为机器学习中的两类问题,使用两类预测
作为损失函数,计算公式(9)如下:
其中
- 表示A中第i行第j列的元素的值,其值为0或1,表示原始网络中的节点i和节点j之间是否有边
- 表示B中元素的值。在Sigmoid(·)函数之后,它的值在0到1之间
- 表示预测的连接边数。这样构造损失函数的目的是使结构解码器重构的邻接矩阵更接近于原始网络的邻接矩阵
3.3.4. Attribute Reconstruction Decoder
使用GCN作为属性解码器,在编码器获得Z后,连接一层GCN,输出重构的属性矩阵Y,并预测原始网络中每个节点的属性信息。具体计算如公式(10)所示。
其中,计算节点属性重构误差时,该层GCN的输出维度为m。
对于属性误差,可以通过计算向量空间中与重构矩阵之间的距离来定义重构属性矩阵与原始属性矩阵之间的误差,如公式(11)所示
其中表示,矩阵之差的弗罗贝尼乌斯范数
3.3.5. Loss Function Definition
损失函数由结构损失函数、属性损失函数和相对熵共同确定
我们使用KL散度来计算相对熵,其计算公式如公式(12)所示,如下所示:
KL发散度被用来描述两个概率分布之间的差异的度量。是先前GCN编码器计算的概率分布,是先验分布和标准高斯分布
在训练过程中,为了控制和对总损失函数的贡献,在和的权值中引入了参数。计算公式如公式(13)所示,如下:
α值越大,属性重构损失对总损失函数的贡献越大。最小化过程是使重构的邻接矩阵和属性矩阵更接近GCN编码器的输入,使GCN得到的概率分布更接近标准的高斯分布。
在训练过程中,在梯度下降法中使用Adam算法来最小化上述损失函数,在迭代Q次之后更新学习率。最后,利用NEAT-VGA模型得到能更好地反映网络的结构信息和属性信息的
4. Experiments
4.1. Experimental Setting
4.2. Results and Analysis
5. Conclusions
针对属性网络嵌入中的属性信息矩阵往往是高维稀疏的,增加了算法的复杂度,不能很好地反映节点的属性信息,本文提出了NEAT-VGA算法;GAE算法在编码部分采用了单一的映射方法,没有考虑属性重构。NEAT-VGA算法采用MHRWAE算法作为节点属性特征提取的预处理方法。在引文属性网络数据集上进行链接预测的实验结果验证了该算法优于其他比较算法。然而,它主要适用于静态网络,缺乏对网络动态变化特征的挖掘,这是未来的研究方向。
读后总结
2022/07/29 第一次阅读
算法步骤如下
对于的属性特征,先使用MHRW算法得到其属性矩阵的嵌入矩阵
然后利用属性特征矩阵(嵌入后)以及邻接矩阵作为的输入,训练参数
得到输出(编码结果)
然后利用分别重构邻接矩阵和属性特征矩阵
建立目标损失函数
优化此函数,得到最优值,即为最优嵌入
这里的一个创新点就是利用MHRW先对属性矩阵进行了嵌入,再利用VGAE进行无监督学习
结语
文章仅作为个人学习笔记记录,记录从0到1的一个过程
希望对您有一点点帮助,如有错误欢迎小伙伴指正