发明内容
本说明书一个或多个实施例描述了处理交互序列数据的方法和装置,其中利用神经网络模型,考虑交互对象参与的交互事件以及交互事件中其他对象的影响,将交互对象处理为隐含特征,从而得到有利于后续分析的特征向量。
根据第一方面,提供了一种处理交互序列数据的方法,所述方法包括:
获取根据动态交互序列构建的动态交互图,其中,所述动态交互序列包括按照时间顺序排列的多个交互特征组,每个交互特征组至少包括,发生交互行为的第一对象,第二对象和交互时间;所述动态交互图包括代表各个交互特征组中的各个第一对象和第二对象的多个节点,其中,任意节点i通过连接边,指向代表相关特征组中包含的两个对象的两个节点,所述相关特征组为,在所述动态交互序列中从该节点i所在的交互特征组向前回溯,得到的同样包含该节点i代表的对象的第一个交互特征组;
在所述动态交互图中,确定与待分析的当前节点对应的当前子图,所述当前子图包括从当前节点出发,经由连接边到达的预定范围内的节点;
将所述当前子图输入神经网络模型,所述神经网络模型包括LSTM层,所述LSTM层根据所述当前子图中各个节点之间的连接边的指向关系,依次迭代处理各个节点,从而得到所述当前节点的隐含向量;其中所述各个节点包括第一节点,所述依次迭代处理各个节点包括,至少根据所述第一节点的节点特征,该第一节点所指向的两个节点各自的中间向量和隐含向量,确定所述第一节点的隐含向量和中间向量。
在一个实施例中,如下获取动态交互图:
获取基于已有交互序列构建的已有动态交互图;
获取新增交互特征组;
将该新增交互特征组中包括的第一对象和第二对象作为两个新增节点,添加到所述已有动态交互图中;
对于每个新增节点,确定其相关特征组,添加从该新增节点指向其相关特征组中包含的两个节点的连接边。
在另一实施例中,如下获取动态交互图:
获取基于已有交互序列构建的已有动态交互图;
获取新增交互序列,其中包括多个新增交互特征组;
对于每个新增交互特征组,将其中的第一对象和第二对象作为两个新增节点,添加到所述已有动态交互图中;
对于每个新增节点,确定其相关特征组,添加从该新增节点指向其相关特征组中包含的两个节点的连接边。
在一个实施例中,所述当前节点是这样的节点:在所述动态交互图中,不存在指向该节点的连接边。
在一个实施例中,所述预定范围内的节点包括:预设数目K的连接边之内的节点;和/或,交互时间在预设时间范围内的节点。
根据一种实施方式,每个交互特征组还包括,交互行为的行为特征;在这样的情况下,所述第一节点的节点特征包括,所述第一节点所对应的对象的属性特征,以及所述第一节点所在的交互特征组中的行为特征。
在一种实施方式中,第一节点所指向的两个节点为第一指向节点和第二指向节点;LSTM层通过以下方式确定所述第一节点的隐含向量和中间向量:
将所述第一节点的节点特征、第一指向节点的隐含向量和第二指向节点的隐含向量,分别输入算法相同、参数不同的第一变换函数和第二变换函数,分别得到第一变换向量和第二变换向量;
将第一变换向量和第二变换向量分别与第一指向节点的中间向量和第二指向节点的中间向量进行组合操作,基于操作结果得到组合向量;
将所述第一节点的节点特征、第一指向节点的隐含向量和第二指向节点的隐含向量,分别输入第三变换函数和第四变换函数,分别得到第三变换向量和第四变换向量;
基于所述组合向量和第三变换向量,确定所述第一节点的中间向量;
基于所述第一节点的中间向量和第四变换向量,确定所述第一节点的隐含向量。
在另一种实施方式中,所述LSTM层依次迭代处理各个节点包括,根据所述第一节点的节点特征,该第一节点所指向的两个节点各自的中间向量和隐含向量,以及该第一节点所在交互特征组中的第一交互时间与所指向的两个节点所在交互特征组中的第二交互时间之间的时间差,确定所述第一节点的隐含向量和中间向量。
进一步地,LSTM层通过以下方式确定第一节点的隐含向量和中间向量:
将所述第一节点的节点特征、所述时间差、第一指向节点的隐含向量和第二指向节点的隐含向量,分别输入算法相同、参数不同的第一变换函数和第二变换函数,分别得到第一变换向量和第二变换向量;
将第一变换向量和第二变换向量分别与第一指向节点的中间向量和第二指向节点的中间向量进行组合,得到组合向量;
将所述第一节点的节点特征、所述时间差、第一指向节点的隐含向量和第二指向节点的隐含向量,分别输入第三变换函数和第四变换函数,分别得到第三变换向量和第四变换向量;
基于所述组合向量和第三变换向量,确定所述第一节点的中间向量;
基于所述第一节点的中间向量和第四变换向量,确定所述第一节点的隐含向量。
根据一种实施方式,神经网络模型包括多个LSTM层,其中,上一LSTM层确定出的所述第一节点的隐含向量,输入到下一LSTM层作为该第一节点的节点特征。
进一步地,在一个实施例中,所述神经网络模型将所述多个LSTM层各自输出的当前节点的隐含向量进行综合,得到所述当前节点的最终隐含向量。
在另一实施例中,所述神经网络模型将所述多个LSTM层中最后一个LSTM层输出的当前节点的隐含向量,作为所述当前节点的最终隐含向量。
根据一种实施方式,所述神经网络模型通过以下方式训练:
获取历史交互特征组,其中包括第一样本对象和第二样本对象;
在所述动态交互图中,分别确定与所述第一样本对象对应的第一子图,和与所述第二样本对象对应的第二子图;
将所述第一子图和所述第二子图分别输入所述神经网络模型,分别得到所述第一样本对象的隐含向量和第二样本对象的隐含向量;
根据所述第一样本对象的隐含向量和第二样本对象的隐含向量,预测所述第一样本对象和第二样本对象是否会发生交互,得到预测结果;
根据所述预测结果,确定预测损失;
根据所述预测损失,更新所述神经网络模型。
根据另一种实施方式,所述神经网络模型通过以下方式训练:
从所述动态交互序列中选择样本对象,并获取该样本对象的分类标签;
在所述动态交互图中,确定与该样本对象对应的样本子图;
将所述样本子图输入所述神经网络模型,得到所述样本对象的隐含向量;
根据所述样本对象的隐含向量,预测所述样本对象的分类,得到预测结果;
根据所述预测结果和所述分类标签,确定预测损失;
根据所述预测损失,更新所述神经网络模型。
根据第二方面,提供一种处理交互序列数据的装置,所述装置包括:
交互图获取单元,配置为获取根据动态交互序列构建的动态交互图,其中,所述动态交互序列包括按照时间顺序排列的多个交互特征组,每个交互特征组至少包括,发生交互行为的第一对象,第二对象和交互时间;所述动态交互图包括代表各个交互特征组中的各个第一对象和第二对象的多个节点,其中,任意节点i通过连接边,指向代表相关特征组中包含的两个对象的两个节点,所述相关特征组为,在所述动态交互序列中从该节点i所在的交互特征组向前回溯,得到的同样包含该节点i代表的对象的第一个交互特征组;
子图确定单元,配置为在所述动态交互图中,确定与待分析的当前节点对应的当前子图,所述当前子图包括从当前节点出发,经由连接边到达的预定范围内的节点;
子图处理单元,配置为将所述当前子图输入神经网络模型,利用神经网络模型处理所述当前子图;所述神经网络模型包括LSTM层,所述LSTM层根据所述当前子图中各个节点之间的连接边的指向关系,依次迭代处理各个节点,从而得到所述当前节点的隐含向量;其中所述各个节点包括第一节点,所述依次迭代处理各个节点包括,至少根据所述第一节点的节点特征,该第一节点所指向的两个节点各自的中间向量和隐含向量,确定所述第一节点的隐含向量和中间向量。
根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
根据第四方面,提供了一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法。
根据本说明书实施例提供的方法和装置,基于动态交互序列构建动态交互图,该动态交互图反映了各个交互事件的时序关系,以及交互对象之间通过各个交互事件传递的相互影响。利用训练的神经网络模型,基于该动态交互图中与待分析交互对象相关的子图,可以提取得到该交互对象的隐含向量。如此得到的隐含向量中引入了各个交互事件中其他交互对象对其的影响,从而可以综合全面地表达该交互对象的深层特征。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
如前所述,希望能够基于交互事件,对交互事件的参与方,即交互对象进行特征表达和建模。
在一种方案中,基于历史交互事件构建静态的交互关系网络图,从而基于该交互关系网络图,分析各个交互对象。具体地,可以以各个历史事件的参与者作为节点,在存在交互关系的节点之间建立连接边,从而形成上述交互网络图。
图1A和图1B分别示出在具体例子中的交互关系网络图。更具体而言,图1A示出一个二部图,其中包含用户节点(U1-U4)和商品节点(V1-V3),如果某个用户购买过某件商品,则在该用户和该商品之间构建一条连接边。图1B示出一个用户转账关系图,其中每个节点代表一个用户,发生过转账记录的两个用户之间存在连接边。
然而,可以看到,图1A和图1B尽管示出了对象之间的交互关系,但是没有包含这些交互事件的时序信息。简单地基于这样的交互关系网络图进行图嵌入,获得的特征向量也没有表达出交互事件的时间信息对节点的影响。并且,这样的静态图可扩展性不够强,对于新增交互事件和新增节点的情况,难以灵活进行处理。
在另一方案中,对于各个待分析的交互对象,构建该对象的行为序列,基于该行为序列,提取该对象的特征表达。然而,这样的行为序列仅表征了待分析对象本身的行为,而交互事件是多方参与的事件,参与者之间会通过交互事件间接传递影响。因此,这样的方式没有表达出交互事件中的参与对象之间的影响。
综合考虑以上因素,根据本说明书的一个或多个实施例,将动态变化的交互事件序列构建成动态交互图,其中各个交互事件中涉及的各个交互对象对应于该动态交互图中的各个节点。对于待分析的交互对象,从该动态交互图中得到对应节点相关的子图部分,将该子图部分输入基于LSTM的神经网络模型,得到该交互对象的特征向量表达。
图2示出根据一个实施例的实施场景示意图。如图2所示,可以将依次发生的多个交互事件按时间顺序组织成动态交互序列<E1,E2,…,EN>,其中每个元素Ei表示一个交互事件,可以表示为交互特征组的形式Ei=(ai,bi,ti),其中ai和bi是事件Ei的两个交互对象,ti是交互时间。
根据本说明书的实施例,基于该动态交互序列构建动态交互图,如图2所示。在动态交互图中,将各个交互事件中的各个交互对象ai,bi用节点表示,并在包含同一对象的事件之间建立连接边。动态交互图的结构将在后续进行更具体的描述。
对于某个待分析的交互对象,可以确定出其在动态交互图中对应的当前节点,并得到动态交互图中与该当前节点有关的当前子图。一般地,当前子图包括从当前节点出发,经过一定数目的连接边可以达到的节点。当前子图反映了,与当前交互对象直接或间接关联的交互事件中的其他对象对当前节点带来的影响。
然后,将当前子图输入到基于长短期记忆LSTM的神经网络模型,通过该模型,输出得到当前交互对象的特征向量。如此得到的特征向量,可以抽取出相关联的交互事件的时间信息和各交互事件中的交互对象之间的影响,从而更准确地表达当前交互对象的深层特征。这样的特征向量可以在后续应用于各种机器学习模型和各种业务场景。例如,可以基于如此得到的特征向量进行强化学习,也可以基于该特征向量进行聚类分析,例如,将用户聚类为人群。还可以基于这样的特征向量进行分类预测,例如,预测两个对象之间是否会发生交互(比如某个用户是否会购买某个商品),预测某个对象的业务类型(比如某个用户的风险层级),等等。
下面描述以上构思的具体实现方式。
图3示出根据一个实施例的处理交互序列数据的方法流程图。可以理解,可以理解,该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。下面结合具体实施例,对如图3所示的处理交互序列数据的方法中的各个步骤进行描述。
首先,在步骤31,获取根据动态交互序列构建的动态交互图。
如前所述,动态交互序列,例如表示为<E1,E2,…,EN>,可以包括按照时间顺序排列的多个交互事件,其中每个交互事件Ei可以表示为一个交互特征组Ei=(ai,bi,ti),其中ai和bi是事件Ei的两个交互对象,ti是交互时间。如此,概括地说,动态交互序列包括按照时间顺序排列的多个交互特征组(ai,bi,ti),每个交互特征组至少包括,发生交互行为两个对象,例如称为第一对象和第二对象,以及交互时间。
例如,在电商平台中,交互事件可以是用户的购买行为,其中的第一对象可以是某个用户,第二对象可以是某个商品。在另一例子中,交互事件可以是用户对页面区块的点击行为,其中的第一对象可以是某个用户,第二对象可以是某个页面区块。在其他业务场景中,交互事件还可以是其他在两个对象之间发生的交互行为。
进一步的,在一个实施例中,每个交互事件对应的交互特征组还可以包括行为特征f,如此,每个交互特征组可以表示为Xi=(ai,bi,ti,f)。具体的,行为特征f可以包括交互行为发生的背景和上下文信息,交互行为的一些属性特征,等等。例如,在交互事件为用户点击事件的情况下,行为特征f可以包括,用户进行点击所使用的终端的类型,浏览器类型,app版本,等等。
对于以上所述的动态交互序列,可以构建动态交互图。具体的,将动态交互序列中各个特征组中的各个第一对象和第二对象分别作为动态交互图的节点。如此,一个节点可以对应到一个交互事件的特征组中的一个对象,但是同一物理对象可能对应到多个节点。例如,如果用户U1在t1时刻购买了商品M1,在t2时刻购买了商品M2,那么存在两个交互特征组(U1,M1,t1)和(U1,M2,t2),那么则根据这两个交互特征组分别为用户U1创建节点U1(t1),U1(t2)。因此可以认为,动态交互图中的节点对应于一个交互对象在一次交互事件中的状态。
对于动态交互图中的每个节点,按照以下方式构建连接边:对于任意节点i,假定其对应于交互特征组i(交互时间为t),那么在动态交互序列中,从交互特征组i向前回溯,也就是向早于交互时间t的方向回溯,将第一个同样包含节点i代表的对象的交互特征组j(交互时间为t-,t-早于t)确定为相关特征组。于是,建立从节点i指向相关特征组j中的两个节点的连接边。换而言之,如果节点i代表对象u在t时刻交互事件中的状态,i=u(t),那么相关特征组就是,对象u参与的上一次交互事件对应的交互特征组。
下面结合具体例子进行描述。图4示出根据一个实施例的动态交互序列和由此构建的动态交互图。具体的,图4左侧示出按照时间顺序组织的动态交互序列,其中示例性示出分别在t1,t2,…,t6时刻发生的交互事件E1,E2,…,E6,每个交互事件的特征组包含交互涉及的两个交互对象,以及交互时间。图4右侧示出根据左侧的动态交互序列构建的动态交互图,其中,将各个交互事件中的两个交互对象分别作为节点。下面以节点u(t6)为例,描述连接边的构建。
如图所示,该节点u(t6)代表交互事件E6中的一个交互对象David。于是,从交互事件E6出发向前回溯,找到的第一个同样包含交互对象David的交互事件为E4,也就是说,E4是David参与的上一次交互事件,相应的,E4对应的特征组即为节点u(t6)的相关特征组。建立从节点u(t6)指向E4对应的两个节点u(t4)和v(t4)的连接边。类似的,从u(t4)(对应于交互事件E4)继续向前回溯,可以继续找到对象u也就是David参与的上一次交互事件E2,于是建立从u(t4)指向E2对应的两个节点的连接边;从v(t4)向前回溯,可以找到对象v参与的上一次交互事件E3,于是,建立从v(t4)指向E3对应的两个节点的连接边。如此,在节点之间构建连接边,从而形成图4的动态交互图。
以上描述了基于动态交互序列构建动态交互图的方式和过程。对于图3所示的处理交互对象的方法而言,构建动态交互图的过程可以预先进行也可以现场进行。相应地,在一个实施例中,在步骤31,根据动态交互序列现场构建动态交互图。构建方式如以上所述。在另一实施例中,可以预先基于动态交互序列构建形成动态交互图。在步骤31,读取或接收已形成的动态交互图。
可以理解,按照以上方式构建的动态交互图具有很强的可扩展性,可以非常容易地根据新增的交互事件进行动态更新。相应地,步骤31还可以包括更新动态交互图的过程。
在一个实施例中,每当检测到新的交互事件,就基于该新的交互事件更新动态交互图。具体的,在该实施方式下,可以获取基于已有交互序列构建的已有动态交互图,并获取新增交互事件所对应的特征组,即新增特征组。然后,将该新增交互特征组中包括的第一对象和第二对象作为两个新增节点,添加到已有动态交互图中。并且,对于每个新增节点,确定其相关特征组,添加从该新增节点指向其相关特征组中包含的两个节点的连接边,如此形成更新的动态交互图。
在另一实施例中,可以每过预定时间间隔,例如每隔一个小时,检测新增的交互事件,将该时间间隔内新增的多个交互事件形成新增交互序列。或者,每当检测到预定数目(例如,100个)的新增交互事件,将该预定数目的新增交互事件形成新增交互序列。然后基于该新增交互序列更新动态交互图。
具体的,在该实施方式下,可以获取基于已有交互序列构建的已有动态交互图,并获取如上所述的新增交互序列,其中包括多个新增交互特征组。然后,对于每个新增交互特征组,将其中的第一对象和第二对象作为两个新增节点,添加到所述已有动态交互图中。并且,对于每个新增节点,确定其相关特征组,添加从该新增节点指向其相关特征组中包含的两个节点的连接边,如此形成更新的动态交互图。
综合以上,在步骤31,获取到基于动态交互序列构建的动态交互图。接着,在步骤32,在获取的动态交互图中,确定与待分析的当前节点对应的当前子图,所述当前子图包括从当前节点出发,经由连接边到达的预定范围内的节点。
当前节点是与待分析的交互对象对应的节点。然而如前所述,一个交互对象可以对应多个节点,表达该交互对象在不同时刻的不同交互事件中的状态。为了表达出待分析的交互对象的最新状态,在一个实施例中,选择这样的节点作为当前节点,即在动态交互图中,不存在指向该节点的连接边。也就是说,选择待分析对象所参与的最新一次交互事件对应的节点作为当前节点。例如,在图4所示的动态交互图中,当想要分析交互对象David时,可以选择节点u(t6)作为当前节点。然而,这并不是必须的。在其他实施例中,例如为了训练的目的,也可以选择其他节点作为当前节点,例如,为了分析David也可以选择节点u(t4)作为当前节点。
从当前节点出发,经由连接边到达的预定范围内的节点,构成当前节点对应的当前子图。在一个实施例中,上述预定范围内的节点可以是,至多经过预设数目K的连接边可达的节点。这里数目K为预设的超参数,可以根据业务情况选取。可以理解,该预设数目K体现了,在表达当前节点的信息时,向前回溯的历史交互事件的步数。数目K越大,则考虑越久的历史交互信息。
在另一实施例中,上述预定范围内的节点还可以是,交互时间在预定时间范围内的节点。例如,从当前节点的交互时间向前回溯T时长(例如一天),在该时长范围内、且可通过连接边达到的节点。
在又一实施例中,上述预定范围既考虑连接边的数目,又考虑时间范围。换而言之,该预定范围内的节点是指,至多经过预设数目K的连接边可达、且交互时间在预定时间范围内的节点。
简单起见,下面的例子中,以预设数目K的连接边为例进行描述。
图5示出在一个实施例中当前子图的示例。在图5的例子中,假定图4中的u(t6)为当前节点,预设数目K=2,那么从u(t6)出发,沿连接边的指向进行遍历,经由2条连接边可以达到的节点如图中虚线区域所示。该区域中的节点和连接关系即为当前子图。
接着,在步骤33,将当前子图输入神经网络模型,该神经网络模型包括LSTM层。对于当前子图中的任意一个节点,为了表述的方便称为第一节点,LSTM层进行以下处理:至少根据该第一节点的节点特征,该第一节点所指向的两个节点各自的中间向量和隐含向量,确定该第一节点的隐含向量和中间向量。如此,LSTM层根据当前子图中各个节点之间的连接边的指向关系,依次迭代处理各个节点,从而得到当前节点的隐含向量。
图6示出LSTM层的工作示意图。假定节点Q指向节点J1和节点J2。如图6所示,在T时刻,LSTM层分别处理得到节点J1和节点J2的表示向量H1和H2,包括中间向量和隐含向量;在接下来的T+时刻,LSTM层根据节点Q的节点特征,之前处理得到的J1和J2的表示向量H1和H2,得到节点Q的表示向量HQ。可以理解,该节点Q的表示向量可以在后续时刻,用于处理得到指向节点Q的节点的表示向量,如此实现迭代处理。
结合图5的当前子图描述这一过程。对于图中最下层的节点u(t2),在该当前子图中不考虑其指向节点,也就是认为u(t2)不具有指向的节点。在这样的情况下,通过用缺省值(例如0)填补(padding)的方式产生该节点所指向的两个节点各自的中间向量c和隐含向量h。于是,LSTM层基于该节点u(t2)的节点特征,以及产生的两个中间向量c和两个隐含向量h,确定节点u(t2)的中间向量c(u(t2))和隐含向量h(c(t2))。对于最下层节点y(t2)也做同样的处理,得到对应的中间向量c(y(t2))和h(y(t2))。
对于节点u(t4),其指向节点u(t2)和y(t2)。因此,LSTM层根据该节点u(t4)本身的节点特征,以及其指向的两个节点u(t2)和y(t2)各自的中间向量和隐含向量,即c(u(t2)),h(u(t2)),c(y(t2))和h(y(t2)),确定节点u(t4)的中间向量c(u(t4))和h(u(t4))。
如此,层层迭代处理,可以得到当前节点u(t6)的中间向量和隐含向量。
下面描述为了实现以上的迭代处理,LSTM层的内部结构和算法。
图7示出根据一个实施例LSTM层的结构。在图7的示例中,当前处理的节点记为z(t),其中xz(t)表示该节点的节点特征。在节点表示用户的情况下,节点特征可以包括用户的属性特征,例如年龄、职业、教育程度、所在地区,等等;在节点表示商品的情况下,节点特征可以包括商品的属性特征,例如商品类别、上架时间、销量等等。在节点表示其他交互对象的情况下,可以相应的获取到原始的节点特征。在交互特征组中还包括行为特征f的情况下,也可以在节点特征中包含对应特征组中的行为特征f。
假定节点z(t)指向的两个节点为第一指向节点j1和第二指向节点j2,那么cj1和hj1分别表示第一指向节点j1的中间向量和隐含向量,cj2和hj2分别表示第二指向节点j2的中间向量和隐含向量。
LSTM层对于输入其中的节点特征、中间向量和隐含向量进行以下运算。将节点特征xz(t)、第一指向节点j1的隐含向量hj1和第二指向节点j2的隐含向量hj2,分别输入算法相同、参数不同的第一变换函数和第二变换函数,分别得到第一变换向量和第二变换向量。
更具体的,在一个例子中,第一变换函数和第二变换函数分别采用以下公式(1)和公式(2)计算:
以上公式(1)和公式(2)中,σ为激活函数,例如是sigmoid函数,
和/>
为线性变换矩阵,/>
为偏移量参数。可以看到,公式(1)和(2)算法相同,仅参数不同。通过以上的变换函数,可以得到第一变换向量/>
和第二变换向量/>
当然,在其他例子中,也可以采用类似但不同的变换函数,例如选择不同的激活函数,修改以上公式中参数的形式和数目,等等。
然后,将第一变换向量
和第二变换向量/>
分别与第一指向节点j
1的中间向量c
j1和第二指向节点j
2的中间向量c
j2进行组合操作,基于操作结果得到组合向量。
具体的,在一个例子中,如图6所示,上述组合操作可以是,将第一变换向量
与第一指向节点的中间向量c
j1进行按位相乘(如图中的⊙符号所示),得到向量v1;将第二变换向量/>
与第二指向节点的中间向量c
j2进行按位相乘,得到向量v2,然后将向量v1和向量v2再组合,例如相加求和,得到组合向量。
此外,还将节点的节点特征xz(t)、第一指向节点j1的隐含向量hj1和第二指向节点j2的隐含向量hj2,分别输入第三变换函数和第四变换函数,分别得到第三变换向量和第四变换向量。
具体的,在图6所示的例子中,第三变换函数可以是,先求得向量iz(t)和uz(t),再将iz(t)和uz(t)进行按位相乘,由此得到第三变换向量rz(t),即:
rz(t)=iz(t)⊙uz(t) (3)
其中,⊙表示按位相乘。
更具体的,iz(t)和uz(t)可以按照以下公式计算:
第四变换函数可以是,通过以下公式得到第四变换向量Oz(t):
接着,基于上述组合向量和第三变换向量rz(t),确定节点z(t)的中间向量cz(t)。
更具体的,在一个例子中,可以将组合向量和第三变换向量求和,得到z(t)的中间向量cz(t)。在其他例子中,也可以通过其他组合方式,例如加权求和,按位相乘,将组合结果作为z(t)的中间向量cz(t)。
此外,基于如此得到的节点z(t)的中间向量cz(t)和第四变换向量Oz(t),确定该节点z(t)的隐含向量hz(t)。
在图7所示的具体例子中,可以将中间向量cz(t)进行tanh函数运算后,与第四变换向量Oz(t)按位相乘,作为该节点z(t)的隐含向量hz(t),即:
hz(t)=oz(t)⊙tanh(cz(t)) (7)
于是,根据图7所示的结构和算法,LSTM层根据当前处理节点z(t)的节点特征,该节点所指向的两个节点j1和j2各自的中间向量和隐含向量,确定该节点z(t)的中间向量cz(t)和隐含向量hz(t)。
在一个实施例中,在迭代处理各个节点z(t)以确定其中间向量和隐含向量过程中,还进一步引入该当前处理节点z(t)对应的交互时间与所指向的节点对应的交互时间之间的时间差Δ。也就是说,对于任意的第一节点z(t),LSTM层处理该第一节点包括,根据该第一节点的节点特征xz(t),该第一节点所指向的两个节点j1和j2各自的中间向量和隐含向量,以及该第一节点所在交互特征组中的第一交互时间(t)与所指向的两个节点(j1和j2)所在交互特征组中的第二交互时间(t-)之间的时间差Δ,确定该第一节点z(t)的隐含向量hz(t)和中间向量cz(t)。
更具体的,可以在图7所示的方式基础上,引入时间差Δ的因素,类似的得到节点z(t)的隐含向量和中间向量。具体的,结合时间差的处理过程可以包括:
将第一节点z(t)的节点特征、上述时间差Δ、第一指向节点j1的隐含向量hj1和第二指向节点j2的隐含向量hj2,分别输入算法相同、参数不同的第一变换函数和第二变换函数,分别得到第一变换向量和第二变换向量;
将第一变换向量和第二变换向量分别与第一指向节点j1的中间向量cj1和第二指向节点j2的中间向量cj2进行组合操作,基于操作结果得到组合向量;
将第一节点z(t)的节点特征、所述时间差Δ、第一指向节点j1的隐含向量hj1和第二指向节点j2的隐含向量hj2,分别输入第三变换函数和第四变换函数,分别得到第三变换向量和第四变换向量;
基于上述组合向量和第三变换向量,确定该第一节点z(t)的中间向量cz(t);
基于该第一节点的中间向量cz(t)和第四变换向量,确定第一节点的隐含向量hz(t)。
图8示出根据另一实施例的LSTM层的结构。对比图8和图7可以看到,图8的结构和实现的算法均与图7相同,只是在图7的基础上进一步引入了时间差Δ。相应的,可以将图7中各个变换函数进行修改,使其引入时间差,就可以得到图8所示的LSTM层。
具体的,可以将第一和第二变换函数修改为:
如此,第一变换向量
和第二变换向量/>
均依赖于时间差Δ。与图7类似的,将如此得到的第一变换向量和第二变换向量分别与两个指向节点的中间向量c
j1和c
j2进行组合操作,从而得到组合向量。
可以将第三变换函数中的向量iz(t)和uz(t)分别修改为:
如此得到的第三变换向量rz(t)=iz(t)⊙uz(t)同样依赖于时间差Δ。
此外,可以将第四变换函数修改为:
基于以上这些向量,按照图7类似的方式进行组合运算,从而分别得到第一节点z(t)的中间向量和隐含向量。
通过以上如图7或图8所示的LSTM层,依次迭代地处理当前子图中各个节点,从而得到当前节点的中间向量和隐含向量。在一个实施例中,如此得到的隐含向量即可作为神经网络模型的输出,用于表征当前节点。
根据一种实施方式,为了进一步提升效果,在神经网络模型中包括多个LSTM层,其中,上一LSTM层确定出的某个节点的隐含向量,输入到下一LSTM层作为该节点的节点特征。也就是说,每个LSTM层仍然迭代地处理各个节点,根据当前处理节点i的节点特征、该节点i所指向的两个节点各自的中间向量和隐含向量,确定该节点i的隐含向量和中间向量,只是最底层的LSTM层采用节点i的原始特征作为节点特征,后续的LSTM层采用前一LSTM层确定出的该节点i的隐含向量hi作为节点特征。在一个实施例中,上述多个LSTM层采用残差网络的方式堆叠形成神经网络模型。
在神经网络模型具有多个LSTM层的情况下,可以理解,每个LSTM层均可以确定出当前节点的隐含向量。在一个实施例中,神经网络模型将多个LSTM层各自输出的当前节点的隐含向量进行综合,得到当前节点的最终隐含向量。更具体的,可以对各个LSTM层输出的各个隐含向量进行加权组合,从而得到最终隐含向量。加权组合的权重,可以简单地设定为每层对应一个权重因子,其大小通过训练调整。或者,也可以通过更加复杂的注意力(attention)机制确定权重因子。
在另一实施例中,神经网络模型还可以将多个LSTM层中最后一个LSTM层输出的当前节点的隐含向量,作为当前节点的最终隐含向量。
如此,通过多种方式,神经网络模型基于与待分析的当前节点对应的当前子图,得到当前节点的隐含向量作为其特征向量。由于当前子图中反映了与当前节点对应的交互对象有关的时序性交互历史(即K次相关交互事件)的信息,因此,如此得到的当前节点的特征向量,不仅表达出交互对象本身的特征,还可以表达出交互对象在历次交互事件中所受到的影响,从而全面表征交互对象的特点。
可以理解,神经网络模型在确定当前节点的隐含向量的计算过程中,依赖于大量的参数,例如前述各个变换函数中的参数。这些参数需要通过对该神经网络模型进行训练而确定。在不同实施例中,可以通过不同的任务,训练该神经网络模型。
在一个实施例中,通过预测交互行为来训练神经网络模型。图9示出在该实施例中训练神经网络模型的流程图。如图9所示,在步骤91,获取历史交互特征组,该历史交互特征组是确已发生的历史交互事件对应的特征组。在一个具体例子中,可以从前述动态交互序列中获取历史交互特征组。将该历史交互特征组中包括的两个对象称为第一样本对象和第二样本对象。
在步骤92,在动态交互图中,分别确定与第一样本对象对应的第一子图,和与第二样本对象对应的第二子图。具体的,在动态交互图中分别确定出与第一样本对象对应的第一节点和与第二样本对象对应的第二节点,分别以第一节点和第二节点作为当前节点,按照图3的步骤32类似的方式,确定出对应的第一子图和第二子图。
然后,在步骤93,将上述第一子图和第二子图分别输入神经网络模型,分别得到第一样本对象的隐含向量和第二样本对象的隐含向量。神经网络模型基于子图中节点的指向关系确定出对应样本对象的隐含向量的具体过程如前结合步骤33所述,不再赘述。
接着,在步骤94,根据第一样本对象的隐含向量和第二样本对象的隐含向量,预测第一样本对象和第二样本对象是否会发生交互,得到预测结果。通常,可以采用一个二分类的分类器,预测两个样本对象是否会发生交互,得到的预测结果通常表现为,这两个样本对象发生交互的概率。
于是,在步骤95,根据上述预测结果,确定预测损失。可以理解,上述第一样本对象和第二样本对象来自历史交互事件的特征组,因此实际上已经发生交互,这相当于已知这两个样本对象之间的关系标签。根据例如交叉熵计算方式等损失函数形式,可以基于上述预测结果确定出本次预测的损失。
然后,在步骤96,根据预测损失,更新神经网络模型。具体的,可以采用梯度下降、反向传播等方式,调整神经网络中的参数,以更新神经网络模型,直到神经网络模型的预测准确率达到一定要求。
以上采用历史交互事件中的两个样本对象来进行对象关系的预测,相当于利用了正样本进行训练。在一个实施例中,还可以在动态交互图中找到未发生交互关系的两个样本对象作为负样本进行进一步训练,从而达到更好的训练效果。
根据另一实施方式,通过预测交互对象的分类来训练神经网络模型。图10示出该实施例中训练神经网络模型的流程图。如图10所示,在步骤101,从动态交互序列中选择样本对象,并获取该样本对象的分类标签。该样本对象可以是动态交互序列包含的任意特征组中的任意交互对象,针对该样本对象的分类标签可以是与业务场景相关的标签。例如,在样本对象是用户的情况下,分类标签可以是预先设定的人群分类的标签,或用户风险程度分类的标签;在样本对象是商品的情况下,分类标签可以是商品分类的标签。这样的标签可以由人工标注产生,或通过其他业务相关处理而产生。
在步骤102,在动态交互图中,确定与该样本对象对应的样本子图。具体的,可以在动态交互图中确定出与该样本对象对应的节点,以该节点作为当前节点,按照图3的步骤32类似的方式,确定出对应的样本子图。
然后,在步骤103,将上述样本子图输入神经网络模型,得到样本对象的隐含向量。该过程如前结合步骤33所述,不再赘述。
接着,在步骤104,根据样本对象的隐含向量,预测该样本对象的分类,得到预测结果。可以采用分类器,预测样本对象属于各个分类的各个概率,作为预测结果。
然后,在步骤105,根据预测结果和分类标签,确定预测损失。具体的,可以采用例如交叉熵计算方式,可以预测结果中的各个概率和分类标签,确定出本次预测的损失。
在步骤106,根据预测损失,更新神经网络模型。如此,通过预测样本对象分类的任务,训练神经网络模型。
综合以上,在本说明书实施例的方案中,基于动态交互序列构建动态交互图,该动态交互图反映了各个交互事件的时序关系,以及交互对象之间通过各个交互事件传递的相互影响。利用训练的神经网络模型,基于该动态交互图中与待分析交互对象相关的子图,可以提取得到该交互对象的隐含向量。如此得到的隐含向量中引入了各个交互事件中其他交互对象对其的影响,从而可以综合全面地表达该交互对象的深层特征。
根据另一方面的实施例,提供了一种处理交互序列数据的装置,该装置可以部署在任何具有计算、处理能力的设备、平台或设备集群中。图11示出根据一个实施例的处理交互序列数据的装置的示意性框图。如图11所示,该处理装置110包括:
交互图获取单元111,配置为获取根据动态交互序列构建的动态交互图,其中,所述动态交互序列包括按照时间顺序排列的多个交互特征组,每个交互特征组至少包括,发生交互行为的第一对象,第二对象和交互时间;所述动态交互图包括代表各个交互特征组中的各个第一对象和第二对象的多个节点,其中,任意节点i通过连接边,指向代表相关特征组中包含的两个对象的两个节点,所述相关特征组为,在所述动态交互序列中从该节点i所在的交互特征组向前回溯,得到的同样包含该节点i代表的对象的第一个交互特征组;
子图确定单元112,配置为在所述动态交互图中,确定与待分析的当前节点对应的当前子图,所述当前子图包括从当前节点出发,经由连接边到达的预定范围内的节点;
子图处理单元113,配置为将所述当前子图输入神经网络模型,利用神经网络模型处理所述当前子图;所述神经网络模型包括LSTM层,所述LSTM层根据所述当前子图中各个节点之间的连接边的指向关系,依次迭代处理各个节点,从而得到所述当前节点的隐含向量;其中所述各个节点包括第一节点,所述依次迭代处理各个节点包括,至少根据所述第一节点的节点特征,该第一节点所指向的两个节点各自的中间向量和隐含向量,确定所述第一节点的隐含向量和中间向量。
在一个实施例中,所述交互图获取单元111配置为:
获取基于已有交互序列构建的已有动态交互图;
获取新增交互特征组;
将该新增交互特征组中包括的第一对象和第二对象作为两个新增节点,添加到所述已有动态交互图中;
对于每个新增节点,确定其相关特征组,添加从该新增节点指向其相关特征组中包含的两个节点的连接边。
在另一实施例中,所述交互图获取单元111配置为:
获取基于已有交互序列构建的已有动态交互图;
获取新增交互序列,其中包括多个新增交互特征组;
对于每个新增交互特征组,将其中的第一对象和第二对象作为两个新增节点,添加到所述已有动态交互图中;
对于每个新增节点,确定其相关特征组,添加从该新增节点指向其相关特征组中包含的两个节点的连接边。
根据一种实施方式,前述当前节点是这样的节点:在所述动态交互图中,不存在指向该节点的连接边。
在一个实施例中,每个交互特征组还包括,交互行为的行为特征;在这样的情况下,第一节点的节点特征包括,所述第一节点所对应的对象的属性特征,以及所述第一节点所在的交互特征组中的行为特征。
在一个实施例中,第一节点所指向的两个节点为第一指向节点和第二指向节点;子图处理单元113所利用的神经网络模型中的LSTM层具体用于:
将所述第一节点的节点特征、第一指向节点的隐含向量和第二指向节点的隐含向量,分别输入算法相同、参数不同的第一变换函数和第二变换函数,分别得到第一变换向量和第二变换向量;
将第一变换向量和第二变换向量分别与第一指向节点的中间向量和第二指向节点的中间向量进行组合操作,基于操作结果得到组合向量;
将所述第一节点的节点特征、第一指向节点的隐含向量和第二指向节点的隐含向量,分别输入第三变换函数和第四变换函数,分别得到第三变换向量和第四变换向量;
基于所述组合向量和第三变换向量,确定所述第一节点的中间向量;
基于所述第一节点的中间向量和第四变换向量,确定所述第一节点的隐含向量。
根据一种实施方式,子图处理单元113所利用的神经网络模型中的LSTM层用于:根据所述第一节点的节点特征,该第一节点所指向的两个节点各自的中间向量和隐含向量,以及该第一节点所在交互特征组中的第一交互时间与所指向的两个节点所在交互特征组中的第二交互时间之间的时间差,确定所述第一节点的隐含向量和中间向量。
更具体地,上述LSTM层具体用于:
将所述第一节点的节点特征、所述时间差、第一指向节点的隐含向量和第二指向节点的隐含向量,分别输入算法相同、参数不同的第一变换函数和第二变换函数,分别得到第一变换向量和第二变换向量;
将第一变换向量和第二变换向量分别与第一指向节点的中间向量和第二指向节点的中间向量进行组合,得到组合向量;
将所述第一节点的节点特征、所述时间差、第一指向节点的隐含向量和第二指向节点的隐含向量,分别输入第三变换函数和第四变换函数,分别得到第三变换向量和第四变换向量;
基于所述组合向量和第三变换向量,确定所述第一节点的中间向量;
基于所述第一节点的中间向量和第四变换向量,确定所述第一节点的隐含向量。
根据一种实施方式,神经网络模型包括多个LSTM层,其中,上一LSTM层确定出的所述第一节点的隐含向量,输入到下一LSTM层作为该第一节点的节点特征。
在这样的情况下,在一个实施例中,神经网络模型将所述多个LSTM层各自输出的当前节点的隐含向量进行综合,得到所述当前节点的最终隐含向量。
在另一实施例中,神经网络模型将所述多个LSTM层中最后一个LSTM层输出的当前节点的隐含向量,作为所述当前节点的最终隐含向量。
根据一种实施方式,神经网络模型通过模型训练单元114训练。模型训练单元114可以包含在装置110之中,也可以位于其之外。模型训练单元114可以包括(未示出):
样本获取模块,配置为获取历史交互特征组,其中包括第一样本对象和第二样本对象;
子图确定模块,配置为在所述动态交互图中,分别确定与所述第一样本对象对应的第一子图,和与所述第二样本对象对应的第二子图;
向量获取模块,配置为将所述第一子图和所述第二子图分别输入所述神经网络模型,分别得到所述第一样本对象的隐含向量和第二样本对象的隐含向量;
预测模块,配置为根据所述第一样本对象的隐含向量和第二样本对象的隐含向量,预测所述第一样本对象和第二样本对象是否会发生交互,得到预测结果;
损失确定模块,配置为根据所述预测结果,确定预测损失;
更新模块,配置为根据所述预测损失,更新所述神经网络模型。
在另一实施例中,模型训练单元114可以包括(未示出):
样本获取模块,配置为从所述动态交互序列中选择样本对象,并获取该样本对象的分类标签;
子图确定模块,配置为在所述动态交互图中,确定与该样本对象对应的样本子图;
向量获取模块,配置为将所述样本子图输入所述神经网络模型,得到所述样本对象的隐含向量;
预测模块,配置为根据所述样本对象的隐含向量,预测所述样本对象的分类,得到预测结果;
损失确定模块,配置为根据所述预测结果和所述分类标签,确定预测损失;
更新模块,配置为根据所述预测损失,更新所述神经网络模型。
通过以上装置,基于动态交互图,采用神经网络模型处理交互对象,得到适于后续分析的特征向量。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图3所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图3所述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。