获取关系网络图中节点的动态嵌入向量的方法和装置与流程

文档序号:18704570发布日期:2019-09-17 23:28阅读:441来源:国知局
获取关系网络图中节点的动态嵌入向量的方法和装置与流程

本说明书实施例涉及图计算技术领域,更具体地,涉及一种获取多个节点的关系网络图中节点的动态嵌入向量的方法和装置。



背景技术:

在大数据时代,可获取海量的用户关系数据,通过这些数据可构建多个用户的关系网络图。针对所述关系网络图,通常,通过图嵌入算法计算图中各个节点的嵌入向量,即,以预定维度的向量(比如100维)表示关系网络图中每个节点。在获取各个节点的嵌入向量之后,可基于节点的嵌入向量之间的相似性,基于一个节点预测另一个节点的特定特征,如当两个节点的嵌入向量的相似度较高,可基于该两个节点中一个节点的已购买商品,向另一个节点推荐商品等等。

传统图嵌入算法通常是基于某一时刻(例如与当前较近的时刻)的关系网络图的邻接表或邻间矩阵计算各个节点的嵌入向量。然而,关系网络图本身是动态变化的,例如,在社交关系图中,由于不断地有新的好友关系产生,也有好友关系的解除,在t1时刻与在t2时刻的网络结构很可能不同,因此,只使用一个时刻的网络结构信息确定各个节点的嵌入向量,并没有很好地利用此前的网络结构的动态变化的信息。

因此,需要一种更有效的获取关系网络图中节点的动态嵌入向量的方案。



技术实现要素:

本说明书实施例旨在提供一种更有效的获取多个节点的当前关系网络图中节点的动态嵌入向量的方案,以解决现有技术中的不足。

为实现上述目的,本说明书一个方面提供一种获取多个节点的关系网络图中节点的动态嵌入向量的方法,所述多个节点中包括第一节点,所述方法包括:

基于所述多个节点在第一时刻的关系网络图,确定第一节点的n个邻居节点,其中n为预定整数;

获取第一节点及其所述n个邻居节点各自的输入嵌入向量,各个节点的所述输入嵌入向量基于该节点的静态嵌入向量和位置嵌入向量确定,其中,所述静态嵌入向量对应于该节点的属性特征,所述位置嵌入向量对应于该节点相对于所述第一节点的位置特征;

将第一节点及其所述n个邻居节点各自的输入嵌入向量输入预训练的嵌入模型,以使得所述模型输出:在以第一节点为主节点的情况中,第一节点及其所述多个邻居节点各自的动态嵌入向量,其中,所述嵌入模型包括至少一个前后相连的计算模块,其中,每个计算模块中包括相应的自注意力层,所述自注意力层基于自注意力机制相对于其n+1个输入向量输出与所述n+1个输入向量分别对应的n+1个层输出向量。

在一个实施例中,所述多个邻居节点为预定阶数以内的邻居节点。

在一个实施例中,所述静态嵌入向量基于所述关系网络图的相邻矩阵获取。

在一个实施例中,每个所述节点的位置嵌入向量的每个元素的值基于该节点相对于所述第一节点的阶数、和该元素在该位置嵌入向量中的维度获取。

在一个实施例中,所述静态嵌入向量和所述位置嵌入向量通过预训练所述嵌入模型而获取。

在一个实施例中,所述自注意力层基于至少一个自注意力函数进行计算,所述自注意力函数基于输入该自注意力层的n+1个输入向量输出与所述n+1个输入向量分别对应的n+1个函数输出向量,其中,所述n+1个函数输出向量中的第i个函数输出向量为:以所述n+1个输入向量中第i个输入向量与各个输入向量的关联度为权重,对所述n+1个输入向量各自的第一变换向量的加权组合,其中,所述第一变换向量通过以与该自注意力函数对应的第一权重矩阵对相应的输入向量进行变换而获取,所述第一权重矩阵通过预训练所述嵌入模型而获取。

在一个实施例中,各个输入向量中还包括第j个输入向量,其中,第i个输入向量与第j个输入向量的关联度基于第i个输入向量的第二变换向量与第j个输入向量的第三变换向量的相似度确定,其中,所述第二变换向量通过以与该自注意力函数对应的第二权重矩阵对相应的输入向量进行变换而获取,所述第三变换向量通过以与该自注意力函数对应的第三权重矩阵对相应的输入向量进行变换而获取,所述第二权重矩阵和所述第三权重矩阵都通过预训练所述嵌入模型而获取。

在一个实施例中,所述多个节点中包括第二节点,所述嵌入模型通过以下步骤得到预训练:

基于多个节点在第二时刻的关系网络图,确定所述第二节点的n个邻居节点,并确定至少一个第三节点,其中,所述第三节点为选自于所述第二节点及其n个邻居节点中的节点;

获取第二节点及其n个邻居节点各自的输入嵌入向量,其中,所述第三节点的输入嵌入向量为预定的与该第三节点无关的向量,所述第二节点及其n个邻居节点中除所述至少一个第三节点之外的其它节点各自的输入嵌入向量基于该节点的静态嵌入向量和位置嵌入向量确定;

将第二节点及其n个邻居节点各自的输入嵌入向量输入当前嵌入模型,以基于所述当前嵌入模型输出的与所述至少一个第三节点分别对应的至少一个动态嵌入向量优化所述嵌入模型。

在一个实施例中,优化所述嵌入模型包括,优化所述嵌入模型的参数,以及优化第一节点及所述n个邻居节点中除所述至少一个第三节点之外的各个节点各自的输入点嵌入向量和位置嵌入向量。

在一个实施例中,所述嵌入模型通过多次循环所述步骤得到预训练,其中,对所述步骤的上一次循环基于所述多个节点在第二时刻之前的时刻的关系网络图进行。

本说明书另一方面提供一种向用户推送对象的方法,包括,

获取多个用户的当前关系网络图,其中,所述多个用户中包括第一用户和第二用户,其与所述当前关系网络图中的第四节点和第五节点分别对应;

基于所述当前关系网络图,通过上述获取动态嵌入向量的方法,分别获取:在以第四节点为主节点的情况中,第四节点及其预定数目的邻居节点各自的动态嵌入向量,以及在以第五节点为主节点的情况中,第五节点及其预定数目的邻居节点各自的动态嵌入向量;

基于所述两种情况下各个节点的动态嵌入向量,确定所述第四节点与所述第五节点的相似性;以及

在所述相似性大于预定阈值的情况中,基于所述第一用户的关注对象,向所述第二用户推送对象。

在一个实施例中,基于所述两种情况下各个节点的动态嵌入向量,确定所述第四节点与所述第五节点的相似性包括,基于第一动态嵌入向量与第二动态嵌入向量的相似性,计算所述第四节点与所述第五节点的相似性,其中,所述第一动态嵌入向量为在以第四节点为主节点的情况中第四节点的动态嵌入向量,所述第二动态嵌入向量为在以第五节点为主节点的情况中第五节点的动态嵌入向量。

本说明书另一方面提供一种获取多个节点的关系网络图中节点的动态嵌入向量的装置,所述多个节点中包括第一节点,所述装置包括:

确定单元,配置为,基于所述多个节点在第一时刻的关系网络图,确定第一节点的n个邻居节点,其中n为预定整数;

获取单元,配置为,获取第一节点及其所述n个邻居节点各自的输入嵌入向量,各个节点的所述输入嵌入向量基于该节点的静态嵌入向量和位置嵌入向量确定,其中,所述静态嵌入向量对应于该节点的属性特征,所述位置嵌入向量对应于该节点相对于所述第一节点的位置特征;以及

输入单元,配置为,将第一节点及其所述n个邻居节点各自的输入嵌入向量输入预训练的嵌入模型,以使得所述模型输出:在以第一节点为主节点的情况中,第一节点及其所述多个邻居节点各自的动态嵌入向量,其中,所述嵌入模型包括至少一个前后相连的计算模块,其中,每个计算模块中包括相应的自注意力层,所述自注意力层基于自注意力机制相对于其n+1个输入向量输出与所述n+1个输入向量分别对应的n+1个层输出向量。

在一个实施例中,所述多个节点中包括第二节点,所述嵌入模型通过以下训练装置得到预训练,所述训练装置包括:

确定单元,配置为,基于多个节点在第二时刻的关系网络图,确定所述第二节点的n个邻居节点,并确定至少一个第三节点,其中,所述第三节点为选自于所述第二节点及其n个邻居节点中的节点;

获取单元,配置为,获取第二节点及其n个邻居节点各自的输入嵌入向量,其中,所述第三节点的输入嵌入向量为预定的与该第三节点无关的向量,所述第二节点及其n个邻居节点中除所述至少一个第三节点之外的其它节点各自的输入嵌入向量基于该节点的静态嵌入向量和位置嵌入向量确定;

优化单元,配置为,将第二节点及其n个邻居节点各自的输入嵌入向量输入当前嵌入模型,以基于所述当前嵌入模型输出的与所述至少一个第三节点分别对应的至少一个动态嵌入向量优化所述嵌入模型。

在一个实施例中,所述优化单元还配置为,优化所述嵌入模型的参数,以及优化第一节点及所述n个邻居节点中除所述至少一个第三节点之外的各个节点各自的输入点嵌入向量和位置嵌入向量。

在一个实施例中,所述嵌入模型通过多次循环实施所述装置得到预训练,其中,对所述装置的上一次实施基于所述多个节点在第二时刻之前的时刻的关系网络图进行。

本说明书另一方面提供一种向用户推送对象的装置,包括,

第一获取单元,配置为,获取多个用户的当前关系网络图,其中,所述多个用户中包括第一用户和第二用户,其与所述当前关系网络图中的第四节点和第五节点分别对应;

第二获取单元,配置为,基于所述当前关系网络图,通过上述获取动态嵌入向量的装置,分别获取:在以第四节点为主节点的情况中,第四节点及其预定数目的邻居节点各自的动态嵌入向量,以及在以第五节点为主节点的情况中,第五节点及其预定数目的邻居节点各自的动态嵌入向量;

确定单元,配置为,基于所述两种情况下各个节点的动态嵌入向量,确定所述第四节点与所述第五节点的相似性;以及

推送单元,配置为,在所述相似性大于预定阈值的情况中,基于所述第一用户的关注对象,向所述第二用户推送对象。

在一个实施例中,所述确定单元还配置为,基于第一动态嵌入向量与第二动态嵌入向量的相似性,计算所述第四节点与所述第五节点的相似性,其中,所述第一动态嵌入向量为在以第四节点为主节点的情况中第四节点的动态嵌入向量,所述第二动态嵌入向量为在以第五节点为主节点的情况中第五节点的动态嵌入向量。

本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。

本说明书另一方面提供一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。

通过根据本说明书实施例的图节点嵌入方案,基于一段时间中的动态变化的多个节点之间的关系网络图训练嵌入模型,在所述嵌入模型中基于自注意力机制获取在一定上下文中(即以特定节点为主节点),各个节点的动态嵌入向量,从而使得各个节点的动态嵌入向量中体现更多的信息,如节点上下文(邻居、位置)的信息、节点之间的动态变化的连接信息等等,从而有效地利用了时序网络结构信息。

附图说明

通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:

图1示出根据本说明书实施例的嵌入系统100的示意图;

图2示出根据本说明书实施例的一种获取多个节点的关系网络图中节点的动态嵌入向量的方法;

图3示意示出五个节点之间的关系网络图;

图4示意示出在图3所示的关系图的情况中节点a及其各个邻居节点各自的输入嵌入向量;

图5示意示出根据本说明书实施例的嵌入模型的结构图;

图6示意示出计算模块的内部构造;

图7示意示出了通过注意力函数计算注意力值的过程;

图8示出根据本说明书实施例的对上述嵌入模型进行预训练的方法;

图9示出根据本说明书实施例的一种向用户推送对象的方法;

图10示出根据本说明书实施例的一种获取多个节点的关系网络图中节点的动态嵌入向量的装置1000;

图11示出根据本说明书实施例的用于预训练嵌入模型的训练装置1100;

图12示出根据本说明书实施例的一种向用户推送对象的装置1200。

具体实施方式

下面将结合附图描述本说明书实施例。

图1示出根据本说明书实施例的嵌入系统100的示意图。如图1所示,系统100包括嵌入模型11、下游模型12和训练单元13。其中,嵌入模型11用于基于节点的输入嵌入向量输出各个节点的动态嵌入向量,下游模型12用于基于从嵌入模型11输出的动态嵌入向量对各个节点进行分类、回归、预测等,从而输出与各个节点分别对应的结果,训练单元13用于基于下游模型12的输出的结果进行对所述嵌入模型的训练。所述嵌入模型包括多个自注意力层,从而基于自注意力机制,基于模型输入向量中特定节点对其它各节点的注意力,计算该节点的动态输出向量。

具体是,在训练阶段,通过一定时段内的多个节点之间的在不同时刻的多个关系网络图,训练单元13通过多次优化,调整嵌入模型的参数及各个节点的静态嵌入向量和位置嵌入向量(其构成模型输入嵌入向量e1),从而使得该模型体现多个节点之间在一定时段内的动态关系网络。其中,在每次优化中,从该次优化对应的关系网络图获取各个节点的输入嵌入向量e1输入嵌入模型11,嵌入模型11输出各个节点的动态嵌入向量t1,并将各个t1输入下游模型12,下游模型12基于各个t1输出与各个节点对应的预测结果f1,并输入训练单元13。训练单元13基于预测结果f1、各个t1以及各个e1进行该次模型优化,并将优化参数返回给嵌入模型11。

在模型使用阶段,可基于多个节点之间的当前关系网络图,获取各个节点的当前的输入嵌入向量e2并输入嵌入模型11,通过嵌入模型11输出在以各个节点为主节点的各个情况中,各个节点的动态嵌入向量t2,从而可通过将各个节点的动态嵌入向量t2输入下游模型12,挖掘各个节点的预测结果f2。例如,所述关系网络图为多个用户的好友关系图,多个节点与多个用户分别对应,节点之间的连线对应于用户之间的好友关系,从而当例如通过下游模型输出的结果f2确定其中两个节点较为相似时,可基于其中一个节点对应的用户的特征确定另一个节点对应的用户的特征,例如,可将其中一个用户的购买商品推荐给另一个用户,等等。

可以理解,上述对图1中嵌入系统100的描述只是示意性的而不是限制性的,例如,在训练模型中,也可以仅训练模型参数,而通过预定算法获取节点的静态嵌入向量和位置嵌入向量;所述系统100中,不限于将动态嵌入向量输入下游模型,例如,可直接基于各个节点的动态嵌入向量,计算各个节点的相似性等等;另外,所述关系网络图也不限于为用户的好友关系图,而可以为其它任意的关系网络图。

下面具体描述上述模型使用过程和模型训练过程。

图2示出根据本说明书实施例的一种获取多个节点的关系网络图中节点的动态嵌入向量的方法,所述多个节点中包括第一节点,所述方法包括:

在步骤s202,基于所述多个节点在第一时刻的关系网络图,确定第一节点的n个邻居节点,其中n为预定整数;

在步骤s204,获取第一节点及其所述n个邻居节点各自的输入嵌入向量,各个节点的所述输入嵌入向量基于该节点的静态嵌入向量和位置嵌入向量确定,其中,所述静态嵌入向量对应于该节点的属性特征,所述位置嵌入向量对应于该节点相对于所述第一节点的位置特征;

在步骤s206,将第一节点及其所述n个邻居节点各自的输入嵌入向量输入预训练的嵌入模型,以使得所述模型输出:在以第一节点为主节点的情况中,第一节点及其所述多个邻居节点各自的动态嵌入向量,其中,所述嵌入模型包括至少一层前后相连的计算模块,其中,每个计算模块中包括自注意力层,所述自注意力层基于自注意力机制相对于其n+1个输入向量输出与所述n+1个输入向量分别对应的n+1个层输出向量。

在本说明书实施例中,预定多个节点之间的关系网络图是随着时间的不同而动态变化的,而该方法用于获取任一时刻(即所述第一时刻)的关系网络图中节点的动态嵌入向量,例如,所述第一时刻的关系网络图可以为所述多个节点的当前关系网络图。

首先,在步骤s202,基于多个节点在第一时刻的关系网络图,确定第一节点的n个邻居节点,其中n为预定整数。

图3示意示出五个节点之间的关系网络图。如图中所示,其中5个节点(节点a、b、c、d和e)例如与五个用户(用户a、b、c、d和e)分别对应。所述第一节点可以为节点a、b、c、d和e中任一节点。其中,例如节点a为第一节点,在该方法中,将第一节点(例如节点a)作为主节点。假设n预定为4个,从而,基于图3所示的关系图,可确定节点a的4个邻居节点:一阶邻居节点b、一阶邻居节点c、二阶邻居节点d、二阶邻居节点e。可以理解,这里出于示意的目的,将该关系图绘制为只包括5个节点,而在实际中,关系网络图可能包括上亿个节点,在该情况中,主节点的邻居节点的数量可能远大于预定数目n。在该情况中,主节点的n个邻居节点可以为该节点的预定阶数以内的邻居节点,或者可以为该节点的预定阶数以内的邻居节点中随机确定的n个节点。例如,主节点的n个邻居节点可以限定为该节点的一阶邻居节点、二阶邻居节点和三阶邻居节点,假设该节点的一阶邻居节点、二阶邻居节点和三阶邻居节点的数目之和为n。或者,主节点的n个邻居节点可以为该节点的一阶邻居节点、二阶邻居节点和三阶邻居节点中随机确定的n个节点等等。

在步骤s204,获取第一节点及其所述n个邻居节点各自的输入嵌入向量,各个节点的所述输入嵌入向量基于该节点的静态嵌入向量和位置嵌入向量确定,其中,所述静态嵌入向量对应于该节点的属性特征,所述位置嵌入向量对应于该节点相对于所述第一节点的位置特征。

图4示意示出在图3所示的关系图的情况中节点a及其各个邻居节点各自的输入嵌入向量。如图4中所示,每个节点包括静态嵌入向量和位置嵌入向量,例如,节点a包括静态嵌入向量e_a和位置嵌入向量e_0,节点b包括静态嵌入向量e_b和位置嵌入向量e_1。其中,节点的静态嵌入向量体现节点的静态的属性特征,即,相对于第一时刻的关系网络图,节点的静态嵌入向量是固定不变的,而不会随着主节点的不同发生改变。在一个实施例中,可通过已有的n2v(节点至向量)模型基于第一时刻的关系网络图获取该时刻各个节点的静态嵌入向量,例如,已有的n2v模型可通过多个节点在第一时刻的相邻矩阵计算各个节点的静态嵌入向量。在一个实施例中,可通过对所述嵌入模型的预训练学习出各个节点的静态嵌入向量,这将在下文详细描述。节点的位置嵌入向量体现该节点在所述关系网络图中相对于主节点的位置信息。所述位置信息例如包括该节点相对于主节点的阶数,例如,节点b和节点c相对于节点a的阶数为2,节点d和节点e相对于节点a的阶数为3等等。可以理解,所述位置信息不限于包括所述阶数,例如,节点b的位置嵌入向量除了体现关于节点b为节点a的二阶邻居节点的位置信息,还可以体现关于节点a的二阶邻居节点的总数的位置信息等等。在一个实施例中,节点的位置嵌入向量的每个元素的值基于该节点相对于所述主节点的阶数、和该元素在该位置嵌入向量中的维度获取。例如,可通过如下公式(1)计算节点的位置嵌入向量的各个元素的值pe:

其中,pos为该节点相对于主节点的阶数,i为该元素在位置嵌入向量中的维度。可以理解,节点的位置嵌入向量的每个元素的值不限于通过公式(1)计算获取。在一个实施例中,可使用p2v(位置至嵌入)模型基于关系网络图获取各个节点的位置嵌入向量。在一个实施例中,可在预训练所述嵌入模型时学习各个阶数对应的位置嵌入向量,这将在下文详细描述。

在获取节点的静态嵌入向量e_i(其中i分别为a,b,..,e)和位置嵌入向量e_j(其中j分别为0,1,2)之后,可基于其获取该节点的输入嵌入向量ei。在一个实施例中,如图3中所示,所述静态嵌入向量与所述位置嵌入向量具有相同维度,可以将节点的输入嵌入向量ei设置为等于该节点的静态嵌入向量e_i与位置嵌入向量e_j之和。可以理解,所述输入嵌入向量不限于为静态嵌入向量与位置嵌入向量之和,只要输入嵌入向量中体现了静态嵌入向量和位置嵌入向量的信息即可,例如,可以将节点的输入嵌入向量设置为等于该节点的静态嵌入向量与位置嵌入向量的拼接等等。

在步骤s206,将第一节点及其所述n个邻居节点各自的输入嵌入向量输入预训练的嵌入模型,以使得所述模型输出:在以第一节点为主节点的情况中,第一节点及其所述多个邻居节点各自的动态嵌入向量,其中,所述嵌入模型包括至少一层前后相连的计算模块,其中,每个计算模块中包括自注意力层,所述自注意力层基于自注意力机制相对于其n+1个输入向量输出与所述n+1个输入向量分别对应的n+1个层输出向量。

图5示意示出根据本说明书实施例的嵌入模型的结构图。如图中所示,所述嵌入模型包括两个前后相连的计算模块51和52。其中,计算模块51基于图4中所示的5个输入嵌入向量ei向计算模块52输出与5个输入嵌入向量分别对应的5个中间向量ri,计算模块52基于输入的5个中间向量输出ri与该5个中间向量分别对应的5个动态嵌入向量ti。可以理解,图5中示出两个计算模块和5个输入嵌入向量仅仅用于示例说明,在实际中,嵌入模型可包括至少一个计算模块,即,可包括一个计算模块,也可以包括两个以上的前后相连的计算模块,并且可设定为输入预定数目的输入嵌入向量。

图6示意示出计算模块51的内部构造。所述计算模块可参考现有技术中的变换器(transformer)模型中的编码器进行构造,如图6中所示,计算模块51中可包括自注意力层511和前馈层512。其中,所述自注意力层511基于自注意力机制相对于图中5个输入向量输出与所述5个输入向量分别对应的5个输出向量zi,如图中可以看出,每个输出向量zi都基于全部输入向量计算获取,其中所述计算为基于注意力函数的计算。这里,由于计算模块51为该嵌入模型的第一个计算模块,因此,其自注意力层的输入向量即为该嵌入模型的输入向量,即输入嵌入向量ei,可以理解,对于在第一计算模块之后的计算模块,其自注意力层的输入向量即为前一个计算模块的输出向量,例如,如图5中所示,计算模块52的自注意力层的输入向量为计算模块51的输出向量ri。

下文将详细描述本说明书实施例的自注意力层中基于自注意机制的计算过程。所谓自注意力机制,参考图6中所示,即,对于包括多个单元的序列中的每个单元(例如节点),通过使用注意力函数,基于该单元与该序列中的其它各个单元的注意力值,获取该单元的注意力值。所述注意力函数例如为在现有技术中的变换器(transformer)模型中使用的注意力函数。可以理解,在本说明书实施例中不限于使用该注意力函数,而是可以使用现有技术中可获取的各种注意力函数,如加性注意力函数、点积注意力函数等等。

注意力函数的本质可以被描述为一个查询(query)到一系列(键key-值value)对的映射,图7示意示出了通过注意力函数计算注意力值的过程。例如,针对图4中获取的节点a-e的输入嵌入向量ea-ee,当将其输入例如图5所示的嵌入模型中时,图5中的计算模块51首先针对该5个嵌入向量ei进行自注意力计算。具体是,首先通过在模型预训练中学习的q矩阵wq、k矩阵wk和v矩阵wv对各个输入嵌入向量ei进行变换,从而获取各个节点的具有相同维度d的q向量(查询向量)、k向量(键向量)和v向量(值向量)。例如对于输入嵌入向量ea,可通过如下的公式(2)分别获取节点a的q向量qa、k向量ka和v向量va:

可类似地通过q矩阵wq、k矩阵wk和v矩阵wv对其它输入嵌入向量进行变换,从而获取节点b-e各自的q向量qb-qe,k向量kb-ke,和v向量vb-ve,从而,参考图7中所示,对于节点a,基于如下的公式(3)通过将节点a的q向量qa与各个节点的键值对(即k向量和v向量对)进行计算,从而获取节点a的注意力值za:

za=∑i=a,b,...,e相似度(qa,ki)*vi(3)

其中,所述相似度函数可采用本领域可获取的各种函数,如点积、拼接、感知机等。可以理解,在公式(3)中,节点a的q向量qa与各个节点的k向量ki之间的相似度也即节点a的输入嵌入向量与各个节点的输入嵌入向量之间的一种关联度,然而,节点a的输入嵌入向量与各个节点的输入嵌入向量之间的关联度不限于通过这种方式计算,例如,节点a的输入嵌入向量与各个节点的输入嵌入向量之间的关联度可以直接为节点a的输入嵌入向量与各个节点的输入嵌入向量之间的相似度。也就是说,在公式(3)中,各个v向量的权重不限于为上述相似度,只要该权重体现了节点a的输入嵌入向量与各个节点的输入嵌入向量之间的关联度即可。

在一个实施例中,可如公式(4)所示计算注意力值za:

其中,用于使得模型训练时梯度更稳定,sofmax函数用于进行归一化。

在上述的自注意力机制中采用了一组q矩阵、k矩阵和v矩阵用于获取各个节点的注意力值zi,在一个实施例中,在计算模块中可采用多头自注意力机制,即,通过多组q矩阵、k矩阵和v矩阵与上文类似地分别获取例如节点a的注意力值za1、za2、za3等,然后通过预训练学习的o矩阵wo对拼接的向量(za1,za2,za3)进行线性变换,从而获取节点a的基于多头的注意力值za。

如图6中所示,计算模块中还包括前馈层512,所述前馈层512例如为全连接层,其分别对从自注意力层511输出的各个注意力值za-ze进行计算,从而分别获取相应的该计算模块51的输出向量ra-re,并将向量ra-re作为与各个节点对应的输入向量输入计算模块52,以进行与计算模块51中类似的计算过程。如图中所示,例如,在前馈层512中,由层512输出的输出向量ra只基于相应的该层的输入向量za计算获取。可以理解,在本说明书实施例中,根据具体的应用场景,所述前馈层相应地变化,并且,所述前馈层并不是必需的。类似地,图5中的计算模块52基于其输入向量ra-re输出与各个节点分别对应的动态嵌入向量ta-te。基于上述计算过程可以理解,根据本说明书实施例,嵌入模型输出的各个节点的动态嵌入向量ta-te体现了其它节点对该节点的影响,其随着一组节点序列中选取的主节点的不同而动态变化。

图8示出根据本说明书实施例的对上述嵌入模型进行预训练的方法,其中,所述多个节点中包括第二节点,所述方法包括:

在步骤s802,基于多个节点在第二时刻的关系网络图,确定所述第二节点的n个邻居节点,并确定至少一个第三节点,其中,所述第三节点为选自于所述第二节点及其n个邻居节点中的节点,其中,所述第二时刻为在所述第一时刻之前的时刻;

在步骤s804,获取第二节点及其n个邻居节点各自的输入嵌入向量,其中,所述第三节点的输入嵌入向量为预定的与该第三节点无关的向量,所述第二节点及其n个邻居节点中除所述至少一个第三节点之外的其它节点各自的输入嵌入向量基于该节点的静态嵌入向量和位置嵌入向量确定;

在步骤s806,将第二节点及其n个邻居节点各自的输入嵌入向量输入当前嵌入模型,以基于所述当前嵌入模型输出的与所述至少一个第三节点分别对应的至少一个动态嵌入向量优化所述嵌入模型。

所述预训练通过使用过去的多个节点在预定时长内的动态的关系网络图作为训练数据进行训练,从而使得该嵌入模型不仅仅对应于多个节点在一个时刻的关系网络图,而是对应于所述多个节点在多个时刻的关系网络图,从而更好地刻画多个节点相互间的影响。图8所示方法对应于预训练中的一次训练,对于多个节点的多个时刻的不同的关系网络图,可以针对每个时刻的图进行多次训练,即,不同次的训练可对应于一个时刻,也可以对应于不同的时刻;或者,可以针对每个时刻的图进行一次训练,即,不同次训练对应于不同的时刻。在图8所示方法中,与现有技术中的bert模型类似地,可通过掩蔽(mask)序列中的至少一个节点而获取训练数据,可以理解,对所述嵌入模型的训练方法不限于上述方法,而是可以使用本领域技术人员可获取的任意方法,例如,可以相似节点的动态嵌入向量差作为损失函数,进行模型训练等等。

下面具体描述该方法中的各个步骤。

首先,在步骤s802,基于多个节点在第二时刻的关系网络图,确定第二节点的n个邻居节点,并确定至少一个第三节点,其中,所述第三节点为选自于所述第二节点及其n个邻居节点中的节点,其中,所述第二时刻为在所述第一时刻之前的时刻。

所述第二时刻即为上述用于预训练的预定时长中的任一时刻,通常该第二时刻为第一时刻之前的时刻,即,通常在对嵌入模型进行预训练之后,再进行模型的使用。

在该步骤中,与图2中步骤s202类似地,以第二节点为主节点,并获取其n个邻居节点,所述第二节点例如可以为图3中任一节点,对n个邻居节点的具体描述可参考上文中在步骤s202中的描述,在此不再赘述。在第二节点及其n个邻居节点中,可预先指定至少一个节点作为至少一个第三节点,或者可随机确定至少一个节点作为至少一个第三节点。例如,以图3中的关系网络图为例,第三节点可以确定为节点a-节点e中的任一节点,并且,第三节点的个数可以为一个或多个,通常,可以以相比于所述多个节点的一定比例、或者以相比于n+1的一定比例确定第三节点的个数,等等。

在步骤s804,获取第二节点及其n个邻居节点各自的输入嵌入向量,其中,所述第三节点的输入嵌入向量为预定的与该第三节点无关的向量,所述第二节点及其n个邻居节点中除所述至少一个第三节点之外的其它节点各自的输入嵌入向量基于该节点的静态嵌入向量和位置嵌入向量确定。

所述第三节点也即掩蔽节点,也就是说,在对嵌入模型输入各个节点的输入嵌入向量时,第三节点的输入嵌入向量并不与第三节点本身的属性位置特征相对应,而是替换成与第三节点无关的向量,从而达到掩蔽的效果。具体是,例如,可通过随机确定的关系网络图中其它节点的静态嵌入向量和随机确定的位置嵌入向量确定第三节点的输入嵌入向量,或者以预先指定的向量作为第三节点的输入嵌入向量。所述第二节点及其n个邻居节点中除所述至少一个第三节点之外的其它节点各自的输入嵌入向量的获取与上文对步骤s204中的描述相同,在此不再赘述。

在步骤s806,将第二节点及其n个邻居节点各自的输入嵌入向量输入当前嵌入模型,以基于所述当前嵌入模型输出的与所述至少一个第三节点分别对应的至少一个动态嵌入向量优化所述嵌入模型。

由于基于所述嵌入模型的结构特征,其输出的各个节点的动态嵌入向量不仅包括该节点自身的特征信息,还包括其它节点对该节点的影响,因此,即使在掩蔽该节点自身对应的输入嵌入向量的情况中,该嵌入模型应仍可以基于输入模型的节点序列中的其它节点的输入嵌入向量而预测该节点的动态嵌入向量。从而,可基于模型输出的与各个掩蔽节点(即第三节点)对应的动态嵌入向量进行模型的训练。例如,可将与第三节点的动态嵌入向量输入特定下游模型,例如预测节点标识的模型,并基于预测误差,通过例如反向传播算法进行对该嵌入模型的训练,等等。

如上文所述,对该嵌入模型的训练除了训练模型中的各个权重矩阵之外,还可以训练各个节点的静态嵌入向量和与各个阶数对应的位置嵌入向量。例如,对于图3所示的关系网络图,在初始训练时,可随机确定各个节点的静态嵌入向量ea-ee,以及与三个阶数分别对应的位置嵌入向量e0-e2,在对模型的训练期间,在每次训练中,在该次训练输入的各个节点的静态嵌入向量和各个位置嵌入向量为在上一次训练经过优化的静态嵌入向量和位置嵌入向量,并可例如通过梯度下降法调节在该次训练中输入的所述静态嵌入向量和位置嵌入向量,从而使得所述静态嵌入向量和位置嵌入向量中包含了多个时刻的关系网络图中的信息。

图9示出根据本说明书实施例的一种向用户推送对象的方法,包括,

在步骤s902,获取多个用户的当前关系网络图,其中,所述多个用户中包括第一用户和第二用户,其与所述当前关系网络图中的第四节点和第五节点分别对应;

在步骤s904,基于所述当前关系网络图,通过图2所示方法,分别获取:在以第四节点为主节点的情况中,第四节点及其预定数目的邻居节点各自的动态嵌入向量,以及在以第五节点为主节点的情况中,第五节点及其预定数目的邻居节点各自的动态嵌入向量;

在步骤s906,基于所述两种情况下各个节点的动态嵌入向量,确定所述第四节点与所述第五节点的相似性;以及

在步骤s908,在所述相似性大于预定阈值的情况中,基于所述第一用户的关注对象,向所述第二用户推送对象。

图9所示方法为对根据本说明书实施例的嵌入模型的输出的一种下游应用,可以理解,对该嵌入模型的输出的下游应用不限于该方法,而可以包括各种其它场景的下游应用,如,通过节点的动态嵌入向量,挖掘用户中的欺诈用户等等,在此不一一列出。

其中,在步骤s902,获取多个用户的当前关系网络图,其中,所述多个用户中包括第一用户和第二用户,其与所述当前关系网络图中的第四节点和第五节点分别对应。所述第一用户例如为该关系网络图中随机确定的用户,或者可以为典型用户(例如购买特定商品的用户)等等,所述第二用户例如为待推送的用户。

步骤s904可参考上文对图2的具体描述,在此不再赘述。

在步骤s906,基于所述两种情况下各个节点的动态嵌入向量,确定所述第四节点与所述第五节点的相似性。

可通过多种方法确定第四节点和第五节点的相似性。在一个实施例中,可基于第一动态嵌入向量与第二动态嵌入向量的相似性,计算所述第四节点与所述第五节点的相似性,其中,所述第一动态嵌入向量为在以第四节点为主节点的情况中第四节点的动态嵌入向量,所述第二动态嵌入向量为在以第五节点为主节点的情况中第五节点的动态嵌入向量。在一个实施例中,还可以将上述第一动态嵌入向量和第二动态嵌入向量分别或同时输入预定模型,以确定第四节点与第五节点的相似性。在该情况中,该预定模型可以针对特定特征进行训练,从而可确定第四节点与第五节点相对于该特定特征的相似性。例如,该预定模型可针对特定商品进行训练,从而可确定第一用户和第二用户针对该特定商品的相似性,从而,在第一用户购买该商品的情况中,可向第二用户推荐该商品。

在一个实施例中,可计算在以第四节点为主节点的情况中模型输出的多个动态嵌入向量与在以第五节点为主节点的情况中模型输出的多个动态嵌入向量的整体相似性,以作为第四节点与第五节点的相似性。

在步骤s908,在所述相似性大于预定阈值的情况中,基于所述第一用户的关注对象,向所述第二用户推送对象。

所述第一用户的关注对象可以为多种对象,如购买的商品、评分的电影作品、收藏的店铺等等。从而,当所述相似性大于预定阈值时,可基于第一用户的关注对象,对第二用户进行信息推送。

图10示出根据本说明书实施例的一种获取多个节点的关系网络图中节点的动态嵌入向量的装置1000,所述多个节点中包括第一节点,所述装置包括:

确定单元101,配置为,基于所述多个节点在第一时刻的关系网络图,确定第一节点的n个邻居节点,其中n为预定整数;

获取单元102,配置为,获取第一节点及其所述n个邻居节点各自的输入嵌入向量,各个节点的所述输入嵌入向量基于该节点的静态嵌入向量和位置嵌入向量确定,其中,所述静态嵌入向量对应于该节点的属性特征,所述位置嵌入向量对应于该节点相对于所述第一节点的位置特征;以及

输入单元103,配置为,将第一节点及其所述n个邻居节点各自的输入嵌入向量输入预训练的嵌入模型,以使得所述模型输出:在以第一节点为主节点的情况中,第一节点及其所述多个邻居节点各自的动态嵌入向量,其中,所述嵌入模型包括至少一个前后相连的计算模块,其中,每个计算模块中包括相应的自注意力层,所述自注意力层基于自注意力机制相对于其n+1个输入向量输出与所述n+1个输入向量分别对应的n+1个层输出向量。

图11示出根据本说明书实施例的用于预训练嵌入模型的训练装置1100,所述训练装置包括:

确定单元111,配置为,基于多个节点在第二时刻的关系网络图,确定所述第二节点的n个邻居节点,并确定至少一个第三节点,其中,所述第三节点为选自于所述第二节点及其n个邻居节点中的节点,其中,所述第二时刻为在所述第一时刻之前的时刻;

获取单元112,配置为,获取第二节点及其n个邻居节点各自的输入嵌入向量,其中,所述第三节点的输入嵌入向量为预定的与该第三节点无关的向量,所述第二节点及其n个邻居节点中除所述至少一个第三节点之外的其它节点各自的输入嵌入向量基于该节点的静态嵌入向量和位置嵌入向量确定;

优化单元113,配置为,将第二节点及其n个邻居节点各自的输入嵌入向量输入当前嵌入模型,以基于所述当前嵌入模型输出的与所述至少一个第三节点分别对应的至少一个动态嵌入向量优化所述嵌入模型。

在一个实施例中,所述优化单元113还配置为,优化所述嵌入模型的参数,以及优化第一节点及所述n个邻居节点中除所述至少一个第三节点之外的各个节点各自的输入点嵌入向量和位置嵌入向量。

图12示出根据本说明书实施例的一种向用户推送对象的装置1200,包括,

第一获取单元121,配置为,获取多个用户的当前关系网络图,其中,所述多个用户中包括第一用户和第二用户,其与所述当前关系网络图中的第四节点和第五节点分别对应;

第二获取单元122,配置为,基于所述当前关系网络图,通过上述获取动态嵌入向量的装置,分别获取:在以第四节点为主节点的情况中,第四节点及其预定数目的邻居节点各自的动态嵌入向量,以及在以第五节点为主节点的情况中,第五节点及其预定数目的邻居节点各自的动态嵌入向量;

确定单元123,配置为,基于所述两种情况下各个节点的动态嵌入向量,确定所述第四节点与所述第五节点的相似性;以及

推送单元124,配置为,在所述相似性大于预定阈值的情况中,基于所述第一用户的关注对象,向所述第二用户推送对象。

在一个实施例中,所述确定单元123还配置为,基于第一动态嵌入向量与第二动态嵌入向量的相似性,计算所述第四节点与所述第五节点的相似性,其中,所述第一动态嵌入向量为在以第四节点为主节点的情况中第四节点的动态嵌入向量,所述第二动态嵌入向量为在以第五节点为主节点的情况中第五节点的动态嵌入向量。

本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。

本说明书另一方面提供一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。

通过根据本说明书实施例的图节点嵌入方案,基于一段时间中的动态变化的多个节点之间的关系网络图训练嵌入模型,在所述嵌入模型中基于自注意力机制获取在一定上下文中(即以特定节点为主节点),各个节点的动态嵌入向量,从而使得各个节点的动态嵌入向量中体现更多的信息,如节点上下文(邻居、位置)的信息、节点之间的动态变化的连接信息等等,从而有效地利用了时序网络结构信息。

需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执轨道,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执轨道的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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