一种基于节点相似性的图注意力网络的链路预测方法

文档序号:30578073发布日期:2022-06-29 10:35阅读:149来源:国知局
一种基于节点相似性的图注意力网络的链路预测方法

1.本发明属于图神经网络领域,具体涉及一种基于节点相似性的图注意力网络的链路预测方法。


背景技术:

2.在复杂网络中,网络中的节点存在于非欧式空间,所以,在表示节点的信息时,除了像欧式空间中的数据一样考虑每一个节点自身的特征信息,还需要考虑节点之间的结构信息。只有学习到的节点嵌入表示充分地体现节点的所有特征信息,才能在下游任务如节点分类、链路预测中取得出色的结果。因此,在学习网络中的节点在低维空间中的嵌入表示时,要尽可能的包含每个节点所有的信息,包括节点自身信息和结构信息,以在低维空间中真实还原网络中每个节点的全部特征信息。
3.图注意力神经网络提出利用节点的一阶邻居节点的信息来聚合该节点的结构信息,并通过给邻居节点设置不同的可训练的注意力系数来增加模型的表达能力,进而得到每一个节点的嵌入表示,并在链路预测任务中取得了较好的结果。但是图注意力神经网络对结构信息的聚合仅仅根据已知网络的邻接矩阵来判断节点之间的结构关系,该模型没有考虑相似节点之间的结构关系,即如果两个节点之间虽然不具有链接关系,但是具有共同的邻居节点,则这两个节点之间具有更多的共同特征,即这两个节点在低维空间中的嵌入表示应该是更接近的。这使得图注意力网络学习到的节点在低维空间中的嵌入表示不能完整地包含所有的结构信息,进而影响网络的嵌入表示在链路预测任务中的结果。


技术实现要素:

4.发明目的:本发明的目的在于针对上述现有技术存在的问题,提出一种基于节点相似性的图注意力网络的链路预测方法,使模型中的每一个节点聚合到更多的结构信息,进而增强模型的表达能力,并将通过基于节点相似性指标的图注意力神经网络学习到的节点嵌入表示应用于链路预测任务中。
5.技术方案:本发明提出一种基于节点相似性的图注意力网络的链路预测方法,具体包括以下步骤:
6.(1)构建无向异质网络模型,并对网络中的节点数据进行预处理,得到网络的邻接矩阵,再利用节点相似性指标计算网络的相似度矩阵;
7.(2)构建由两层图注意力层组成的基于节点相似性指标的图注意力网络模型,求出网络中所有节点的嵌入表示;
8.(3)根据训练集中的表示“真边”的节点对和表示“假边”的节点对,将每一节点对中的两个节点的嵌入表示进行点乘,输出的值作为该节点对之间存在边的分数,再与已经设定好的标签进行训练;
9.(4)将通过基于节点相似性的图注意力方法学习到的节点的嵌入表示以串联的方式输入到机器学习分类器中,进行链路预测,得到每一个节点对的预测结果。
10.进一步地,所述步骤(1)包括以下步骤:
11.(11)构建一个无向异质网络模型,包括描述节点之间链接关系的文件,用于构成网络的邻接矩阵,将文件中的节点对关系进行预处理,包括从0开始重新对网络中的节点编号,生成加上自环的网络的邻接矩阵和节点的相似度矩阵;
12.(12)对无向异质网络中的节点对进行负采样,并划分为训练集和测试集,对训练集和测试集中节点对关系设置标签;
13.(13)对无向异质网络中的所有节点设定初始特征表示。
14.进一步地,所述步骤(2)实现过程如下:
15.第一层图注意力层的特征输入维度是节点的初始特征维度,通过一个随机权重矩阵w,将节点嵌入表示转变为更高层次的特征表示;再通过注意力机制计算节点相似度矩阵中每个节点与邻居节点和相似节点以及自身节点之间的经过归一化处理的注意力系数α;引进多头注意力机制,通过k个独立的注意力机制分别求相应的新的节点特征表示,将其特征串联在一起,得到中间层的节点嵌入表示,并将中间层的节点嵌入表示通过激活函数elu进行非线性转换;第二层图注意力层将中间层的节点嵌入表示作为初始特征向量输入,通过一个权重矩阵w1,将节点嵌入表示的维度转换为输出的特征维度,再通过多头注意力机制计算每个节点与邻居节点和相似节点及自身之间的注意力系数α;对于学习到的节点特征表示,可以使用与第一层相同的串联操作,也可以使用平均法将其对应维度相加,再取平均值作为节点的嵌入表示,并根据下游任务选择合适的激活函数。
16.进一步地,所述步骤(3)实现过程如下:
17.(31)根据训练集中的表示正边的节点对和表示负边的节点对,将每一节点对的两个节点的嵌入表示进行点乘,输出的值作为该节点对之间存在真实边的分数,再与已经设定好的标签进行训练,使具有相同标签的节点对之间的嵌入表示更加相似;
18.(32)选择优化器和损失函数,通过反向传播,不断调整模型的权重参数和每一节点对之间的注意力系数,使得模型的学习表示更加符合网络的真实特征;
19.(33)通过使用early stopping方法来防止模型出现过拟合,以获得更好的泛化性能;将训练好的模型进行保存,用于下游的链路预测任务。
20.进一步地,所述步骤(4)实现过程如下:
21.(41)通过sklearn包调用随机森林模型,并设置参数;
22.(42)调用已经训练好参数的基于节点相似性指标的图注意力神经网络模型,对于已经划分好的训练集数据和测试集数据,将每一个节点对的两个节点的嵌入表示串联在一起作为边的特征表示,进而得到训练集中的边的嵌入表示,将包含一半正边和一半负边的边的特征表示和对应的标签输入到随机森林中进行训练,再将测试集中边的特征表示输入到经过训练的随机森林模型中,进行标签的预测;
23.(43)根据随机森林的预测结果与真实标签的对比,得到随机森林的预测结果的评价指标,即auc值,来判断于节点相似性指标的图注意力神经网络模型学习到的节点嵌入表示的优劣。
24.有益效果:与现有技术相比,本发明的有益效果:1、网络结构大多呈现稀疏性,每一个节点的邻居仅仅是网络中所有节点的一小部分,这使得原模型只能聚合该节点的一阶邻居的信息,通过增加相似节点,可以是每一节点额外聚合部分二阶邻居的信息,增加每一
节点的聚合信息的范围,使得模型的表达能力更强;2、通过节点相似性指标,将更多相关的节点联系再一起,使得每一个节点学习的嵌入表示更加充分地表现网络自身的结构信息,进而使得节点的嵌入表示在下游链路预测任务中取得更好的结果。
附图说明
25.图1为本发明的流程图;
26.图2为基于节点相似性指标的图注意力网络的结构示意图;
27.图3为利用随机森林模型进行链路预测的流程图。
具体实施方式
28.下面结合附图对本发明作进一步详细说明。
29.本发明提出一种基于节点相似性的图注意力网络的链路预测方法,如图1所示,包括以下步骤:
30.步骤1:构建无向异质网络模型,并对网络中的节点数据进行预处理,得到网络的邻接矩阵,再利用节点相似性指标计算网络的相似度矩阵。
31.准备一个无向网络数据集:包括描述节点之间链接关系的文件,用于构成网络的邻接矩阵,还原该复杂网络的结构特征,本实施方式中选择常见的cora数据集,这个数据集包括2708个节点和5429条边。
32.数据处理:将文件中表示节点之间的链接关系的节点对数据进行预处理,包括从0开始重新对网络中的节点编号,生成网络的加上自环的邻接矩阵adj,并根据节点相似性指标中的jaccard指标,通过加上自环的邻接矩阵adj计算该网络的节点相似度矩阵s,再根据网络中已知的“真边”的数量进行负采样,生成相同数量的“假边”,并把所有的“真边”和“假边”分别按照7:3的比例进行随机划分,并把划分好的70%的“真边”和70%的“假边”按顺序保存好作为模型的训练集train_data,其他的30%的“真边”和30%的“假边”按顺序保存好作为模型的测试集test_data,最后对训练集和测试集中节点对关系设置标签,对于“真边”设置标签为“1”,对于“假边”设置标签为“0”,并保存为训练集标签列表train_labels=[1,1,1,

,0,0,0],该列表的形状是[1,7600]和测试集标签列表test_labels=[1,1,

,0,0],该列表的形状是[1,3258]。
[0033]
对该网络中的2708个节点随机设定初始嵌入表示,取每一个节点的初始嵌入维度为64,本实例中调用pytorch包的randn函数随机返回一个符合均值为0,方差为1的正态分布的张量inputs,张量的形状为[2708,64],inputs的每一行代表该索引对应的节点的初始嵌入表示。
[0034]
步骤2:构建由两层图注意力层组成的基于节点相似性指标的图注意力网络模型,求出网络中所有节点的嵌入表示,具体如图2所示。
[0035]
首先,构建基于节点相似性指标的图注意力神经网络模型,模型由两层图注意力层组成。第一层图注意力层的特征输入维度是节点的初始特征维度,通过一个随机权重矩阵w,将节点嵌入表示转变为更高层次的特征表示。再通过注意力机制计算节点相似度矩阵中每个节点与邻居节点和相似节点以及自身节点之间的注意力系数α。为了比较不同节点对之间的注意力系数,通过softmax函数对注意力系数进行归一化处理,使得每一个节点的
所有注意力系数之和为1。除此之外,为了稳定自我注意的学习过程,引进了多头注意力机制,通过k个独立的注意力机制分别求相应的新的节点特征表示,再将其特征串联在一起,即可以得到中间层的节点嵌入表示,并将中间层的节点嵌入表示通过激活函数elu进行非线性转换,增加模型的学习能力。第二层图注意力层同理,将中间层的节点嵌入表示作为初始特征向量输入,通过一个权重矩阵w1,将节点嵌入表示的维度转换为输出的特征维度,再通过多头注意力机制计算每个节点与邻居节点和相似节点及自身之间的注意力系数α。对于学习到的节点特征表示,可以使用与第一层相同的串联操作,也可以使用平均法将其对应维度相加,再取平均值作为节点的嵌入表示,并根据下游任务选择合适的激活函数,为训练模型做准备。
[0036]
本实施方式中设定第一层图注意力层的输入特征维度是节点的初始嵌入维度64,输出的特征维度是32。输入节点的初始嵌入表示inputs和表示网络结构信息的节点相似度矩阵s。为了使模型获得足够的表达能力,将输入特征转换为更高层次的特征,增加一个可学习的线性变换,即引进一个全图共享的权重参数矩阵w,其中将inputs乘上随机权重矩阵w,将节点嵌入表示的维度转换为32。通过注意力机制α计算每个节点i与邻居节点和相似节点以及自身节点j之间的注意力系数α
ij

[0037]
α
ij
=α(whi,whj)=leakyrelu(a
t
[whi||whj])
ꢀꢀ
(1)
[0038]
其中,权重向量激活函数leakyrelu的参数negative_slope=0.2,

t
表示转置,||表示串联操作,将whi,whj串联在一起;通过计算两个节点之间的注意力系数来表示节点j的特征对于节点i的重要性。因为考虑网络的结构特征,所以只通过节点相似度矩阵计算节点i与节点j之间的注意力系数,其中j∈ni,包括节点i的一阶邻居和其一阶相似节点s,s是通过节点相似性指标获得的节点i的相似节点,以及其本身i,因为增加了通过节点相似性指标得到的相似节点,使得每一个节点聚合的结构信息更加丰富。
[0039]
因为考虑网络的结构特征,所以只计算节点i与其一阶邻居j之间的注意力系数,其中j∈ni,ni包括节点i的一阶邻居和其一阶相似节点s,s是通过节点相似性指标获得的节点i的相似节点,以及其本身i,因为增加了通过节点相似性指标中的jaccard指标得到的相似节点,使得每一个节点学习到的网络的结果信息更加全面。并且,为了比较不同节点对之间的注意力系数,通过softmax函数将注意力系数αij归一化,使得每一个节点的所以注意力系数之和为1,即:
[0040]
α
ij
=softmaxj(α
ij
)
ꢀꢀ
(2)
[0041]
式(2)可用于判断节点之间的重要性。
[0042]
将归一化的注意力系数α
ij
用于计算对应节点特征的线性组合,再通过激活函数elu进行非线性转换,最后得到每个节点的最终输出的嵌入表示h
′i,即:
[0043][0044]
为了稳定自我注意的学习过程,引进了多头注意力机制,通过k个独立的注意力机制分别求相应的新的节点特征表示,再将其特征串联在一起,即:
[0045][0046]
其中,||表示串联。
[0047]
模型的第二层图注意力层与第一层注意力层结构相同,但参数需要改变:构建图注意力层,设定第二层图注意力层的输入特征维度是第一层图注意力层输出的节点嵌入维度32,则该层输出的节点特征维度设定为16。
[0048]
通过乘以权重矩阵w1,将节点的特征维度转换为16,再通过多头注意力机制分别计算每个节点与邻居节点和相似节点及自身之间的注意力系数,但在输出层上,对于多头注意力机制分别学习到的节点的嵌入表示,本实例使用平均法进行处理,将其对应维度相加,再取平均值作为最终输出的节点的嵌入表示h
′i,即:
[0049][0050]
此处选择通过激活函数sigmoid进行非线性转换,为训练模型和链路预测任务做准备。
[0051]
此外,为了防止模型过拟合,我们在两层注意力层之前加上都一个dropout函数对输入的节点嵌入表示随机删除一定的值,其参数p=0.6,以提高模型训练的效果。
[0052]
步骤3:根据训练集中的表示“真边”的节点对和表示“假边”的节点对,将每一节点对中的两个节点的嵌入表示进行点乘,输出的值作为该节点对之间存在边的分数,再与已经设定好的标签进行训练,使具有相同标签的节点对之间的嵌入表示更加相似。
[0053]
选择合适的优化器和损失函数,通过反向传播,不断调整模型的权重参数和每一节点对之间的注意力系数,使得模型的学习表示更加符合网络的真实特征。本实例选择的优化器是adam,其学习率为0.01,损失函数选择的是binary_cross_entropy_with_logits函数。模型的训练次数为epoch=100。
[0054]
此外,通过使用early stopping方法来防止模型出现过拟合,取其参数为20,即连续20次训练周期中损失函数的值loss都没有得到降低时,停止模型训练,以防止模型过拟合取以获得最好的泛化性能。
[0055]
步骤4:将通过基于节点相似性的图注意力方法学习到的节点的嵌入表示以串联的方式输入到机器学习分类器中,进行链路预测得到每一个节点对的预测结果,如图3所示。
[0056]
首先,通过sklearn包调用随机森林模型,本实例中模型的参数n_estimators的值设定为100,即选择100个决策树,max_features为节点嵌入表示维度的平方根,其他参数选择默认。
[0057]
然后,调用已经训练好参数的基于节点相似性指标的图注意力神经网络模型,利用节点的嵌入表示来表示节点对之间的边的关系,将每一个节点对的两个节点的嵌入表示串联在一起作为它们之间边的特征表示,进而得到训练集中数据对应的边的嵌入表示和测试集中数据对应的边的嵌入表示,随后将训练集中包含一半“真边”和一半“假边”的边的特征表示和对应的训练集标签输入到随机森林模型中进行参数训练,训练完成之后将测试集中所有边的特征表示输入到已训练的随机森林模型中,进行标签的预测,如果预测结果为“1”,表示该节点对之间存在链接关系,如果预测标签为“0”,表示该节点对之间不存在链接关系。
[0058]
最后,随机森林模型独立地运行十次,取十次预测结果的平均auc值来评判链路预测结果的优劣,进而表示我们提出的基于节点相似性指标的图注意力神经网络模型学习到
的节点的嵌入表示的好坏。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1