一种基于稀疏注意力的动态图链接预测方法和系统

文档序号:37451276发布日期:2024-03-28 18:34阅读:65来源:国知局
一种基于稀疏注意力的动态图链接预测方法和系统

本发明属于动态图链接预测领域,更具体地,涉及一种基于稀疏注意力的动态图链接预测方法和系统。


背景技术:

1、动态图可以根据其离散或连续时间的性质分类为离散时间动态图(discrete-time dynamic graph,简称dtdg)和连续时间动态图(continuous-time dynamic graph,简称ctdg),其中ctdg可以视为一系列带时间戳的事件流,其随着节点级和边级时间而演变,例如节点u和节点v在时间t时发生的相互作用表示为元组(u,v,t),其更接近现实场景,能允许更精细的时间分辨率。近年来,图数据以惊人的速度增长,存在于诸如社交网络、科学引用与写作、交通系统以及推荐系统等等现实场景,这些数据中的节点可能代表人、帖子、论文、商品等等,而链接则可能代表回复、引用、购买等等,这些链接往往是海量的且随时间不断演化的,因此预测未来某些链接是否会发生具有很大的商业价值与实现意义,其中链接预测(link prediction)是指给定两个节点预测其在未来某个时间是否会有交互。总的来说,研究连续时间动态图链接预测是迈向真实世界的实用机器学习的重要一步。

2、当前主流的动态图链接预测方法主要有如下几类:基于时间随机游走的动态图链接预测方法、基于时间图神经网络的动态图链接预测方法、基于内存网络的动态图链接预测方法、以及基于序列模型的动态图链接预测方法;针对基于时间随机游走的动态图链接预测方法,其采用因果抽取和基于集合的匿名化,前者按照时序倒序抽取游走,后者对一组采样游走用节点的命中次数替换节点身份,提升了ctdg的归纳学习能力;基于时间图神经网络的动态图链接预测方法提出了一种基于理论的函数时间编码,并基于该技术将图神经网络成功应用到了动态图领域;基于内存网络的动态图链接预测方法使用两个循环神经网络(recurrent neural network,简称rnn)在每次交互中更新用户和项目的嵌入,这使它能够更好地预测未来的用户项目交互和用户状态的变化;基于序列模型的动态图链接预测方法将transformer推广到时间图学习场景中,引入了一个双流编码器,其分别从与两个交互节点相关的时间邻域中提取表示,然后利用一个协同注意力transformer在语义层次上对相互依赖进行建模,充分利用transformer建模长期依赖的强大能力。

3、然而,上述方法都存在一些不可忽略的缺陷:

4、1、基于时间随机游走的动态图链接预测方法的时间随机游走采样过程的时间复杂度与游走次数和深度成正比,这一部分相对于嵌入表示学习部分反而成了训练过程的最大瓶颈,导致较为低效的训练效率;

5、2、基于时间图神经网络的动态图链接预测方法存在关键的邻域聚合步骤,该方法的计算图会随模型深度的增加呈指数增长,导致出现邻域爆炸问题;

6、3、基于内存网络的动态图链接预测方法分别对源节点和目标节点聚合时间邻域信息时采用rnn类架构,这会导致高额的计算成本,并在优化过程中存在梯度的消失问题,从而无法捕获长期的依赖关系;

7、4、基于序列模型的动态图链接预测方法引入了transformer模型,但由于注意力模块具有相对于上下文大小二次的时间和空间复杂度,导致其存在冗余的特征学习和扩展性问题。


技术实现思路

1、针对现有技术的以上缺陷或改进需求,本发明提供了一种基于稀疏注意力的动态图链接预测方法。其目的在于,解决现有基于时间随机游走的动态图链接预测方法的时间随机游走采样过程的时间复杂度与游走次数和深度成正比,导致较为低效的训练效率的技术问题;以及现有基于时间图神经网络的动态图链接预测方法存在关键的邻域聚合步骤,该方法的计算图会随模型深度的增加呈指数增长,导致出现邻域爆炸的技术问题;以及现有基于内存网络的动态图链接预测方法由于在两个目标交互节点的时间邻域聚合信息时采用rnn类架构,导致高额的计算成本以及在优化过程中存在梯度的消失问题,从而无法捕获长期的依赖关系的技术问题;以及现有基于序列模型的动态图链接预测方法由于使用了相对于上下文大小二次的时间和空间复杂度注意力模块,导致冗余的特征学习和扩展性的技术问题。

2、为实现上述目的,按照本发明的一个方面,提供了一种基于稀疏注意力的动态图链接预测方法,包括以下步骤:

3、(1)获取待分析的、包括源节点和目标节点的节点对的节点对信息。

4、(2)从步骤(1)获取的待分析的节点对的节点对信息进行邻居采样处理,以得到节点对的邻域信息列表集合;

5、(3)对步骤(2)得到的节点对的邻域信息列表集合进行数据格式规范化处理,以得到规范化后的节点对的邻域子图信息列表集合;

6、(4)将步骤(3)规范化后的节点对的邻域子图信息列表集合输入预先训练好的基于稀疏注意力的动态图链接预测模型中,以得到节点对的链接预测结果。

7、优选地,步骤(2)具体为,首先,基于最近时间优先获取源节点在时间戳ts之前有过链接交互的u个邻居,以及目标节点在时间戳ts之前有过链接交互的u个邻居;然后,使用源节点的u个邻居的节点id创建第一节点id列表,使用目标节点的u个邻居的节点id创建第二节点id列表,其中第一节点id列表的每个条目为源节点的一个邻居的节点id,第二节点id列表的每个条目为目标节点的一个邻居的节点id;随后,使用源节点与u个邻居相连的边id创建第一边id列表,使用目标节点与u个邻居相连的边id创建第二边id列表,其中第一边id列表的每个条目为源节点与其一个邻居的链接边的id,第二边id列表的每个条目为目标节点与其一个邻居的链接边的id;接着,使用源节点与u个邻居交互的时间戳创建第一时间戳列表,使用目标节点与u个邻居交互的时间戳创建第二时间戳列表,其中第一时间戳列表的每个条目为源节点与其一个邻居的链接交互时间戳,第二时间戳列表的每个条目为目标节点与其一个邻居的链接交互时间戳;最后第一节点id列表、第二节点id列表、第一边id列表、第二边id列表、第一时间戳列表和第二时间戳列表共同组成节点对的邻域信息列表集合,其中以上6个列表的条目总数均为u。

8、优选地,步骤(3)包括如下子步骤:

9、(3-1)判断节点对的邻域信息列表集合中的第一节点id列表、第二节点id列表、第一边id列表、第二边id列表、第一时间戳列表和第二时间戳列表中的条目总数是否均大于m(其中m的取值一般大于u,优选为32),如果是则进入步骤(3-2),否则进入步骤(3-3);

10、(3-2)截取第一节点id列表、第二节点id列表、第一边id列表、第二边id列表、第一时间戳列表和第二时间戳列表中的倒数m个条目,以得到条目总数均为m的更新后的第一节点id列表、第二节点id列表、第一边id列表、第二边id列表、第一时间戳列表和第二时间戳列表,然后进入步骤(3-4);

11、(3-3)将第一节点id列表、第二节点id列表、第一边id列表、第二边id列表、第一时间戳列表和第二时间戳列表的末尾都扩充m-u个条目并都设置为0,得到条目总数均为m的更新后的第一节点id列表、第二节点id列表、第一边id列表、第二边id列表、第一时间戳列表和第二时间戳列表,然后进入步骤(3-4);

12、(3-4)在条目总数均为m的更新后的第一节点id列表和第一时间戳列表的首部分别加上源节点的节点id和交互时间戳ts,以得到条目总数为m+1的第一节点id列表和第一时间戳列表;在条目总数均为m的更新后的第二节点id列表和第二时间戳列表的首部分别加上目标节点的节点id和交互时间戳ts,以得到条目总数为m+1的第二节点id列表和第二时间戳列表;并在条目总数均为m的更新后的第一边id列表和第二边id列表的首部分别加上一个为0的条目,以得到条目总数为m+1的第一边id列表和第二边id列表;

13、(3-5)将m+1扩充至最大序列条目总数s,使得最大序列条目总数s刚好为p(其中p的取值一般是2的整数倍,其根据数据集不同而不同)的整数倍,且刚好大于m+1,然后,针对条目总数均为m+1的第一节点id列表、第二节点id列表、第一边id列表、第二边id列表、第一时间戳列表和第二时间戳列表而言,在每个列表的末尾扩充s-m-1个的条目,并将这些条目都设置为0,从而得到条目总数为s的第一节点id列表、第二节点id列表、第一边id列表、第二边id列表、第一时间戳列表和第二时间戳列表,其共同组成规范化后的节点对的邻域子图信息列表集合。

14、优选地,动态图链接预测模型包含依次连接的相关性编码层、图信息编码层、基于稀疏注意力的编码端,以及线性概率化层四个部分。

15、对于相关性编码层而言,其输入为维度b*s的第一节点id列表和b*s的第二节点id列表,输出为维度b*s*c的源节点相关性编码特征和维度b*s*c的目标节点相关性编码特征,其具体结构为:

16、第一层是邻居共现统计层,其输入为b*s的第一节点id列表和b*s的第二节点id列表,其统计源节点的节点id和目标节点的节点id分别在规范化后的节点对的邻域子图信息列表集合中的第一节点id列表和第二节点id列表中出现的次数,输出为b*s*2的源节点邻域共现向量和b*s*2的目标节点邻域共现向量,b为输入的批大小;

17、第二层是共现编码层,该层包括两个线性层和位于两个线性层之间的relu层,该层的输入为上一层邻居共现统计层得到的b*s*2的源节点邻域共现向量和b*s*2的目标节点领域共现向量,其分别对b*s*2的源节点邻域共现向量和b*s*2的目标节点领域共现向量进行线性投影处理,以分别得到输出为b*s*c的源节点相关性编码特征和b*s*c的目标节点相关性编码特征,c为相关性编码维度(其等于50)。

18、对于图信息编码层而言,其输入为维度均为b*s的第一节点id列表、第一边id列表、第二节点id列表、第二边id列表、第一时间戳列表和第二时间戳列表,输出为b*s*n的源节点邻域子图节点特征、b*s*n的目标节点邻域子图节点特征、b*s*e的源节点邻域子图边特征、b*s*e的目标节点邻域子图边特征、b*s*t的源节点邻域子图交互时间特征和b*s*t的目标节点邻域子图交互时间特征,共现编码层的具体结构为:

19、第一层是节点和边信息编码层,其输入为维度均为b*s的第一节点id列表、第一边id列表、第二节点id列表和第二边id列表,其对第一节点id列表和第二节点id列表进行原始节点特征提取处理,以分别得到输出为b*s*n的源节点邻域子图节点特征和b*s*n的目标节点邻域子图节点特征,同时对第一边id列表和第二边id列表进行原始边特征提取处理,以分别得到输出为b*s*e的源节点邻域子图边特征和b*s*e的目标节点邻域子图边特征,其中n为节点特征维度,e为边特征维度;

20、第二层是时间编码层,该层包含一个线性层和一个余弦操作层,该层的输入为维度均为b*s的第一时间戳列表和第二时间戳列表,对该第一时间戳列表先后进行线性投影与余弦缩放处理,以得到输出为b*s*t的源节点邻域子图交互时间特征,并对第二时间戳列表先后进行线性投影与余弦缩放处理,以得到输出为b*s*t的目标节点邻域子图交互时间特征,其中t为时间特征维度。

21、优选地,基于稀疏注意力的编码端包含1个数据处理层和1个稀疏注意力层,该编码端的输入为经过节点和边信息编码层输出的维度均为b*s*n的源节点邻域子图节点特征和目标节点邻域子图节点特征、维度均为b*s*e的源节点邻域子图边特征和目标节点邻域子图边特征、以及经过时间编码层输出的维度均为b*s*t的源节点邻域子图交互时间特征和目标节点邻域子图交互时间特征,以及经过共现编码层输出的b*s*c的源节点相关性编码特征和b*s*c的目标节点相关性编码特征,输出为b*k*j的节点对子图编码特征;

22、对于数据处理层而言,具体结构如下:

23、第一层为patch划分层,其输入为经过节点和边信息编码层输出的维度均为b*s*n的源节点邻域子图节点特征和目标节点邻域子图节点特征、维度均为b*s*e的源节点邻域子图边特征和目标节点邻域子图边特征、以及经过时间编码层输出的维度均为b*s*t的源节点邻域子图交互时间特征和目标节点邻域子图交互时间特征,以及经过共现编码层输出的b*s*c的源节点相关性编码特征和b*s*c的目标节点相关性编码特征,对所有八个特征划分处理,输出为维度均为b*o*(p*n)的源节点邻域子图节点特征和目标节点邻域子图节点特征、维度均为b*o*(p*e)的源节点邻域子图边特征和目标节点邻域子图边特征、维度均为b*o*(p*t)的源节点邻域子图交互时间特征和目标节点邻域子图交互时间特征、以及维度均为b*o*(p*c)的源节点相关性编码特征和目标节点相关性编码特征,其中o为划分的patch个数,其等于s/p;

24、第二层为特征维度统一层,其为线性层,该层的输入为经过patch划分层输出的维度均为b*o*(p*n)的源节点邻域子图节点特征和目标节点邻域子图节点特征、维度均为b*o*(p*e)的源节点邻域子图边特征和目标节点邻域子图边特征、维度均为b*o*(p*t)的源节点节点邻域子图交互时间特征和目标节点邻域子图交互时间特征、以及维度均为b*o*(p*c)的源节点相关性编码特征和目标节点相关性编码特征,其对这八个特征进行线性投影处理,输出为维度均为b*o*x的源节点邻域子图节点特征、目标节点邻域子图节点特征、源节点邻域子图边特征、目标节点邻域子图边特征、源节点邻域子图交互时间特征、目标节点邻域子图交互时间特征、源节点相关性编码特征、以及目标节点相关性编码特征,其中x是统一后的通道维度;

25、第三层为特征合并层,其输入为通过特征维度统一层输出的源节点邻域子图节点特征、目标节点邻域子图节点特征、源节点邻域子图边特征、目标节点邻域子图边特征、源节点邻域子图交互时间特征、目标节点邻域子图交互时间特征、源节点相关性编码特征、以及目标节点相关性编码特征,该层先将源节点邻域子图节点特征、源节点邻域子图边特征、源节点邻域子图交互时间特征以及源节点相关性编码特征进行合并,同时将目标节点邻域子图节点特征、目标节点邻域子图边特征、目标节点邻域子图交互时间特征以及目标节点相关性编码特征进行合并,最后将两个合并后的结果再进行合并,最终输出为维度b*k*j的节点对子图编码信息,其中k=2o,j=4x。

26、对于稀疏注意力层而言,其包含1个初始化层和q个更新层,其中q的取值为大于1的自然数,优选为2:

27、对于初始化层而言,其输入为数据处理层的第三层输出的维度为b*k*j的节点对子图编码信息,对该节点对子图编码信息进行均值池化处理,输出为维度b*j的哨兵节点特征;

28、对于更新层而言,进一步可细分为前q-1个中间更新层和一个最终更新层:

29、对于前q-1个中间更新层而言,其中每一个的输入为第三层输出的维度为b*k*j的节点对子图编码信息与初始化层输出的维度b*j的哨兵节点特征,输出是维度b*k*j的更新后的节点对子图编码信息和维度b*j的更新后的哨兵节点特征,其具体结构为:

30、第一层是输入序列更新层,其包含上下文构建层和交互注意力层;

31、上下文构建层的输入为第三层输出的维度为b*k*j的节点对子图编码信息与初始化层输出的维度b*j的哨兵节点特征,该层先对维度b*k*j的节点对子图编码信息进行维度变换处理,以得到一个输出为(b*k)*1*j的序列特征,然后对该b*k*j的节点对子图编码信息的维度k进行左移一位操作以得到第一上下文,同时对该b*k*j的节点对子图编码信息的维度k进行右移一位操作以得到第二上下文,最后对b*k*j的节点对子图编码信息的初始值、当前值、维度b*j的哨兵节点特征的当前值、第一上下文和第二上下文进行拼接处理,以得到另一个输出为(b*k)*5*j的序列上下文特征;

32、交互注意力层包含注意力层,其输入为上下文构建层输出的(b*k)*5*j的序列上下文特征和(b*k)*1*j的序列特征,其基于(b*k)*5*j的序列上下文特征对(b*k)*1*j的序列特征进行更新处理,以得到输出为b*k*j的更新后的节点对子图编码信息;

33、第二层是哨兵节点更新层,其包含上下文构建层和交互注意力层;

34、上下文构建层的输入为b*j的哨兵节点特征的当前值和第一层中的交互注意力层输出的b*k*j的更新后的节点对子图编码信息,其对这两个输入进行拼接处理,以得到一个输出为b*(k+1)*j的哨兵节点上下文特征,并对b*j的哨兵节点特征的当前值进行维度变换处理,以得到输出为b*1*j的哨兵节点序列特征;

35、交互注意力层包含注意力层,其输入为上下文构建层输出的b*(k+1)*j的哨兵节点上下文特征和b*1*j的哨兵节点序列特征,其基于b*(k+1)*j的哨兵节点上下文特征对b*1*j的哨兵节点序列特征进行更新处理,以得到输出为b*j的更新后的哨兵节点特征;

36、对于最终更新层而言,其输入为b*k*j的节点对子图编码信息的当前值和b*j的哨兵节点特征的当前值,输出是最终的b*k*j的节点对子图编码特征,其具体结构为:

37、第一层为最终上下文构建层,其输入为b*k*j的节点对子图编码信息的当前值和b*j的哨兵节点特征的当前值,该层先对维度b*k*j的节点对子图编码信息的当前值进行维度变换处理,以得到一个输出为(b*k)*1*j的序列特征,然后对该b*k*j的节点对子图编码信息的当前值的维度k进行左移一位操作以得到第一上下文,同时对该b*k*j的节点对子图编码信息的当前值的维度k进行右移一位操作以得到第二上下文,最后对b*k*j的节点对子图编码信息的初始值、当前值、维度b*j的哨兵节点特征的当前值、第一上下文和第二上下文进行拼接处理,以得到另一个输出为(b*k)*5*j的序列上下文特征;

38、第二层为最终交互注意力层,其包含注意力层,其输入为上下文构建层输出的(b*k)*5*j的序列上下文特征和(b*k)*1*j的序列特征,其基于(b*k)*5*j的序列上下文特征对(b*k)*1*j的序列特征进行更新处理,以得到输出为b*k*j的节点对子图编码特征。

39、线性概率化层的输入为经过基于稀疏注意力的编码端输出的b*k*j的节点对子图编码特征,输出是总数为b的节点对的链接概率,其具体结构为:

40、第一层是嵌入层,该层包含均值池化层和线性层,该层的输入为经过基于稀疏注意力的编码端输出的b*k*j的节点对子图编码特征,该层对该输入进行切分处理,以得到维度为b*o*j的源节点子图编码特征和维度为b*o*j的目标节点子图编码特征,然后对维度为b*o*j的源节点子图编码特征进行均值池化和线性投影处理,以得到输出为b*n的源节点最终嵌入向量,同时对维度为b*o*j的目标节点子图编码特征进行均值池化和线性投影处理,以得到输出为b*n的目标节点最终嵌入向量;

41、第二层是概率化层,该层包含两个线性层和一个概率层,其输入为嵌入层输出的b*n的源节点最终嵌入向量和b*n的目标节点最终嵌入向量,该层对b*n的源节点最终嵌入向量和b*n的目标节点最终嵌入向量进行线性投影和概率化处理,输出总数为b的节点对的链接概率。

42、优选地,基于稀疏注意力的动态图链接预测模型是通过以下步骤训练得到的:

43、(4-1)获取动态图数据集;

44、(4-2)对步骤(4-1)获取的动态图数据集进行数据读取划分,以获取训练集、验证集和测试集,并对训练集先后进行邻居采样处理和数据格式规范化处理,以得到规范化后的节点对的邻域子图信息列表集合;

45、(4-3)将步骤(4-2)得到的规范化后的节点对的邻域子图信息列表集合中的第一节点id列表和第二节点id列表输入相关性编码层中进行编码,以得到源节点相关性编码特征和目标节点相关性编码特征;

46、(4-4)将步骤(4-2)得到的规范化后的节点对邻域子图信息列表集合和步骤(4-2-1)得到的所有节点对中所有节点的原始特征集合和组成所有节点对的所有边的原始特征集合输入到图信息编码层中进行编码,以得到源节点的邻域子图节点特征、邻域子图边特征和邻域子图交互时间特征以及目标节点的邻域子图节点特征、邻域子图边特征和邻域子图交互时间特征;

47、(4-5)将步骤(4-3)得到的源节点的相关性编码特征和目标节点的相关性编码特征以及步骤(4-4)得到的源节点的邻域子图节点特征、邻域子图边特征、邻域子图交互时间特征和目标节点的邻域子图节点特征、邻域子图边特征、邻域子图交互时间特征进行patch划分、特征维度统一以及特征合并,最后输入到稀疏注意力层中,以得到最终的节点对子图编码特征;

48、(4-6)将步骤(4-5)得到的最终的节点对子图编码特征输入线性概率化层中,以得到最终的节点对链接概率,使用该链接概率与节点对的实际链接标签计算动态图链接预测模型的损失函数的损失值,并使用该损失值迭代训练动态图链接预测模型各层的参数,以得到初步训练好的动态链接预测模型。

49、(4-7)使用步骤(4-2)得到的验证集对步骤(4-6)初步训练好的动态链接预测模型进行验证,以得到最终训练好的动态链接预测模型。

50、优选地,步骤(4-2)具体包括以下子步骤:

51、(4-2-1)使用pandas对步骤(4-1)获取的动态图数据集进行数据读取,并对其中的节点原始特征数据集和交互边原始特征数据集中的数据进行集合化处理,以得到所有节点对中所有节点的原始特征集合和组成所有节点对的所有边的原始特征集合,然后对链接交互数据集中的数据基于时间戳并按照0.7:0.15:0.15的比例划分为训练集、验证集和测试集,划分得到的训练集中的所有节点对就是待训练的节点对;

52、(4-2-2)根据步骤(4-2-1)得到的每个待训练的节点对,分别对该节点对中的源节点和目标节点进行邻居采样处理,以得到该节点对的邻域信息列表集合;

53、本步骤具体为,首先基于最近时间优先获取源节点在时间戳ts之前有过连接链接交互的u个邻居,以及目标节点在时间戳ts之前有过连接链接交互的u个邻居;然后,使用源节点的u个邻居的节点id创建源节点的第一邻居的节点id列表,使用目标节点的u个邻居的节点id创建目标节点的第二节点id列表,其中第一节点id列表的每个条目为源节点的一个邻居的节点id,第二节点id列表的每个条目为目标节点的一个邻居的节点id;随后,使用源节点与u个邻居相连的边id创建源节点的邻居的第一边id列表,使用目标节点与u个邻居相连的边id创建目标节点的邻居的第二边id列表,其中第一边id列表的每个条目为源节点与其一个邻居的链接边的id,第二边id列表的每个条目为目标节点与其一个邻居的链接边的id;接着,使用源节点与u个邻居交互的时间戳创建源节点的邻居的交互第一时间戳列表,使用目标节点与u个邻居交互的时间戳创建目标节点的邻居的交互第二时间戳列表,其中第一时间戳列表的每个条目为源节点与其一个邻居的链接交互时间戳,第二时间戳列表的每个条目为目标节点与其一个邻居的链接交互时间戳;最后源节点和目标节点的邻居的节点id列表第一节点id列表、第二节点id列表、、边id列表第一边id列表、第二边id列表、第一时间戳列表以及和第二时间戳交互时间戳列表共同组成节点对的邻域信息列表集合,其中以上6个列表的条目总数均为u。

54、(4-2-3)根据步骤(4-2-2)得到的每个节点对的邻域信息列表集合,对其邻域信息进行条目总数统一处理,以得到规范化后的该节点对的邻域子图信息列表集合;

55、优选地,步骤(4-2-3)包括如下子步骤:

56、(4-2-3-1)判断节点对的邻域信息列表集合中的第一节点id列表、第二节点id列表、第一边id列表、第二边id列表、第一时间戳列表和第二时间戳列表的条目总数中条目的总数是否均大于m(其中m的取值一般大于u,优选为32),如果是则进入步骤(4-2-3-2),如果不是则否则进入步骤(4-2-3-3);

57、(4-2-3-2)截取出第一节点id列表、第二节点id列表、第一边id列表、第二边id列表、第一时间戳列表和第二时间戳列表中的倒数m个条目,以位得到条目总数均为m的、的格式化更新后的第一节点id列表、第二节点id列表、第一边id列表、第二边id列表、第一时间戳列表和第二时间戳列表,然后进入步骤(4-2-3-4);

58、(4-2-3-3)将第一节点id列表、第二节点id列表、第一边id列表、第二边id列表、第一时间戳列表和第二时间戳列表的末尾都扩充m-u个条目并都设置为0,创建条目总数均为m的格式化后的第一节点id列表、第二节点id列表、第一边id列表、第二边id列表、第一时间戳列表和第二时间戳列表的初始化副本,并用原始的第一节点id列表、第二节点id列表、第一边id列表、第二边id列表、第一时间戳列表和第二时间戳列表的值为其前u位赋值,不足的部分用0填充,得到条目总数均为m的更新后格式化后的第一节点id列表、第二节点id列表、第一边id列表、第二边id列表、第一时间戳列表和第二时间戳列表,然后进入步骤(4-2-3-4);

59、(4-2-3-4)然后在条目总数均为m的格式化更新后的第一节点id列表和第一时间戳列表的首部分别加上源节点的节点id和交互时间戳ts,以得到条目总数为m+1的包含自身信息的第一节点id列表和第一时间戳列表;在条目总数均为m的格式化更新后的第二节点id列表和第二时间戳列表的首部分别加上目标节点的节点id和交互时间戳ts,以得到条目总数为m+1的包含自身信息的第二节点id列表和第二时间戳列表;并在条目总数均为m的格式化更新后的第一边id列表和第二边id列表的首部分别加上一个为0的条目,填充以得到条目总数为m+1的包含自身信息的第一边id列表和第二边id列表;

60、(4-2-3-5)随后,将m+1补齐扩充至最大序列条目总数s,使得最大序列条目总数s刚好为至p的整数倍,且刚好大于m+1以得到最大序列条目总数s,然后,针对条目总数均为m+1的第一节点id列表、第二节点id列表、第一边id列表、第二边id列表、第一时间戳列表和第二时间戳列表而言,在每个列表的末尾扩充s-m-1个的条目并都设置为0,从而得到条目总数为s的第一节点id列表、第二节点id列表、第一边id列表、第二边id列表、第一时间戳列表和第二时间戳列表,其共同组成规范化后的节点对的邻域子图信息列表集合。

61、优选地,步骤(4-3)具体包括以下子步骤;

62、(4-3-1)对步骤(4-2)得到的规范化后的节点对邻域子图信息列表集合中的第一节点id列表和第二节点id列表中的每个节点进行共现统计,以得到源节点邻域共现向量和目标节点邻域共现向量,其维度为b*s*2,其中b为批大小,s为规定的最大序列条目总数;

63、具体而言,共现统计即统计每个节点的节点id分别在第一节点id列表和第二节点id列表中出现的次数;

64、本步骤的优点在于,明确的表征了节点对中的源节点与目标节点的相关性而不是独立的编码它们,使得节点对的邻域信息中历史邻居信息更具有交互性。

65、(4-3-2)将步骤(4-3-1)得到的源节点邻域共现向量和目标节点邻域共现向量输入到共现编码层中进行编码,以得到源节点相关性编码特征和目标节点相关性编码特征,其维度为b*s*c,其中c为相关性编码维度;

66、具体而言,本步骤中共现编码层最终的输出是由下式得出

67、y=sum(max(0,us(x)w1+b1)w2+b2)

68、其中w1为共现编码层中第一个线性层的投影权重,维度为1*c,b1为w1对应的偏置,同理地,w2为共现编码层中第二个线性层的投影权重,维度为c*c,b2为w2对应的偏置,x表示相关性编码层的输入,维度为b*s*2,us表示pytorch中的unsqueeze操作,即在指定位置插入一个维度,将输入x维度变为b*s*2*1,max为取最大值的操作,这里在0和第一个线性层的输出结果中取最大值作为输出对应贡献编码层中的relu层,sum表示对维度为b*s*2*c的输入的第三维做求和操作得到b*s*c的输出y。

69、步骤(4-4)包含以下子步骤;

70、(4-4-1)将步骤(4-2-3)得到的规范化后的节点对邻域子图信息列表中的第一节点id列表、第一边id列表、第二节点id列表和第二边id列表通过步骤(4-2-1)得到的所有节点对中所有节点的原始特征集合和组成所有节点对的所有边的原始特征集合进行编码,以得到源节点的邻域子图节点特征、邻域子图边特征和目标节点的邻域子图节点特征、邻域子图边特征,其维度分别为b*s*n、b*s*e、b*s*n和b*s*e,其中n为节点特征维度,e为边特征维度,一般取值均为172;

71、(4-4-2)将步骤(4-2-3)得到的规范化后的节点对邻域子图信息列表集合中的第一时间戳列表和第二时间戳列表分别通过时间编码层进行编码,以得到源节点的邻域子图交互时间特征和目标节点的邻域子图交互时间特征,其维度均为b*s*t,其中t为时间特征维度,取值为100;

72、具体而言,本步骤中时间编码层最终的输出是由下式得出

73、z=cos(us(t)w3+b3)

74、其w3为时间编码层中线性层的投影权重,维度为1*t,b3为w3对应的偏置,t表示时间编码层的初步输出,维度为b*s,z表示时间编码层的最终输出,us表示pytorch中的unsqueeze操作,即在指定位置插入一个维度,将输入t维度变为b*s*1,cos表示余弦操作,对应时间编码层中的余弦操作层。

75、优选地,步骤(4-5)包含以下子步骤:

76、(4-5-1)将步骤(4-3)得到的源节点的相关性编码特征和和目标节点的相关性编码特征以及步骤(4-4)得到的源节点的邻域子图节点特征、邻域子图边特征、邻域子图交互时间特征和目标节点的邻域子图节点特征、邻域子图边特征、邻域子图交互时间特征进行patch划分,以分别得到划分后的源节点的邻域子图节点特征、邻域子图边特征、邻域子图交互时间特征和相关性编码特征以及目标节点的邻域子图节点特征、邻域子图边特征、邻域子图交互时间特征和相关性编码特征,其维度大小均分别为b*o*(p*n)、b*o*(p*e)、b*o*(p*t)、b*o*(p*c)、b*o*(p*n)、b*o*(p*e)、b*o*(p*t)和b*o*(p*c),其中o为划分的patch个数,等于s/p;

77、(4-5-2)将步骤(4-5-1)得到的划分后的源节点的邻域子图节点特征、邻域子图边特征、邻域子图交互时间特征和相关性编码特征以及目标节点的邻域子图节点特征、邻域子图边特征、邻域子图交互时间特征和相关性编码特征进行特征维度统一,以得到的统一后的源节点的邻域子图节点特征、邻域子图边特征、邻域子图交互时间特征和相关性编码特征以及目标节点的邻域子图节点特征、邻域子图边特征、邻域子图交互时间特征和相关性编码特征,其维度均为b*o*x,其中x是统一后的通道维度,取值为50;

78、(4-5-3)将步骤(4-5-2)得到的统一后的源节点的邻域子图节点特征、邻域子图边特征、邻域子图交互时间特征和相关性编码特征以及目标节点的邻域子图节点特征、邻域子图边特征、邻域子图交互时间特征和相关性编码特征进行特征合并,以得到节点对子图编码信息,其维度为b*k*j,其中k=2o、j=4x;

79、具体而言,本步骤中特征合并的最终的输出是由下式得出

80、pd=[con(sn,dn),con(se,de),con(st,dt),con(sc,dc)]

81、po=reshape(stack(pd))

82、其中con为张量拼接操作,sn、dn表示统一后的源节点和目标节点的邻域子图节点特征,se、de表示统一后的源节点和目标节点的邻域子图边特征,st、dt表示统一后的源节点和目标节点的邻域子图交互时间特征,sc、dc表示统一后的源节点和目标节点的相关性编码特征,维度均为b*o*x,stack表示张量堆叠操作,reshape表示改变张量的形状,将维度从b*k*4*x变为b*k*j。

83、(4-5-4)将步骤(4-5-3)得到的节点对子图编码信息进行均值池化处理,以得到初始化的哨兵节点特征,其会随着更新层而更新,维度为b*j;

84、(4-5-5)将步骤(4-5-3)得到的节点对子图编码信息和(4-5-4)得到的哨兵节点特征进行序列上下文构建,以得到序列上下文特征,其维度为(b*k)*5*j,同时将步骤(4-5-3)得到的节点对子图编码信息进行维度变换处理,以得到序列特征,其维度为(b*k)*1*j;

85、具体而言,本步骤中序列上下文构建的最终的输出是由下式得出

86、hl,hr,hc=l_shift(h),r_shift(h),us(h)

87、c=con(hl,h,hr,h0,s)

88、其中h0表示输入的节点对子图编码信息的初始值,h表示节点对子图编码信息的当前值,其会随着更新层进行更新,初始为h0,维度均为b*k*j,s表示哨兵节点特征的当前值,其也会随着更新层进行更新,维度为b*j,l_shift表示将张量h的维度k进行左移一位操作以得到hl,r_shift表示将张量h的维度k进行右移一位操作以得到hr,con表示张量拼接操作,us表示pytorch中的unsqueeze操作,即在指定位置插入一个维度,hc表示输出的序列特征,维度为(b*k)*1*j,c表示输出的序列上下文特征,维度为(b*k)*5*j。

89、(4-5-6)将步骤(4-5-5)得到的序列上下文特征和序列特征输入交互注意力层,以得到更新后的节点对的子图编码信息,其维度为b*k*j,并判断此时i是否小于q,如果是则跳转至步骤(4-5-7),否则该更新后的节点对的子图编码信息即为最终的节点对子图编码特征,然后跳转至步骤(4-6);

90、具体而言,本步骤中交互注意力层的最终的输出是由下式得出

91、

92、其中wp表示可学习的位置偏置,维度为1*1*1*1,hc表示输入的序列特征,维度为(b*k)*1*j,c表示输入的序列上下文特征,维度为(b*k)*5*j,wq、wk、wv为分别对q、k和v做线性投影的可学习矩阵,其维度均为j*j,表示元素相乘操作,exp表示以e作为底数的操作,其中e是一个无限不循环小数,其值是2.71828...,sg表示pytorch中的sigmoid操作,即将一个实数映射到(0,1)的区间,sq表示pytorch中的squeeze操作,即删除指定位置的大小为1的维度,ht表示更新后的节点对子图编码信息。

93、(4-5-7)将步骤(4-5-4)得到的哨兵节点特征的当前值和(4-5-6)得到的更新后的节点对子图编码信息进行哨兵节点的上下文构建,以得到哨兵节点上下文特征,其维度为b*(k+1)*j,同时将步骤(4-5-4)得到的哨兵节点特征的当前值进行维度变换处理,以得到哨兵节点序列特征,其维度为b*1*j;

94、(4-5-8)将步骤(4-5-7)得到哨兵节点上下文特征和哨兵节点序列特征输入交互注意力层,以得到更新后的哨兵节点特征,其维度为b*j,作为下一层更新层进行序列上下文构建的输入,并将i加上1,然后跳转至步骤(4-5-5);

95、步骤(4-6)具体包括以下子步骤:

96、(4-6-1)对步骤(4-5)得到的最终的维度为b*k*j的节点对子图编码特征进行嵌入处理,以得到源节点最终嵌入向量和目标节点最终嵌入向量,其维度均为b*n;

97、具体而言,本步骤中嵌入处理的最终的输出是由下式得出

98、hs,hd=sli(hn)

99、embs=mean(hs)w4+b4

100、embd=mean(hd)w4+b4

101、其中hn表示输入的最终的节点对子图编码特征,维度为b*k*j,sli表示切片操作,得到源节点子图编码特征hs和目标节点子图编码特征hd,维度均为b*o*j,因为k=2o,w4为嵌入层中的线性层的投影权重,维度为j*n,b4为w4对应的偏置,mean表示均值操作,对应嵌入层中的均值池化层。

102、(4-6-2)对步骤(4-6-1)得到的源节点最终嵌入向量和目标节点最终嵌入向量进行合并概率化处理,以得到该批节点的链接概率,其条目总数为b;

103、具体而言,本步骤中合并概率化处理的最终的输出是由下式得出

104、g=max(0,con(embs,embe)w5+b5)w6+b6

105、

106、其w5为概率化层中的第一个线性层的投影权重,维度为(2n)*n,b5为w5对应的偏置,同理地,w6为概率化层中的第二个线性层的投影权重,维度为n*1,b6为w6对应的偏置,con表示张量拼接操作,embs和embd分别为源节点和目标节点的最终嵌入向量,维度均为b*n,max表示取最大值的操作,g为经过线性层后的中间输出,维度为b*1,p表示经过概率层后得到的最后的输出,其为条目总数为b的向量,e表示自然对数的底数,是一个无限不循环小数,其值是2.71828...。

107、(4-6-3)根据步骤(4-6-2)得到的该批节点的链接概率和节点对的实际链接标签进行基于稀疏注意力的动态图链接预测模型的损失函数的损失值计算,并使用该损失值迭代训练模型,得到训练好的基于稀疏注意力的动态图链接预测模型。

108、具体而言,本步骤中模型的训练过程中损失函数l为二元交叉熵损失函数,其适用于二分类问题,将模型预测值和真实标签值之间的差异转化为一个标量损失值,用于衡量模型预测的准确性,具体定义如下:

109、

110、其中中b表示批大小,yi代表第i个节点对的实际链接标签(为0或者1),pi为第i个节点对的预测链接概率。

111、按照本发明的另一方面,提供了一种基于稀疏注意力的动态图链接预测系统,包括:

112、第一模块,用于获取待分析的、包括源节点和目标节点的节点对的节点对信息。

113、第二模块,用于从第一模块获取的待分析的节点对的节点对信息进行邻居采样处理,以得到节点对的邻域信息列表集合;

114、第三模块,用于对第二模块得到的节点对的邻域信息列表集合进行数据格式规范化处理,以得到规范化后的节点对的邻域子图信息列表集合;

115、第四模块,用于将第三模块规范化后的节点对的邻域子图信息列表集合输入预先训练好的基于稀疏注意力的动态图链接预测模型中,以得到节点对的链接预测结果。

116、总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:

117、(1)本发明由于采用了步骤(2),其通过基于最近时间优先查找的一跳邻居采样对节点对进行邻居采样操作,得到其邻域信息,因此能够解决由于繁杂的时间随机游走采样导致的低效训练效率的问题;

118、(2)本发明由于采用了步骤(4-3)到步骤(4-4),其通过对源节点和目标节点的一跳邻域信息间构建相关性编码和图信息编码,使得其具有足够表征节点对邻域子图的能力,因此能够解决由于多层邻域聚合操作导致的邻域爆炸的技术问题;

119、(3)本发明由于采用了步骤(4-5),其通过采用改进的注意力架构来挖掘源节点与目标节点的关联以及基于上下文来更新信息,从而实现捕获长期的时间依赖,因此能够解决采用rnn类架构难以捕获长期依赖的技术问题;

120、(4)本发明由于采用了步骤(4-5-4)到步骤(4-5-8),其通过引入哨兵节点将两两之间的交互转化为通过该哨兵节点中转从而减少交互次数,使得二次时间复杂度的注意力机制降低为线性,同时在更新时采用的交互注意力以元素级相乘的方式代替传统的点积实现了更低的内存复杂度,从而实现线性时间和内存复杂度的架构,因此能够解决冗余的特征学习和扩展性的技术问题。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1