本发明涉及信息推荐技术领域,尤其是涉及一种社交网络下基于深度学习的个性化推荐系统。
背景技术:
推荐系统的非形式化概念是resnick和varian在1997年给出的定义:“它是利用电子商务网站向客户提供商品的信息和建议,并帮助用户决策应该购买何类产品,模拟销售人员帮助指导用户完成网上购买的过程”。
推荐系统能够挖掘出用户潜在的喜欢的内容,减少无用信息对用户的干扰,使得用户在互联网上快速地发现自己想要购买的商品、感兴趣的新闻、可能潜在的好友。并且这些推荐结果是动态地,因为用户的兴趣随着时间、场景的变化而发生变化,最终的推荐结果能够吻合用户的即时偏好,给用户呈现真正感兴趣的信息内容。一个好的推荐系统不仅能够给用户推荐一些他所喜欢的信息,同时这些内容应该具有新颖性,给用户推荐的信息不应该出现多次的重复,最后推荐系统应该能够挖掘长尾信息,一个网站上的大部分商品只被少部分人所接触,一个好的推荐系统所做出的推荐结果不仅仅只是包含热门物品,而应该多多挖掘数量巨大的冷门物品,这样才能给应用带来巨大利润和商业规模。
伴随着社交网络的蓬勃发展,人们也很期待互联网的信息服务如:社交搜索、社交交易等,如何与社交网络相结合,为用户提供更人性化,更有价值的信息服务。以个性化推荐为核心的服务应用延展到了互联网用户日常信息流的方方面面,同时个性化推荐系统也在结合交叉学科和新技术不断的发展。从早期的协同过滤算法、基于模型的推荐算法、混合推荐算法到结合社交信息的社会化推荐算法,无不显示着推荐系统蓬勃的发展势头。
然而,我们发现现有的推荐系统已经不能很好的满足社交网络新环境下的个性化服务需求,无法解决已存在的和新出现的问题。由于社交网络呈现无尺度特性,极少量的社交用户拥有大量的社交关系链接和社交互动行为,而大部分社交用户仅只有少量的社交关系链接和社交互动行为,当将推荐系统应用到社交环境中时,将面临着推荐系统的数据稀疏性问题。同时,当新用户注册登录到基于社交网络的电子商务服务平台,由于缺失与该新用户相关的背景或者兴趣喜好数据,推荐系统无法给出很好的推荐结果,这就是社交网络环境中推荐系统所面临的冷启动问题。冷启动问题导致推荐系统的推荐质量很差,不能满足新注册用户的需求,他们将很可能不想再次登录该电子商务服务平台。
技术实现要素:
本发明的目的就是为了解决上述现有技术存在的缺陷而提供一种准确度高、处理速度快且简单易实现的社交网络下基于深度学习的个性化推荐系统。
本发明技术方案:
主要由离线学习和在线推荐两个模块组成。
模块1(离线学习模块)包括三个步骤:
步骤1:训练样本集合生成。本发明在推荐系统中选取一定数量的现有用户,并针对被选取的每个用户,获取该用户最近购买过的若干物品以及从未购买过的若干物品。对于每个“用户-物品”对,将它表示成特征的形式,其中用户特征包括用户在推荐系统中登记的人口统计学特征、用户的社交网络特征以及用户联系最紧密的若干好友的人口统计学特征和社交网络特征,物品特征包括物品的固有特征、物品类别特征、物品购买行为特征以及物品的社交网络特征。在此基础上,产生两个形式的训练样本:
(1)如果用户购买过该物品,那么生成样本(用户特征,物品特征,+1),
(2)如果用户从未购买过该物品,那么生成样本(用户特征,物品特征,-1)。
步骤2:带注意力机制的深度卷积神经网络学习模型构造。学习模型从输入端到输出端,共由四个部件组成:
(1)特征嵌套层,将输入的训练样本转换成用户特征矩阵和物品特征矩阵,
(2)注意力机制层,基于特征嵌套层的用户特征矩阵和物品特征矩阵,分别产生用户注意力特征矩阵和物品注意力特征矩阵,
(3)特征融合层,融合特征嵌套层和注意力机制层中的用户特征矩阵和用户注意力特征矩阵,以及物品特征矩阵和物品注意力特征矩阵,分别产生用户融合矩阵和物品融合矩阵,
(4)卷积-池化层,基于特征融合层的用户融合矩阵和物品融合矩阵,分别产生全局用户池化向量和全局物品池化向量,
(5)逻辑回归层,基于卷积-池化层的全局用户池化向量和全局物品池化向量,输出一个0-1间的实数。
步骤3:学习模型参数迭代优化。对步骤2中的学习模型,构造其损失函数,并基于步骤1中的训练样本,采用不同的优化方法对损失函数中的参数进行迭代优化,并识别出最优的优化方法。
模块2(在线推荐模块)对于新注册的用户,生成该用户的用户特征,并对推荐系统中的每个物品,生成其物品特征,然后基于模块1中获得的学习模型,产生新注册用户购买该物品的概率,并最终将概率值最高的若干物品返回给用户。
本发明具有以下优点:
1、本发明把推荐过程中耗时的学习模型通过离线方式来构造,这样能够显著降低向用户推荐物品的时间开销。
2、本发明充分提取社交网络下的用户和物品特征,并作为输入进行深度学习,能够显著提高物品的推荐准确度,并有效解决新注册用户的冷启动问题。
3、本发明主要由两个模块组成,每个步骤的实施过程简单、容易实现,同时不受具体开发工具和编程软件的限制,并且能够快速扩展到分布式和并行化的开发环境中。
附图说明
图1本发明的技术框架图。
具体实施方式
基于本发明技术方案,以下结合附图给出详细实施例。
离线学习模块中步骤1(训练样本集合生成)的具体实施方式如下:
本发明在推荐系统中随机选取5000个现有用户,对于其中每个用户ui(1≤i≤5000),选取ui最近购买过的ai个物品和从未购买过的bi个物品,其中ai的取值为u购买过所有物品数量的1/2,bi取值为ai的20倍,即bi=20×ai,从而得到
对于每个“用户-物品”对(u,g),本发明首先获取u的用户特征列表c(u),包括:(1)u在推荐系统中登记的人口统计学特征u.d,包括年龄、地址、性别、职业、收入、文化程度、婚否、有无小孩,(2)u的社交网络特征u.s,包括注册时间、活跃度、信誉度、影响力、好友数、评论数,(3)u联系最紧密的20个好友u1,…,u20的人口统计学特征和社交网络特征,从而可得u的用户特征列表c(u)=<u.d,u.s,u1.d,u1.s,u2.d,u2.s,…,u20.d,u20.s>;然后,获取g的物品特征列表c(g),包括:(1)g的固有特征g.i,包括价格、颜色、保质期、重量、容积、产地、材质、上架时间、适合年龄层,(2)g的类别特征g.r,包括大类名称、小类名称,(3)g的购买行为特征g.b,包括最近被购买的时间、最近被购买的数量、最近被退货时间、最近被退货数量、最近一个月被购买的数量、最近一个月被退货的数量,(4)g的社交网络特征g.s,包括和g同时被购买最频繁10个物品g1,g2,…,g10的固有特征、类别特征和购买行为特征、最近一个月购买g数量最多的10个用户u1,u2,…,u10的人口统计学特征和社交网络特征,从而可得g的用物品特征列表c(g)=<g.i,g.r,g.b,g1.i,g1.r,g1.b,…,g10.i,g10.r,g10.b,u1.d,u1.s,…,u10.d,u10.s>。
在此基础上,本发明生成包含
离线学习模块中步骤2(带注意力机制的深度卷积神经网络学习模型构造)的具体实施方式如下:
1.特征嵌套层包含两个独立的特征嵌套部件,即用户特征嵌套部件和物品特征嵌套部件。
用户特征嵌套部件接收每个训练样本中的用户特征列表c(u)作为输入,它包含42个子特征u.d,u.s,u1.d,u1.s,u2.d,u2.s,…,u20.d,u20.s,并对每个子特征,用户特征嵌套部件利用word2vec词嵌套工具将该子特征转换成长度为200的一维向量。因此,对于每个训练样本,用户特征嵌套部件产生行数为200且列数为42的二维用户特征矩阵mu。
物品特征嵌套部件接收每个训练样本中的用户特征列表c(g)作为输入,它包含53个子特征g.i,g.r,g.b,g1.i,g1.r,g1.b,…,g10.i,g10.r,g10.b,u1.d,u1.s,…,u10.d,u10.s,并对每个子特征,物品特征嵌套部件同样利用word2vec词嵌套工具将该子特征转换成长度为200的一维向量。因此,对于每个训练样本,物品特征嵌套部件产生行数为200且列数为53的二维物品特征矩阵mg。
2.注意力机制层以特征嵌套层中的mu和mg两个矩阵为输入,首先构造行数为42且列数为53的二维注意力矩阵ma,ma第i行第j列单元的取值ma[i,j]的计算公式为:
其中mu[i]为矩阵mu的第i列向量,mg[j]为矩阵mg的第j列向量,
接着,注意力机制层引入两个权重矩阵wu和wg,其中wu的行数为200且列数为53,wg的行数为200且列数为42,并基于ma来分别获取用户注意力特征矩阵au和物品注意力特征矩阵ag:
au=wu×mat,
ag=wg×ma,
其中mat为矩阵ma的转置矩阵。
3.特征融合层以特征嵌套层中的mu和mg以及注意力机制层中的au和ag这四个矩阵为输入,产生两个矩阵fu和fg,其中fu为用户融合矩阵,行数为200且列数为42,其第i行第j列单元的取值fu[i,j]的计算公式为:
fu[i,j]=mu[i,j]×au[i,j],
而fg为物品融合矩阵,行数为200且列数为53,其第i行第j列单元的取值fg[i,j]的计算公式为:
fu[i,j]=mg[i,j]×ag[i,j]。
4.卷积-池化层包含8个部件,分别为短步用户卷积部件、短步用户池化部件、长步用户卷积部件、全局用户池化部件、短步物品卷积部件、短步物品池化部件、长步物品卷积部件、全局物品池化部件。
(1)短步用户卷积部件接收特征融合层中的fu矩阵作为输入,首先将fu转换成行数为200且列数为44的矩阵efu,使得:
然后,引入一个行数为250且列数为400的权重矩阵swu,并产生短步用户卷积矩阵scu,其行数为250且列数为43。scu每一列的取值scu[:,j]为:
其中tanh为双曲正切函数,
(2)短步用户池化部件接收短步用户卷积矩阵scu作为输入,并产生短步用户池化矩阵spu,其行数为250且列数为42,其第i行第j列单元的取值spu[i,j]的计算公式为:
spu[i,j]=(scu[i,j]+scu[i,j+1])/2。
(3)长步用户卷积部件接收短步用户池化矩阵spu作为输入,首先将spu转换成行数为250且列数为48的矩阵epu,使得:
然后,引入一个行数为300且列数为1000的权重矩阵lwu,并产生长步用户卷积矩阵lcu,其行数为350且列数为45。lcu每一列的取值lcu[:,j]为:
其中tanh为双曲正切函数,
(4)全局用户池化部件接收长步用户卷积矩阵lcu作为输入,并产生全局用户池化向量gpu,其长度为300,其第i个分量的取值gpu[i]的计算公式为:
(5)短步物品卷积部件接收特征融合层中的fg矩阵作为输入,首先将fg转换成行数为200且列数为55的矩阵efg,使得:
然后,引入一个行数为250且列数为400的权重矩阵swg,并产生短步物品卷积矩阵scg,其行数为250且列数为54。scg每一列的取值scg[:,j]为:
其中tanh为双曲正切函数,
(6)短步物品池化部件接收短步物品卷积矩阵scg作为输入,并产生短步物品池化矩阵spg,其行数为250且列数为53,其第i行第j列单元的取值spg[i,j]的计算公式为:
spg[i,j]=(scg[i,j]+scg[i,j+1])/2。
(7)长步物品卷积部件接收短步物品池化矩阵spg作为输入,首先将spg转换成行数为250且列数为59的矩阵epg,使得:
然后,引入一个行数为300且列数为1000的权重矩阵lwg,并产生长步物品卷积矩阵lcg,其行数为350且列数为56。lcg每一列的取值lcg[:,j]为:
其中tanh为双曲正切函数,
(8)全局物品池化部件接收长步物品卷积矩阵lcg作为输入,并产生全局物品池化向量gpg,其长度为300,其第i个分量的取值gpg[i]的计算公式为:
5.逻辑回归层接收卷积-池化层中的全局用户池化向量gpu和全局物品池化向量gpg作为输入,并引入一个长度为600的向量wl,并产生一个输出值v:
其中e为自然对数底数,变量z的计算公式为:
离线学习模块中步骤3(学习模型参数迭代优化)的具体实施方式如下:
对于步骤2中的学习模型,本发明首先构造其损失函数如下:
其中θ={wu,wg,swu,lwu,swg,lwg,wl}为步骤2学习模型中各权重参数所构成的集合,
接着,本发明基于训练样本集合t,分别利用随机梯度下降(sgd:stochasticgradientdescent)、自适应矩估计(adam:adaptivemomentestimation)、涅斯捷罗夫动量(nm:nesterovmomentum)以及自适应梯度(ag:adaptivegradient)这四个优化方法对最小化损失函数
模块2(在线推荐模块)的具体实施方式如下:
对于新注册的用户