处理用户行为序列的方法及装置
技术领域
本说明书一个或多个实施例涉及机器学习领域,尤其涉及利用机器学习训练模型,以处理用户行为序列的方法和装置。
背景技术
在许多场景下,需要对用户行为序列进行分析和处理。用户行为序列,是用户在日常操作使用中产生的一系列点击、访问、购买等事件的发生过程,可表示为事件集合的时间序列,它蕴含了用户的细粒度习惯偏好等特点,是用户级别机器学习模型的重要特征来源之一。然而,行为序列数据本身是表征空间巨大的变长时间序列,要从中抽取固定维度、有代表性、能够用于分类回归等问题的特征向量还需经过一定处理。一般来说,将原始行为序列处理为特征向量的处理过程,常采用人工特征工程,或是特定场景下基于标签(label)的监督学习的方式。可以理解,人工特征工程耗费极大的人力和时间,且效果严重依赖于人工的业务经验和效率。而监督学习的方式,则需要获得特定业务场景下标注好的标签。例如,如果要基于用户行为序列分析用户账户是否被盗,就需要大量的样本行为序列,以及这些样本行为序列对应的用户事实上是否为被盗账户的标签。而许多业务场景下,由于标签难以获得而常常面临标签缺乏的问题,导致难以进行监督学习。
因此,希望能有改进的方案,更为有效地对用户行为序列进行处理,以得到适于后续分析的特征向量。
发明内容
本说明书一个或多个实施例描述了处理用户行为序列的方法和装置,其中采用神经网络模型将用户行为序列处理为特征向量,该神经网络模型通过不依赖于业务标签的预测任务进行训练,从而高效实现用户行为序列的处理和特征变换。
根据第一方面,提供了一种处理用户行为序列的方法,包括:
获取训练样本集,该训练样本集包括多个行为序列,以及两个行为序列之间的关系标签,每个行为序列包括按照时间顺序排列的、样本用户依次执行的N个用户行为对应的N个特征组,所述关系标签示出对应的两个行为序列是否属于同一样本用户;
将所述多个行为序列中各个行为序列输入神经网络模型,所述神经网络模型包括编码器模块和注意力模块,通过所述编码器模块,将各个行为序列转换为对应的各个向量序列,每个向量序列包括依次排列的N个向量;通过所述注意力模块,将各个向量序列转换为各个行为向量;
对于所述多个行为序列中任意的第一行为序列和第二行为序列,基于所述各个行为向量中与第一行为序列对应的第一行为向量,以及与第二行为序列对应的第二行为向量,预测所述第一行为序列和第二行为序列是否属于同一样本用户,得到第一预测结果;
根据所述第一行为序列和第二行为序列之间的关系标签,以及所述第一预测结果,确定第一损失项;
至少根据所述训练样本集中两两行为序列分别对应的第一损失项之和,确定总损失;
根据所述总损失,更新所述神经网络模型,以用于处理待分析的用户行为序列。
在一个实施例中,上述特征组包括以下中的一项或多项特征:行为时间,行为类型,操作平台类型,交易行为的结果,交易金额,付款渠道,交易对象。
根据一种实施方式,通过以下方式获取训练样本集:
采集K个样本用户对应的K个原始行为序列,每个原始行为序列包括,按照时间顺序排列的、对应样本用户依次执行的M个用户行为对应的M个特征组,其中M>N;
从各个原始行为序列中提取第一子序列和第二子序列,使得第一子序列和第二子序列之间没有交集,从而得到2*K个子序列;
基于所述2*K个子序列形成所述多个行为序列,并且根据两个子序列是否来自同一原始行为序列,确定对应的两个行为序列之间的关系标签。
在一个实施例中,所述K个原始行为序列包括第一原始行为序列,所述从各个原始行为序列中提取第一子序列和第二子序列,包括:
在所述第一原始行为序列中确定分割位置;
从该分割位置向前获取第一数目的特征组,作为所述第一子序列,向后获取第二数目的特征组,作为所述第二子序列。
在另一实施例中,所述K个原始行为序列包括第二原始行为序列,所述从各个原始行为序列中提取第一子序列和第二子序列,包括:
从所述第二原始行为序列的开端向后获取第一数目的特征组,形成第一子序列;
从所述第二原始行为序列的末尾向前获取第二数目的特征组,形成第二子序列。
在又一实施例中,所述K个原始行为序列包括第三原始行为序列,所述从各个原始行为序列中提取第一子序列和第二子序列,包括:
在所述第三原始行为序列中随机确定第一分割点和第二分割点;
从所述第一分割点向前获取第一数目的特征组,形成第一子序列;
从所述第二分割点向后获取第二数目的特征组,形成第二子序列。
根据一种实施方式,神经网络模型中的编码器模块包括嵌入层以及至少一个转换单元,所述转换单元包括卷积层和自注意力层;
在所述嵌入层,通过查表将所述第一行为序列包含的N个特征组中各个特征组映射为H维向量,从而将第一行为序列映射为第一中间向量序列,其中包括N个H维第一中间向量;
在所述卷积层,采用卷积窗口,对输入其中的中间向量序列进行一维卷积处理,得到第二中间向量序列,其中包括N个第二中间向量;
在所述自注意力层,基于各个第二中间向量之间的关联度,确定对应的向量间权重因子,并基于所述向量间权重因子对各个第二中间向量综合,得到第三中间向量序列;
编码器模块基于所述至少一个转换单元输出的第三中间向量序列,确定所述第一行为序列对应的向量序列。
进一步的,在一个实施例中,所述自注意力层通过以下方式确定对应的向量间权重因子:
将N个第二中间向量Ci中某一位置t的第二中间向量Ct进行第一变换,得到第一变换向量;将各个第二中间向量Ci进行第二变换,得到各个第二变换向量;
基于第一变换向量和各个第二变量向量的点乘操作,确定该某一位置t的第二中间向量Ct与各个第二中间向量Ci的各个关联度;
根据上述各个关联度,确定该某一位置t对应的各个向量间权重因子;
所述自注意力层通过以下方式得到第三中间向量序列:
基于该某一位置t对应的各个向量间权重因子,对所述各个第二中间向量Ci加权求和,得到该某一位置的第三中间向量At;
将N个位置中各个位置的第三中间向量构成的序列,作为所述第三中间向量序列。
根据一种实施方式,编码器模块包括依次堆叠的多个转换单元,其中上一转换单元中自注意力层得到的第三中间向量序列,输入到下一转换单元中的卷积层。
进一步的,在一个实施例中,编码器模块可以将多个转换单元各自输出的多个第三中间向量进行综合,得到所述第一行为序列对应的向量序列。
在另一实施例中,编码器模块可以将多个转换单元中最后一个转换单元输出的第三中间向量序列,作为所述第一行为序列对应的向量序列。
根据一种实施方式,神经网络模型中的注意力模块,用于确定所述第一向量序列中各个向量的注意力权重,根据所述注意力权重对各个向量加权组合,得到对应的第一行为向量。
在一种实施方式中,通过以下方式得到第一预测结果:
确定第一行为向量和第二行为向量之间的第一相似度;
确定第一行为向量与所述各个行为向量的各个相似度的和值;
根据所述第一相似度和所述和值,确定所述第一行为序列和第二行为序列属于同一样本用户的概率,作为所述第一预测结果。
根据一种实施方式,上述方法还包括:
对于所述任意的第一行为序列,在m个位置上用预定缺失值替换对应的m个真实特征组,形成第一测试序列;
通过所述编码器模块,将所述第一测试序列转换为测试向量序列;
基于所述测试向量序列中与所述m个位置对应的m个向量,预测所述m个真实特征组,得到第二预测结果;
基于第二预测结果,确定第二损失项;
其中,所述至少根据所述样本序列训练集中两两行为序列分别对应的第一损失项之和,确定总损失,包括:
根据所述样本序列训练集中两两行为序列分别对应的第一损失项之和,以及所述多个行为序列中至少一个行为序列对应的第二损失项,确定总损失。
在一个实施例中,m相对于N的比例不超过预定比例。
在一个实施例中,通过以下方式得到第二预测结果:
对于所述m个位置中任意的第一位置,获得所述测试向量序列中该第一位置对应的第一向量;
通过线性映射参数矩阵,对第一向量进行线性变换;
基于线性变换的结果,预测所述测试向量序列中该第一位置具有对应的真实特征组的概率,作为该第一位置对应的第二预测结果。
根据一个实施例,上述方法还包括:
将待处理的用户行为序列输入更新后的神经网络模型,根据该神经网络模型的输出,得到该用户行为序列对应的用户行为向量。
根据第二方面,提供了一种处理用户行为序列的装置,包括:
样本集获取单元,配置为获取训练样本集,该训练样本集包括多个行为序列,以及两个行为序列之间的关系标签,每个行为序列包括按照时间顺序排列的、样本用户依次执行的N个用户行为对应的N个特征组,所述关系标签示出对应的两个行为序列是否属于同一样本用户;
模型处理单元,配置为将所述多个行为序列中各个行为序列输入神经网络模型,所述神经网络模型包括编码器模块和注意力模块,通过所述编码器模块,将各个行为序列转换为对应的各个向量序列,每个向量序列包括依次排列的N个向量;通过所述注意力模块,将各个向量序列转换为各个行为向量;
第一预测单元,配置为对于所述多个行为序列中任意的第一行为序列和第二行为序列,基于所述各个行为向量中与第一行为序列对应的第一行为向量,以及与第二行为序列对应的第二行为向量,预测所述第一行为序列和第二行为序列是否属于同一样本用户,得到第一预测结果;
第一损失确定单元,配置为根据所述第一行为序列和第二行为序列之间的关系标签,以及所述第一预测结果,确定第一损失项;
总损失确定单元,配置为至少根据所述训练样本集中两两行为序列分别对应的第一损失项之和,确定总损失;
模型更新单元,配置为根据所述总损失,更新所述神经网络模型,以用于处理待分析的用户行为序列。
根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
根据第四方面,提供了一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法。
根据本说明书实施例提供的方法和装置,为了有效地将用户行为序列处理为特征向量,设计了包含编码器和注意力模块的神经网络模型,并通过预测任务来训练神经网络模型。该预测任务可以是预测行为序列之间的关系,可选地还可以包括,预测行为序列中的缺失值。这样的预测任务并不依赖于任务业务场景,因此训练的神经网络模型具有很好的泛化性,得到的特征向量可以在后续适用于多种业务应用。并且,预测任务的标签可以自动生成,而不需要人工标注。因此,采用以上的训练方式,可以在无需人工标注、无需业务相关标签驱动的情况下,训练得到神经网络模型。训练好的神经网络模型,即可用于将待处理的用户行为序列转换为有代表性的特征向量。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本说明书披露的一个实施例的实施场景示意图;
图2示出在一个实施例中神经网络模型的结构示意图;
图3示出在一个实施例中形成用户行为序列的示意图;
图4示出根据一个实施例的训练神经网络模型的方法流程图;
图5A示出根据一个实施例提取子序列的示意图;
图5B示出根据另一实施例提取子序列的示意图;
图5C示出根据又一实施例提取子序列的示意图;
图6示出构建关系标签的示意图;
图7示出通过预测缺失值的任务来训练神经网络模型的方法流程;
图8示出在一个实施例中预测缺失值的示意图;
图9示出根据一个实施例通过两个任务联合训练神经网络模型的示意图;
图10示出根据一个实施例的处理用户行为序列的装置的示意性框图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
图1为本说明书披露的一个实施例的实施场景示意图。如图1所示,在本说明书的实施例中,构建一个神经网络模型,用于将用户行为序列<X1,X2,…,XN>转换为特征向量S。该神经网络模型包含多个层,首先将用户行为序列转换为向量序列,然后基于卷积操作和注意力机制,对向量序列进行组合操作,得到最后的特征向量S。神经网络模型的具体结构和处理过程将在后续详细描述。
上述神经网络模型需要进行训练才能得到理想的特征向量S。为了训练该神经网络模型,根据本说明书的实施例,可以构造样本行为序列并生成序列关系的标签,然后通过预测序列关系的任务,实现神经网络模型的训练。
具体的,可以采集样本用户的行为序列作为样本行为序列,并根据两个样本行为序列是否来自于同一样本用户,生成这两个样本行为序列的关系标签。由此,得到了训练样本集。
然后,基于训练样本集执行预测序列关系的任务。具体的,对于任意两个样本行为序列Q1和Q2,将其分别输入到上述神经网络模型,由该神经网络模型分别输出对应的特征向量S1和S2。根据这两个特征向量S1和S2,预测样本行为序列Q1和Q2是否属于同一用户。通过将预测结果与Q1和Q2之间的关系标签示出的真实关系进行比对,得到预测的损失函数,根据该损失函数更新神经网络模型,以实现其参数调整和训练。
在以上过程中,通过序列关系预测任务来训练神经网络模型,以得到行为序列对应的特征向量。这个过程无需人工特征工程的干预。并且,可以看到,序列关系预测任务并不依赖于任务业务场景,因此训练的神经网络模型具有很好的泛化性,得到的特征向量可以在后续适用于多种业务应用。并且,序列关系的标签可以在采集样本行为序列时自动生成,而不需要人工标注,因此,采用以上的训练方式,可以在无需人工标注、无需业务相关标签驱动的情况下,训练得到神经网络模型。训练好的神经网络模型,即可用于将待处理的用户行为序列转换为有代表性的特征向量。
下面描述以上方案的具体实现。
首先描述神经网络模型的构成和处理过程。
图2示出在一个实施例中神经网络模型的结构示意图。如图2所示,用于处理用户行为序列的神经网络模型200包括,编码器模块210和注意力模块220,编码器模块210将输入的行为序列转换为向量序列,注意力模块220,将向量序列转换为行为向量,即特征向量。编码器模块210进一步包括,嵌入层211,卷积层212和自注意力层213。下面结合一个用户行为序列,描述神经网络模型200中各个模块、各个层的处理过程。
假定神经网络模型接收到一个用户行为序列<X1,X2,…,XN>,该序列包括按照时间顺序排列的、用户依次执行的N个用户行为对应的N个特征组,也就是说,每个特征组Xt用于描述一个用户行为,N个特征组按照用户行为执行的时间顺序排列,即构成上述用户行为序列。
图3示出在一个实施例中形成用户行为序列的示意图。在图3中,按照时间线整理某个用户的一系列用户行为。每个用户行为包括多个属性特征,例如行为时间,行为类型(或如图3中称为事件类型),操作平台类型,交易行为的结果(是否交易),交易金额,付款渠道,交易对象(商品名),等等,这些属性特征可以构成用户行为对应的特征组中的字段。也就是说,在一个实施例中,特征组Xt包括上述属性特征中的全部或一部分。
以上形成的用户行为序列<X1,X2,…,XN>首先被输入到编码器210中的嵌入层211。嵌入层211构造一个大小为|X|*H的嵌入矩阵,其中|X|为所有可能特征组集合的大小,H为预设的模型维度,矩阵中每一行是一个特定特征组的向量化表示。该嵌入矩阵可以作用为一个映射表。通过查询该映射表,可以将输入序列包含的N个特征组中各个特征组Xi映射为H维向量,从而将输入行为序列<X1,X2,…,XN>映射为向量序列<E1,E2,…,EN>。
更具体地,在一个实施例中,特征组包含多个字段,可以对各个字段分别进行嵌入。对于结构化有限集合的字段,例如行为类型或行为id,其数量是有限个,可以通过简单映射方式,确定对应的嵌入向量。对于非结构化的字段,例如体现为文本的商品名,可以进一步通过卷积神经网络CNN或循环神经网络RNN将其转换为定长的嵌入向量。各个字段的嵌入向量可以通过拼接、按位相加等方式进行组合,得到一个特征组Xi对应的H维向量Ei。
通过以上各种方式,嵌入层将输入行为序列<X1,X2,…,XN>映射为向量序列<E1,E2,…,EN>。为了描述的简单,将该向量序列<E1,E2,…,EN>称为第一中间向量序列,其中包括N个H维第一中间向量Et。
该第一中间向量序列<E1,E2,…,EN>接着被输入到卷积层212。卷积层212采用卷积窗口,对输入其中的向量序列进行一维卷积处理,得到卷积后的中间向量序列<C1,C2,…,CN>,称为第二中间向量序列。具体地,在一个实施例中,假定卷积窗口的窗口宽度为k,即覆盖k个向量,那么上述一维卷积处理的过程可以用以下公式表示:
Ct=σ(WEt-k/2:t+k/2+b) (1)
其中,Et-k/2:t+k/2是以当前位置t的中间向量Et为中心、宽度为k的卷积窗口中形成的k*H维的矩阵,W是卷积算子,b为偏移参数,σ为激活函数,例如可以是relu函数,sigmoid函数。
更具体的,W可以包含n个k*H维的卷积核,即W可以是n*k*H的张量,每个k*H的卷积核对卷积窗口中的k*H维矩阵进行卷积处理(例如按位相乘后相加或求平均),得到一个向量元素,n个卷积核得到n个向量元素,如此,得到的Ct为n维向量。n可以有多种取值方式;实践中,为了对齐各层的输出结果,可以令n=H,如此,Ct也是H维向量。
通过对各个位置t=1,2,..N均执行公式(1)的卷积处理,分别得到对应的向量Ct,从而构成第二中间向量序列<C1,C2,…,CN>,其中包含N个第二中间向量Ct。
接着,第二中间向量序列<C1,C2,…,CN>被输入到自注意力层213。自注意力层213,基于各个第二中间向量Ct之间的关联度,确定对应的向量间权重因子,并基于各个向量间权重因子对各个第二中间向量综合,得到第三中间向量序列<A1,A2,…,AN>。
具体地,在一个实施例中,对于N个第二中间向量中某一位置t的第二中间向量Ct,可以参照以下公式确定该位置t对应的向量间权重因子:
也就是,可以利用第一线性变换矩阵U,对位置t的第二中间向量Ct进行第一变换,得到第一变换向量(即UCt);此外,还利用第二线性变换矩阵V,对各个第二中间向量Ci进行第二变换,得到第二变换向量(即VCi)。
然后,基于第一变换向量和各个第二变量向量的点乘操作,确定该位置t的第二中间向量Ct与各个第二中间向量Ci的各个关联度。例如,该关联度可以直接表示为UCt·VCi的形式,也可以表示为上述公式(2)中分子的形式。
基于上述各个关联度,可以例如按照公式(2)确定该位置t对应的各个向量间权重因子αt,i,其中i为从1到N。
于是,可以基于该位置t对应的各个向量间权重因子对各个第二中间向量Ci综合,得到该位置t处的第三中间向量At。具体的,可以按照以下公式(3)进行综合:
在另一实施例中,还可以对各个第二中间向量Ci进行进一步变换(例如通过第三线性变换矩阵进行第三线性变换)之后,再利用各个向量间权重因子αt,i进行加权组合,得到位置t处的第三中间向量At。
通过对各个位置t=1,2,..N均执行以上的自注意力加权处理,分别得到对应的向量At,从而构成第三中间向量序列<A1,A2,…,AN>,其中包含N个第三中间向量At。
在一个实施例中,编码器模块210包含一个卷积层212和一个自注意力层213。在这样的情况下,自注意力层213得到的第三中间向量序列<A1,A2,…,AN>,即可作为编码器模块210输出的向量序列<Y1,Y2,…,YN>。
在另一实施例中,卷积层212和自注意力层213构成转换单元,编码器210中可以包含多个转换单元。多个转换单元可以以残差网络的方式依次堆叠。上一转换单元中自注意力层得到的第三中间向量序列<A1,A2,…,AN>,输入到下一转换单元中的卷积层。
在具有多个转换单元的情况下,在一个实施例中,将多个转换单元各自输出的多个第三中间向量<A1,A2,…,AN>进行综合,得到向量序列<Y1,Y2,…,YN>作为编码器模块210的输出。
在另一实施例中,将多个转换单元中最后一个转换单元输出的第三中间向量序列<A1,A2,…,AN>,作为编码器模块210输出的向量序列<Y1,Y2,…,YN>。
以上描述了编码器模块210通过其中的嵌入层211,卷积层212和自注意力层213,将用户行为序列<X1,X2,…,XN>转换为向量序列<Y1,Y2,…,YN>的过程。如图2所示,编码器模块210得到的向量序列<Y1,Y2,…,YN>接着被输入到注意力模块220,在其中转换为最终的行为向量S,即特征向量。
具体的,在一个实施例中,注意力模块220确定输入的向量序列<Y1,Y2,…,YN>中各个向量Yi的注意力权重,根据所述注意力权重对各个向量加权组合,得到对应的行为向量S。
在一个例子中,注意力模块220中的运算过程可以表示为:
其中,αi为Yi的注意力权重,可通过以下公式确定:
其中,Us,Vs为注意力模块220中采用的线性变换矩阵。
如此,注意力模块220将输入的向量序列<Y1,Y2,…,YN>综合为最终的行为向量S。该行为向量S也就是神经网络模型200输出的特征向量。
以上结合图2描述了,在将用户行为序列<X1,X2,…,XN>输入神经网络模型200后,通过神经网络模型200中的编码器210将该用户行为序列<X1,X2,…,XN>转换为向量序列<Y1,Y2,…,YN>,再通过注意力模块220将向量序列<Y1,Y2,…,YN>综合为行为向量S的过程。该行为向量S即为神经网络模型200对用户行为序列<X1,X2,…,XN>进行处理所得到的特征向量。在处理得到上述行为向量S的过程中,神经网络模型200中涉及大量的参数,例如嵌入层的嵌入矩阵,卷积层的卷积算子,自注意力层的线性变换矩阵,等等,这些参数都需要通过训练而确定。
下面描述对图2的神经网络模型200进行训练的过程。
图4示出根据一个实施例的训练神经网络模型的方法流程图。可以理解,该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。如图4所示,训练过程至少包括以下步骤。
首先,在步骤41,获取训练样本集,该训练集包括多个行为序列,每个行为序列包括按照时间顺序排列的、样本用户依次执行的N个用户行为对应的N个特征组;训练样本集还包括任意两个行为序列之间的关系标签,标签示出对应的两个行为序列是否属于同一样本用户。
可以理解,用户行为序列的形式,特征组包含的属性特征等等,可以参照前述结合图3的描述,在此不再赘述。
在一个实施例中,为了形成训练样本集,随机地分别采集各个用户的连续N个行为形成的行为序列,在采集的同时标记对应的用户id。如此,可以根据各个行为序列对应的用户id,确定两个行为序列是否属于同一用户,进而生成上述关系标签。然而,这样的方式,有可能采集到的行为序列属于同一用户的比例过低,使得训练样本不均衡。
根据一种实施方式,通过采集长序列,从中提取子序列作为样本序列的方式,增加属于同一用户的标签数量。
具体地,在一个实施例中,可以采集K个样本用户对应的K个原始行为序列,即长序列,每个原始行为序列包括,按照时间顺序排列的、对应样本用户依次执行的M个用户行为对应的M个特征组,其中使得M>N。更优选的,可以使得M>2*N。
接着,从各个原始行为序列中提取第一子序列和第二子序列,使得第一子序列和第二子序列之间没有交集,从而得到2*K个子序列。于是,可以基于该2*K个子序列形成多个样本行为序列,并且根据两个子序列是否来自同一原始行为序列,确定两个行为序列之间的关系标签。
从原始行为序列中提取两个子序列可以采用多种方式。
在一个实施例中,可以在原始行为序列中确定出分割位置,例如是中心位置,从该分割位置向前获取一定数目的特征组,作为第一子序列,向后获取一定数目的特征组,作为第二子序列。
图5A示出根据一个实施例提取子序列的示意图。如图5A所示,原始行为序列O包括abcdef,其中a-f为依次执行的用户行为。在一个例子中,确定该序列O的分割位置,如三角形所示,从该分割位置向前获取3个用户行为abc,形成子序列A,向后获取3个用户行为def,形成子序列B,子序列A和B即可作为前述的第一和第二子序列。
然而,按照这样的方式获取的子序列作为样本序列,有可能不利于神经网络模型学习样本序列的真正有意义的抽象特征。因为如图5A所示的两个子序列A和B是以某个位置为界分割的,A中的最后一个行为c,和B中的第一个行为d之间,时间间隔可能非常短。这就有可能给神经网络模型通过时间间隔进行预测和判断的暗示。因此,存在一种可能,当执行预测序列关系的任务时,神经网络模型仅仅基于两个序列头尾行为的时间间隔,判断两个序列是否来自于同一原始行为序列,进而来自于同一用户,而忽略行为序列中的真正有意义的特征。当然,这仅仅会在个别情况下,有可能发生。
考虑到以上可能,在另一实施例中,可以使得各个原始行为序列长度不一,从某个原始行为序列的开端向后获取第一数目的特征组,形成第一子序列;从其末尾向前获取第二数目的特征组,形成第二子序列。如果原始行为序列的长度M>2*N,那么可以直接使得第一数目和第二数目均为N。如果第一数目或第二数目小于N,那么可以在相应数目的特征组后面进行填补(padding),形成长度为N的子序列。
图5B示出根据另一实施例提取子序列的示意图。如图5B所示,原始行为序列O包括abcdefghij,假定需要长度N=3的样本序列。那么从该原始行为序列O的开端a,向后获取3个行为abc,作为一个子序列,再从序列O的末尾j向前获取3个行为hij,作为另一子序列。
进一步地,在又一实施例中,可以随机地在原始行为序列中确定两个分割点:第一分割点和第二分割点;从第一分割点向前获取第一数目的特征组,形成第一子序列;从第二分割点向后获取第二数目的特征组,形成第二子序列。第一数目和第二数目可以为N,从而直接作为所需的两个样本行为序列。或者,第一数目或第二数目也可以小于N,在这样的情况下,可以在相应数目的特征组后面进行填补,形成长度为N的序列作为样本行为序列。
图5C示出根据又一实施例提取子序列的示意图。如图5C所示,原始行为序列O包括abcdef。在该序列O中随机地确定出两个分割点,如图中三角所示。从第一个三角位置向前获取2个行为ab,形成第一子序列A;从第二个三角位置向后获取2个行为ef,形成第二子序列B。
由于各个原始行为序列中两个分割点随机确定,如此使得提取得到的子序列在时间间隔上没有规律可言,从而避免神经网络模型基于时间间隔而非行为特征进行判断。
如上,从K个原始行为序列中分别提取2个子序列,于是形成2*K个子序列。基于这2*K个子序列,(必要的时候填补成长度N)形成样本行为序列。同时,还可以根据两个子序列是否来自同一原始行为序列,确定两个行为序列之间的关系标签。
图6示出构建关系标签的示意图。如图6所示,假定从原始行为序列O中提取得到样本序列A和B,从原始行为序列P中提取得到样本序列C和D,那么可以构建右侧所示的标签矩阵,其中来自同一原始行为序列的样本序列之间,例如(A,B),以及(C,D),用1标注,来自不同原始行为序列的样本序列之间,例如(A,C)等等,用0标注。
如此,所采集的多个样本行为序列,以及任意两个行为序列之间的关系标签,共同构成所需的训练样本集。
基于这样的训练样本集,接着,在步骤42,将训练样本集中各个行为序列输入神经网络模型,得到各个行为序列对应的行为向量S。
具体地,如图2所示,神经网络模型包括编码器模块和注意力模块,通过编码器模块,将输入的行为序列<X1,X2,…,XN>转换为对应的向量序列<Y1,Y2,…,YN>;通过注意力模块,将向量序列<Y1,Y2,…,YN>转换为行为向量S。这一过程可以参照结合图2的描述,不再赘述。
于是,通过该神经网络模型,将训练样本集中的各个行为序列Qi,转换为对应的行为向量Si。相应的,对于训练样本集中任意的第一行为序列Q1和第二行为序列Q2,神经网络模型可以输出对应的第一行为向量S1和第二行为向量S2。
基于此,在步骤43,基于任意的第一行为序列Q1对应的第一行为向量S1,以及与第二行为序列Q2对应的第二行为向量S2,预测该第一行为序列Q1和第二行为序列Q2是否属于同一样本用户,得到第一预测结果。
在一个具体实施例中,为进行上述预测,可以确定第一行为向量S1和第二行为向量S2之间的相似度,记为第一相似度。例如,根据函数f(S1,S2)确定该第一相似度。此外,还确定第一行为向量S1与训练样本集中各个行为序列Qi所对应的各个行为向量Si的各个相似度,例如表示为f(S1,Si),并得到各个相似度的和值。然后,根据第一相似度和所述和值,确定第一行为序列Q1和第二行为序列Q2属于同一样本用户的概率p,作为第一预测结果。
更具体的,在一个实施例中,通过以下公式(6)确定第一行为序列Q1和第二行为序列Q2属于同一样本用户的概率p1,2:
其中,f为求相似度的函数,F为训练样本集对应的行为向量集合。
更具体的,在一个例子中,函数f采用向量点乘的方式,即
f(S1,S2)=S1·S2 (7)
如此,根据行为向量S1和S2,预测对应的行为序列Q1和Q2属于同一用户的概率p1,2。
接着,在步骤44,还获取第一行为序列Q1和第二行为序列Q2之间的关系标签,根据上述第一预测结果和该关系标签,确定对应的损失项。
可以理解,第一行为序列Q1和第二行为序列Q2之间的关系标签可以通过例如查找图6所述的标签矩阵而获得。将第一行为序列Q1和第二行为序列Q2之间的关系标签记为y1,2。在一个实施例中,根据第一预测结果,即预测概率p1,2,和关系标签y1,2,采用交叉熵函数形式,得到对应的损失项。也就是,将针对Q1和Q2预测的损失项记为:
Loss1,2=-y1,2log(p1,2) (8)
基于公式(8),进一步可以得到训练样本集中两两行为序列Qi和Qj分别对应的损失项yi,jlog(pi,j),并进而得到这些损失之和:
Loss=-∑i,jyi,jlog(pi,j) (9)
然后,在步骤45,至少根据上述损失之和,确定总损失。在仅通过该序列关系预测任务训练神经网络模型的实施例中,可以将根据公式(9)得到的损失之和,作为预测的总损失。在还通过其他预测任务进行联合训练的情况下,还可以基于上述损失之和,叠加该其他预测任务的损失,得到总损失。这将在后续联合训练的例子中详细描述。
于是,接着在步骤46,根据总损失,更新神经网络模型。具体地,可以通过反向传播、梯度下降等方式,更新神经网络模型中的参数,使得总损失下降。
通过以上的预测序列关系的任务,不需要人工标注的标签,也不需要业务相关的标签,根据采集样本序列时自然生成的关系标签,即可实现对神经网络模型的训练。如此训练得到的神经网络模型,可以将用户行为序列处理为行为向量(即特征向量),该向量可以以抽象的形式代表行为序列中的深层而有意义的特征。
进一步地,在一个实施例中,在以上预测序列关系的任务基础上,还采用预测缺失值的任务,通过这两个任务对神经网络模型进行联合训练,进一步提升模型训练的效果。
图7示出通过预测缺失值的任务来训练神经网络模型的方法流程。图7所示的方法流程可以在图4所示的步骤41之后、步骤45之前执行。如图7所示,通过预测缺失值训练神经网络模型的方法至少包括以下步骤。
在步骤71,对于训练样本集中任意的第一行为序列Q=<X1,X2,…,XN>,在m个位置上用预定缺失值替换对应的m个真实特征组,形成第一测试序列Q'=<X1',X2',…,XN'>。换而言之,对于第一行为序列,在m个位置上用缺失值掩盖(mask)住原本的真实特征组。
一般地,为了后续对这些被掩盖住的真实值进行预测,施加掩盖的位置不能太多,从而为被掩盖的位置保留足够多的上下文信息用于预测被掩盖的真实值。为此,m的数目与行为序列长度N的比例优选地不超过预定比例,该预定比例例如是15%或20%。
然后,在步骤72,将上述第一测试序列Q'输入神经网络模型。如前所述,神经网络模型包括编码器模块210和注意力模块220,编码器模块210将输入的行为序列转换为向量序列,注意力模块220将向量序列转换为行为向量。当将上述第一测试序列<X1',X2',…,XN'>输入到神经网络模型,其中的编码器模块210会对该第一测试序列进行转换,输出对应的向量序列<Y1,Y2,…,YN>,将该序列称为测试向量序列。
需要注意的是,在进行缺失值预测任务时,在步骤72,直接从编码器模块得到测试向量序列,而不必将该测试向量序列继续输入注意力模块。
接着,在步骤73,基于测试向量序列中与上述m个位置对应的m个向量,预测对应的m个真实特征组,得到第二预测结果。
具体的,以m个位置中任意的一个位置t,称为第一位置,为例,描述预测真实特征组的方式。
对于该位置t,从测试向量序列<Y1,Y2,…,YN>中获得该位置t处的向量Yt,通过线性映射参数矩阵,对该向量Yt进行线性变换;然后基于线性变换的结果,预测测试向量序列Q’中该位置t处的特征组Xt具有原本的真实特征值v的概率,作为该位置t对应的第二预测结果。
更具体的,在一个例子中,通过以下公式得到第二预测结果:
p(Xt=υ)=softmax(YtM) (10)
其中,M为线性映射参数矩阵。
在采用公式(10)计算上述概率时,可以考虑将特征组的一种取值组合作为一个分类,如此,一共具有|X|个分类,其中|X|为所有可能特征组集合的大小,这与编码器模块的嵌入层中为形成嵌入矩阵得到的|X|一致。那么,上述预测问题转化为一个多分类预测问题。可以为每个分类设置并训练对应的线性映射参数矩阵。公式(10)相当于,根据Yt预测对应位置的Xt落入原本真实值对应的那个分类(v)的概率,其中M为针对该分类设置的参数矩阵。如此预测的概率作为上述第二预测结果。
对于m个位置的各个位置,均执行以上操作,得到对应的第二预测结果。
下面结合更具体的例子描述上述预测过程。
图8示出在一个实施例中预测缺失值的示意图。在图8的例子中,取N=5作为示例。假定训练样本集中存在任意的行为序列<X1,X2,X3,X4,X5>,其中每个位置的特征组都包含3个特征,或者说3个字段,即Xt=(x1t,x2t,x3t)。可以随机地遮盖住其中任意一个位置的特征组,例如遮盖住X3。假定X3原本具有的真实特征值为X3=(x13,x23,x33)。在遮盖住X3后,得到对应的测试序列<X1,X2,[-],X4,X5>,其中[-]表示缺失值,实践中,可以采用任意的缺省值、设定值,例如全零,作为该缺失值。
然后将该测试序列<X1,X2,[-],X4,X5>输入神经网络模型中的编码器模块,编码器模块输出对应的向量序列<Y1,Y2,Y3,Y4,Y5>。由于被遮盖位置t=3,那么从向量序列中取对应位置的向量Y3进行预测。具体的,可基于Y3,采用上述公式(10),预测X3具有原本真实值(x13,x23,x33)的概率。如此得到第二预测结果。
然后,在步骤74,基于上述第二预测结果,确定第二损失项。第二损失项也可以采用交叉熵的形式。在选择遮盖m个位置的情况下,可以得到各个位置的交叉熵损失之和,作为对应的第二损失项。
如此,获取到了针对某个测试行为序列预测缺失值的预测损失项。为了与预测序列关系的任务共同联合训练神经网络模型,回到图4,在步骤45,在预测序列关系的损失项的基础上,叠加上该预测缺失值的损失项,也就是,训练样本集中至少一个行为序列对应的第二损失项,作为神经网络模型训练的总损失。之后,在步骤46,根据总损失,更新神经网络模型,如此,通过预测序列关系的任务,以及预测缺失值的任务,联合训练神经网络模型。
图9示出根据一个实施例通过两个任务联合训练神经网络模型的示意图。如图9所示,为了执行预测任务,为神经网络模型设置两个分类器,分类器1用于预测序列关系,分类器2用于预测缺失值。具体地,训练样本集中的各个行为序列被输入到神经网络模型,通过其中的编码器模块转换为向量序列,再通过注意力模块转换为行为向量。分类器1获得各个行为向量,并基于这些行为向量,预测对应的行为序列之间的关系。进一步地,基于预测的序列关系和序列之间的关系标签,得到预测序列关系的损失项。另一方面,还从训练样本集中获取至少一个行为序列,通过遮盖其中的部分行为特征组,生成测试序列(图9中的<A1,A2,[-],A4,A5>)。测试序列也被输入到神经网络模型,经由其中的编码器模块转换为测试向量序列。分类器2从编码器模块获得测试向量序列(相当于神经网络模型的中间结果),基于该测试向量序列,预测被掩盖的特征组(图9中的A3)。根据预测结果,得到预测缺失值的损失项。
将分类器1预测的损失项和分类器2预测的损失项叠加在一起,作为模型训练的总损失。在总损失减小的方向,调整和更新模型参数,从而得到经过训练的神经网络模型。训练好的神经网络模型就可以将未知的用户行为序列处理为特征向量,如此得到的特征向量可以表达行为序列的深层含义,因此可以很好地适用于后续多种业务应用。例如,可以利用得到的特征向量进行用户人群聚类,可以基于该特征向量预测用户行为的风险,向用户推荐商品,等等。
综合以上,为了有效地将用户行为序列处理为特征向量,设计了包含编码器和注意力模块的神经网络模型,并通过预测任务来训练神经网络模型。该预测任务可以是预测行为序列之间的关系,可选地还可以包括,预测行为序列中的缺失值。可以看到,这样的预测任务并不依赖于任务业务场景,因此训练的神经网络模型具有很好的泛化性,得到的特征向量可以在后续适用于多种业务应用。并且,预测任务的标签可以自动生成,而不需要人工标注。因此,采用以上的训练方式,可以在无需人工标注、无需业务相关标签驱动的情况下,训练得到神经网络模型。训练好的神经网络模型,即可用于将待处理的用户行为序列转换为有代表性的特征向量。
根据另一方面的实施例,提供了一种处理用户行为序列的装置,该装置可以部署在任何具有计算、处理能力的设备、平台或设备集群中。图10示出根据一个实施例的处理用户行为序列的装置的示意性框图。如图10所示,该预测装置10包括:
样本集获取单元100,配置为获取训练样本集,该训练样本集包括多个行为序列,以及两个行为序列之间的关系标签,每个行为序列包括按照时间顺序排列的、样本用户依次执行的N个用户行为对应的N个特征组,所述关系标签示出对应的两个行为序列是否属于同一样本用户;
模型处理单元111,配置为将所述多个行为序列中各个行为序列输入神经网络模型,所述神经网络模型包括编码器模块和注意力模块,通过所述编码器模块,将各个行为序列转换为对应的各个向量序列,每个向量序列包括依次排列的N个向量;通过所述注意力模块,将各个向量序列转换为各个行为向量;
第一预测单元112,配置为对于所述多个行为序列中任意的第一行为序列和第二行为序列,基于所述各个行为向量中与第一行为序列对应的第一行为向量,以及与第二行为序列对应的第二行为向量,预测所述第一行为序列和第二行为序列是否属于同一样本用户,得到第一预测结果;
第一损失确定单元113,配置为根据所述第一行为序列和第二行为序列之间的关系标签,以及所述第一预测结果,确定第一损失项;
总损失确定单元130,配置为至少根据所述训练样本集中两两行为序列分别对应的第一损失项之和,确定总损失;
模型更新单元140,配置为根据所述总损失,更新所述神经网络模型,以用于处理待分析的用户行为序列。
在一个实施例中,特征组包括以下中的一项或多项特征:行为时间,行为类型,操作平台类型,交易行为的结果,交易金额,付款渠道,交易对象。
根据一个实施例,上述样本集获取单元100包括(未示出):
采集模块,配置为采集K个样本用户对应的K个原始行为序列,每个原始行为序列包括,按照时间顺序排列的、对应样本用户依次执行的M个用户行为对应的M个特征组,其中M>N;
提取模块,配置为从各个原始行为序列中提取第一子序列和第二子序列,使得第一子序列和第二子序列之间没有交集,从而得到2*K个子序列;
形成模块,配置为基于所述2*K个子序列形成所述多个行为序列,并且根据两个子序列是否来自同一原始行为序列,确定对应的两个行为序列之间的关系标签。
具体地,在一个实施例中,K个原始行为序列包括第一原始行为序列,所述提取模块配置为:
在所述第一原始行为序列中确定分割位置;
从该分割位置向前获取第一数目的特征组,作为所述第一子序列,向后获取第二数目的特征组,作为所述第二子序列。
在另一实施例中,K个原始行为序列包括第二原始行为序列,所述提取模块配置为:
从所述第二原始行为序列的开端向后获取第一数目的特征组,形成第一子序列;
从所述第二原始行为序列的末尾向前获取第二数目的特征组,形成第二子序列。
在又一实施例中,K个原始行为序列包括第三原始行为序列,所述提取模块配置为:
在所述第三原始行为序列中随机确定第一分割点和第二分割点;
从所述第一分割点向前获取第一数目的特征组,形成第一子序列;
从所述第二分割点向后获取第二数目的特征组,形成第二子序列。
根据一种实施方式,神经网络模型中的编码器模块包括嵌入层以及至少一个转换单元,所述转换单元包括卷积层和自注意力层;
所述嵌入层,用于通过查表将所述第一行为序列包含的N个特征组中各个特征组映射为H维向量,从而将第一行为序列映射为第一中间向量序列,其中包括N个H维第一中间向量;
所述卷积层,用于采用卷积窗口,对输入其中的中间向量序列进行一维卷积处理,得到第二中间向量序列,其中包括N个第二中间向量;
所述自注意力层,用于基于各个第二中间向量之间的关联度,确定对应的向量间权重因子,并基于所述向量间权重因子对各个第二中间向量综合,得到第三中间向量序列;
所述编码器模块,基于所述至少一个转换单元输出的第三中间向量序列,确定所述第一行为序列对应的向量序列。
进一步地,在一个实施例中,所述注意力层用于:
将N个第二中间向量中某一位置t的第二中间向量Ct进行第一变换,得到第一变换向量;将各个第二中间向量Ci进行第二变换,得到各个第二变换向量;
基于第一变换向量和各个第二变量向量的点乘操作,确定该某一位置t的第二中间向量Ct与各个第二中间向量Ci的各个关联度;
根据上述各个关联度,确定该某一位置t对应的各个向量间权重因子;
基于该某一位置t对应的各个向量间权重因子,对所述各个第二中间向量Ci加权求和,得到该某一位置的第三中间向量At;
将N个位置中各个位置的第三中间向量构成的序列,作为所述第三中间向量序列。
根据一个实施例,所述编码器模块包括依次堆叠的多个转换单元,其中上一转换单元中自注意力层得到的第三中间向量序列,输入到下一转换单元中的卷积层。
进一步地,在一个实施例中,所述编码器模块用于:将所述多个转换单元各自输出的多个第三中间向量进行综合,得到所述第一行为序列对应的向量序列。
在另一实施例中,所述编码器模块用于:将所述多个转换单元中最后一个转换单元输出的第三中间向量序列,作为所述第一行为序列对应的向量序列。
根据一个实施例,编码器模块得到的各个向量序列包括与所述第一行为序列对应的第一向量序列;
所述注意力模块,用于确定所述第一向量序列中各个向量的注意力权重,根据所述注意力权重对各个向量加权组合,得到对应的第一行为向量。
根据一个实施例,所述第一预测单元112配置为:
确定第一行为向量和第二行为向量之间的第一相似度;
确定第一行为向量与所述各个行为向量的各个相似度的和值;
根据所述第一相似度和所述和值,确定所述第一行为序列和第二行为序列属于同一样本用户的概率,作为所述第一预测结果。
根据一种实施方式,装置10还包括:
测试序列形成单元121,配置为对于所述任意的第一行为序列,在m个位置上用预定缺失值替换对应的m个真实特征组,形成第一测试序列;
测试序列转换单元122,配置为通过所述编码器模块,将所述第一测试序列转换为测试向量序列;
第二预测单元123,配置为基于所述测试向量序列中与所述m个位置对应的m个向量,预测所述m个真实特征组,得到第二预测结果;
第二损失确定单元124,配置为基于第二预测结果,确定第二损失项;
在这样的情况下,所述总损失确定单元130配置为:
根据所述样本序列训练集中两两行为序列分别对应的第一损失项之和,以及所述多个行为序列中至少一个行为序列对应的第二损失项,确定总损失。
在一个实施例中,所述m相对于N的比例不超过预定比例。
根据一个实施例,第二预测单元123配置为:
对于所述m个位置中任意的第一位置,获得所述测试向量序列中该第一位置对应的第一向量;
通过线性映射参数矩阵,对第一向量进行线性变换;
基于线性变换的结果,预测所述测试向量序列中该第一位置具有对应的真实特征组的概率,作为该第一位置对应的第二预测结果。
根据一个实施例,装置10还包括序列处理单元(未示出),配置为将待处理的用户行为序列输入更新后的神经网络模型,根据该神经网络模型的输出,得到该用户行为序列对应的用户行为向量。
通过以上的装置,利用不依赖于业务标签的预测任务训练神经网络模型,以用于将用户行为序列处理为特征向量。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图4和图7所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图4和图7所述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。