内容推荐方法、推荐模型生成方法、设备、和存储介质与流程

文档序号:18797306发布日期:2019-09-29 19:53阅读:253来源:国知局
内容推荐方法、推荐模型生成方法、设备、和存储介质与流程
本申请实施例涉及计算机和通信
技术领域
,具体涉及一种内容推荐方法、推荐模型生成方法、设备和计算机可读存储介质。
背景技术
:近几年来,时序推荐算法已经引起了学术界和企业界的广泛关注。尤其对于短时间内用户兴趣变化比较大的推荐场景,例如短视频,音乐和新闻推荐,用户在数小时之内可能浏览数百个内容(即item,例如短视频、音乐和新闻)。采用rnn(循环神经网络)加数据提升(dataaugmentation)手段的推荐模型训练方式已经成为业界主流的方式。目前常规的数据提升手段通常大部分是利用已有的用户历史点击序列(即用户历史点击过的内容的序列)生成很多短的子点击序列。例如,如果原始观看时视频id号为{1,5,7,2,22,7,34,11,13,78},推荐算法为了充分利用该数据的时序特征,通常会首先进行数据提升(dataaugmentation)操作,以生成如下子序列(subsequence):子序列1:{0,1,5,7,2,22,7,34,11,13}子序列2:{0,0,1,5,7,2,22,7,34,11}子序列3:{0,0,0,1,5,7,2,22,7,34}…子序列n:{0,0,0,0,0,0,0,1,5,7}这种数据提升方式存在几个明显的缺陷。首先,产生额外的子序列会占用大量的计算机资源,尤其是对于亿级别的工业数据集,如果原始序列长度为200,按照以上数据提升方式,训练数据会增加近200倍。其次,这种非常短的子序列破坏了数据的完整性,往往不能达到最优的性能。再次,对序列中的每一个内容项(item)的训练,只能利用其左侧(或者过去)的点击信息,丢失该项右侧(即未来)的信息,而实际上未来点击序列同样包含重要的语境信息。技术实现要素:本申请的实施例提供一种内容推荐方法、推荐模型生成方法、设备和计算机可读存储介质,从而在无需生成子序列来进行数据提升的情况下生成准确的推荐模型。根据本申请实施例的第一方面,公开了一种用于内容推荐的推荐模型生成方法,其包括:获取用户的历史内容序列,其中所述历史内容序列为所述用户使用过的多个内容的时间序列;将所述历史内容序列包含的所述多个内容中的一个或多个内容分别替换成预定项,以得到作为训练数据的输入序列;根据被替换的所述一个或多个内容生成作为所述训练数据的训练数据标识的输出序列,其中所述输出序列为被替换的所述一个或多个内容的时间序列;使用多个所述训练数据以及相应的所述训练数据标识对神经网络进行训练,以得到用于内容推荐的推荐模型。根据本申请实施例的第二方面,公开了一种内容推荐方法,其包括:获取用户的历史内容序列,其中所述历史内容序列为所述用户使用过的多个内容的时间序列;在所述历史内容序列的尾部添加一预定项作为待求解内容,得到输入序列;将所述输入序列输入训练好的推荐模型,以得到作为所述推荐模型的输出的待推荐内容,其中所述待推荐内容与所述待求解内容相对应,表示待向所述用户推荐的内容。根据本申请实施例的第三方面,公开了一种用于内容推荐的推荐模型生成装置,其包括:获取模块,其被配置为:获取用户的历史内容序列,其中所述历史内容序列为所述用户使用过的多个内容的时间序列;输入生成模块,其被配置为:将所述历史内容序列包含的所述多个内容中的一个或多个内容分别替换成预定项,以得到作为训练数据的输入序列;输出生成模块,其被配置为:根据被替换的所述一个或多个内容生成作为所述训练数据的训练数据标识的输出序列,其中所述输出序列为被替换的所述一个或多个内容的时间序列;训练模块,其被配置为:使用多个所述训练数据以及相应的所述训练数据标识对神经网络进行训练,以得到用于内容推荐的推荐模型。根据本申请实施例的第四方面,公开了一种内容推荐装置,其包括:获取模块,其被配置为:获取用户的历史内容序列,其中所述历史内容序列为所述用户使用过的多个内容的时间序列;输入生成模块,其被配置为:在所述历史内容序列的尾部添加一预定项作为待求解内容,得到输入序列;推荐生成模块,其被配置为:将所述输入序列输入训练好的推荐模型,以得到作为所述推荐模型的输出的待推荐内容,其中所述待推荐内容与所述待求解内容相对应,表示待向所述用户推荐的内容。根据本申请实施例的第五方面,公开了一种计算设备,其包括处理器以及存储器,所述存储器上存储有计算机程序,所述处理器在执行所述存储器上的计算机程序时被配置为实现如在第一或第二方面的方法实施例中的任一个。根据本申请实施例的第六方面,公开了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现如在第一或第二方面的方法实施例中的任一个。本申请的实施例提供的技术方案可以具有以下有益效果:在本申请各实施例的一个或多个中,通过将用户的历史内容序列包含的一个或多个内容替换为特定的预定项,使得被替换的这些内容项被遮住,将这样处理后的历史内容序列作为训练数据并将被替换的内容作为相应的训练数据标识,对神经网络进行训练,从而能够在无需采用子序列进行数据提升的情况下生成准确的推荐模型。另外,由于训练时将训练数据中的部分内容项遮住(即替换为预定项),使得在训练时神经网络必须考虑被遮住项的上下文(context)信息,从而不仅考虑该被遮住项的过去的信息,也考虑其将来的信息,使得推荐模型更加准确。本申请实施例的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请实施例的实践而习得。应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。附图说明通过参照附图详细描述其示例实施例,本申请实施例的上述和其它目标、特征及优点将变得更加显而易见。此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并于说明书一起用于解释本申请的原理。图1示出根据本申请实施例的用于内容推荐的推荐模型生成方法的示意流程图。图2示出用于根据本申请实施例的推荐方法及建模方法中的神经网络的示意架构图。图3a和3b分别示出nextitnet算法中的以及根据本申请实施例的神经网络的残差块设计的示意图。图4示出根据本申请一实施例的内容推荐方法的示意流程图。图5示出根据本申请一示例性实施例的推荐模型生成装置500的示意组成框图。图6示出根据本申请一示例性实施例的内容推荐装置600的示意组成框图。图7示出根据本申请一示例性实施例示出的计算设备的示意组成框图。具体实施方式现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些示例实施方式使得本申请实施例的描述将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。附图仅为本申请实施例的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多示例实施方式中。在下面的描述中,提供许多具体细节从而给出对本申请实施例的示例实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本申请实施例的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、步骤等。在其它情况下,不详细示出或描述公知结构、方法、实现或者操作以避免喧宾夺主而使得本申请实施例的各方面变得模糊。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。现有技术中绝大多数基于会话的推荐(session-basedrecommendation)算法采用rnn模型,其中最早期的工作来自telefonic(西班牙电信)公司的grurec(门控循环单元推荐,参见session-basedrecommendationswithrecurrentneuralnetworks(利用rnn的基于会话的推荐),2016iclr,balázshidasi等)。rnn相关的推荐模型在近几年取得了较大的成功。基于rnn的会话推荐算法(例如grurec)存在两个明显缺陷:(1)如果会话长度较长,例如在短视频推荐场景,用户在一天的时间可以观看数千个视频(抖音每个视频平均长度约为15s),那么rnn建模时非常容易出现梯度爆炸或消失等问题。即便是lstm(长短期记忆)与gru(门控循环单元)建模,对非常长的序列仍然存在一定的次优等问题。(2)rnn的下一个内容项的输出要依赖于上一次输出的隐藏因素(hiddenfactors),因此很难利用现代计算的并行计算策略,例如gpu(图形处理单元)。通常rnn在gpu下加速效果不理想。最近,采用cnn(卷积神经网络)的推荐算法被提出,如caser与nextitnet。与此同时,基于attention(注意力机制)的推荐算法也被提出,例如基于transformer(变换)模型的推荐算法(self-attentivesequentialrecommendation(自注意序列推荐),2018icdm,wang-chengkang等)。simonfraser(西蒙菲莎)大学开发的caser算法(参见personalizedtop-nsequentialrecommendationviaconvolutionalsequenceembedding,2018wsdm,jiaxitang等)与tencent公司开发的nextitnet算法(参见asimpleconvolutionalgenerativenetworkfornextitemrecommendation,2019wsdm,fajieyuan等)是目前session-basedrecommendation(基于会话或者时序的推荐)技术中基于cnn的最先进的两个推荐算法。caser与nextitnet算法在训练过程中进行的数据提升如下所示,其中“=>”表示预测。caser:{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}=>16{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}=>15{0,0,1,2,3,4,5,6,7,8,9,10,11,12,13}=>14…{0,0,0,0,0,0,0,0,0,0,0,0,1,2,3}=>4nextitnet:{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}=>{2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}caser在2018年的wsdm(网络搜索与数据挖掘国际会议)上被提出。caser提出采用cnn替代rnn做会话或者时序(即时间序列)推荐,并采用了maxpooling(最大池化)等策略增大可视域(receptivefield),然而caser存在以下几个问题严重影响其性能:(1)caser的maxpooling机制丢失了大量的时序信息,从而必须依赖于生成较多的子序列的方式进行训练,从而导致在训练阶段子序列占用非常多的存储空间,并且子序列中的很短的会话使得最终的推荐效果难以达到最优;(2)caser虽然采用卷积神经网络,但是属于浅层结构,很难捕获较复杂的内容项(item)关系;(3)caser训练阶段仅仅使用过去的用户偏好信息,没有充分利用未来的偏好信息。受到caser的启发,nextitnet在wsdm2019由tencent(腾讯)、telefonic、格拉斯哥大学与新加坡国立大学提出。与caser相同,nextitnet也是采用卷积神经网络,但是nextitnet具有多层网络结构,同时训练时不同于caser,nextitnet不需要生成额外的子序列数据,并且可以根据之前的交互记录充分捕获用户的兴趣点。但是与caser一样,nextitnet每个当前的item在训练的时候仅仅利用过去的用户兴趣,训练过程是单向的;此外,nextitnet的残差网络较为简单。在本申请的实施例中,本申请的发明人提出了一种基于完形填空(gap-fillingtest)的数据提升方式。另外在一些实施例中,为了能够利用用户更长的点击序列,本申请的发明人提出采用双向层叠的空洞卷积神经网络(dilatedcnn)替代rnn模型,使得根据本申请实施例的推荐模型在gpu下具有比rnn更强的并行能力,而且具有更高的推荐准确性。在下面对根据本申请实施例的推荐模型建模方式与caser、nextitnet的建模方式分别进行了示例性描述。caser的建模方式:对于给定的内容集合,最大化最后一个内容的出现概率。在数学上表示为:max{p(xn,x1,x2,...,xn-1)}。像上文讨论的,这种训练方式不能充分利用{x1,x2,...,xn-1}之间的依赖关系,尤其是当n比较大时,因此在利用caser算法时,通常的做法是根据{x1,x2,...,xn-1}重新生成若干子序列,例如{0,...,0,x1x2,x3}、{0,...,0,x2,x3,x4}等。nextitnet的建模方式:对于给定的内容集合,最大化该内容序列的联合分布(即,第i个内容的出现概率是在前面i-1个内容出现的条件下最大),并将其分解成条件概率的乘积。在数学上表示为:根据本申请实施例的建模方式:对于给定的内容(例如视频)集合,利用完形填空策略将集合中的某个或某些内容遮住(即替换成特定的预定项),最大化被遮住的内容的出现概率(即,第i个被遮住的内容的出现概率是在所有其他内容出现的条件下最大,在数学上表示为:xδi.表示从{x1,x2,...,xn}中随机选取的被遮住的内容,也就是完形填空中的空,类似于语言填空题。例如,对于词语集合“我特别_这只可爱的小_,因为它_萌”,上式中的xδ1,xδ2,xδ3分别代表词语“喜欢”、“狗”、“非常”。下面结合附图来详细描述根据本申请实施例的推荐模型生成方法、内容推荐方法及其相关的设备。图1示出了根据本申请实施例的用于内容推荐的推荐模型生成方法的示意流程图。该示例方法可以由具有数据处理能力的任意计算设备来执行,该计算设备可以是服务器,也可以是终端设备。例如,视频网站/视频应用的服务器根据用户的视频观看记录实现该示例方法。又例如,终端设备根据该终端设备的用户的视频观看记录实现该示例方法。如图1所示,该示例方法包括:s110,获取用户的历史内容序列,其中所述历史内容序列为所述用户使用过的多个内容的时间序列。基于会话(session-based)的推荐通常是指根据用户之前一段时间的点击或者观看的历史记录,预测在下一个时刻用户可能感兴趣(包括点击、购买或观看等)的内容。在本申请实施例中,“用户使用过的内容”是指与用户有过交互的任何内容,所述“使用”可以包括但不限于点击、观看、收听、下载、打印或购买等,所述“内容/内容项”可以指代一切项,例如,视频、音频、新闻、其他文字内容、商品、广告,等等。用于执行该示例方法的计算设备可以获取用户的历史行为数据(例如视频观看记录)并生成历史内容序列。例如,用户在一段时间(例如从早上9:00到上午12:00)里依次观看了8个视频:视频1(视频id为1)、视频2(视频id为2)、视频3(视频id为3)、……视频8(视频id为8),则可以用视频id代表相应的视频,得到用户在这段时间里的历史内容序列:{1,2,3,4,5,6,7,8}。在该示例中,使用视频id代表相应的视频以生成历史内容序列,可以理解的是,也可以使用其他唯一标识符来表示相应的视频。s120,将所述历史内容序列的所述多个内容中的一个或多个内容分别替换成预定项,以得到作为训练数据的输入序列。在s120中,利用完形填空(gap-filling)策略对历史内容序列进行处理,以得到训练数据。即,将历史内容序列的某些元素扣除,形成完形填空中的“空”。在一个示例中,可以使用统一的预定项来表示“空”。例如,可以使用无任何实际意义的项作为预定项,例如,与候选内容集合中的任何内容都不对应的项(例如,生成一个与任何视频的id都不相同的id作为预定项)。在一个示例中,可以将历史内容序列的多个内容中预定数量(例如5个,10个,等)或预定比例(例如历史内容序列所包含的所有内容的30%)的内容分别替换成预定项。在一个示例中,可以从所述多个内容中随机地选择要替换成预定项的内容,即,要替换的内容的位置可以不是固定的,而是随机选择的,可以位于序列的头部、尾部或任意中间位置。在一个示例中,被替换的内容中的至少一个不是位于历史内容序列的尾部的内容,即被替换成预定项的内容中至少有一个是位于历史内容序列中间位置的内容。例如,对于历史内容序列{1,2,3,4,5,6,7,8},被替换的内容包括1,2,3,4,5,6,7中的至少一个。在一个示例中,对于历史内容序列{1,2,3,4,5,6,7,8},经过s120的处理,可以得到输入序列其中表示预定项,位于这些位置的原来的内容项2、5、7被扣除/遮住。s130,根据被替换的所述一个或多个内容生成作为所述训练数据的训练数据标识的输出序列,其中所述输出序列为被替换的所述一个或多个内容的时间序列;在s130中,根据被替换的内容生成与s120中得到的训练数据相对应的训练数据标识,作为输出序列。如上面在描述建模方式时所述,本申请实施例的推荐方法是最大化被遮住(被替换成预定项)的内容的出现概率,即使得推荐模型的预测结果指向被遮住的内容。也就是说,根据本申请实施例的推荐模型要预测的是被替换成预定项的内容。因此,对于在s120中得到的训练数据,其训练数据标识(即推荐模型的输出)应当为被替换内容的时间序列。例如,对于上面提到的训练数据在s130中生成其训练数据标识{2,5,7}。通过s120和s130,对于一个历史内容序列,可以得到一个训练数据及相应的训练数据标识。可以搜集一个或多个用户的多个历史内容序列,并对每个历史内容序列执行s120和s130,从而得到多个训练数据以及相应的训练数据标识,作为推荐模型的训练数据集。s140,使用多个所述训练数据以及相应的所述训练数据标识对神经网络进行训练,以得到用于内容推荐的推荐模型。在s140中,可以使用通过s110-s130得到的多个训练数据及相应的训练数据标识,对初始模型进行训练,以得到用于内容推荐的推荐模型。在一示例中,可以使用神经网络来实现推荐模型的建立。可以通过调整所述神经网络的参数,使得所述神经网络所确定的、被替换成预定项的内容的出现概率最大。即,在每次使用训练数据及相应的训练数据标识对神经网络进行训练时,通过调节神经网络的系统,使得在神经网络的输入为训练数据的情况下,神经网络的输出为训练数据标识。例如,对于训练数据调节神经网络的参数,使得其输出为{2,5,7}。可以看出,在被替换的内容不是位于序列尾部的情况下,神经网络在预测被替换的内容时必须考虑其将来(即该内容之后的)的信息;在被替换的内容位于序列中间(非头部或尾部)的情况下,神经网络在预测时不仅考虑其过去(即该内容之前的)的信息,还考虑其将来(即该内容之后的)的信息,从而使得预测结果更准确。在一个示例中,可以使用卷积神经网络来实现根据本申请实施例的推荐模型生成方法及内容推荐方法。在一示例中,所使用的卷积神经网络可以采用空洞卷积(dilatedconvolution)。图2示出了用于根据本申请实施例的推荐方法及建模方法中的神经网络的示意架构图。如图2所示,该示例神经网络200包括嵌入(embedding)层210、输入层220、卷积层230以及输出层240。下面对它们进行一一介绍。嵌入层210主要用于将例如内容id或上下文(context)信息的高维one-hot(独热)编码映射到低维嵌入(embedding)矩阵。在本申请实施例中,嵌入层210非常灵活,具有泛化能力,能够建模各种context信息。在一个示例中,嵌入层210主要包括内容嵌入(itemembedding)矩阵,矩阵的每一行代表一个内容的嵌入向量,对于被替换成预定项的内容,可以采用一个额外的嵌入向量(即其不同于任何内容的嵌入向量)来表示预定项。同时,嵌入层210可以充分利用context信息,例如用户的画像(profile)信息、时间空间信息以及社交朋友关系等。以用户画像信息为例,可以首先初始化一个用户id的嵌入向量,对于每一个会话期间的上下文信息(例如用户画像信息),根据用户id确定相应的上下文信息嵌入向量,并通过向量拼接(concat)方式结合该上下文信息嵌入向量与原始内容嵌入向量,作为最终的内容嵌入矩阵。如图2中所示,ei(i=0,1,......16)代表输入序列中第i+1个内容的原始内容嵌入向量,es代表预定项对应的嵌入向量,ec代表对应的上下文信息嵌入向量,例如其可以代表用户的id信息、时间信息、好友信息等。在图2所示的示例中,输入序列为{0,1,■,3,4,5,6,■,8,■,10,11,■,13,■,15,■},其中,“■”表示预定项,即原历史内容序列为{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},其中,内容2、7、9、12、14、16被替换成了预定项■,形成作为输入序列的训练数据。如图2所示,在该输入序列的情况下,输出层240的输出为被替换的内容的时间序列,即{2,7,9,12,14,16}。如图2所示,输入序列所包含的每个内容都被嵌入层210表示成嵌入矩阵,示出在相应内容id的下方。如图2所示,嵌入层210转换成的是二维矩阵,然而卷积层230采用的是一维卷积,因此在卷积过程中(例如在输入层220),做了一个维度变化,将嵌入矩阵的{长,宽}转换成{1,长,宽},使得嵌入矩阵的宽度维度被卷积网络当作通道(channel)处理。输入序列包含的各内容在嵌入层210处被转换成相应的内容嵌入向量(即原始内容嵌入向量ei(i=0,1,......16)与相应的上下文信息嵌入向量ec的拼接,或者预定项嵌入向量es与相应的上下文信息嵌入向量ec的拼接)之后,进入输入层220。神经网络200在输入层220接收输入序列的各内容嵌入向量,并在卷积层230处对输入序列进行卷积计算。在一个示例中,根据本申请实施例的神经网络200可以是空洞卷积神经网络。如图2所示,卷积层230包括第一卷积层231、第二卷积层232、第三卷积层233和第四卷积层234。在一个示例中,卷积层230采用一维空洞卷积建模。采用空洞卷积可以使可视域(receptivefield)以指数级别增加。如图2所示,l代表空洞(dilation),r表示可视域,图2中从输入层220向上至第四卷积层234的空洞设计为{1,2,4,8,16},那么,从第一卷积层231至第四卷积层234,相应的可视域分别为{3,7,15,31},也就是2m-1,m表示第m卷积层。在一个示例中,卷积填充(padding)方式采用same(相同)模式,卷积核(kernel)大小为3。在图2所示的示例中,作为示例示出了四层卷积层。但应当理解的是,卷积层230可以包括更多或更少的层。例如,在另一示例中,为了获得更大的可视域,可以增加卷积层数并设计相应的空洞。例如,在真实的长会话推荐场景中,如果一个用户一天观看了300个短视频,则可以重复图2中的空洞卷积架构,例如,在原来第四卷积层234的结构基础上向上增加两个卷积层:第五卷积层和第六卷积层,然后向上重复两次输入层220至第六卷积层的结构,并采用如下空洞设计:{1,2,4,8,16,32,64,1,2,4,8,16,32,64,1,2,4,8,16,32,64},从而使得最上面的卷积层的可视域能够达到379。卷积层230往上是softmax输出层240。不同于nextitnet(其计算输入序列的所有内容相对应的softmax)与caser(其仅计算最后一个内容的softmax),在根据本申请实施例的神经网络200中,只计算被遮住的(被替换成预定项的)内容(也就是完形填空的空)的softmax,例如图2中的{2,7,9,12,14,16}对应的softmax,并根据生成的softmax与真实的训练数据标识来计算交叉熵(crossentropy)损失函数。在图2中,右侧的交叉弧线示出了神经网络200的残差网络设计。根据本申请实施例的神经网络200的残差块结构利用了图像处理中的densenet(denselyconnectedconvolutionalnetworks,密集连接的卷积网络)技术。图3a和b分别示出了nextitnet算法中的以及根据本申请实施例的神经网络的残差块设计的示意图,其中1×1与1×3均表示卷积核大小(kernelsize)。如图3a中所示,nextitnet的残差块设计比较简单,即每一个空洞卷积层只接受前面一层的输出作为输入。而根据本申请实施例的神经网络的残差块连接设计更加密集,如图3b中的弧线所示,互相连接所有空洞卷积层,每一层都会接受之前层的输出作为输入。另外,nextitnet中残差运算时采用元素级加法操作(element-wiseaddition),而在本申请实施例中残差运算则是采用的拼接(concatation)操作,即卷积神经网络的每个卷积层被配置为:将从其他卷积层接收的残差输入与该卷积层的输入进行向量拼接,将得到的向量作为该卷积层的总输入。在根据本申请实施例的神经网络中,类似于nextitnet,采用空洞卷积来增加神经网络的可视域,但是不同于nextitnet的是,本申请实施例的卷积神经网络是双向网络(即,既能看到过去又能看到未来),而nextitnet网络是单向网络(只能看到过去)。在本申请实施例中,采用自然语言中的填空(gap-fillingtest)策略,采用随机抽样策略,按照一定的比例(通常30%左右)对于每个历史内容序列数据随机扣除序列中包含的内容项,并采用统一的符号或者任意一个没有实际意义的id替代,然后在神经网络的最后一层(输出层)对被扣除的位置进行预测。例如,用户的基于会话的历史内容序列为{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},利用gap-filling(完形填空)策略进行随机扣除并替换后,产生的新的序列为其中{2,7,9,12,14,16}为需要预测的内容id,为完形填空的空(即所述预定项)。通过采用gap-filling策略,可以避免信息泄漏(神经网络作弊)问题。在nextitnet算法中,每一层的卷积过程只能看到过去的信息(例如,如果预测4,那么网络可以看到{1,2,3})。而在本申请实施例的神经网络(例如如图2所示的神经网络200)中,在没有gap-filling的情况下,网络是可以看到整个序列的数据(仍然采用上面例子,如果预测4,那么网络可以看到{1,2,3,5,6,…,16}),因此在训练过程中,神经网络可以非常轻易地看到要预测的信息,而不需要关心上下文(context)信息。这就造成了无效的训练或者信息泄漏(或者作弊),表现为在训练过程中损失函数可以轻易地降到接近0的数值,但gap-filling是在最终预测阶段,却完全不具备任何泛化能力。在根据本申请实施例的神经网络中采用gap-filling设计之后,网络训练过程必须借助于上下文信息,包括过去的信息和未来的信息,但是由于内容本身被遮住,所以不会存在信息泄漏的情况。在根据本申请的另一实施例中,并不是对所有被扣除的内容全部用无意义的预定项替换,而是有时用一个随机选择的内容来替换。本申请的发明人发现,通过以这样的方式添加随机噪声,所得到的推荐模型的预测效果相对于完全用预定项代替要有一定的小幅度提升。例如,在训练过程中,80%的情况采用预定项替代被扣除的内容,10%的情况采用一个随机选择的内容id替代,10%的情况采用该内容本身(即不扣除)。在如上所述的生成推荐模型的方法的各实施例中,通过将用户的历史内容序列包含的一个或多个内容替换为特定的预定项,使得被替换的这些内容项被遮住,将这样处理后的历史内容序列作为训练数据并将被替换的内容作为相应的训练数据标识,对神经网络进行训练,从而能够在无需采用子序列进行数据提升的情况下生成准确的推荐模型。另外,由于训练时将训练数据中的部分内容项遮住(即替换为预定项),使得在训练时神经网络必须考虑被遮住项的上下文(context)信息,从而不仅考虑该被遮住项的过去的信息,也考虑其将来的信息,使得推荐模型更加准确,同时避免了信息泄露导致的神经网络作弊。在本申请的一些实施例中,根据该双向数据提升策略,设计了适配该策略的空洞卷积神经网络架构,从而通过对该神经网络进行训练来得到准确的推荐模型。另外,在本申请的一些实施例中,将神经网络的残差块设计为每一层都会接受之前层的输出作为输入,使得得到的推荐模型及其预测结果更加准确。根据如上实施例得到的推荐模型可以用于内容推荐方法中,例如基于会话的内容推荐方法中。图4示出了根据本申请一实施例的内容推荐方法的示意流程图,该方法可以由具有数据处理能力的任意计算设备来执行,该计算设备可以是服务器,也可以是终端设备。例如,视频网站/视频应用的服务器根据用户的视频观看记录实现该示例方法。又例如,终端设备根据该终端设备的用户的视频观看记录实现该示例方法。该计算设备设置有根据如上所述的推荐模型生成方法生成的推荐模型。如图4所示,该示例方法包括:s410,获取用户的历史内容序列,其中所述历史内容序列为所述用户使用过的多个内容的时间序列。用于执行该示例方法的计算设备可以如在s110中所述那样根据用户历史行为数据获知用户使用过的多个内容,从而得到用户的历史内容序列。对于该处理的细节,请参见步骤s110,在此不再赘述。例如,对于用户a,获知其历史内容序列为{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}。s420,在所述历史内容序列的尾部添加一预定项作为待求解内容,得到输入序列。对于在s410中得到的历史内容序列,为了利用通过如上所述的推荐模型生成方法而得到的推荐模型来预测用户a将会使用的下一个内容,在s420中在该历史内容序列的尾部添加一预定项作为待求解内容,作为待输入推荐模型的输入序列。这是因为,如在上面的模型生成方法实施例中所述,所述推荐模型是对输入序列中被遮住(即被替换为预定项)的内容进行预测,因此,为了求解用户在下一时刻要使用的内容,需要在历史内容序列的最后一个内容后添加被遮住的该内容,即预定项。有关预定项的描述请参见如上所述的推荐模型生成方法各实施例。在生成推荐模型时使用什么预定项,在使用该推荐模型进行预测时就使用相同的预定项。例如,对于用户a的历史内容序列{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},通过s420的处理,可以得到相应的输入序列其中为预定项。s430,将所述输入序列输入训练好的推荐模型,以得到作为所述推荐模型的输出的待推荐内容,其中所述待推荐内容与所述待求解内容相对应,表示待向所述用户推荐的内容。在s430中将在s420中得到的输入序列输入计算设备中已经训练好的推荐模型,得到该推荐模型预测出的内容。由推荐模型的生成过程可知,推荐模型是针对被遮住的内容进行预测。在输入序列中,被遮住的内容为历史内容的下一时刻的内容,即将来时刻的内容,因此,推荐模型预测的是用户在下一时刻将要使用的内容。通过推荐模型,可以预测出用户在下一时刻最大概率要使用的内容,将该内容作为推荐内容推荐给用户。通过如上所述的内容推荐方法实施例,可以通过使用对输入序列中被遮住的内容进行预测的推荐模型预测待推荐给用户的内容,能够得到准确度较高的预测结果。根据本申请实施例的推荐模型生成方法以及内容推荐方法可以用于基于会话的推荐场景。例如,根据用户在一个会话的时间(可以是10分钟,也可以是1小时,也可以是1天,或者更久)内进行了观看/点击/购买等行为,则可以根据用户的历史行为数据利用根据本申请实施例的内容推荐方法来预测未来用户可能感兴趣(例如观看/点击/购买等)的内容。以某视频应用上的短视频为例,用户a在一上午的时间内有效观看(例如播放率80%以上视为有效观看)了300个视频。那么,可以使用本申请实施例的推荐方法根据用户观看的300个视频,预测用户未来可能感兴趣的视频,从而达到个性化推荐效果。本申请的发明人受到语言测试中完形填空(gap-filling)思想的启发,提出了一种全新的数据提升方式,不仅能够利用会话数据中用户在过去的点击行为,而且能够利用未来的点击行为。在一些实施例中,针对该数据提升策略,设计了一种双向卷积神经网络架构,其中将网络设计为采用空洞卷积增加可视域,同时将densenet残差结构应用于该双向卷积神经网络。通过实验,发现本申请实施例的内容推荐方法相对于目前最新的卷积网络具有非常稳定且重要的提升。通常采用top-n排序(前n个的排序)指标(例如,ndcg、mrr等)来评测推荐方法的推荐效果。以应用1与应用2的会话数据为例,实验结果如下表1和2所示:表1:针对应用1(音乐库:13.7万,会话数量97万)数据表2:针对应用2(视频库:6.9万,会话数量50万)数据度量mrr@5recall@5ndcg@5mrr@20recall@20ndcg@20caser0.01220.02430.01520.01620.06700.0271nextitnet0.01190.02380.01480.01580.06700.0268本申请实施例0.01380.02810.01730.01840.07840.0313提升程度13.1%15.6%13.8%13.6%17.0%15.5%实验设置如下所示:应用1的每个用户的会话的长度为20。对于小于20的会话数据,采用填充方式在序列开始处填充0,直至序列长度达到20。应用2的每个用户的会话长度为30,填充方式与应用1相同。不同于应用1数据的是,需要指出的是,对于应用1和2数据,均尝试了不同的会话长度,从10到100,结果与以上两个表具有相似的提升幅度。实验中所有模型均采用adam作为优化器,nexitnet推荐均采用64作为batchsize(批处理大小)。实验发现nexitnet对batchsize不敏感,通常最优性能在32-64的范围内。对于本申请实施例的推荐方法,可以采用较大的batchsize,例如1024,这样收敛速度快,而且效果往往较优。学习率(learningrate)采用0.001,所收集的训练数据的80%作为训练推荐模型的训练数据,3%作为测试集,17%作为验证集合。如上所述,nextitnet采用图3a的残差块结构用于实验比较。实验硬件环境采用gputeslap40以及tensorflow版本1.7.0。根据本申请实施例的另一方面,还提供一种用于内容推荐的推荐模型生成装置,用于执行如上所述的推荐模型生成方法的各实施例。图5示出了根据本申请一示例性实施例的这样的装置500的示意组成框图,如图5所示,该装置500包括:获取模块510,其被配置为:获取用户的历史内容序列,其中所述历史内容序列为所述用户使用过的多个内容的时间序列;输入生成模块520,其被配置为:将所述历史内容序列包含的所述多个内容中的一个或多个内容分别替换成预定项,以得到作为训练数据的输入序列;输出生成模块530,其被配置为:根据被替换的所述一个或多个内容生成作为所述训练数据的训练数据标识的输出序列,其中所述输出序列为被替换的所述一个或多个内容的时间序列;训练模块540,其被配置为:使用多个所述训练数据以及相应的所述训练数据标识对神经网络进行训练,以得到用于内容推荐的推荐模型。根据本申请实施例的又一方面,还提供一种内容推荐装置,用于执行如上所述的推荐模型生成方法的各实施例。图6示出了根据本申请一示例性实施例的这样的装置600的示意组成框图,如图6所示,该装置600包括:获取模块610,其被配置为:获取用户的历史内容序列,其中所述历史内容序列为所述用户使用过的多个内容的时间序列;输入生成模块620,其被配置为:在所述历史内容序列的尾部添加一预定项作为待求解内容,得到输入序列;推荐生成模块630,其被配置为:将所述输入序列输入训练好的推荐模型,以得到作为所述推荐模型的输出的待推荐内容,其中所述待推荐内容与所述待求解内容相对应,表示待向所述用户推荐的内容。上述各装置中各个单元/模块的功能和作用的实现过程以及相关细节具体详见上述方法实施例中对应步骤的实现过程,在此不再赘述。以上各实施例中的各装置实施例可以通过硬件、软件、固件或其组合的方式来实现,并且其可以被实现为一个单独的装置,也可以被实现为各组成单元/模块分散在一个或多个计算设备中并分别执行相应功能的逻辑集成系统。以上各实施例中组成各装置的各单元/模块是根据逻辑功能而划分的,它们可以根据逻辑功能被重新划分,例如可以通过更多或更少的单元/模块来实现该装置。这些组成单元/模块分别可以通过硬件、软件、固件或其组合的方式来实现,它们可以是分别的独立部件,也可以是多个组件组合起来执行相应的逻辑功能的集成单元/模块。所述硬件、软件、固件或其组合的方式可以包括:分离的硬件组件,通过编程方式实现的功能模块、通过可编程逻辑器件实现的功能模块,等等,或者以上方式的组合。根据一个示例性实施例,上述各装置实施例中的每个可被实现为一种计算设备,该计算设备包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序在被所述处理器执行时,使得所述计算设备执行如上所述的定位方法或标定方法的各实施例中的任一个,或者,所述计算机程序在被所述处理器执行时使得该计算设备实现如上所述的各装置实施例的组成单元/模块所实现的功能。上面的实施例中所述的处理器可以指单个的处理单元,如中央处理单元cpu,也可以是包括多个分散的处理单元/处理器的分布式处理器系统。上面的实施例中所述的存储器可以包括一个或多个存储器,其可以是计算设备的内部存储器,例如暂态或非暂态的各种存储器,也可以是通过存储器接口连接到计算设备的外部存储装置。图7示出了这样的计算设备701的一个示例性实施例的示意组成框图。如图7所示,该计算设备可以包括但不限于:至少一个处理单元710、至少一个存储单元720、连接不同系统组件(包括存储单元720和处理单元710)的总线730。所述存储单元存储有程序代码,所述程序代码可以被所述处理单元710执行,使得所述处理单元710执行本说明书上述示例性方法的描述部分中描述的根据本申请各种示例性实施方式的步骤。例如,所述处理单元710可以执行附图中所示的各个步骤。存储单元720可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)721和/或高速缓存存储单元722,还可以进一步包括只读存储单元(rom)723。存储单元720还可以包括具有一组(至少一个)程序模块725的程序/实用工具724,这样的程序模块725包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。总线730可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。该计算设备也可以与一个或多个外部设备770(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该计算设备交互的设备通信,和/或与使得该计算设备能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口750进行。在一个实施例中,该计算设备还可以通过网络适配器760与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器760通过总线730与该计算设备的其它模块通信。应当明白,尽管图中未示出,但该计算设备可以使用其它硬件和/或软件模块来实现,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、磁盘阵列(redundantarraysofindependentdrives,raid)系统、磁带驱动器以及数据备份存储系统等。通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本申请实施方式的方法。在本申请的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被计算机的处理器执行时,使计算机执行上述方法实施例部分描述的各方法实施例。根据本申请的一个实施例,还提供了一种用于实现上述方法实施例中的方法的程序产品,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本申请实施例的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于无线、有线、光缆、射频(radiofrequency,rf)等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例的操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如c或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请实施例的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请实施例的一般性原理并包括本申请未公开的本
技术领域
中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由所附的权利要求指出。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1