前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
Chen, Dongming, et al. “Network embedding algorithm taking in variational graph autoencoder.” Mathematics 10.3 (2022): 485.
属性网络在现实世界中被广泛的用于建模实体间的连接,其中节点的联通边表示对象之间的关系以及关于节点本身的描述中节点的属性信息。举了3个例子:
总而言之,分析和挖掘属性网络,进行决策和挖掘有用信息是十分具有学术和商业价值的。包括应用于下游任务,如节点分类、链路预测、可视化等。
属性网络嵌入使得网络的拓扑结构信息和节点属性信息得到保留,如图1所示,在只考虑网络结构的基础上,通过利用节点属性信息增强节点向量表示,进一步提高了下游任务的准确性。
文章通过GAE算法,引出了一些问题:
为了解决这些问题,文章提出了一种采用变分图自编码器的网络嵌入算法(NEAT-VGA)。其主要思想是:
最后在链路预测任务上进行了实验,本算法显示出更好的性能。
基于随机游走得嵌入算法对节点序列将进行随机采样,使得采样后的序列在很大程度上偏向节点,训练过程中没有考虑节点的属性信息。因此提出了MHRWAE算法,它是NEAT-GAT的一个模块,其主要功能是对属性网络中节点属性特征进行预处理。
MHRWAE算法的框架如图3所示,其主要思想是若网络中的某些节点具有相似属性且邻居节点的属性分布相似,则它们在网络中的嵌入也应相似。 如图示步骤:
,选择概率为
,那么从节点
转移到其邻居节点
的概率为:
其中
,
和
分别表示节点
和
的度,
表示节点
停留在当前节点的概率。
NEAT-VGA框架如图2,包括:
也就是使用上述的MHRWAE算法对节点属性进行预处理,即由MHRW算法采样、节点序列生成语料库和Doc2Vec模型训练得到节点属性向量。学习到的节点属性中包括其相邻节点的属性,因此,每个节点的属性都是一个属性句子,句子中的单词是节点的属性和相邻节点的属性。最后在Doc2Vec模型上训练,获得每个节点的属性特征向量。
将变分自编码器引入图卷积网络GCN中,构建属性网络编码器。 GCN考虑了高阶节点的邻近性,解决了网络稀疏性问题,并通过多层非线性转换捕获数据的非线性信息,GCN每层卷积过程可以用如公式2所示:
其中
表示第
层卷积层的输入,
表示第
层卷积层的输出,
,
是邻接矩阵,
是
的度矩阵,
表示非线性激活函数,比如Relu。
在编码这一步,NEAT-VGA算法获得了每个节点的高斯分布,高斯分布有均值
和方差
唯一确定,通过对高斯分布采样获得嵌入向量,而GCN编码就是获得
和
的过程。
具体来说,GCN的前两层共享参数
和
来提前特征,前两层被用作属性网络编码器。第三层权重参数
及
,获得
和
,每层的激活函数使用的是Relu,具体如下公式:
根据
和KaTeX parse error: Undefined control sequence: \siama at position 1: \̲s̲i̲a̲m̲a̲确定每个节点的高斯分布后,进行采样得到嵌入向量矩阵
,如式7:
其中,
服从标准分布
,
服从分布
也就是先从标准分布中随机采样一个
,然后根据公式计算
,最后根据梯度下降和反向传播迭代获得新的
和
。
(
插播反爬信息)博主CSDN地址:https://wzlodq.blog.csdn.net/
编码得到嵌入向量矩阵
后,便可根据式8求得重建后的邻接矩阵
:
得到学习到的重建后的新邻接矩阵
后,下面是损失函数的定义,预测两个节点间是否存在一条边,文章将其看作一个二分类问题,然后使用原矩阵
进行监督:
其中,
表示原邻接矩阵
中第
行
列的值,值域0到1之间,表示原图中节点
是否有一条边到节点
,同理
是重建后矩阵
的。
表示预测连接边的数量。最后套入交叉熵损失函数中。
使用GCN作为属性解码器,也就是在原来三层GCN编码器获得
之后,再连接一层GCN,输出重建后的属性矩阵
,预测原网络中每个节点的属性信息:
然后通过矩阵范数,计算原属性矩阵
和重建后属性矩阵
的误差,损失函数定义如式11:
使用
散度来计算相对熵,如式12:
散度用来描述两个概率分布之间的差异。其中,
是由先前的GCN编码器计算的概率分布,
是先验分布和标准高斯分布。
最终的损失函数如式13,结合了结构重建损失、属性重建损失和KL损失。
通过最小化损失函数,使得重建后的邻接矩阵及属性矩阵与重建前的相近,并且使GCN嵌入向量的概率分布接近标准高斯分布。
下表是使用数据集的情况:
进行了链路预测实验,随机删除了5%-10%的边作为测试集,使用逻辑回归作为分类器,也就是是否有边的二分类问题,然后使用AUC曲线下面积作为评价指标。还使用了AP指标,也就是precision@k,预测前k条边中多少是真实存在的边,然后取均值得到AP。
然后交代了一些实验参数细节,迭代200轮学习属性特征,属性维度是128维,变分自编码器迭代400轮,嵌入64维,学习率分别是0.05和0.01,超参
。
以下是实验结果:
所以比较的算法都是属性网络嵌入的算法,可以看出本算法NEAT-VGA(图中红色)在链路预测实验中,在这三个数据集上,AUC和AP指标都比其他算法效果更好。
NEAT-VGA算法为什么有所提升,作者总结为以下2点原因:
这篇文章提出了一种NEAT-VGA算法,以解决属性网络嵌入高维和稀疏性问题,这些问题会导致算法复杂度增加,且不能很好反映节点属性特征。此外,GAE算法再编码器部分使用了一个简单的映射,并没有考虑节点属性特征。NEAT-VGA算法使用了MHRWAE算法对节点属性预处理,提前节点属性特征。在链路预测实验中取得了更好效果。
但是,NEAT-VGA主要适用于静态网络,缺乏对网络动态变化特征的挖掘,这是未来的研究方向。
个人角度研读,水平有限,更多细节请移步原文。