一种基于改进残差结构的序列推荐方法和系统
技术领域
本发明涉及序列推荐技术领域,更具体地,涉及一种基于改进残差结构的序列推荐方法和系统。
背景技术
推荐系统是近年来发展十分繁荣的领域,因其广阔的应用场景以及巨大的商业价值而备受瞩目,其定义为利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程,而个性化推荐是根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。序列推荐系统是推荐系统中的一个重要分支,其目的是通过分析用户的历史浏览序列,对用户进行精准推荐,一直是学术界和工业界关注的热点研究问题。
以常见的序列推荐模型NextItNet为例,其结合了空洞卷积神经网络以及残差网络,能够较好地对用户历史浏览序列进行建模,从而更好地为用户提供推荐服务,在序列推荐系统中发挥出优异的效果。参见图1所示,NextItNet的模型结构总体上由N个结构相同的空洞卷积残差块堆叠而成,将用户历史浏览序列输入整个网络,进行建模,得到用户喜好表征,从而在下一时刻为用户进行精准推荐。
现有的序列推荐模型,在进行推荐服务时,模型参数量大,推断时间较长,难以满足在现实世界中的需求。NextItNet需要堆叠大量的空洞卷积残差块才能发挥出更佳的效果,导致模型参数量巨大,这样将训练好的模型部署于实际应用时较为困难,在进行推断时花费时间也较长,难以满足用户的实际需求。
发明内容
本发明的目的是克服上述现有技术的缺陷,提供一种基于改进残差结构的序列推荐方法和系统,在序列推荐中通过判断是否跳过残差块来提高推荐的实时性。
根据本发明的第一方面,提供一种基于改进残差结构的序列推荐方法。该方法包括:
构建序列推荐模型,该序列推荐模型包括叠加的多个空洞卷积残差块,其中每个空洞卷积残差块连接门控模块用于限制其输出;
以设定的损失函数为目标,基于样本集训练所述序列推荐模型,并在训练过程中,通过将每个空洞卷积残差块的输出与设定阈值进行比较,学习需保留的空洞卷积残差块以及需跳过的空洞卷积残差块;
将待推荐用户的历史浏览序列输入经训练的序列推荐模型,获得后续时刻用户推荐项的预测结果。
根据本发明的第二方面,提供一种基于改进残差结构的序列推荐系统。该系统包括:
模型构建单元:用于构建序列推荐模型,该序列推荐模型包括叠加的多个空洞卷积残差块,其中每个空洞卷积残差块连接门控模块用于限制其输出;
模型训练单元:用于以设定的损失函数为目标,基于样本集训练所述序列推荐模型,并在训练过程中,通过将每个空洞卷积残差块的输出与设定阈值进行比较,学习需保留的空洞卷积残差块以及需跳过的空洞卷积残差块;
序列推荐单元:用于将待推荐用户的历史浏览序列输入经训练的序列推荐模型,获得后续时刻用户推荐项的预测结果。
与现有技术相比,本发明的优点在于,改进空洞卷积残差块中的残差结构,当通过某个空洞卷积残差块的输出小于设定阈值时,将会跳过此残差块。本发明提供的序列推荐模型在序列推断过程中经历更少的残差块,能够显著减少模型参数量和推断时间,而不损失模型精度,从而为用户提供快速而准确的推荐服务,具有十分重要的现实意义和广阔的应用前景。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
图1是现有的NextItNet模型结构示意图;
图2是根据本发明一个实施例的基于改进残差结构的序列推荐方法的流程图;
图3是根据本发明一个实施例的空洞卷积残差块的示意图;
图4是根据本发明一个实施例的基于改进空残架构的序列推荐系统的示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本发明提出的基于改进残差结构的序列推荐方法,通过改进残差结构构建序列推荐模型,为用户提供推荐服务。为便于理解,在本文的描述中,以现有的NextItNet模型为例,介绍改进的序列推荐模型(或称为ε-NextItNet)。
参见图2所示,该实施例提供的基于改进残差结构的序列推荐方法包括以下步骤:
步骤S210,构建序列推荐模型,该序列推荐模型包括叠加的多个空洞卷积残差块,其中每个空洞卷积残差块连接门控模块用于限制其输出。
与NextItNet模型不同的是,此步骤构建的序列推荐模型所包含的空洞卷积残差块(或简称残差块)连接有门控模块,该门控模块用于控制或限制空洞卷积残差块的最终输出。
具体地,如图3所示,左侧为NextItNet中标准的空洞卷积残差块,右侧为ε-NextItNet中改进后的空洞卷积残差块。
NextItNet中标准的空洞卷积残差块的输出表示为:
Xl+1=Xl+F(Xl) (1)
即每个空洞卷积残差块的输出Xl+1为输入Xl加上本残差块处理后的结果F(Xl)。F(Xl)处理过程为依次输入空洞卷积层1(Dilated Conv1)、层归一化层1(Layer Norm1)、ReLU激活层1(ReLU1)、空洞卷积层2(Dilated Conv2)、层归一化层2(Layer Norm2)和ReLU激活层2(ReLU2)处理后输出。
对于本发明提供的ε-NextItNet模型,改进后的空洞卷积残差块的最终输出可表示为:
Xl+1=Xl+S(F(Xl)) (2)
每个改进空洞卷积残差块的输出Xl+1为输入Xl加上本残差块处理后的结果S(F(Xl))。尽管F(Xl)处理过程仍是依次输入空洞卷积层1(Dilated Conv1)、层归一化层1(Layer Norm1)、ReLU激活层1(ReLU1)、空洞卷积层2(Dilated Conv2)、层归一化层2(LayerNorm2)、ReLU激活层2(ReLU2)处理后进行输出,但不同之处在于,改进的空洞卷积残差块加上了另一个函数S(·),S(F(Xl))计算方式例如表示为:
相当于对F(Xl)的输出进行了限制,设定一个阈值ε,当|F(Xl)|小于ε时,则S(F(Xl))输出为0,否则S(F(Xl))输出为F(Xl)。
在一个实施例中,通过四个ReLU激活函数以及一个乘法门控制空洞卷积残差块的最终输出(或称门控模块)。仍参见图3所示,数据流为F(Xl)→ReLU激活层3(ReLU3)+ReLU激活层4(ReLU4)→ReLU激活层5(ReLU5)→ReLU激活层6(ReLU6)→T(F(Xl)),图3中每个ReLU激活函数上方的(i,j)中的i,j分别代指ReLU激活函数中的权重项以及偏置项。然后,将T(F(Xl))和F(Xl)送入一个乘法门,得到S(F(Xl)),计算方式表示为:
S(F(Xl))=T(F(Xl))×F(Xl) (4)
通过这样的残差结构设计,使得数据在流经每一个改进空洞卷积残差块时都会进行一次比较,当其原有输出小于阈值ε时,通过增加门控模块后输出为0,即后续处理过程将会跳过此残差块。
进一步地,通过堆叠N个改进的空洞卷积残差块,构成本发明的序列推荐模型ε-NextItNet,模型结构如图4所示。相较于现有的NextItNet,本发明提供的ε-NextItNet将在推断过程中经历更少的残差块,从而显著减少模型参数量以及推断时间,而不损失模型精度,进而为用户提供快速而准确的推荐服务。
步骤S220,以设定的损失函数为目标,基于样本集训练所述序列推荐模型,并在训练过程中,通过将每个空洞卷积残差块的输出与设定阈值进行比较,学习需保留的空洞卷积残差块以及需跳过的空洞卷积残差块。
搭建好ε-NextItNet模型后,利用已知样本集对模型进行训练,以达到良好的模型效果。模型的输入为用户的历史浏览序列,输出为下一时刻向用户进行推荐的项(item)。例如,损失函数为正确item与预测item之间的交叉熵。总损失Loss计算为:
其中
为正确item标签,y
i为预测item标签,T为样本集中的训练样本总数。
由于本发明的序列推荐模型所包含的空洞卷积残差块连接门控模块,训练时,在不断训练至收敛的过程中模型会学会一个固定的跳过策略,即除了学习各层的参数之外,还会学习保留哪些残差块,跳过哪些残差块,而在后续的预测过程中将直接使用保留下来的残差块进行预测。
综上,本发明设计了改进的空洞卷积残差块并设定阈值用于限制残差块的最终输出,通过训练过程,可以学习跳过某些残差块,即直连到下一残差块,反之,则会使用这一残差块。所设定的阈值可用于平衡模型效果以及模型效率,越大的阈值意味着会跳过越多的残差块,但可能对模型的效果造成一定影响。在实际应用中,可通过实验设置合适的阈值,例如,阈值范围为2.0到3.0,优选2.5。
步骤S230,将待推荐用户的历史浏览序列输入经训练的序列推荐模型,获得后续时刻用户推荐项的预测结果。
在模型训练好之后,即确定了模型参数以及残差块的跳过策略后,利用经训练的模型,为用户提供快速而准确的推荐服务。具体地,以待推荐用户的历史浏览序列为输入,输出下一时刻用户最可能感兴趣的项(item)。历史浏览序列是指过去多个时刻的用户浏览行为,例如表示为(x1,x2,...,xi-1),输出为后续时刻的预测项xi。
相应地,本发明还提供一种基于改进残差结构的序列推荐系统,用于实现上述方法的一个方面或多个方面。例如该系统包括:模型构建单元,其用于构建序列推荐模型,该序列推荐模型包括叠加的多个空洞卷积残差块,其中每个空洞卷积残差块连接门控模块用于限制其输出;模型训练单元,其用于以设定的损失函数为目标,基于样本集训练所述序列推荐模型,并在训练过程中,通过将每个空洞卷积残差块的输出与设定阈值进行比较,学习需保留的空洞卷积残差块以及需跳过的空洞卷积残差块;序列推荐单元,其用于将待推荐用户的历史浏览序列输入经训练的序列推荐模型,获得后续时刻用户推荐项的预测结果。
为了验证本发明提出的序列推荐模型ε-NextItNet的先进性和有效性,在序列推荐系统领域公开数据集MovieLens上进行了广泛的实验。实验结果表明本发明所提出的基于改进残差结构的序列推荐模型ε-NextItNet在模型参数量、推断时间以及模型性能上都达到了当前最好效果,能够为用户提供快速而准确的推荐服务。本发明所提供的模型ε-NextItNet在部署序列推荐系统实际应用时能够做到快速推断,在空间和时间消耗上都很小,并且能够保证较高的模型准确率,可以较好地满足用户需求,具有十分重要的现实意义和广阔的应用前景。
需要说明的是,本发明提供的基于改进残差结构的序列推荐方法,除适用于NextItNet模型外,也适用于其他任何包含多个空洞卷积层残差块的模型,而对具体的模型架构、模型层数、空洞卷积残差块的具体结构以及涉及的激活函数没有限制。此外,本领域技术人员也可设计其他类型的门控机制用于限制空洞卷积残差块的最终输出,只要能够实现本发明的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。