一种基于双向循环神经网络的个性化推荐系统及方法与流程

文档序号:15492578发布日期:2018-09-21 20:55阅读:170来源:国知局

本发明涉及个性化推荐技术领域,尤其涉及一种基于双向循环神经网络的个性化推荐系统及方法。



背景技术:

当前,网络服务商为用户提供了诸如新闻、商品、图片、视频、音频和文档等(以下统一简称为物品)的在线推荐服务。为更好提供服务追求商业利益最大化,在线推荐服务提供商会记录用户对物品的行为信息,例如记录用户对物品的点击、购买(使用)、转发和评论等。如何根据用户的行为信息为用户提供精准个性化推荐,是个性化推荐系统所面临的重大挑战,其主要表现在:

第一、就表达的用户偏好而言,用户的不同行为代表不同的用户偏好。例如,点击、转发物品等行为意味着用户对该物品有兴趣。而用户为物品给予高评分,往往意味着用户喜欢该物品。

第二、用户行为发生的时间顺序反映了用户偏好的变化过程。用户行为发生顺序为设计个性化推荐系统时需重点考虑的因素。

因此,如何高效利用用户多种行为信息及用户行为发生顺序,为用户提供精准的个性化推荐,是个性化推荐系统设计人员亟待解决的问题。



技术实现要素:

针对现有技术的缺陷,本发明提供一种基于双向循环神经网络的个性化推荐系统及方法,实现根据用户的行为信息为用户提供精准个性化推荐。

一方面,本发明提供一种基于双向循环神经网络的个性化推荐系统,包括用户行为收集模块、样本生成模块、权重矩阵确定模块、模型选择模块、模型泛化能力评估模块和个性化推荐列表生成模块;

所述用户行为收集模块,收集大量用户对物品的行为信息,并将其发送到样本生成模块;

所述样本生成模块,根据用户行为收集模块收集的行为信息,对每一个用户全部行为信息按时间排序并生成相应的样本,并形成样本集,在样本集中抽取96%的样本作为训练集,在样本集剩余的样本抽取50%的样本作为验证集,另外50%的样本作为测试集;

所述权重矩阵确定模块,在样本生成模块生成的训练集上训练双向循环神经网络模型,确定双向循环神经网络中的权重矩阵;

所述模型选择模块,在样本生成模块生成的验证集上进行双向循环神经网络模型的选择;

所述模型泛化能力评估模块,在样本生成模块生成的测试集上评估模型选择模块选中的双向循环神经网络模型的模型泛化能力;

所述个性化推荐列表生成模块,利用模型泛化能力评估模块评估的具有泛化能力的双向循环神经网络模型为每一个用户生成个性化推荐列表。

另一方面,本发明还提供一种采用上述基于双向循环神经网络的个性化推荐系统进行个性化推荐的方法,包括以下步骤:

步骤1、用户行为收集模块收集用户对物品的大量行为信息并将其发送到样本生成模块;

步骤2、样本生成模块根据用户行为收集模块收集的行为信息,对每一个用户全部行为信息按时间排序并生成相应的样本,集合全部样本形成样本集,在样本集中抽取96%的样本作为训练集,在样本集剩余的样本抽取50%的样本作为验证集,另外50%的样本作为测试集;

步骤3、权重矩阵确定模块在样本生成模块生成的训练集上训练双向循环神经网络模型,确定双向循环神经网络中的权重矩阵,具体方法为:

步骤3.1、基于在线用户对物品的行为信息及用户信息构建双向循环神经网络模型;

所述双向循环神经网络包括输入层、隐藏层以及输出层,其中,所述输入层的输入包括用户个人信息u、用户t时刻的行为信息a(t)以及用户t时刻行为的目标物品信息i(t);所述隐藏层的输出为t时刻隐藏层的输出s(t);所述输出层的输出为t时刻输出层的输出o(t);

所述输入层的输入与隐藏层的输出之间存在下列函数关系:

其中,为t时刻正向输入隐藏层的输入值,为t时刻反向输入隐藏层的输入值,s(t)是一个h×1的向量,表示t时刻隐藏层的输出,为一个有h个元素输入向量,用于表示t-1时刻正向输入隐藏层的输出,为一个有h个元素输入向量,用于表示t-1时刻正向输入隐藏层的输出,h为隐藏层维数;分别表示输入层a(t)、u连接到正向输入隐藏层的权重矩阵,分别表示输入层a(t)、u连接到反向输入隐藏层的权重矩阵,wforward为正向输入隐藏层状态的变换权重矩阵,wbackward为正向输入隐藏层状态的变换权重矩阵,f()为sigmoid函数,

所述隐藏层的输出s(t)与输出层的输出o(t)之间存在下列函数关系:

o(t)=g(ys(t))

其中,y是隐减层连接到输出层的权重矩阵,g()为softmax函数,

步骤3.2、随机生成权重矩阵wforward和wbackward;

步骤3.3、利用基于梯度下降的反向传播算法(bptt)训练双向循环神经网络,逐层调整参数权重矩阵,直至模型训练满足收敛条件,即模型训练迭代次数达到上限,或待优化的目标函数的值不再减小;如果满足收敛条件,则确定了双向循环神经网络中的权重矩阵,否则执行步骤3.4;

所述迭代次数上限为k≤100,待优化的目标函数采用交叉嫡(crossentropy),如下公式所示:

其中,e为待优化的目标函数,ti是第t时刻的训练样本中的物品编号,s是训练样本总数;

步骤3.4、继续在训练集上训练双向循环神经网络;

步骤4、模型选择模块在样本生成模块生成的验证集上进行双向循环神经网络模型选择,选择表现最优的双向循环神经网络模型,具体方法为:

步骤4.1、通过增加双向循环神经网络模型的隐藏层数、增多模型隐藏层节点数、增加模型训练时间、使用adam优化算法和神经架构搜索的措施来增加双向循环神经网络模型容量,减小模型偏差,解决模型欠拟合问题;

步骤4.2、通过减少双向循环神经网络模型的隐藏层数、减少模型隐藏层节点数、l2正则化、数据集增强、dropout和神经架构搜索的措施来减小双向循环神经网络模型容量,减小模型方差,解决模型过拟合问题;

步骤5、模型泛化能力评估模块在样本生成模块生成的测试集上,根据个性化推荐的正确率评估选中的双向循环神经网络模型的泛化能力;

步骤6、个性化推荐列表生成模块利用模型泛化能力评估模块评估的具有泛化能力的双向循环神经网络模型为每一个用户生成个性化推荐列表,具体方法为:

对每一个用户u及其最后一个训练样本i(tn),a(tn)以及对应的隐藏层s(tn-1),计算输出层的输出o(tn),取o(tn)最大的前k个元素,其编号即为要个性化推荐的物品编号。

由上述技术方案可知,本发明的有益效果在于:本发明提供的一种基于双向循环神经网络的个性化推荐系统及方法,所构建的双向循环神经网络模型在训练过程中某一时间步,不仅学习用户过去时间步的行为信息,而且学习用户未来时间步的行为信息,将更全面对用户的行为信息进行建模,进而做出更好的推荐。同时,本发明的个性化推荐系统及方法,无需人工设计个性化推荐系统的所需的特征表示,双向循环神经网络模型将自动从用户信息与某一时刻用户的行为信息中抽取相应的特征表示,这将大大减小人工设计特征表示所需的时间,提高个性化推荐系统的设计效率。随着个性化推荐系统用户量的增多,用户行为信息的增多,在更大用户数据量上再训练的个性化推荐系统也将进一步提升个性化推荐性能,从而形成良性循环。

附图说明

图1为本发明实施例提供的基于双向循环神经网络的个性化推荐系统的结构框图;

图2为本发明实施例提供的基于双向循环神经网络的个性化推荐方法的流程图;

图3为本发明实施例提供的双向循环神经网络模型示意图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

本实施例以真实数据集movielen为例,使用本发明的基于双向循环神经网络的个性化推荐系统及方法为用户提供精准个性化推荐。

一方面,本发明提供一种基于双向循环神经网络的个性化推荐系统,如图1所示,包括用户行为收集模块、样本生成模块、权重矩阵确定模块、模型选择模块、模型泛化能力评估模块和个性化推荐列表生成模块;

用户行为收集模块,收集大量用户对物品的行为信息,并将其发送到样本生成模块;

样本生成模块,根据用户行为收集模块收集的行为信息,对每一个用户全部行为信息按时间排序并生成相应的样本,并形成样本集,在样本集中抽取96%的样本作为训练集,在样本集剩余的样本抽取50%的样本作为验证集,另外50%的样本作为测试集;

权重矩阵确定模块,在样本生成模块生成的训练集上训练双向循环神经网络模型,确定双向循环神经网络中的权重矩阵;

模型选择模块,在样本生成模块生成的验证集上进行双向循环神经网络模型的选择;

模型泛化能力评估模块,在样本生成模块生成的测试集上评估模型选择模块选中的双向循环神经网络模型的模型泛化能力;

个性化推荐列表生成模块,利用模型泛化能力评估模块评估的具有泛化能力的双向循环神经网络模型为每一个用户生成个性化推荐列表。

另一方面,本发明还提供一种采用上述基于双向循环神经网络的个性化推荐系统进行个性化推荐的方法,如图2所示,包括以下步骤:

步骤1、用户行为收集模块收集用户对物品的大量行为信息并将其发送到样本生成模块;

步骤2、样本生成模块根据用户行为收集模块收集的行为信息,对每一个用户全部行为信息按时间排序并生成相应的样本,集合全部样本形成样本集,在样本集中抽取96%的样本作为训练集,在样本集剩余的样本抽取50%的样本作为验证集,另外50%的样本作为测试集;

步骤3、权重矩阵确定模块在样本生成模块生成的训练集上训练双向循环神经网络模型,确定双向循环神经网络中的权重矩阵,具体方法为:

步骤3.1、基于在线用户对物品的行为信息及用户信息构建如图3所示的双向循环神经网络模型;

双向循环神经网络包括输入层、隐藏层以及输出层,其中,所述输入层的输入包括用户个人信息u、用户t时刻的行为信息a(t)以及用户t时刻行为的目标物品信息i(t);所述隐藏层的输出为t时刻隐藏层的输出s(t);所述输出层的输出为t时刻输出层的输出o(t);

输入层的输入与隐藏层的输出之间存在下列函数关系:

其中,为t时刻正向输入隐藏层的输入值,为t时刻反向输入隐藏层的输入值,s(t)是一个h×1的向量,表示t时刻隐藏层的输出,为一个有h个元素输入向量,用于表示t-1时刻正向输入隐藏层的输出,为一个有h个元素输入向量,用于表示t-1时刻正向输入隐藏层的输出,h为隐藏层维数;分别表示输入层a(t)、u连接到正向输入隐藏层的权重矩阵,分别表示输入层a(t)、u连接到反向输入隐藏层的权重矩阵,wforward为正向输入隐藏层状态的变换权重矩阵,wbackward为正向输入隐藏层状态的变换权重矩阵,f()为sigmoid函数,

隐藏层的输出s(t)与输出层的输出o(t)之间存在下列函数关系:

o(t)=g(ys(t))

其中,y是隐减层连接到输出层的权重矩阵,g()为softmax函数,

步骤3.2、随机生成权重矩阵wforward和wbackward;

步骤3.3、利用基于梯度下降的反向传播算法(bptt)训练双向循环神经网络,逐层调整参数权重矩阵,直至模型训练满足收敛条件,即模型训练迭代次数达到上限,或待优化的目标函数的值不再减小;如果满足收敛条件,则确定了双向循环神经网络中的权重矩阵,否则执行步骤3.4;

迭代次数上限为k≤100,待优化的目标函数采用交叉嫡(crossentropy),如下公式所示:

其中,e为待优化的目标函数,ti是第t时刻的训练样本中的物品编号,s是训练样本总数;

步骤3.4、继续在训练集上训练双向循环神经网络;

步骤4、模型选择模块在样本生成模块生成的验证集上进行双向循环神经网络模型选择,选择表现最优的双向循环神经网络模型,具体方法为:

步骤4.1、通过增加双向循环神经网络模型的隐藏层数、增多模型隐藏层节点数、增加模型训练时间、使用adam优化算法和神经架构搜索的措施来增加双向循环神经网络模型容量,减小模型偏差,解决模型欠拟合问题;

步骤4.2、通过减少双向循环神经网络模型的隐藏层数、减少模型隐藏层节点数、l2正则化、数据集增强、dropout和神经架构搜索的措施来减小双向循环神经网络模型容量,减小模型方差,解决模型过拟合问题;

步骤5、模型泛化能力评估模块在样本生成模块生成的测试集上,根据个性化推荐的正确率评估选中的双向循环神经网络模型的泛化能力;

步骤6、个性化推荐列表生成模块利用模型泛化能力评估模块评估的具有泛化能力的双向循环神经网络模型为每一个用户生成个性化推荐列表,具体方法为:

对每一个用户u及其最后一个训练样本i(tn),a(tn)以及对应的隐藏层s(tn-1),计算输出层的输出o(tn),取o(tn)最大的前k个元素,其编号即为要个性化推荐的物品编号。

本实施例中,将本发明所述基于双向循环神经网络的个性化推荐系统及方法与现有的推荐方法clim、bprmf、weightedbprmf和softmaqrginrankingmf在真实数据集movielen上进行比较,比较结果如表1所示,其中,test=10表示每一个用户选最后10个评分作为测试数据,其它作为训练数据。test=20表示每一个用户选最后20个评分作为测试数据,其它作为训练数据。d=5表示隐藏层维数为5,d=10表示隐藏层维数为10。在不同实验参数配置下重复实验5次。表1中还列出了在不同实验参数配置下的fl@10和fl@20的均值和标准差,从表中可以看出,本发明的推荐系统及方法相较于其他推荐方法在不同实验条件下都取得了最佳结果,而且比次优结果有至少20%的提升。

表1本发明推荐方法与现有推荐方法在movielen(im)数据集上的比较结果

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求所限定的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1