Deep Learning Architecture for Collaborative Filtering Recommender Systems
协同过滤推荐系统的深度学习体系结构
说明:本文只做参考,具体还是请参照原文原文连接,如有不对的地方请指出,谢谢
Predicted error (预测误差) = 可靠性
real predicted error 实际的预测误差
Abstract
本文提出了一种创新的深度学习框架来改进推荐系统中的协同过滤结果。它利用可靠性概念的潜力,通过在深度学习层加入预测误差(可靠性)来提高预测和推荐质量。基本思想是推荐高度预测的项目,这些项目也被视为可靠的项目。。我们使用深度学习体系结构来提取预测、可靠性和准确推荐之间的现有非线性关系。所提出的体系结构由三个相关的阶段组成,提供三个堆叠的抽象级:(A)实际预测误差(real prediction errors),(B)预测误差(可靠性)( predicted errors (reliabilities)),和©预测评级(预测)(predicted ratings (predictions))。反过来,每个抽象级别需要一个学习过程:(A)从评级中进行矩阵分解,(B)馈送真实预测误差( real prediction errors)和隐藏因素的多层神经网络,以及(C )馈送可靠性和隐藏因素的多层神经网络。已经运行了一套完整的实验,涉及三个具有代表性的开放数据集和一个最先进的基线。结果显示,预测有了很大的改进,推荐也有了重要的改进,特别是在召回质量指标方面
1 Introduction
推荐系统(RS)是解决互联网信息过载问题的有力工具。他们利用不同的信息来源。用户对项目的显式投票和隐式交互是协同过滤(CF)RS的基础。隐式交互示例有点击、收听的歌曲、观看的电影、喜欢、不喜欢等。通常,混合RS[1]被设计为将CF与一些其他类型的信息过滤结合在一起:人口统计[2]、上下文感知[3]、基于内容的[4]、社交信息[5]等。RS覆盖了广泛的推荐目标,例如旅行[6]、电影[7]、餐馆[8]、时尚[9]、新闻[10]等
传统上,CF RS是使用机器学习方法和算法来实现的,主要是基于存储器的K近邻算法,以及最近的矩阵分解(MF)方法。MF是一种有效的基于模型的方法,可以获得准确的推荐;它易于理解和实现,并且是基于降维的基础上的,在降维的基础上,一组减少的隐藏因素包含了评级信息。预测是通过使用户和项目的点积隐含因子来获得的。MF有几种实现方式,例如PMF[11]和BNMF。MF预测的一个重要缺点是线性点积不能捕捉隐藏因素集合之间存在的复杂非线性关系。神经模型没有这种限制,它们被称为RS中的CF研究的带头人
目前,RS研究针对深度学习方法[12,13]。通常会找到基于神经内容的方法:图像[8,9],文本[10,14],音乐[15,16],视频[17,18]等。上述目标是通过使用不同的神经网络架构来处理的:卷积神经网络[19],递归神经网络[20],多层神经网络(MNN)[3,21]和自动编码器[7,22]是常用的方法。先前的出版物集中在基于内容的过滤或混合过滤。 CF神经方法可以分类为:(1) Deep Factorization Machines (deepFM) [23] , (2) Neural Collaborative Filtering (NCF) [24].NCF使用双神经网络同时处理项目和用户信息.NCF的两个主要实现是(a)NCF [24]和(b)神经网络矩阵分解(NNMF)[25]。由于NCF报告的准确性优于NNMF,因此我们将其用作基准。图1显示了NCF体系结构:输入的稀疏数据(用户的评分和商品的评分)通过嵌入层转换为密集信息。然后,多层感知器通过串联将两个特征路径组合在一起。使用已知的等级作为标签进行训练。一旦了解了架构,就可以在非线性过程中预测未知的评分。我们提出的架构利用了NCF,将其扩展为使用已知错误(就是使用误差,不理解可以继续看看完应该就明白了)进行训练,然后预测可靠性。我们将所提出的体系结构称为基于可靠性的神经协作过滤(RNCF)
有一些出版物结合了广度和深入的学习[26,27]来支持CF RS。宽侧使用感知器实现,而深侧使用==MNN(多层神经网络)==现,广度的组成部分学习简单的关系(记忆);深层组件学习复杂的关系(概括)。拟议的架构(RNCF)专注于深度学习方法,以捕获复杂的关系以预测可靠性和预测等级值。广度的学习无法发挥这些功能,但可以稍微改善整体效果。未来的潜在工作是扩展RNCF,以容纳广度的学习内容。 deepFM体系结构[28]结合了一个深度组件和一个广泛组件来处理原始输入向量。同时学习低阶和高阶特征交互。与NCF相比,deepFM的准确性有所提高(Criteo数据集为0.33%,Company数据集为0.48%)。所提出的方法(RNCF)更适合NCF架构,而不适合deepFM架构。另外,广度的体系结构具有输入层的大小,这是危害其可伸缩性的缺点。鉴于使用deepFm模型的改进空间有限,我们选择了更常规和可扩展的NCF体系结构作为创建模型的基础。还有其他一些方法可以基于来自数据的改进信息来提供神经网络,例如[29],其中作者从二分图中提取交互行为。可以通过从数据中提取多准则信息来设计深度学习架构[30]。此外,[31]中提出了基于分类的深度学习协作过滤方法,其中,学习过程将两个不同的二进制源作为信息:(a)相关/不相关投票,以及(b)已投票/未投票项目。
一旦我们回顾了现有技术提供给我们的最重要的神经网络解决方案,我们将通过图2来解释所提出的方法的主要概念。一些最先进的CF深度学习RS方法使用用户和项目的隐藏因素进行嵌入[24]。然后,MNN从隐藏因素中学习隐藏因素与等级之间的现有非线性关系(图2a)。一旦了解到MNN,就可以通过前馈运行MNN进行预测,并向其馈送与没有关联评级的对相对应的隐藏因素。这些类型的体系结构相对于经典的MF方法提供了改进的结果,在经典的MF方法中,预测是通过基于线性隐藏因子的点积获得的。
提议的方法(RNCF)概念:(a)NCF基线,(b)通过增加可靠性来改进NCF
(c )提取隐藏因素和实际预测误差,(d)预测误差(可靠性)
(e) RNCF体系结构中的培训阶段。
NCF:神经协作过滤,
RNCF:基于可靠性的神经协作过滤
与RS推荐的可靠性或可信度相关,一些已发表的论文[32]为每个预测或推荐提供了更多信息:其可靠性。例如,我们可以推荐4星,可靠性为2星的商品,或者我们推荐3.5星,可靠性为4星的商品。推荐的用户可能会选择第二项,因为即使知道我们的推荐较低(3.5相比4),它也更可靠(4相比2)。使用相同的概念,我们可以从一组预测中选择推荐,这些推荐不仅要考虑预测值,还要考虑其可靠性。通过仔细研究预测与可靠性之间的关系,可能我们可以提取一些规则进行推荐。相反,我们使用深度学习阶段来学习预测,可靠性和准确推荐之间的现有非线性关系。
推荐可靠性定义为预期误差[32]。也就是说,除了预测收rate之外,我们还预测那些预测的误差。本文的假设声称:可以通过将预测的错误(可靠性)添加到MNN学习中来改进CFN的最新体系结构。因此,可以通过使用图2b所示的体系结构来改进图2a所示的最新体系结构。
现在出现的问题是获得预测误差的方法:可靠性(图2b中的黑圈)。此过程将需要两个分离的阶段,如图2c,d所示。图2c显示了我们获得一组真实预测误差的方式:首先,对MF进行处理以获取用户和商品隐藏因素;然后,然后,我们预测数据集中的每个现有评分。由于我们预测了已知的评级,因此我们可以获得真实的(准确的)预测误差(图2c的顶部)。下一个过程(图2d)是利用实际的预测误差来训练MNN。 MNN在其输入层中输入隐藏因素,并且使用实际的预测误差作为标签进行学习。一旦MNN学习了,它就可以反馈可靠性:来自未投票<user,item>对的错误预测(黑色圆圈),其中每个用户和每个项目都由其隐藏因素组成
最后,要实现我们的目标:要准确地预测和推荐使用隐藏因素和可靠性(图2b),我们必须训练MNN;图2e显示了我们使用已知等级(从左到右的淡入淡出的圆圈)训练MNN的方式:已知等级在神经网络训练过程中用作标签,因此MNN学会了从隐藏状态准确预测等级(做出预测)因素和可靠性。图2e中经过训练的MNN被前馈用于进行非线性预测(图2b)
请注意,所提出的方法充当协作过滤黑匣子,仅与每个推荐系统的票数一起馈入。这样,它可以用作实施混合推荐系统的基础,该系统包含人口统计信息,基于上下文的信息,基于内容的信息和社交信息。
2. Materials and Methods
所提出的RNCF体系结构通过执行三个不同的学习过程在整个系统中产生三个不同的抽象级别,从而获得了改进的推荐结果。借用图2中的图,图3显示了总体架构:每个执行的流程以及它们的堆叠连接。在图3的底部灰色矩形中绘制了第一个RNCF过程。它被标记为“抽象级别1”。使用包含用户对项目的评分的CF数据集,我们运行了机器学习MF方法。通过这种方式,我们获得了两个包含隐藏因素的密集矩阵:用户矩阵和项目矩阵。从两个隐藏因子矩阵中,可以通过处理每个选定用户和项目的点积来获得预测。通常,仅针对每个用户的未投票项计算预测,因为推荐消费项没有用。在我们提出的RNCF体系结构中,在其第一个学习过程中,我们做的是相反的:获得对投票(消耗)项目的预测(等式(11)。这是因为,在第一个抽象级别中,我们寻找在MF阶段产生的预测误差。所提出方法的第一阶段可以用数学方法解释为
所提议的方法的第二阶段被绘制在图3的中间,该阶段被标记为“抽象级别2”。由此可见,我们利用MNN来预测每个预测的MF误差。在这种情况下,像往常一样,一旦神经网络已经学习,就对未投票的评级进行预测(方程式(18))。为了完成学习过程,神经网络输入被馈送用户和项目的隐藏因素(方程式(13)),而在所提出的方法的阶段1中,每个标签输出被馈送每个获得的误差(方程式(15))。也就是说,阶段2 MNN从阶段1学习所获得的误差,以提供每个预测的预期误差(可靠性)。在其学习操作中,第二阶段的数学解释是:
请注意,在第一阶段中,通过预测已知(投票)评级(公式(11))来获得真实误差,而在第二阶段中,我们基于投票评级上的真实误差来预测未投票评级的误差(可靠性)(公式(18))。一旦MNN在其前馈操作(误差预测)中获知,第二阶段数学解释是:
最后,RNCF阶段3负责预测未投票的评分值。它将用户和项目隐藏因素以及先前预测的可靠性作为输入。预计预测的可靠性将提供必要的附加信息,以改进预测和推荐。在它的学习操作中,第三阶段的数学解释是:
一旦第三阶段MNN已经学习,就可以通过选择未表决的评级来馈送其前馈预测操作:
现在,说明了实验的设计,包括使用的基线、选择的数据集、测试的质量度量、机器中选择的参数值和深度学习算法、使用的框架等。使用交叉验证的方法进行了实验,并在RS研究论文中广泛使用的开放CF数据集上进行了测试。我们选择了Netflix*、MovieLens[33]和FilmTrust[34]作为数据集。表1包含与这些数据集最相关的事实。表2中抽象了实验中使用的交叉验证值。选择用于预测的质量度量是平均绝对误差(MAE),而选择用于推荐的质量度量是精确度、召回率和F1。
精确度度量返回相关推荐在N条推荐总数中所占的比例,其中{相关建议}是评级大于或等于阈值。召回率是相关推荐相对于相关项目总数的比例(从为用户投票的项目总数中)。请注意,尽管N是一个常数,但相关项目的数量不是。召回是一项“相对”措施,因为从一些相关项目中提取相关推荐比从大量相关项目中提取相关推荐更为困难。F1分数将精确度和召回率结合在一起,使它们之间的相关性相同:
最后,为了实现深度学习过程,我们使用了Keras API,并在T ensorFlow上进行了工作。在这种情况下,编程语言是Python。 Keras是一个用户友好的API:它可以将常见用例中所需的用户操作数量降至最低。 Keras允许使用完全可配置的模块进行设计,并且易于扩展。使用基于Java的CF4J框架进行了机器学习矩阵分解[35]
我们实验的基准是NCF神经体系结构[24]。这是一种先进的方法,其性能优于现有的MF方法,并且比神经网络矩阵分解设计(NNMF)具有更高的准确性。与NCF相比,deepFM架构[28]取得了相似的结果。总的来说,NCF体系结构提供了一个有代表性的基线,该基线优于机器学习KNN和MF;它也是CF RS领域神经最新方法的代表基线。
3.Results
本节中的结果分为两个小节:第一个小节显示并解释了建议的RNCF和NCF基线的预测质量结果。第二小节专门介绍推荐质量结果
3.1 Prediction Result
如前一部分所述,建议的RNCF体系结构包含一个多层神经网络(图3,抽象级别2),该网络可从MF预测中的错误中学习。网络一旦学习好,就可以预测“预测错误”(可靠性)。预测误差越小,其可靠性就越高。图4显示了MovieLens数据集上获得的可靠性的质量。可以看出,运行了15个epoch后,神经网络并没有过度拟合,其测试平均绝对误差(MAE)接近0.01值。可以认为可靠性值足够准确,可以将神经网络馈送到所提出的体系结构之上(图3,抽象级别3)。Netflix和FilmT的结果与MovieLens十分相似。为了使本小节尽可能短,已省略了它们。
一旦可以在RNCF体系结构的抽象层2上预测可靠性,它们就可以馈给抽象层3(图3)。图5和图6显示了通过同时使用NCF基线和建议的RNCF获得的MAE。图5显示了MovieLens结果,而图6显示了Netflix的结果。 FilmTrust预测结果已被省略,以保持此小节的大小:它们显示的行为与MovieLens和Netflix结果相同。
图5显示,对于NCF基线(图5的顶部图)和建议的RNCF(图5的底部图),神经网络都没有过拟合。在训练结束时比较测试的MAE值(基线为40个epoch,RNCF为60个epoch),我们可以将提议的RNCF应用于MovieLens数据集的优越性:误差为0.47对0.62。 RNCF的预测质量提高了24%。从图6的分析(使用Netflix数据集获得的结果)中,可以得出相同的结论:并没有过度拟合,并且RNCF的预测质量提高了约22%。总体而言,所提出的方法在RS预测的质量上取得了很大的进步。
由于Netflix的处理版本比Movielens的处理版本大得多,因此我们也为神经网络批处理大小超参数使用了更大的值,以避免运行时间显着增加。如图6(Test MAE)所示,高批生产量倾向于在趋势结果中产生波动。这些波动可以通过处理同一神经网络的一系列独立运行的平均值进行平滑处理。由于测试集较小,波动出现在TestMAE曲线上,而不出现在TrainingMAE曲线上。
3.2 Recommendation Results
在本节中,第一组实验在Netflix *数据集上测试了推荐的RNCF体系结构。 F1结果显示在图7的顶部图表中。可以看出,对于所有N的测试值(推荐数量),建议质量都得到了改善。值得注意的是,最改进的值是最相关的值:单个用户大约有11条推荐。图7的底部图表显示了F1质量测度的细节:我们可以分别看到其Precision和Recall组件。在此数据集中,Precision不会从基线到建议的RNCF发生显着变化,并且F1的完全改进归因于召回行为。另外,少量的建议(N)会产生更好的建议质量改进。正如我们将看到的,在使用MovieLens和FilmT rust数据集进行的实验中发现了相同类型的结果。关于数值改进值,如果我们将N = 11作为合理数量的建议,则大约可获得以下改进百分比:Netflix 34%,MovieLens 20%,FilmTrust 12%。选择更多推荐时,这些改进会降低
我们进行了一些额外的研究,以了解“召回质量”度量为何解释了大多数F1改进,以及当建议数量增加时质量下降的原因。最后,我们找到了理由:预测值和可靠性值之间存在反相关。对于较高的预测,存在呈现较低可靠性的趋势。预测值和可靠性值。有较高的预测趋势会呈现较低的趋势:通常,通过选择最高的预测值来提出推荐;相反,推荐的体系结构会“丢弃”不可靠的建议(具有较高预测误差的建议)。由于建议的体系结构可以丢弃高预测项集中的不可靠预测,因此,如果有足够多的预测可供选择和丢弃,它将做得更好,特别是由于提供了低可靠性的窄余量高预测。在这里,召回质量度量可以显示其行为。召回是相对于相关项目数的相对度量:高价值的项目通常是高度预测的项目。另一方面,Precision是一个绝对量度,取决于常数N(建议数量)。基线方法与建议方法之间的召回率差异将随着相关项目数量的增加而增加,因为建议方法将能够更好地选择最可靠和最可预测的方法。相反,Precision并未在方程式中包含相关项的数量:它仅包含常数N值。最后,建议数量越多,RNCF建议的改进就越小:简单地,N的值越高,可靠项的完成速度就越快,而查全率的改进也会降低。
对应于MovieLens和FilmTust结果实验的图8和图9显示了与所讨论的图7(Netflix *)相同的主要行为。值得注意的是,数据集越大,提出的神经体系结构改进就越高。这是预期的结果,因为大型数据集提供了更好的机会来查找同时具有高度预测性和高度可靠性的项目。通过选择这些项目,我们的体系结构可以改善推荐。这样,我们可以断言所提出的RNCF深度学习架构具有可扩展性,即当数据集大小增加时,它可以更好地工作。
实验部分省略
4. Discussion
与存在更准确或更不准确的预测的方式相同,存在更可靠或更不可靠的预测。拟议的深度学习架构使用其第一层抽象来学习和预测每个预测的可靠性。随后,该体系结构学习了准确性和可靠性之间的非线性关系。通过这种方式,我们实现了一个过滤器,该过滤器会考虑每个预测的可靠性,从而选择最可能满足用户的预测。这组预测确定最准确的推荐。
结果表明,预测质量得到了很大的提高。他们还显示了推荐质量的整体改善:来自三个测试数据集的结果表明F1度量的改善。 F1的大部分改进都归功于其Recall组件,因为用户发布的相关等级越高,建议的方法选择最可靠的预测的可能性就越大。另一方面,正如预期的那样,当推荐大量项目时,由于最可靠,最准确的项目用完了,因此召回率改善降低了。由于上述原因,实验还表明,随着数据集大小的增加,推荐质量也会提高
由于拟议的深度学习架构仅使用等级作为输入数据,因此可以将其视为协作式过滤黑匣子,可以使用人口统计学,社交,上下文感知,基于内容等混合方法进行增强。 ,我们提出(1)通过增强其可靠性提取阶段来改善所提出的体系结构结果,以及(2)在神经体系结构中添加广泛的学习组件,并通过从多个特征中捕获简单关系来提供记忆
个人总结
论文在NCF的框架上进行了改进,同时使用了预测得分和可靠度(预测误差)共同进行推荐。并且得出一个结论:预测得分越高可靠度就越偏低这个趋势。F1值得改进大部分都归功于Recall。
该模型主要有3个模块组成:
- 首先是先进行MF,都得到用户用户和物品的潜在向量p,q。这样就可以预测评分,计算出实际的评分误差(注:这个我我误差是针对已有评分的item)
- 然后使用作为第二模块的标签,作为输出,来预测误差(可靠度)以最小化
- 最后再将作为输入,来预测最后的得分