发明内容
本说明书实施例旨在提供一种更有效的获取用户行为序列的序列表示向量的方案,以解决现有技术中的不足。
为实现上述目的,本说明书一个方面提供一种获取用户行为序列的序列表示向量的方法,包括:
获取第一用户连续进行的多个行为,其中,所述多个行为中连续的两个行为之间的时间间隔小于预定时长;
基于所述第一用户连续进行的多个行为获取第一行为序列,其中,所述第一行为序列中包括的多个行为以时间顺序排列;
将所述第一行为序列输入预先训练的嵌入模型,并在所述嵌入模型中获取与第一行为序列对应的第一输入向量序列,其中,所述第一输入向量序列中的第一个向量为序列输入向量,其与该行为序列相对应,所述第一输入向量序列中还包括多个行为输入向量,所述多个行为输入向量分别基于所述第一行为序列中的多个行为中相应的行为获取;以及
通过所述嵌入模型基于自注意力机制,相对于所述第一输入向量序列输出所述第一行为序列的序列表示向量,所述序列表示向量与所述序列输入向量相对应。
在一个实施例中,所述嵌入模型包括至少一个前后相连的计算模块,其中,每个计算模块中包括相应的自注意力层,所述自注意力层基于自注意力机制相对于其多个层输入向量输出与该多个层输入向量分别对应的多个层输出向量。
在一个实施例中,所述方法还包括,在通过所述嵌入模型输出所述第一行为序列的序列表示向量之后,将所述序列表示向量和其它与特定任务相关的特征输入预先训练的任务模型,以相对于所述特定任务进行预测。
在一个实施例中,所述特定任务为预测所述第一用户是否点击特定对象,以确定是否向所述第一用户推送所述特定对象。
在一个实施例中,所述其它与特定任务相关的特征包括以下至少一项:用户属性特征、所述特定对象的特征、以及所述点击的环境特征。
在一个实施例中,每个行为输入向量基于相应行为的行为特征、行为序列特征和位置特征获取,其中,所述行为序列特征用于标识该行为所在的行为序列,所述位置特征基于该行为在其对应的行为序列中的位置获取。
在一个实施例中,所述行为特征与用户在客户端行为的位置相对应。
在一个实施例中,所述行为序列中的行为为以下任一种行为:通过基于行为频次的聚类对用户连续进行的多个行为进行聚合所获取的行为、通过TF-IDF算法对用户连续进行的多个行为进行过滤所获取的关键行为、以及通过以更大粒度的位置表示用户连续进行的多个行为所获取的行为。
在一个实施例中,对所述嵌入模型的预先训练包括对所述嵌入模型的预训练,所述嵌入模型通过以下步骤得到预训练:
获取第二用户连续进行的多个行为;
基于第二用户连续进行的多个行为获取第二行为序列,其中,所述第二行为序列中包括的多个行为以时间顺序排列,所述第二行为序列中包括至少一个选定行为;
将所述第二行为序列输入当前嵌入模型,并在所述嵌入模型中获取与第二行为序列对应的第二输入向量序列,其中,所述第二输入向量序列中包括与所述第二行为序列中的至少一个选定行为分别对应的至少一个掩蔽输入向量,所述掩蔽输入向量为预定的与相应的选定行为无关的向量,所述第二输入向量序列中还包括多个行为输入向量,所述第二输入向量序列中的每个行为输入向量基于所述第二行为序列中的多个行为中相应的行为获取;
通过所述嵌入模型相对于所述第二输入向量序列输出与所述第二行为序列中的至少一个选定行为分别对应的至少一个行为表示向量;
通过基于所述至少一个行为表示向量进行分类,获取对应的至少一个预测输入向量;以及
基于所述第二输入向量序列、所述第二行为序列中的至少一个选定行为的实际输入向量、和所述至少一个预测输入向量优化所述嵌入模型。
在一个实施例中,所述用户在客户端行为的位置包括从大至小的预定数目的粒度,其中,通过基于所述至少一个行为表示向量进行分类,获取对应的至少一个预测输入向量包括,将所述行为表示向量依次输入预定数目的用于分类的全连接层,其中,所述预定数目的全连接层与所述预定数目的粒度分别对应,每个全连接层用于预测与行为表示向量对应的预测输入向量中的行为特征的相应粒度的值。
在一个实施例中,所述嵌入模型还通过以下步骤得到预训练:
获取第一段连续进行的多个行为和第二段连续进行的多个行为;
基于两段连续进行的多个行为分别获取第一行为子序列和第二行为子序列,其中,所述第一和第二行为子序列中包括的多个行为分别以时间顺序排列;
将第三行为序列输入当前嵌入模型,并在所述嵌入模型中获取与第三行为序列对应的第三输入向量序列,其中,所述第三行为序列通过将所述第一行为子序列与第二行为子序列前后相连而获取,所述第三输入向量序列中的第一个向量为序列输入向量,其与所述第三行为序列相对应,所述第三输入向量序列中还包括多个行为输入向量,所述多个行为输入向量与所述第三行为序列中的多个行为分别对应,每个行为输入向量基于相应行为的行为特征、子行为序列特征和位置特征获取,其中,所述子行为序列特征用于标识该行为所在的子行为序列;
通过所述嵌入模型相对于所述第三输入向量序列输出所述第三行为序列的序列表示向量;
将所述第三行为序列的序列表示向量输入用于分类的全连接层,以输出第一预测值,所述第一预测值预测所述第一行为子序列与所述第二行为子序列是否来源于同一个用户;以及
基于所述第三输入向量序列、所述第一预测值以及第一标签值优化所述嵌入模型,所述第一标签值指示所述第一行为子序列与所述第二行为子序列是否来源于同一个用户。
在一个实施例中,对所述嵌入模型的预先训练还包括在所述预训练之后基于所述任务模型对所述嵌入模型的微调训练,所述嵌入模型基于所述任务模型的输出以及相应的标签值得到微调训练。
本说明书另一方面提供一种获取用户行为序列的序列表示向量的装置,包括:
第一获取单元,配置为,获取第一用户连续进行的多个行为,其中,所述多个行为中连续的两个行为之间的时间间隔小于预定时长;
第二获取单元,配置为,基于所述第一用户连续进行的多个行为获取第一行为序列,其中,所述第一行为序列中包括的多个行为以时间顺序排列;
输入单元,配置为,将所述第一行为序列输入预先训练的嵌入模型,并在所述嵌入模型中获取与第一行为序列对应的第一输入向量序列,其中,所述第一输入向量序列中的第一个向量为序列输入向量,其与该行为序列相对应,所述第一输入向量序列中还包括多个行为输入向量,所述多个行为输入向量分别基于所述第一行为序列中的多个行为中相应的行为获取;以及
输出单元,配置为,通过所述嵌入模型基于自注意力机制,相对于所述第一输入向量序列输出所述第一行为序列的序列表示向量,所述序列表示向量与所述序列输入向量相对应。
在一个实施例中,所述嵌入模型包括至少一个前后相连的计算模块,其中,每个计算模块中包括相应的自注意力层,所述自注意力层基于自注意力机制相对于其多个层输入向量输出与该多个层输入向量分别对应的多个层输出向量。
在一个实施例中,所述装置还包括,预测单元,配置为,在通过所述嵌入模型输出所述第一行为序列的序列表示向量之后,将所述序列表示向量和其它与特定任务相关的特征输入预先训练的任务模型,以相对于所述特定任务进行预测。
在一个实施例中,对所述嵌入模型的预先训练包括对所述嵌入模型的预训练,所述嵌入模型通过第一预训练装置得到预训练,所述第一预训练装置包括:
第一获取单元,配置为,获取第二用户连续进行的多个行为;
第二获取单元,配置为,基于第二用户连续进行的多个行为获取第二行为序列,其中,所述第二行为序列中包括的多个行为以时间顺序排列,所述第二行为序列中包括至少一个选定行为;
输入单元,配置为,将所述第二行为序列输入当前嵌入模型,并在所述嵌入模型中获取与第二行为序列对应的第二输入向量序列,其中,所述第二输入向量序列中包括与所述第二行为序列中的至少一个选定行为分别对应的至少一个掩蔽输入向量,所述掩蔽输入向量为预定的与相应的选定行为无关的向量,所述第二输入向量序列中还包括多个行为输入向量,所述第二输入向量序列中的每个行为输入向量基于所述第二行为序列中的多个行为中相应的行为获取;
输出单元,配置为,通过所述嵌入模型基于所述第二输入向量序列输出与所述第二行为序列中的至少一个选定行为分别对应的至少一个行为表示向量;
分类单元,配置为,通过基于所述至少一个行为表示向量进行分类,获取对应的至少一个预测输入向量;以及
优化单元,配置为,基于所述第二输入向量序列、所述第二行为序列中的至少一个选定行为的实际输入向量、和所述至少一个预测输入向量优化所述嵌入模型。
在一个实施例中,所述用户在客户端行为的位置包括从大至小的预定数目的粒度,其中,所述分类单元还配置为,将所述行为表示向量依次输入预定数目的用于分类的全连接层,其中,所述预定数目的全连接层与所述预定数目的粒度分别对应,每个全连接层用于预测与行为表示向量对应的预测输入向量中的行为特征的相应粒度的值。
在一个实施例中,所述嵌入模型还通过第二预训练装置得到预训练,所述第二预训练装置包括:
第一获取单元,配置为,获取第一段连续进行的多个行为和第二段连续进行的多个行为;
第二获取单元,配置为,基于两段连续进行的多个行为分别获取第一行为子序列和第二行为子序列,其中,所述第一和第二行为子序列中包括的多个行为分别以时间顺序排列;
输入单元,配置为,将第三行为序列输入当前嵌入模型,并在所述嵌入模型中获取与第三行为序列对应的第三输入向量序列,其中,所述第三行为序列通过将所述第一行为子序列与第二行为子序列前后相连而获取,所述第三输入向量序列中的第一个向量为序列输入向量,其与所述第三行为序列相对应,所述第三输入向量序列中还包括多个行为输入向量,所述多个行为输入向量与所述第三行为序列中的多个行为分别对应,每个行为输入向量基于相应行为的行为特征、子行为序列特征和位置特征获取,其中,所述子行为序列特征用于标识该行为所在的子行为序列;
输出单元,配置为,通过所述嵌入模型相对于所述第三输入向量序列输出所述第三行为序列的序列表示向量;
分类单元,配置为,将所述第三行为序列的序列表示向量输入用于分类的全连接层,以输出第一预测值,所述第一预测值预测所述第一行为子序列与所述第二行为子序列是否来源于同一个用户;以及
优化单元,配置为,基于所述第三输入向量序列、所述第一预测值以及第一标签值优化所述嵌入模型,所述第一标签值指示所述第一行为子序列与所述第二行为子序列是否来源于同一个用户。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
本说明书实施例提出一种借鉴自BERT模型的预训练方法训练嵌入模型,采用先对用户行为序列数据进行预训练,再在特定任务上进行微调的方法,获得稳定可靠的用户行为表达,再经由下游任务的微调来获取对特定任务有效的信息来辅助下游任务的训练。预训练得到的用户行为表达同时具备一定的通用性,可以扩展至不同的下游训练任务。
具体实施方式
下面将结合附图描述本说明书实施例。
图1示出根据本说明书实施例的基于嵌入模型的推荐***100的示意图。如图1所示,***100包括嵌入模型11、分类模型12、预训练单元13、推荐模型14和微调单元15。所述嵌入模型11借鉴Bert模型的架构,将用户行为与语言处理中的词语将对应,将用户的连续行为序列与语言处理中的句子相对应,并将不同的用户的多段连续行为与不同文档相对应,类似地,对该嵌入模型的训练包括预训练过程和微调过程。具体是,在预训练过程中,与Bert模型的预训练类似地,可通过在用户的连续行为中掩蔽至少一个行为的方式进行预训练。具体是,对嵌入模型11输入与第一用户的行为序列对应的输入向量序列E1(E10、E11、E12、…、E1n),在该向量序列中,E10表示与该用户行为序列对应的序列输入向量,在E11、E12、…、E1n中包括至少一个与用户行为无关的掩蔽输入向量,嵌入模型11可对应于该掩蔽输入向量输出行为表示向量T1。通过将所述行为表示向量T1输入预定分类模型12可预测该掩蔽输入向量对应的输入向量。从而,预训练单元13可基于从分类模型12接收的所述预测的输入向量和对应的实际输入向量进行对嵌入模型的优化,并将优化后的参数发送给嵌入模型11。对该嵌入模型的预训练过程还可借用Bert模型的其它预训练方法,如判断两段用户连续行为是否来自于同一个用户等,该预训练过程将在说明书中详细描述。
在通过大量的用户历史行为数据对嵌入模型11进行预训练之后,与Bert模型类似地,还可以通过与具体的下游任务对应的监督数据进行微调训练。例如,所述下游任务为推荐任务,从而,如图1中所示,嵌入模型11与推荐模型14连接,在微调训练过程中,嵌入模型11基于第二用户的输入向量序列E2(E20、E21、E22、…、E2n)输出与E20对应的序列表示向量T2,并将该T2和推荐任务相关特征(其中包括待推荐的特定对象的特征)输入推荐模型14,推荐模型14基于上述输入输出关于是否向该用户推荐特定对象的预测值F2,并将该预测值F2输出给微调单元15,微调单元15基于该预测值F2和对应的标签值进行对嵌入模型11和推荐模型14的微调,并将微调之后的参数发送给嵌入模型11和推荐模型14。
在微调训练完成之后,则可通过该推荐***进行推荐预测,例如,可对嵌入模型11输入第三用户的输入向量序列E3(E30、E31、E32、…、E3n),从而嵌入模型11输出与E30对应的序列表示向量T3,并将该T3和推荐任务相关特征(其中包括待推荐的特定对象的特征)输入推荐模型14,推荐模型14基于上述输入输出关于是否向该第三用户推荐特定对象的预测值F3,从而推荐模型可基于该预测值F3确定是否向第三用户推荐所述特定对象。
可以理解,上述对图1中推荐***100的描述只是示意性的而不是限制性的,例如,用于预训练的下游模型不限于图中的分类模型12,而可以根据预训练的方式为各种分类、回归模型等等,另外,所述嵌入模型11的下游任务不限于为推荐任务,而可以根据具体场景为不同的任务,如防欺诈任务等等,相应地,嵌入模型11连接的下游模型也不限于为推荐模型14,而可以根据场景的不同而不同,并且该下游模型的输入数据也相应地不同。
下面具体描述上述模型使用过程和模型训练过程。
图2示出根据本说明书一个实施例的一种获取用户行为序列的序列表示向量的方法流程图,包括:
步骤S202,获取第一用户连续进行的多个行为,其中,所述多个行为中连续的两个行为之间的时间间隔小于预定时长;
步骤S204,基于所述第一用户连续进行的多个行为获取第一行为序列,其中,所述第一行为序列中包括的多个用户行为以时间顺序排列;
步骤S206,将所述第一行为序列输入预先训练的嵌入模型,并在所述嵌入模型中获取与第一行为序列对应的第一输入向量序列,其中,所述第一输入向量序列中的第一个向量为序列输入向量,其与该行为序列相对应,所述第一输入向量序列中还包括多个行为输入向量,每个行为输入向量基于所述第一行为序列中的多个行为中相应的行为获取;以及
步骤S208,通过所述嵌入模型基于自注意力机制,相对于所述第一输入向量序列输出所述第一行为序列的序列表示向量,所述序列表示向量与所述序列输入向量相对应。
如上文参考图1所述,在本说明书实施例中,借鉴Bert模型架构对用户的行为序列数据进行建模,以获取嵌入模型,因此嵌入模型的输入、输出以及训练都可以与Bert模型相对应起来。也就是说,如上文所述,将用户行为与语言处理中的词语将对应,将用户的连续行为序列与语言处理中的句子相对应,并将不同的用户的多段连续行为与不同文档相对应,因此,对该嵌入模型的训练可包括预训练过程和微调过程。图2所示方法为对训练好的嵌入模型的使用方法。
在步骤S202,获取第一用户连续进行的多个行为,其中,所述多个行为中连续的两个行为之间的时间间隔小于预定时长。
通常,可通过设定间隔时间阈值来获取用户的一段连续行为,来对应于自然语言处理中的一个句子(Segment),该段连续行为中的每个行为对应于构成句子的每个词。例如,可将间隔时间阈值设定为半小时,也就是说,在一段连续行为中,每两个连续行为之间的时间间隔都是小于半小时的,而不同的两段连续行为之间的时间间隔都大于等于半小时。从而基于该时间间隔可以看出,一段连续行为通常是在非常接近的时间中完成,其通常具有较大的相关性,例如,其可能是具有相同的行为目的,就如同在自然语言处理中,多个词构成具有主旨的一个句子。
在真实业务场景中,通常通过具备层次结构的记录口径来表示用户行为。例如,用于记录用户在客户端行为位置的SPM数据通常具有站点、页面、模块、位置这样的由上到下粒度逐渐变细的记录口径。例如,假设一个站点平均有L个页面,一个页面平均有M个模块,一个模块平均有N个位置,则,用户的一个行为可以示意表示为这样的向量:(i,j,k),其中i为L页面中的第i个页面,j为M个模块中第j个模块,k为N个位置中第k个位置。
在通过如上所示向量表示用户行为的情况中,第一用户连续进行的多个行为例如可以是这样的一个向量序列:(1,2,1)、(1,3,2)、(5,2,1)、(7,3,2)、(10,2,1),该向量序列例如对应于这样一个行为序列:在APP的第1页的第2个模块登录模块的第1位置进行登录、在第1页的第3个模块分类模块的第2个位置进行点击进入第5页、在第5页第2个模块外套模块第1个位置短外套位置进行点击进入第7页、在第7页第3个模块(商品模块)第2个位置进行点击进入第10页商品页面、以及在第10页第2个模块的第1个位置进行点击以购买该商品。在购买该商品之后,用户的这一连串的用户行为的目的(购买特定商品)已经达成,因此,用户可能将会退出该APP,从而,该连续用户行为序列到此终止。也就是说,上述一串连续用户行为序列构成了该用户的一个“句子”,可表示一个具体的意义。
在步骤S204,基于所述第一用户连续进行的多个行为获取第一行为序列,其中,所述第一行为序列中包括的多个用户行为以时间顺序排列。
在一个实施例中,可将在上述步骤中获取的多个连续行为直接作为第一行为序列,即,将用于输入嵌入模型的行为序列。
在一个实施例中,由于在真实业务场景中,对于用户行为数据的收集口径定义的粒度往往非常细,使用较频繁的用户可能会累积非常多的数据,从而,可基于在上述步骤中获取的多个连续行为获取精简的第一行为序列。在一个实施例中,对于多个连续行为,可基于行为的发生频次对该多个行为进行聚类,从而将相似的行为聚合为一个行为。例如,用户在浏览商品时,可能会多次打开不同的商品页面以进行挑选,从而,通过聚类,可将多次打开不同商品页面的行为聚合为一个打开商品页面的行为作为第一行为序列中的一个行为,从而避免了相似行为的多次重复。在一个实施例中,对于用户的连续多个行为,可通过用于筛选关键词的TF-IDF算法从该多个行为中筛选出用户的关键行为,作为第一行为序列中的行为,也就是说,该用户进行次数较多、而全部用户进行次数较少的行为为该用户的关键行为,更能体现该用户的个体特征,例如,对于上述获取的用户连续行为的向量序列,由于登录行为是每个用户都要进行行为,因此,通过使用TF-IDF算法,将会把第一个行为(即登录行为)过滤出去。在一个实施例中,可通过以更大粒度的位置表示用户的行为,以作为第一行为序列中的行为。例如,如上述实例中所述,用户可能在第5页第2个模块外套模块第1个位置短外套位置进行点击进入第7页之后,在第7页第3个模块(商品模块)的多个位置进行了点击直至最后购买特定商品,在该情况中,可通过仅以(页面i,模块j)来表示用户行为以作为第一行为序列中的行为,从而避免用户的重复性数据。
可以理解,这里虽然仅描述了基于第一用户的一段连续行为获取第一行为序列,所述第一行为序列中不限于仅包括用户的一段连续行为,而是可以包括多段连续行为,在该情况中,通过该方法输出的序列表示向量与该多段连续行为相对应,将更全面准确地刻画用户的个体特征。
在步骤S206,将所述第一行为序列输入预先训练的嵌入模型,并在所述嵌入模型中获取与第一行为序列对应的第一输入向量序列,其中,所述第一输入向量序列中的第一个向量为序列输入向量,其与该行为序列相对应,所述第一输入向量序列中还包括多个行为输入向量,每个个行为输入向量基于所述第一行为序列中的多个行为中相应的行为获取。
在将所述第一行为序列输入预先训练的嵌入模型时,可在第一行为序列中增加序列标识[CLS],以用于代表整个第一行为序列,并表示第一行为序列的开始位置。
该第一输入向量序列的获取可参考Bert模型中的输入向量的获取。图3示意示出与第一行为序列对应的第一输入向量序列。假设第一行为序列包括a、b、c、d四个行为,则第一输入向量序列共包括5个输入向量ECLS、Ea、Eb、Ec、Ed,其中,第1个输入向量ECLS与第一行为序列相对应,为序列输入向量,该序列输入向量可以为零向量或者随机获取的向量。其中,第2~5个输入向量与a、b、c、d四个行为分别对应,其分别体现了各个行为的行为特征(E_a、E_b、E_c、E_d)、所在的行为序列的特征(E_A、E_A、E_A、E_A)、该行为在行为序列中的位置特征(E_1、E_2、E_3、E_4)。在一个实施例中,所述行为特征例如为上述表示行为位置的向量,如,(1,3,2)、(5,2,1)、(7,3,2)、(10,2,1)。所述行为序列特征用于区分行为所在的行为序列,例如,在第一行为序列中包括用户的一段行为序列A,则序列A中的每个行为具有共同的行为序列特征EA,所述行为序列特征EA可以设定为行为所在的行为序列A中各个行为特征的和,或者可设定为特定向量,例如零向量。在第一行为序列中包括两段行为序列A和B的情况中,则可通过行为序列特征区分序列A和序列B,即,序列A中的每个行为具有共同的行为序列特征EA,序列B中的每个行为具有共同的行为序列特征EB,所述行为序列特征EB可以设定为行为所在的行为序列B中各个行为特征的和,或者,在将EA设定为零向量的情况中,可将EB设定为(1,1,1),以用于区分序列A和序列B。所述位置特征与相应行为在行为序列中的位置对应,例如,对于上述顺序排列的四个行为特征(1,3,2)、(5,2,1)、(7,3,2)、(10,2,1),其位置特征可分别为(1,0,0)、(2,0,0)、(3,0,0)、(4,0,0)。在一个实施例中,所述输入向量可以为相应的行为特征、序列特征与位置特征之和,例如,对于上述四个行为,与第2个行为对应的第2个输入向量可以为(1,3,2)+(0,0,0)+(1,0,0)=(2,3,2)。
可以理解,所述行为输入向量不限于通过上述方式获取,只要其能体现相应行为的各项特征即可,例如,如果在第一行为序列中仅包括一段用户连续行为的情况中,可将行为输入向量中的序列特征设为零,即可以不包括序列特征。另外,在第一行为序列中包括两段或多段用户连续行为的情况中,第一输入向量序列还可以包括隔离标识输入向量,以用于隔开不同的行为段。
在步骤S208,通过所述嵌入模型基于自注意力机制,相对于所述第一输入向量序列输出所述第一行为序列的序列表示向量,所述序列表示向量与所述序列输入向量相对应。
在一个实施例中,所述嵌入模型包括至少一个前后相连的计算模块,其中,每个计算模块中包括相应的自注意力层,所述自注意力层基于自注意力机制相对于其多个层输入向量输出与该多个层输入向量分别对应的多个层输出向量。
图4示意示出根据本说明书实施例的嵌入模型的结构图。如图中所示,所述嵌入模型包括两个前后相连的计算模块41和42。其中,计算模块41基于图3中所示的5个输入向量Ei向计算模块42输出与5个输入嵌入向量分别对应的5个中间向量Ri,计算模块42基于输入的5个中间向量输出Ri与该5个中间向量分别对应的5个表示向量Ti(序列表示向量或行为表示向量)。可以理解,图4示出的两个计算模块和5个输入向量仅仅用于示例说明,在实际中,嵌入模型可包括至少一个计算模块,即,可包括一个计算模块,也可以包括两个以上的前后相连的计算模块,并且可设定为输入预定数目的输入向量。
图5示意示出计算模块41的内部构造。所述计算模块可参考现有技术中的变换器(Transformer)模型中的编码器进行构造,如图5中所示,计算模块41中可包括自注意力层411和前馈层412。其中,所述自注意力层411基于自注意力机制相对于图中5个输入向量输出与所述5个输入向量分别对应的5个输出向量Zi,如图中可以看出,每个输出向量Zi都基于全部输入向量计算获取,其中所述计算为基于注意力函数的计算。这里,由于计算模块41为该嵌入模型的第一个计算模块,因此,其自注意力层的输入向量即为该嵌入模型的输入向量,即输入向量Ei,可以理解,对于在第一计算模块之后的计算模块,其自注意力层的输入向量即为前一个计算模块的输出向量,例如,如图4中所示,计算模块42的自注意力层的输入向量为计算模块41的输出向量Ri。
下文将详细描述本说明书实施例的自注意力层中基于自注意机制的计算过程。所谓自注意力机制,参考图5中所示,即,对于包括多个单元的序列中的每个单元(例如序列输入向量ECLS、行为输入向量Ea等),通过使用注意力函数,基于该单元与该序列中的其它各个单元的注意力值,获取该单元的注意力值。所述注意力函数例如为在现有技术中的变换器(Transformer)模型中使用的注意力函数。可以理解,在本说明书实施例中不限于使用该注意力函数,而是可以使用现有技术中可获取的各种注意力函数,如加性注意力函数、点积注意力函数等等。
注意力函数的本质可以被描述为一个查询(query)到一系列(键key-值value)对的映射,图6示意示出了通过注意力函数计算注意力值的过程。例如,针对图3中获取的5个输入向量ECLS和Ea-Ed,当将其输入例如图4所示的嵌入模型中时,图4中的计算模块41首先针对该5个输入向量Ei进行自注意力计算。具体是,首先通过在模型预训练中学习的Q矩阵WQ、K矩阵WK和V矩阵WV对各个输入嵌入向量Ei进行变换,从而获取各个节点的具有相同维度d的Q向量(查询向量)、K向量(键向量)和V向量(值向量)。例如对于输入向量ECLS,可通过如下的公式(1)分别获取该向量对应的Q向量QCLS、K向量KCLS和V向量VCLS:
可类似地通过Q矩阵WQ、K矩阵WK和V矩阵WV对其它输入向量进行变换,从而获取输入向量Ea-Ed各自的Q向量Qa-Qd,K向量Ka-Kd,和V向量Va-Vd,从而,参考图6中所示,对于输入向量ECLS,基于如下的公式(2)通过将输入向量ECLS的Q向量QCLS与各个输入向量的键值对(即K向量和V向量对)进行计算,从而获取输入向量ECLS的注意力值ZCLS:
ZCLS=∑i=CLS,a,...,d相似度(QCLS,Ki)*Vi (2)
其中,所述相似度函数可采用本领域可获取的各种函数,如点积、拼接、感知机等。可以理解,在公式(2)中,输入向量ECLS的Q向量QCLS与各个节点的K向量Ki之间的相似度也即输入向量ECLS与各个输入向量之间的一种关联度,然而,所述关联度不限于通过这种方式计算,例如,所述关联度可以直接为输入向量ECLS与各个输入向量之间的相似度。也就是说,在公式(2)中,各个V向量的权重不限于为上述相似度,只要该权重体现了输入向量ECLS与各个节点的输入向量之间的关联度即可。
在一个实施例中,可如公式(3)所示计算注意力值ZCLS:
其中,用于使得模型训练时梯度更稳定,sofmax函数用于进行归一化。
在上述的自注意力机制中采用了一组Q矩阵、K矩阵和V矩阵用于获取各个输入向量的注意力值Zi,在一个实施例中,在计算模块中可采用多头自注意力机制,即,通过多组Q矩阵、K矩阵和V矩阵与上文类似地分别获取例如输入向量ECLS的注意力值ZCLS1、ZCLS2、ZCLS3等,然后通过预训练学习的O矩阵WO对拼接的向量(ZCLS1,ZCLS2,ZCLS3)进行线性变换,从而获取输入向量ECLS的基于多头的注意力值ZCLS。
也就是说,所述自注意力层基于至少一个自注意力函数进行计算,所述自注意力函数基于输入该自注意力层的N个层输入向量输出与所述N个层输入向量分别对应的N个函数输出向量,其中,所述N个函数输出向量中的第i个函数输出向量为:以所述N个层输入向量中第i个层输入向量与各个层输入向量的关联度为权重,对所述N个层输入向量各自的第一变换向量的加权组合,其中,所述第一变换向量通过以与该自注意力函数对应的第一权重矩阵对相应的层输入向量进行变换而获取,所述第一权重矩阵通过预先训练所述嵌入模型而获取。
其中,各个层输入向量中还包括第j个层输入向量,其中,第i个层输入向量与第j个层输入向量的关联度基于第i个层输入向量的第二变换向量与第j个层输入向量的第三变换向量的相似度确定,其中,所述第二变换向量通过以与该自注意力函数对应的第二权重矩阵对相应的层输入向量进行变换而获取,所述第三变换向量通过以与该自注意力函数对应的第三权重矩阵对相应的层输入向量进行变换而获取,所述第二权重矩阵和所述第三权重矩阵都通过预先训练所述嵌入模型而获取。
如图5中所示,计算模块中还包括前馈层412,所述前馈层412例如为全连接层,其分别对从自注意力层411输出的各个注意力值进行计算,从而分别获取相应的该计算模块41的输出向量Ri,并将向量Ri作为输入向量输入计算模块42,以进行与计算模块41中类似的计算过程。如图中所示,例如,在前馈层412中,由层412输出的输出向量RCLS只基于相应的该层的输入向量ZCLS计算获取。可以理解,在本说明书实施例中,根据具体的应用场景,所述前馈层相应地变化,并且,所述前馈层并不是必需的。类似地,图4中的计算模块42基于其输入向量Ri输出与各个输入向量分别对应的表示向量Ti。
基于上述计算过程可以理解,根据本说明书实施例,嵌入模型输出的各个表示向量Ti体现了其它输入向量对该输入向量的影响。因此,与序列输入向量ECLS对应的序列表示向量TCLS体现了该行为序列中各个行为对该序列整体的影响,是聚合了各个行为的序列表示,体现了行为序列中隐藏的行为模式和深层次行为信息,并且,该序列表示不依赖于特定任务的监督信号,可扩展用于各种场景的下游任务中。
在一个实施例中,在通过所述嵌入模型输出所述第一行为序列的序列表示向量之后,将所述序列表示向量和其它与特定任务相关的特征输入预先训练的任务模型,以相对于所述特定任务进行预测。该任务模型将在嵌入模型的微调阶段一起训练,该内容将在下文详细描述。
在一个实施例中,所述特定任务为预测所述第一用户是否点击特定对象,以确定是否向所述第一用户推送所述特定对象,即,所述任务模型为推送模型。在该情况下,上述其它与特定任务相关的特征包括以下至少一项:用户属性特征、所述特定对象的特征、以及所述点击的环境特征。所述用户属性特征例如包括用户性别、年龄等,特定对象的特征例如包括特定对象的类别、标签、统计特征等,所述点击的环境特征例如包括该点击的时间、地域、场景等。所述序列表示向量对应于用户的历史行为信息。在一个实施例中,可将与用户最近一段行为序列对应的序列表示向量输入该推送模型,以进行推送预测。在一个实施例中,可将与用户较近时段的多段行为序列对应的多个序列表示向量输入该推送模型,以进行推送预测。在一个实施例中,可将与用户去年同时段的至少一段行为序列对应的至少一个序列表示向量输入该推送模型,以进行当前的推送预测。
图7示出根据本说明书一个实施例的对嵌入模型进行预训练的方法流程图,所述方法包括以下步骤:
步骤S702,获取第二用户连续进行的多个行为;
步骤S704,基于第二用户连续进行的多个行为获取第二行为序列,其中,所述第二行为序列中包括的多个行为以时间顺序排列,所述第二行为序列中包括至少一个选定行为;
步骤S706,将所述第二行为序列输入当前嵌入模型,并在所述嵌入模型中获取与第二行为序列对应的第二输入向量序列,其中,所述第二输入向量序列中包括与所述第二行为序列中的至少一个选定行为分别对应的至少一个掩蔽输入向量,所述掩蔽输入向量为预定的与相应的选定行为无关的向量,所述第二输入向量序列中还包括多个行为输入向量,所述第二输入向量序列中的每个行为输入向量基于所述第二行为序列中的多个行为中相应的行为获取;
步骤S708,通过所述嵌入模型基于所述第二输入向量序列输出与所述第二行为序列中的至少一个选定行为分别对应的至少一个行为表示向量;
步骤S710,通过基于所述至少一个行为表示向量进行分类,获取对应的至少一个预测输入向量;以及
步骤S712,基于所述第二输入向量序列、所述第二行为序列中的至少一个选定行为的实际输入向量、和所述至少一个预测输入向量优化所述嵌入模型。
该对嵌入模型的预训练方法对应于用于对Bert模型进行预训练的掩蔽(Mask)方法,概括地说,就是对行为序列中的至少一个行为的实际输入向量进行掩蔽,以通过嵌入模型+分类模型预测该行为的输入向量,并基于该行为的实际输入向量和预测输入向量进行对嵌入模型的预训练。
步骤S702的具体实施可参考上述步骤S202中的描述,在此不再赘述。
在步骤S704中,所述至少一个选定行为即为将要进行掩蔽的行为,这些将要掩蔽的行为可以以一定的百分比随机确定。该步骤的其它具体实施内容可参考上述步骤S204中的描述,在此不再赘述。
在步骤S706中,所述掩蔽输入向量例如为零向量或随机确定的向量,只要其与相应的选定行为无关即可。
在步骤S708中,参考上述对图4的嵌入模型的结构的描述,嵌入模型会输出与各个输入向量分别对应的表示向量,因此,针对输入的行为输入向量,会输出该其对应的行为表示向量。
在步骤S710,通过基于所述至少一个行为表示向量进行分类,获取对应的至少一个预测输入向量。
在一个实施例中,可通过将输出的行为表示向量输入分类模型,从而基于该分类模型的分类结果对该嵌入模型和分类模型同时进行训练。
在一个实施例中,如上文所述,所述用户在客户端行为的位置包括从大至小的预定数目的粒度,例如用户行为序列中的一个选定行为可以示意表示为这样的向量:(i,j,k),其中i为L页面中的第i个页面,j为M个模块中第j个模块,k为N个位置中第k个位置。从而,所述分类模型可包括三个全连接层,每个全连接层例如通过Softmax函数进行预测,其中,第一层Softmax层用于从L页面中确定预测的第o个页面,第二层Softmax层用于从第o个页面中的M个模块中预测第p个模块,以及第三层Softmax层用于从第p个模块的N个位置中预测第q个位置,从而获取该行为的预测输入向量(o,p,q)。通过采用这种分层分类的机制预测行为在树形结构的行为标识统计口径上的整条路径,不再对所有位置进行一次多分类,可以帮助模型学***均计算复杂度从LMN降为L+M+N。
步骤S712,基于所述第二输入向量序列、所述第二行为序列中的至少一个选定行为的实际输入向量、和所述至少一个预测输入向量优化所述嵌入模型。
例如,对于上述实例,针对选定行为(i,j,k),预测其预测输入向量为(o,p,q)之后,可基于实际输入向量(i,j,k)与预测输入向量(o,p,q)之间的误差进行模型优化。
图8示出根据本说明书实施例的一种对嵌入模型进行预训练的方法流程图,所述方法包括以下步骤:
步骤S802,获取第一段连续进行的多个行为和第二段连续进行的多个行为;
步骤S804,基于两段连续进行的多个行为分别获取第一行为子序列和第二行为子序列,其中,所述第一和第二行为子序列中包括的多个行为分别以时间顺序排列;
步骤S806,将第三行为序列输入当前嵌入模型,并在所述嵌入模型中获取与第三行为序列对应的第三输入向量序列,其中,所述第三行为序列通过将所述第一行为子序列与第二行为子序列前后相连而获取,所述第三输入向量序列中的第一个向量为序列输入向量,其与所述第三行为序列相对应,所述第三输入向量序列中还包括多个行为输入向量,所述多个行为输入向量与所述第三行为序列中的多个行为分别对应,每个行为输入向量基于相应行为的行为特征、子行为序列特征和位置特征获取,其中,所述子行为序列特征用于标识该行为所在的子行为序列;
步骤S808,通过所述嵌入模型相对于所述第三输入向量序列输出所述第三行为序列的序列表示向量;
步骤S810,将所述第三行为序列的序列表示向量输入用于分类的全连接层,以输出第一预测值,所述第一预测值预测所述第一行为子序列与所述第二行为子序列是否来源于同一个用户;以及
步骤S812,基于所述第三输入向量序列、所述第一预测值以及第一标签值优化所述嵌入模型,所述第一标签值指示所述第一行为子序列与所述第二行为子序列是否来源于同一个用户。
在步骤S802中,第一段连续进行的多个行为和第二段连续进行的多个行为可以是由同一个用户进行的,也可以由不同的用户分别进行的,并且,基于上文中对连续进行的多个行为的说明,第一段连续进行的多个行为和第二段连续进行的多个行为之间的时间间隔至少为上述预定时间间隔,例如30分钟。
在步骤S808,通过将所述第一行为子序列与第二行为子序列前后相连,获取第三行为序列。也就是说,第三行为序列中包括前后相连的两个行为子序列。在一个实施例中,通过隔离符号(如[SEP])将所述第一行为子序列与第二行为子序列前后相连起来。
其中,如上文中对行为输入向量的描述,行为输入向量可基于相应行为的行为特征、行为序列特征和位置特征获取,由于该第三行为序列中包括两个子行为序列,因此,根据该相应行为在哪个子行为序列,从而确定行为序列特征和位置特征,即,相应行为的行为序列特征为该行为所在的子行为序列的子行为序列特征,该行为的位置特征基于该行为在相应的子行为序列中的位置特征获取。
在步骤S810,与图2中所示方法类似地,该嵌入模型可输出与序列输出向量对应的序列表示向量,该序列表示向量聚合体现了第三行为序列中的各个行为的特征及关联性。
在步骤S812,所述用于分类的全连接层例如为二分类模型,以预测第三行为序列中的两个子行为序列是否来源于同一个用户。
在步骤S814,在获取所述第一预测值之后,可基于所述第一预测值与所述第一标签值的误差同时训练嵌入模型和所述二分类模型,从而进行对嵌入模型的预训练。
上文中虽然参考图7和图8描述了两种用于嵌入模型的预训练方法,可以理解,所述预训练方法不限于上述两种方法,而是可以参考Bert模型中的各种预训练方法,获取对所述嵌入模型的预训练方法,在此不一一详述。另外,图7和图8所示的预训练方法还可以如下文所述结合起来同时进行。
图9示出了根据本说明书实施例的对嵌入模型进行预训练的示意图。如图9中所示,在预训练中,如图9底部所示,对嵌入模型的输入的行为序列中包括子行为序列A和子行为序列B,其中,子行为序列A之前为[CLS]标识,用于代表输入的整个行为序列,序列A和序列B中的三角形状图形用于表示各个行为,其中,三角形内部的点连线用于示意示出该行为是通过层级位置粒度表示的。序列A与序列B中通过隔离标识[SEP]隔离开,从而示出序列A和序列B是两段行为序列。另外,序列A中还包括[掩蔽],其表示序列A中被选定为掩蔽行为的行为。在将上述行为序列输入到嵌入模型中之后,首先根据上文所述,基于该行为序列,获取相应的输入向量序列,其中包括E[CLS]、等等,该嵌入模型基于该输入向量序列,输出序列表示向量C,和与掩蔽行为对应的行为表示向量/>从而通过将序列表示向量输入二分类模型,基于该二分类模型的预测值,可进行图8所示的预训练,通过将行为表示向量/>输入相应的分类模型,基于该分类模型预测的行为,可进行图7所示的预训练。
图10示出根据本说明书实施例的一种获取用户行为序列的序列表示向量的装置1000,包括:
第一获取单元101,配置为,获取第一用户连续进行的多个行为,其中,所述多个行为中连续的两个行为之间的时间间隔小于预定时长;
第二获取单元102,配置为,基于所述第一用户连续进行的多个行为获取第一行为序列,其中,所述第一行为序列中包括的多个行为以时间顺序排列;
输入单元103,配置为,将所述第一行为序列输入预先训练的嵌入模型,并在所述嵌入模型中获取与第一行为序列对应的第一输入向量序列,其中,所述第一输入向量序列中的第一个向量为序列输入向量,其与该行为序列相对应,所述第一输入向量序列中还包括多个行为输入向量,所述多个行为输入向量分别基于所述第一行为序列中的多个行为中相应的行为获取;以及
输出单元104,配置为,通过所述嵌入模型基于自注意力机制,相对于所述第一输入向量序列输出所述第一行为序列的序列表示向量,所述序列表示向量与所述序列输入向量相对应。
在一个实施例中,所述装置还包括,预测单元105,配置为,在通过所述嵌入模型输出所述第一行为序列的序列表示向量之后,将所述序列表示向量和其它与特定任务相关的特征输入预先训练的任务模型,以相对于所述特定任务进行预测。
在一个实施例中,对所述嵌入模型的预先训练包括对所述嵌入模型的预训练,所述嵌入模型通过第一预训练装置得到预训练。
图11示出根据本说明书实施例的第一预训练装置1100,包括:
第一获取单元111,配置为,获取第二用户连续进行的多个行为;
第二获取单元112,配置为,基于第二用户连续进行的多个行为获取第二行为序列,其中,所述第二行为序列中包括的多个行为以时间顺序排列,所述第二行为序列中包括至少一个选定行为;
输入单元113,配置为,将所述第二行为序列输入当前嵌入模型,并在所述嵌入模型中获取与第二行为序列对应的第二输入向量序列,其中,所述第二输入向量序列中包括与所述第二行为序列中的至少一个选定行为分别对应的至少一个掩蔽输入向量,所述掩蔽输入向量为预定的与相应的选定行为无关的向量,所述第二输入向量序列中还包括多个行为输入向量,所述第二输入向量序列中的每个行为输入向量基于所述第二行为序列中的多个行为中相应的行为获取;
输出单元114,配置为,通过所述嵌入模型基于所述第二输入向量序列输出与所述第二行为序列中的至少一个选定行为分别对应的至少一个行为表示向量;
分类单元115,配置为,通过基于所述至少一个行为表示向量进行分类,获取对应的至少一个预测输入向量;以及
优化单元116,配置为,基于所述第二输入向量序列、所述第二行为序列中的至少一个选定行为的实际输入向量、和所述至少一个预测输入向量优化所述嵌入模型。
在一个实施例中,所述用户在客户端行为的位置包括从大至小的预定数目的粒度,其中,所述分类单元还配置为,将所述行为表示向量依次输入预定数目的用于分类的全连接层,其中,所述预定数目的全连接层与所述预定数目的粒度分别对应,每个全连接层用于预测与行为表示向量对应的预测输入向量中的行为特征的相应粒度的值。
在一个实施例中,所述嵌入模型还通过第二预训练装置得到预训练,图12示出根据本说明书实施例的第二预训练装置1200,包括:
第一获取单元121,配置为,获取第一段连续进行的多个行为和第二段连续进行的多个行为;
第二获取单元122,配置为,基于两段连续进行的多个行为分别获取第一行为子序列和第二行为子序列,其中,所述第一和第二行为子序列中包括的多个行为分别以时间顺序排列;
输入单元123,配置为,将第三行为序列输入当前嵌入模型,并在所述嵌入模型中获取与第三行为序列对应的第三输入向量序列,其中,所述第三行为序列通过将所述第一行为子序列与第二行为子序列前后相连而获取,所述第三输入向量序列中的第一个向量为序列输入向量,其与所述第三行为序列相对应,所述第三输入向量序列中还包括多个行为输入向量,所述多个行为输入向量与所述第三行为序列中的多个行为分别对应,每个行为输入向量基于相应行为的行为特征、子行为序列特征和位置特征获取,其中,所述子行为序列特征用于标识该行为所在的子行为序列;
输出单元124,配置为,通过所述嵌入模型相对于所述第三输入向量序列输出所述第三行为序列的序列表示向量;
分类单元125,配置为,将所述第三行为序列的序列表示向量输入用于分类的全连接层,以输出第一预测值,所述第一预测值预测所述第一行为子序列与所述第二行为子序列是否来源于同一个用户;以及
优化单元126,配置为,基于所述第三输入向量序列、所述第一预测值以及第一标签值优化所述嵌入模型,所述第一标签值指示所述第一行为子序列与所述第二行为子序列是否来源于同一个用户。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
本说明书实施例提出一种借鉴自BERT模型的预训练方法训练嵌入模型,采用先对用户行为序列数据进行预训练,再在特定任务上进行微调的方法,获得稳定可靠的用户行为表达,再经由下游任务的微调来获取对特定任务有效的信息来辅助下游任务的训练。预训练得到的用户行为表达同时具备一定的通用性,可以扩展至不同的下游训练任务。在推荐场景中,对推荐场景中丰富的用户行为序列数据进行有效的建模,借鉴自然语言处理中的BERT预训练方式来从序列形式的用户行为数据中获取更好更具通用性的用户行为表达,避免仅利用很少的监督信号导致对丰富行为信息的不充分学习,从而帮助推荐***更好的学习和利用用户行为数据,提高个性化推荐的效果。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执轨道,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执轨道的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。