李孟浩,赵学健,余云峰,宋学永,孙知信
1(南京邮电大学 现代邮政学院,南京 210003) 2(国基北盛(南京)科技发展有限公司,南京 210001)
互联网信息的爆炸性增长是当今时代蓬勃发展的标志.人们每天都可以轻松获得足够的信息,大数据时代让人们在生活、学习、工作等方方面面都收获了巨大的便利.但如今每天新增的数据量字节数达到了惊人的1018量级,信息数据量增长速度之快已经大大超出了人们的接受范围,人们在面对广泛的,各种各样的信息时时常会感到无助.“信息过载”甚至将用户淹没在信息的海洋中[1,2].到底该如何获得自己真正想要的信息成了一个主要问题.
搜索引擎可以帮助人们在广阔的信息海中搜索并找到他们想要的东西,但是,搜索引擎只是接受命令并被动地服从命令,不会主动而独立的提供用户感兴趣的信息.推荐系统在此背景下初显锋芒.推荐系统可以帮助用户避免信息超载,为其提供符合自身需求的推荐,提高信息的有效利用.因此,推荐系统已经成为了社会各界研究的热点问题.在社交网络、音乐电影推荐[2,3]以及电商平台等各个领域都能看见推荐系统的应用[4].
本文将目前的主流推荐算法进行分类,并对推荐算法涉及的评价指标进行了总结归纳.在此基础上,分别介绍了传统推荐算法以及基于神经网络的推荐算法的最新研究进展,对推荐算法的未来的发展方向以及研究热点进行了总结展望.
推荐算法是推荐系统的核心,传统推荐算法主要分为3类:基于内容的推荐算法,协同过滤(CF)的推荐算法和混合推荐算法[5,6].
基于内容的推荐是搜寻用户过去偏好的项目,通过产生与之类似相似的项目来进行推荐.协同过滤算法主要分成两大类,一种是基于记忆的协同过滤,另外一种是基于模型的协同过滤,而基于用户以及基于项目的协同过滤都属于基于记忆的协同过滤[7],并且在推荐算法中应用是最广泛的.混合推荐是通过将多种单一的算法相结合形成推荐性能高于原单一算法的多融合算法,下文也会对混合算法也可以进行更细致的分类.与协同过滤算法相比,基于内容的推荐算法对用户的历史数据没有过多要求,也很少出现数据稀疏和冷启动的问题.但是,该算法的可扩展性很差,该方法不适合多媒体数据的推荐也是由于其特征提取方法的局限性.协同过滤算法具有丰富的推荐结果,易于找到用户的兴趣和爱好.但是,协同过滤算法有严重的数据稀疏性和冷启动问题.混合推荐算法在某种程度上改善了稀疏性和冷启动问题,但其框架复杂且难以实现.
深度学习在机器学习领域扮演着重要的角色,近几十年来,深度学习凭借其技术优势在计算机视觉等众多领域取得了巨大的成功[8].学术界和工业界正在竞相将深度学习应用到更广泛的应用领域,这是因为它有能力解决许多复杂的任务,同时提供最先进的成果,推荐系统就是其中之一,将深度学习应用到推荐系统中也是现在的研究热点.
本文主要介绍的算法分类如图1所示.
图1 文章介绍的算法分类图Fig.1 Classification diagram of recommendation algorithms
推荐算法的评价方法主要包含在线和离线两种方式,如表1所示.在线评价方式可以通过调查问卷或者在线实验的方式实现;离线方式主要是指离线实验分析.推荐算法的评价指标主要包括用户满意度、评分预测、准确率、平均准确率、召回率、覆盖率、多样性、新颖性、惊喜度、实时性、健壮性等.
表1 推荐算法重要评价指标表Table 1 Evaluation index of recommendation algorithms
评分预测的预测准确度一般根据均方根误差(RMSE)和平均绝对误差(MAE)计算.RMSE定义如下式:
(1)
MAE采用绝对值计算预测误差,定义如下:
(2)
推荐算法的准确率是指根据用户在训练集上的行为为用户做出的推荐列表与用户在测试集上的行为列表的交集与为用户做出的推荐列表的比值,计算如公式(3)所示:
(3)
推荐算法的召回率是指根据用户在训练集上的行为为用户做出的推荐列表与用户在测试集上的行为列表的交集与用户在测试集上的行为列表的比值,计算如公式(4)所示:
(4)
其中,用户在测试集上表现出的行为列表用T(u)表示,R(u)表示根据训练数据集推荐系统给用户提供的推荐列表.
覆盖率描述的是给每个用户进行Top(N)推荐时,推荐物品数占物品总数的比例.推荐算法的覆盖率高并不代表该算法一定有精确的推荐能力,但覆盖率作为一个重要的推荐系统性能评价指标一样不容忽视.覆盖率定义如公式(5)所示:
(5)
其中I表示总物品集合,R(u)表示经过推荐算法生成的长度为N的商品推荐列表,用户集合则用U来表示.
多样性是指推荐算法生成的推荐列表不能只是满足用户的单个兴趣点,而是要能够满足用户的多个兴趣点,从而能够提高用户满意度.多样性计算公式如下:
(6)
其中,s(i,j)表示的是不同物品之间的相似度,s(i,j)∈[0,1];R(u)表示经过推荐算法生成的商品推荐列表.
新颖性用来描述算法能够给用户提供新颖商品,即用户未知商品能力的技术指标.推荐算法的新颖性指标很难通过实验的方法进行定量分析,往往是通过调查问卷的方式获得.
惊喜度是近年来推荐算法评价指标中最热门的话题,惊喜度和新颖性有相似之处,都是推荐与用户历史浏览商品不相似的商品,但是惊喜度指的是用户在接受推荐后对此商品很满意.简单来说新颖性是推荐让用户觉得耳目一新的商品,而惊喜度则是让用户觉得耳目一新的同时还给予了高度评价.目前惊喜度的度量方式可以通过定义相似度区分推荐商品和用户历史喜欢的商品,再经过线上的问卷调查得知用户的满意程度,如果最后被用户接受则这就成为了惊喜度高的推荐.
实时性顾名思义就是要在某些商品还具有时效性的时候及时的推荐给用户,例如新闻这种时效性作为最高属性的物品.推荐算法的实时性要求能够实时的更新推荐给用户的列表,用户的需求存在变化性,此时的推荐就要实时分析用户需求并给出相应推荐.另一方面实时性要求将新加入系统的商品能够成为推荐商品,也是一定程度上要求算法解决冷启动的问题.
健壮性是指推荐算法承受被攻击的能力,通过作弊改变推荐算法推荐性能的例子屡见不鲜,很多“刷分”行为屡见不鲜,电影网站中电影评分是推荐算法中的重要数据,但存在一种情况就是让一批人给自己的电影评高分,这样就相当于攻击了推荐算法.选择健壮性高的算法是提高算法被攻击能力的基础,此外还可以通过使用代价高的用户行为或使用数据前对数据进行清理等一系列方法.
基于内容推荐(Content-based Recommendations)可以说是推荐算法中的“元老”,它为用户推荐项目的依据是该项目与用户之前偏好的项目一定有相似之处[9].
孙晓[10]等针对信息的扩展使学习者难以检索相关信息这一难题,提出了一种基于内容的个性化知识服务推荐优化算法,如图1所示.首先建立特征向量模型,其中每个项目信息均由特定单词表示,而关键信息则通过加权突出显示.其次建立动态用户矢量模型以捕获用户的最新偏好信息.最后将特征向量模型与多用户比较结果组合在一起从而获得推荐列表.知识服务的个性化推荐机制主要包括数据预处理、生成特征向量模型、生成候选特征向量模型、生成动态角色模型以及生成推荐列表.首先要对数据进行清理、分类和存储.清理后的数据将根据已建立的规则进行处理,然后建立特征向量模型.候选项目集合也有自己的规则,建立用于对齐的候选特征向量模型.建立特征向量模型后,提取用户数据信息,了解用户偏好特征,并建立用户动态偏好列表,最后生成推荐列表.
图2 一种基于内容的个性化知识服务推荐优化算法Fig.2 A content-based personalized knowledge service recommendation optimization algorithm
Afoudi[11]等因为传统的协同过滤算法在数据稀疏性以及具有上下文数据方面均未显示令人满意的性能,选择了基于内容的推荐,通过特征选择模块、向量空间模型和餐厅之间的相似性度量模块组成推荐系统,根据餐厅的众多功能对餐厅进行分类.Laura[12]等提出一种基于内容的推荐系统模型,一方面依赖于基于内容的方法模型能够解决冷启动问题,另一方面,对于处理高度不确定性问题很有价值,因为它仅取决于用户提供的可用项目和等级,不依赖于项目和用户的数量.Nikolaos[13]等针对求职问题提出了一种基于内容的推荐算法,该方法可以扩展和更新闵氏距离,通过对非求职者形式的内容分析得出结果,以更加灵活的方式量化人员对职位的适应性,解决了匹配人员和工作的难题.
但随着用户需求的日益增长,基于内容的推荐算法遇到了一些难题,例如项目的特征难抽取、无法挖掘出用户的潜在兴趣、无法为新用户产生推荐等.基于内容的推荐算法作为第1代个性化应用中最流行的推荐算法,由于它的缺点难以解决加上精度不足,目前大多用来辅助其他的推荐算法使用,最常见的就是用它来过滤其他算法的候选集,常与协同过滤算法结合使用.
4.2.1 协同过滤推荐算法思路及原理介绍
协同过滤是推荐系统中最早提出且使用最广泛的方法,最早由Goldberg等人提出,应用于Tapestry[14]等小范围系统中.协同过滤的推荐核心是相似度,先依据相似度对用户和物品进行分类随后再进行推荐[15].协同过滤推荐算法的思想描述如下:根据用户分类时,属于同一类别的用户会对同一项目感兴趣,这种分类称为基于用户的协同过滤:假设用户A、C有相似的偏好,则系统会将用户C喜欢的物品D推荐给用户A;如果根据项目分类,那么属于同一种类的项目将受到同一用户的喜爱,这就是基于项目的协同过滤:因为物品A、D类似,所以物品D会被推荐给用户C.
4.2.2 传统协同过滤推荐算法局限性
如今协同过滤算法在电子商务领域取得了巨大的成功,但是随着互联网的发展,推荐系统规模也变得越来越大,加上海量的注册用户和数以亿计的物品对推荐系统的要求越来越高,传统的协同过滤推荐算法开始面临冷启动[16-18],数据稀疏性[19],可伸缩性等问题.
由于缺少有关进入系统的新用户或新项目的信息,推荐系统和基础算法的任务变得越来越困难,并且预测的准确性也会降低.在推荐系统中,冷启动是不可避免的问题,只有将冷启动影响降到最低才能提高系统推荐性能.冷启动可以分为3个部分:
·用户冷启动:系统中的新用户尚未对许多项目进行评分或与之交互.
·物品冷启动:用户尚未对系统中的新物品进行评分.
·用户和项目的冷启动:用户和项目都是系统中的新对象.
协同过滤算法的数据稀疏性是是由于矩阵的稀疏性质而产生的.在计算评分矩阵时,无法实现准确的预测导致了数据稀疏问题.
协同过滤算法还存在可伸缩性问题,随着网络用户急剧增加以及商品的不断更新,算法要分析的数据量也会随之增长,此时算法的可伸缩性就面临着极大的挑战.如果不能根据数据的变化对算法进行改进,推荐结果势必会受到影响,推荐精度会大打折扣,协同过滤推荐的相关问题亟待解决.
4.2.3 协同过滤推荐算法最新研究进展
为了消除冷启动、数据稀疏性等问题带来的影响,学术界提出了许多有效的方法改进协同过滤算法,得到优于传统协同过滤算法的推荐精度.Lumauag[20]等提出了一种改进的基于用户的协同过滤增强推荐算法,改进算法预测误差小、精度高、召回率高,可以在解决数据稀疏性和过拟合问题的同时提供更准确的预测和更好的推荐性能.张磊[21]等认为推荐列表中不同的数据集,不同的用户属性,不同的最近邻居数量和不同数量的项目对推荐结果有重要影响,提出了一种优化的基于用户的协同过滤推荐系统,针对不同的用户评估尺度问题,对原始用户数据进行标准化.通过引入具有权重的用户属性与用户等级线性组合在一起从而提高综合的用户相似度,实验结果表明该算法有效减少了冷启动等问题带来的影响并能给出准确的推荐.
聚类和降维技术也经常用于辅助实现推荐系统,Zarzour[22]等提出了一种基于降维和聚类技术的协同过滤推荐算法,使用k-means[23]算法和奇异值分解(SVD)分别对相似的用户进行聚类并降低维数,生成准确且高效的推荐.吴宾[24]等提出了一种面向多源异构数据的协同过滤推荐算法,提出了一个融合视觉信息和多关系数据来缓解数据稀疏问题的推荐模型,用于评分预测任务,并设计了高效算法,很好的缓解了冷启动问题,更有助于预测不同类型物品的实际评分.
周伟柏[25]等分析了传统相似度方法的不足之处,提出了一种提高相似度的方法.为了能够有效的计算用户之间的相似度,提出了在用户相似度计算中引入了共同得分中项目数的权重,从而解决传统相似度计算方法中存在的一些问题.其算法由4部分构成,首先读取用户的评分数,从而建立用户模型,然后计算出用户之间的相似度后找出某个k用户的最近邻居以形成最终推荐列表.
周伟柏等提出了一种新的相似度计算方法,加权由皮尔逊相关系数计算出的相似度,并加权共同评定项目的数量.计算公式如公式(7)所示:
(7)
其中,Sim(u,v)表示的是皮尔逊相似度,xu是用户u的评分项目数,xv是用户v的评分项目数,xuv是用户u、v公共评分的项目数.
同时建立了两个一维矩阵.一个是UserCount[],它存储每个用户评级项目的总数.另一个是Threshold[],它存储用户与其他用户一起评价的项目数的平均值,如果两个用户的共同得分项y的数量分别大于或等于他们的平均得分项,即,如果满足公式(8),则认为这两个可信度较高;否则,认为他们信任度较低.
if(y≥Threshold[u]&&y≥Threshold[v])
(8)
其中y是用户u和用户v的共同评分项目.Threshold[u]是用户u和其他用户所评分的项目数的平均值.Threshold[v]是用户v和其他用户评分的项目数的平均值.
如果满足公式(8),将计算与公式(7)的相似度.如果没有,将对皮尔逊相关系数进行加权以生成新的相似度(NSim),以保留皮尔逊相关系数的优点并改善其缺点.加权如公式(9)所示:
(9)
其中Pu=|y-UserCount[u]|,Pv=|y-UserCount[v]|,y是用户u和用户v常见的评分项目数.最后该算法找出某用户的最近邻居以形成推荐列表.
基于矩阵分解的协同过滤推荐算法能够提供很高的预测精度,基于矩阵分解的推荐会先对用户商品进行矩阵分解,然后利用分解后的矩阵预测原始矩阵中的未打分项,由此产生推荐.吴宾[26]等针对物品之间的关联关系经常被忽略的问题,提出了一种联合正则化的矩阵分解推荐算法,通过证明联合正则化是一种加权的原子范式,以及度量物品之间的关联程度,获取物品之间的关联关系,将它与社会关系相结合,构造出了一种新的推荐算法.与主流推荐算法相比,联合正则化的矩阵分解算法可以更好的缓解冷启动问题同时能够更有效的预测不同类型用户的评分.刘洪涛[27]等提出了一种基于用户特征的合理矩阵分解算法,以解决在保持用户偏好特征的同时寻求全局最优解的问题.使用项目信息将具有项目类别的用户标记为用户特征矩阵.同时,为了反映项目的特征,添加了项目偏好向量.该算法提高了推荐精度,针对细数数据评分的环境减少了迭代次数,提高了算法效率.
混合推荐算法是指通过混合两种或者两种以上的推荐方法进行推荐,从而达到取长补短,提高推荐精度,提高系统性能的目的.混合推荐算法包括加权式、切换式、混杂式、层叠式和级联式等形式.
加权式混合推荐算法是指加权多种推荐方法的结果.Mathew[28]等提出了一种基于内容推荐,协同过滤和关联规则挖掘的组合特征的图书推荐系统,以产生有效和有效的推荐.张伟[29]等提出了一种基于协同过滤和视频基因的混合推荐算法.该算法首先构造用户项目矩阵,计算用户相似度,然后通过k均值聚类进行聚类以获得推荐列表.通过分析视频的遗传结构,组合样式偏好和区域偏好来形成基因偏好,通过线性回归确定基因的权重,将对象按基因偏好程度排序,选取排在前列的对象最终形成推荐.最后,将形成的两个推荐结果进行加权带给用户最终的推荐.
切换式混合推荐算法是指根据问题背景和实际情况或要求决定变换采用不同的推荐方法.武传明[30]等基于不同的混合策略,提出了两种不同的混合推荐系统的设计方案:切换式和特征补充式,研究了混合策略对推荐性能的影响.曹昱翔[31]等认为单个的推荐方法明显存在不足,其首先归纳了3种混合推荐类别,然后以简单Slope One这样的评分预测算法作为基础,实现了并行式混合推荐技术和流水线切换式混合推荐技术.
混杂式混合推荐算法采用融合推荐方法给出推荐结果供用户参考.王永贵[32]等提出了一种融合内容与协同矩阵分解技术混合推荐算法.该算法实现了在共同的低维空间中分解内容和协同矩阵,同时保留数据的局部结构.在参数优化方面利用一种基于多重更新规则的交替方法,从而提高了学习能力.Pal[33]等提出了一种改进的基于内容的电影推荐协同过滤算法,该方法可在基于内容的过滤中使用集合交集找到两个特征之间的相关性,并找到两个项目之间的相似性.在这种法中,使用了由不同用户分配的每部电影的标签,并将其转换为单个列表.每部电影的类型都附加到相同的标签列表中.最终列表称为特定电影的对象.将每个活动电影的对象集与数据集中每个其他电影的对象集进行比较,并将匹配对象的数量分配给一个集合.该集合的长度用于预测收视率,如下所示:
H=M*(Hr/M′)
(10)
其中,H是活动电影的评级,M表示公共对象的数量,M′是数据集中任意两部电影之间的最大匹配对象数量,Hr是我们可以分配给电影的最高评分.如果评分大于2.5(阈值等于可能的最低和最高评分的平均值),则可以分配该电影及其对活动电影中类似电影的评分.王冲[34]等提出了一种基于内容和其他用户评分向用户推荐科学文章的算法.该方法结合了传统协同过滤和概率主题建模的优点,为用户和项目提供了可解释的潜在结构,该方法与传统的矩阵分解方法相比是有效的,并能很好地预测完全未评级的文章,可以对现有的和新发布的文章形成推荐.此外,该算法提供了可解释的用户配置文件,如果一个用户在配置文件中设置不同的主题,便可以选择特点的主题得到自己需要的推荐.
级联式混合推荐算法将两种推荐方法作为一个系统使用,以前者生成的模型作为后者的输入.程家民[35]等提出了一种新的基于内容的混合短视频推荐算法,同时使用了多种模型,采用两种混合策略的组合策略进行学习,为用户返回短片推荐高质量的效果.其每个模型的分数都作为特征,并输入到新的分类器中以训练结果,在堆叠了复杂模型之后得分更高的模型,最终得分被视为最终结果.陈志怡[36]等介绍了如何使用线性混合模型进行电影推荐,以解决很少有用户历史评分可用于数据分析的冷启动问题,该算法模型可以根据用户在不同组级别的特征来探索其评分行为的一般模式,经过仔细分析后可以从数百万个评分数据中挖掘出一些隐式信息或有趣的社会行为.
层叠式混合推荐算法是指两种推荐方法先后使用,先用一种算法生成初步的推荐结果,在这基础上用第二种推荐算法精确化初步推荐结果,从而生成最后推荐.徐湘申[37]等针对传统的协同过滤算法稀疏导致推荐不明显的问题,提出了一种用于混合相似度的协同过滤算法.算法主要集中在用户等级相似度和社会相似度的融合上,首先通过协同过滤算法生成初步推荐结果,然后融合社会可信度和得分进行推荐以使推荐更适合用户,提高推荐算法的质量.
现阶段随着深度学习技术研究在众多领域取得突破性的进展,将深度学习技术融入到推荐算法已经成为研究热点,其目的是为了提高推荐精度和系统推荐性能.接下来文章会对深度学习中神经网络在推荐算法中的研究进展进行简要概括.
4.4.1 基于深度神经网络的推荐算法研究进展
Hinton[38]教授在2006年提出通过增加人工神经网络的层数和神经元数量来构建深度神经网络(Deep Neural Networks,DNN),深度神经网络也是深度学习的基础.
目现阶段深度神经网络已被广泛应用于个性化推荐,Mokdara[39]等提出的模型从使用系统之前给出的用户最喜欢的菜谱中提取感兴趣的成分,从喜欢的成分分析中提取特征,通过深度神经网络模型评估用户个人资料,分析了推荐的准确性和多样性.肖旭[40]等为了建立关于复杂用户项生成交互函数所需要的非线性模型,提出了一种基于深度神经网络的推荐算法,融合深度神经网络并且通过矩阵分解的方式进一步提高评分预测中凭借单一矩阵分解方式预测结果的准确性.黄振华等[41]提出了一种深度混合推荐模型DMFL(深度度量分解学习),将深度学习与改进的机器学习模型相结合,以从多个角度学习用户与项目之间的交互.这种深度混合学习有助于更全面地反映用户的偏好,并增强模型的泛化能力.深度度量分解学习结构体系图如图3所示.
图3 深度度量分解学习结构体系图Fig.3 Depth metric decomposition learning structure system diagram
特征学习部分由两个并行的深度神经网络组成,分别提取静态项目潜在特征向量和动态用户潜在特征向量.偏好生成部分包括3个子模块,分别是SDAE-FM模块,深度神经网络模块和度量学习模块.同时将在特征学习部分中为用户和物品学习的潜在特征向量输入到3个模块中作为输入,并将由3个子模块生成的结果组合为物品的最终用户偏好预测结果.
4.4.2 基于卷积神经网络的推荐算法研究进展
LeCun[42]等1987年提出了卷积神经网络(Convolutional Neural Network,CNN),其模型由主要应用于计算机视觉和图像处理等研究领域.CNN的本质就是个多层感知机,它一方面通过减少权值的数量来简易优化网络的过程,另一方面对模型进行改进,降低了复杂度,同时也就意味着过拟合的风险大大减小了.同时CNN网络还可以直接输入图像,避免了传统识别算法中复杂的特征提取和数据重建的过程,在二维图像的处理过程中有很大的优势.
卷积神经网络取得了巨大的成就和广泛的应用,大量研究也证明了基于CNN推荐算法的有效性.冯永[43]等提出了基于卷积神经网络的汽车推荐模型,设计了卷积网络模型学习汽车评论文本的隐特征,最后通过在多个数据集上的对比实验,得到了良好的推荐结果.李树东等[44]提出了一种基于卷积神经网络的电影推荐算法,并在IMDB上对其进行了评估以用于电影推荐.王松等[45]开发了基于CNN的算法,用于图像分类,并获得了很好的推荐效果.岩池[46]等提出了一种基于CNN的位置推荐算法,该算法可以组合各种功能并了解它们对用户的入住记录的共同影响.
张易文[47]等提出了一种基于多卷积神经网络的推荐方法,用于推荐电影给相关用户.该方法以关系数据作为回归训练的基础.卷积神经网络除了提取项目和用户数据的深层特征外,还提取项目或用户的文本数据的特征,并构建可以挖掘用户和项目的深层功能的推荐模型.该方法用CNN处理3个部分的特征,分别是文本数据、项的非文本属性以及用户属性,对每个部分的特征进行深度提取,从而进行预测评分,提高了推荐准确度.
基于多卷积神经网络的推荐方法模型如图4所示.
图4 基于多卷积神经网络的推荐方法模型Fig.4 Recommendation method model based on multi-convolutional neural network
冯浩[48]等提出了一种基于深度学习的混合兴趣点推荐模型(MFM-HNN).该模型通过评价信息和用户签到信息作为辅助信息,将其融合进神经网络,以此达到提高推荐兴趣点性能的目的.其中,用户签到信息是评价信息的特征表示通过卷积神经网络和降噪自动编码初始化得来的.总的来说,通过基于扩展的矩阵分解模型,融合评论信息特征以及用户签到信息的初始值达到推荐兴趣点的功能.基于混合神经网络矩阵分解的兴趣点推荐模型如图5所示.
图5 基于混合神经网络矩阵分解的兴趣点推荐模型图Fig.5 Point-of-interest recommendation model diagram based on matrix decomposition of hybrid neural network
4.4.3 基于循环神经网络的推荐算法研究进展
1990年,Michael I.Jordan提出了Elman[49]网络,这是第一个全连接循环神经网络(Recurrent Neural Network,RNN),RNN是一类递归神经网络[50],它以序列数据作为输入,所有循环单元按链式链接并且在序列的演进方向进行递归.
一个典型的RNN网络包含一个输入Xt,一个输出ht和一个神经网络单元At.循环神经网络中任意时刻的输入Xt都会根据当前状态At来提供不同的输出ht.和普通的神经网络不同的是,循环神经网络的神经网络单元A不仅仅与输入和输出存在联系,其与自身也存在一个回路.这种网络结构就揭示了RNN的实质:上一个时刻的网络状态信息将会作用于下一个时刻的网络状态.
从循环神经网络的结构图可以看出,它擅长解决的就是时间序列相关问题.在最近几年的时间里,循环神经网络在语音识别、机器翻译等领域中发挥了很大的作用,同样在推荐系统中,我们可以发挥循环神经网络的优势,基于循环神经网络来对整个时序进行建模,这样可以充分分析用户的历史浏览数据,而不是只根据最终的产品进行推荐.
武兴[51]等提出了一种基于RNN的时间感知推荐算法,它使用矩阵分解提取用户偏好和服务功能,并应用LSTM单元进行时间感知服务推荐,用于学习和预测偏好和功能.江苗[52]等针对不同歌曲之间的相似度,提出一种基于深度神经网络的改进算法,同时搭建了一个基于递归神经网络的终端模型,该模型通过相似性来预测用户的下一首最可能的歌曲.Kwon[53]等将权重捆绑技术应用于基于RNN的推荐模型,提出了一种基于RNN推荐的嵌入权重绑定方法,以提高电影推荐系统的性能.
李太松[54]等对RNN做出了改进,提出了多维度序列建模算法循环时间卷积网络(RTCN),该循环时间网络通过从序列项中提取局部信息,从而把项目信息映射到潜在空间中,得到的结果就是生成细粒度的特征向量.通过将特征向量馈入门控循环单元(GRU),进行宏观角度探索项目之间的联系.RTCN可以通过适应时间卷积网络从输入中提取长期,多维,细粒度的局部特征.递归时间卷积网络结构中将输入层作为第1层,其作用是用来定义序列长度.第2层是时序卷积层,时序卷积层能够通过卷积来提取局部关联特征,从而实现了局部感知序列流数据.序列层是构成该网络的第3层结构,此处作为建模单元的是门限循环单元.因为GRU本身的时间传递性并且同时能够吻合人们选择物品时的兴趣变化,所以选用GRU集成序列的特征向量,这也极大改善了循环神经网络在长序列建模时引发梯度消失等问题所带来的影响.
4.4.4 基于图神经网络的推荐算法研究进展
传统的机器学习所用到的数据是欧式空间数据,欧式空间数据的特点就是它有规则的空间结构.比如语音数据是一维序列,图片是规则的正方形网格.但是,在现实生活中许多数据都不具备规则的空间结构,比如电子交易、推荐系统等抽象出来的图谱,图谱中每个节点与其他节点的连接是不固定的.图神经网络可以对非欧式空间数据进行建模,捕获数据的内部依赖关系.
图是一种结构化数据,图由一组对象(节点)及其关系(边)组成.作为一种非欧几里得形数据,图分析被应用到节点分类、链路预测和聚类等方向.
图神经网络(Graph Neural Network,GNN)的可以进行高效大规模的计算[55],经常用于推荐系统,动作识别,语义分析和异常检测[56,57]等领域.
赵莉[58]等提出了一种采用分层二分图神经网络(HiGNN)的新颖方法来处理大规模电子商务任务.通过堆叠多个GNN模块并交替使用确定性聚类算法,算法能够有效地同时获取分层的用户和项目嵌入,并有效地大规模预测用户的偏好.
张明阁等[59]等提出了一种基于图卷积的推荐系统,该系统具有基于图卷积运算的不同时间关注机制.该算法以GCN为模型基础,抽象出用户偏好在整个应用场景中的实际角色,由于GCN的低阶近似反映了短期偏好过程的特征,引用了ConvLSTM[60],以确保模型可以考虑更多情况,为了增强模型对各种偏好的分层学习,引入了一种更加注重分层和神经元排序的网络结构,通过构建会话图、学习模型内部时空信息产生最终排名和推荐结果.
葛尧[61]等提出了一种面向推荐系统的图卷积网络(GCN).推荐系统中用户与商品之间的交互称之为同质顶点交互,用户(商品)与用户(商品)之间的交互为同质顶点交互.由于现有的图卷积操作都停留在同质顶点或异质顶点之间的交互,没有将两者的优势结合,从而影响了推荐结果的最优化.文章提出了一种新的机遇图卷积网络的推荐算法GCN4RS.搭建算法模型.利用同质顶点间交互、异质顶点之间交互,进行两组图卷积共同操作.其中,同质顶点卷积用于使相似顶点具有相近的表现,异质顶点卷积用于挖掘交互图谱域中存在的链接信息.GCN4RS框架如图6所示.
图6 GCN4RS框架Fig.6 GCN4RS framework
为了解决现有的基于嵌入和基于路径的知识图谱感知推荐方法的局限性,王宏伟[62]等提出了一个将知识图自然地整合到推荐系统中的端到端框架-RippleNet,该框架通过引入偏好传播,并且自动迭代地沿着知识图谱中的链接扩展用户的潜在兴趣,刺激了用户偏好在知识实体集合上的传播.引入了“涟漪图”的概念,图中中心位置和周围实体之间的相似度与距离成正相关,即距离越远相似度越低.用户激活多个涟漪图后,历史上被点击的项目就会被叠加以形成用户相对于候选项目的偏好分布,这样就可以被用来预测最终的点击概率.该框架克服了现有基于嵌入和基于路径的知识图谱感知推荐方法的局限性,在多种场景下都取得了有效的推荐结果.
由于传统推荐方法容易忽视实体与项目之间的具体关系,导致无法从用户集中提取有效信号.王翔[63]等提出了一种称为知识图注意力网络(KGAT)的新方法,该方法以端到端的方式显式地建模知识图中的高阶连通性,以递归方式传播来自节点邻居(可以是用户,项目或属性)的嵌入,以精炼节点的嵌入并采用关注机制来区分邻居的重要性,从而完善了将两个具有一个或多个链接属性的项目连接在一起的高阶关系,实现了对现有基于知识图推荐算法的优化,进一步证明了嵌入传播对于高阶关系建模的有效性以及注意力机制带来的可解释性好处,实验结果表明KGAT甚至优于RippleNet之类的最新方法.
王翔[64]等开发了神经图协同过滤(NGCF)这一新的推荐框架,通过利用用户-项目集成图中进行的高阶连通性的建模来实现将协同信号有效的注入到嵌入过程中.用户和项目的矢量表示(又称嵌入)是现代推荐系统的核心,现有的方法一般通过映射描述用户(或项目)的现有特征(例如ID和属性)来获得用户(或项目)的嵌入,而这种方法的缺点是用户-项目交互过程中潜在的协同信号未在嵌入过程中进行编码,导致协同过滤效果一般.NGCF提出了嵌入传播层,允许嵌入的用户和项目交互,从而有效的解决了这一问题.由于图卷积网络中的特征转换和非线性激活对协同过滤的性能几乎没有影响,并且更有可能会因为增加训练难度而降低推荐性能.为了简化图卷积网络的设计,使其更简洁,更适合推荐,何湘南[65]等提出了一个名为LightGCN的新模型,该模型只包含GCN中最重要的用来进行协同过滤的领域聚合部分,通过在用户-项目交互图上线性传播用户和项目嵌入来学习它们,并将在所有层上学习的嵌入的加权总和用作最终嵌入.这种简单,线性,整洁的模型更易于实施和训练,拥有更好的泛化能力.
基于标签的方法的本质是引入标签,标签可用于描述商品的特征和用户对商品的态度.通过串联标签、用户的标签偏好以及物品的标签特征,形成用户-标签-物品三者之间的关系,最终主要是通过计算用户标签偏好和物品标签特征之间相似度为用户进行推荐.王梦沙[66]等提出了一种基于标签的个性化音乐推荐算法,通过发现曲目和作曲家对标签都有不同的权重,并且这些标签可以不同程度地反映相关内容,从而为用户设置音乐类型首选项矢量,构造用户的相似度矩阵,并根据来自几个最近邻居的歌曲的加权得分向目标用户推荐音乐.姜远春[67]等提出了一种基于标签偏好的贝叶斯个性化排名算法,算法首先为每个用户和每个商品构造一个用户标签集和一个商品标签集.然后基于用户标签组和项目标签组之间的一致度,计算用于对用户未与之交互的项目进行优先级排序的匹配度,从而实现对用户的推荐.孔欣欣[68]等提出了一种基于标签权重评分的推荐系统模型,首先通过数据源分解算法对数据进行预处理,然后分析了基于矩阵填充的离线计算推荐、基于聚类的在线计算推荐以及基于标签权重评分的反馈计算推荐算法3种推荐方式在该模型下解决问题的优越性,证明了该模型具有较高的准确度.
信任的建立使用户之间的社交关系向更广的范围传递,而推荐算法中基于信任的推荐关键就在于挖掘相应的信任信息.陈婷[69]等提出了一种基于信任的推荐算法,首先将局部信任与全局信任相结合,深入研究信任的传播性质从而对信任关系进行建模.随后通过设置推荐权重,将相似度和信任度作为关键点构建用户的偏好关系来筛选邻居.最后使用自适应权重动态决定信任关系与基于记忆的协同过滤融入概率矩阵分解模型间各部分的影响程度,形成了高效率的推荐模型.朝阳[70]等提出了一种基于启发式相似度和信任度的混合协同过滤推荐算法,该算法首先通过对从评价矩阵中获得的多个相似度影响因子进行加权融合,实现了一种新的相似度度量,使得相似度度量变得更加准确.然后通过基于信任传播理论构建用户信任网络,实现用户信任关系计算模型,在此基础上设计了一种SIMT协同过滤算法,该算法融合了信任和相似度,而不是传统协同过滤算法中的相似度,进一步实现了基于聚类算法的改进的K最近邻推荐,用于生成更好的推荐列表.该算法提高了推荐的质量和准确性,从而在一定程度上克服了数据稀疏,冷启动和信任措施的问题.
基于评论的推荐依靠评论信息更细致的刻画用户对物品的偏好成为一种主流的推荐方法,利用评论的有用性有助于访问长尾商品,为用户提供更好的个性化推荐.Omamah[71]等发现现有的旅游推荐系统提供的误导性建议实际上并没有达到游客的期望,出现此问题的主要原因之一是这些系统中的大多数都忽略了以前的用户评论,从而提出了一个整合了用户评论元素的旅游推荐系统.基于评论数量,评价和情感3个因素,对用户评论进行分析,然后将其用于推荐给游客的酒店.
Rahul[72]等提出了一种使用用户评论来改善推荐系统性能的方法,通过设定一种针对用户和项目的基于评论的配置文件,该配置文件使用各种文本分析和情感分析技术从用户评论中提取有价值的信息.通过预处理用户对产品的详细反馈的原始评论数据集,然后获得情感强度得分,最后通过比较召回得分和均方根误差,改善了推荐系统的性能.
知识图谱(Knowledge Graph)因其自身的精准性可以引入更多的语义关系,更深层次的发现用户兴趣.知识图谱的多样性也使得可以通过图谱中不同的关系链接种类来发散推荐结果,同时知识图谱为缓解推荐系统中的稀疏性问题提供了前所未有的机会,所以基于知识图谱的推荐算法也得到了高程度的重视.然而,现有的基于知识图谱的推荐方法主要依靠手工制作的元路径特征或简单的3层实体嵌入,这不能自动捕获实体对推荐的长期关系依赖性.雷桑[73]等将知识图谱结构和用户-项目交互功能合并到一个统一的神经网络模型中进行推荐,提出了一种名为“知识图”的带有残差递归网络的神经网络协同过滤两通道神经交互方法,该方法利用了长期关系依赖性知识图谱上下文和用户项交互来生成最后的推荐结果同时验证了模型的有效性.
温雨帆[74]等针对大多数服装推荐系统中冷启动和数据稀疏问题构建了用户知识图,服装知识图和情境知识图,利用Apriori算法捕获服装属性与情境属性之间的内在联系.此外,根据用户需求搜索并匹配已建立的知识图,并结合Top-N算法直接生成推荐结果,有效的解决了冷启动问题并且具有较高的推荐质量.
跨领域推荐总的来说是将不同领域中的用户偏好特征相结合,针对不同用户的特点进行智能化感知,从而实现对用户推荐的多样性,满足用户个性化需求.跨领域推荐利用领域之间存在的相关性来弥补目标领域所面临的信息不足的问题,如用户、用户兴趣和项目特征等因子在不同领域之间有一定的相似程度,便可以对其进行知识迁移,从而补足辅助信息,达到改善推荐性能的目的.金雅如[75]等提出了一种具有回顾意识的跨域推荐算法,以解决产品推荐领域中的冷启动问题.首先,通过使用邻接矩阵来动态选择评论.其次,通过迁移模型提取冷启动用户的特定于域的偏好向量和共享域的偏好向量.另一方面,通过编码器和解码器从评论文本生成的目标域中的产品特征向量与冷启动用户的偏好向量相结合以进行评级预测,实验结果表明该算法的性能优越,一定程度上解决了冷启动问题.
江一音[76]等为了在高度稀疏的情况下提高推荐性能,改进传统跨领域推荐算法,提出了一种基于异构信息网络嵌入的跨域推荐框架,通过搭建“立交桥”式的元路径嵌入方式传递更多的知识来达到充分利用跨域信息并避免在实际数据集中观察到的来自不同元路径的知识之间的知识冲突的目的,同时引入辅助域数据可以帮助扩展有用信息的范围,该框架降低了平均绝对误差以及均方根误差,有效提高了推荐准确性.
推荐算法的研究的热点依旧很多,例如社交属性信息的确定与量化[77].社交属性信息主要是指影响社交网络推荐系统中用户行为偏好的个人属性信息和社交关系信息.其中,个体属性信息通常相对清晰.在现实生活中,社会关系可以分为多种,例如亲戚,同学,朋友和同事.但是在虚拟网络环境中,用户之间的社交关系通常很模糊.通常可以根据网络交互内容的语义确定一些社会关系.但是到目前为止,大多数现有的社交推荐系统都使用用户的依存关系并完全直接链接,低估了用户的观点和口味的多样性,所以量化和确定社交属性信息有待研究.
跨媒体数据指的是用户通常在社交媒体上拥有多个账户,并且在不同站点上存在的时间可能有所不同.当用户在一个新的社交媒体上注册时,可以指定该用户之前在其他网站上的账户作为系统提供推荐的依据,这种方法有助于帮助解决冷启动问题,这就是整合跨媒体数据[78].通过集成多个网站的用户信息提供解决冷启动问题的有效方法,同时也提高了用户满意度和网站利润,跨媒体数据也是现在推荐算法研究热点之一.
隐私和安全问题对于所有推荐系统都是不可避免的问题[79].在社交推荐系统中,隐私和安全问题尤为重要,因为社交推荐系统不仅涉及用户属性信息,还涉及用户的社交关系信息.虽然现有的社交标签系统中的标签推荐可以非常准确和个性化,但由于社交标签是由用户提供的,将其偏好暴露给其他联系用户会对用户个人资料的私密性产生影响,隐私和安全问题作为现在推荐算法要考虑的要素之一也会引起巨大的讨论和深入的研究.
可伸缩性等问题作为协同过滤算法长期存在的问题始终是推荐算法研究的热点问题[80].随着用户和项目数量的增加,相似度的计算也会增加.目前主要通过聚类,维度分解和线性模型解决了协同过滤的可扩展性问题.在社交网络中的任何时候,用户之间的信息交互都会产生大量数据集,将数据信息输入到推荐系统中,将进一步增加推荐算法的计算复杂度,并使问题变得更加严重.当下用户对推荐结果的要求不再局限于内容的准确性,而是对时间,地点等有要求.社会关系会随着时间而改变.例如,已添加新的社交关系,而现有的社交关系已变得不活动或已删除,这些问题都对推荐算法的可伸缩性提出了更高的要求.
将深度学习整合到推荐系统中也为推荐系统的研究带来了新的机遇[81].深度学习方法用于将社交网络的社会化关系整合到推荐系统中,有助于解决推荐系统的数据稀疏和冷启动问题,并提高推荐系统的质量.同时,深度学习模型可以适应大规模数据并且具有高可扩展性.但是总的来说,深度学习在基于社交网络的推荐系统中很少使用,在如何区分关系强度,如何有效地建立对推荐系统的社会化影响理论等方面,还有待进一步研究.
由于提出时间早、推荐效果好,协同过滤毋庸置疑是推荐系统中应用最多推荐算法,但为了进一步提高推荐精度,许多研究人员都改进协同过滤算法来提高算法性能,基于信任度的协同过滤、基于矩阵分解的协同过滤、基于标签的协同过滤等以协同过滤算法为主的改进算法层出不穷.基于内容的推荐算法大多被利用作为辅助算法,未来对基于内容的推荐进行改进可以在细节方面提高推荐算法的性能.随着对不同推荐算法的改进以及提出更多新算法,混合推荐算法也将会迎来新的生命,但是依旧要针对混合推荐难以实现、框架复杂的问题进行深入的研究改进.
虽然深度学习技术目前还处在发展阶段,但已经被广泛推广使用,其在推荐算法领域中的发展也已经发轫,相信深度学习技术与推荐系统的融越来越成功.由于基于深度学习的推荐算法与传统的推荐算法有着本质性的不同,尤其是深度学习在推荐系统中的应用还处在起步阶段,存在着许多不足,未来还将面临很多挑战,相信利用深度学习技术解决推荐算法难题指日可待.
本文对推荐算法进行了大致分类,同时介绍了评价推荐算法的几种重要指标,分别介绍了传统推荐算法以及神经网络在推荐算法领域的研究进展.本文存在的不足之处是没有系统的对推荐算法进行分类,对传统推荐算法的研究进展不够详细,针对深度学习技术在推荐系统上的应用总结还不够全面,只介绍了神经网络部分与推荐算法的结合应用.在未来的学习中,我会更加注重有关深度学习技术更深层次的研究,对其在推荐算法领域进行更深一步的理解.