推荐算法普查(基于深度学习)

摘要

深度学习已经成为推荐算法研究者们理想的选择。随着机器学习领域研究兴趣的强力增长,已经很难跟踪谁才是TopN推荐问题的最先进算法。与此同时,最近有几篇文章指出现在机器学习领域实践方面的一些问题,比如结果可复现性,以及baseline的选择问题。

本文报告了对TopN推荐算法的系统性分析结果。我们分析了最近几年在顶级研究会议上发表的18种算法。其中只有7种算法,经过合理的尝试后复现了结果。并且,对于这7中算法,其中又有6种算法,效果不敌简单的启发式方法,比如基于近邻的,或基于图的算法。剩下的1种算法,效果超过了baseline,但是依然不敌调优后的线性排序算法。总的来说,本文阐述了目前机器学习学术领域的若干潜在问题,并呼吁进行改进。

1 简介

短短几年内,深度学习已经开始主导推荐系统的算法研究领域。针对多种场景和算法问题,许多新的算法被提出,包括基于长期偏好的TopN推荐,和基于会话的推荐问题。目前对机器学习的研究兴趣不断增长,新的研究成果被发表,在很多其他领域(比如视觉和自然语言处理)深度学习取得了成功,可以预期,这些领域重大进展也会适用于推荐系统领域。然而,深度学习取得的进展(以相对现存模型准确率提升为衡量标准)并没有期望的那么大。

Lin[25]讨论了最近在发表在顶级会议上的信息检索领域的两种神经网络算法。他的分析指出,新的方法并没有明显优于细心调优后的baseline算法。在推荐系统领域,一份深度的分析[29]显示,针对基于会话的推荐问题,即使最新的神经网络方法,在大部分情况下,也不敌非常简单的算法,譬如近邻类算法。总的来说,关于机器学习取得的真实进展的问题不是一个新问题,也不局限于深度学习领域。早在2009年,Armstrong就分析并指出,虽然ad-hoc检索领域有很多论文被发表,但是所报告的进展并不实。

多重原因导致了这种现象,包括(i)较弱的baseline, (ii)新的较弱的方法被发布并作为baseline,(iii)比较或复现论文结果比较困难。第一个问题存在于作为比较对象的baseline的选择问题。针对给定的问题和数据集,有时baseline方法过于脆弱,有时是baseline方法未经过合适的调优。还有些时候,最新提出的同类方法被作为baseline,比如深度学习算法只与其他的深度学习算法做比较。这种做法促使较弱baseline的传播。当前一个深度学习算法与较弱的baseline比较,后面的深度学习算法也就没必要与较强的非深度学习算法比较了。而且,随着论文的发表,跟踪最先进的baseline方法也变成一个挑战。

另外,关于baseline的问题,另一个挑战在于,研究者使用不同的数据集、评价标准、测量指标、数据预处理方法,这就很难得出谁是目前最好的算法的结论。当算法源码和数据不能共享的化,这个问题就更严重了。越来越多的研究者公布他们的源码,但这还并不是通用的规则,即使对于顶级刊物来说。并且,即使源码公布了,一般来说也是不完整的,比如不包括数据预处理、参数调优,或完整的评价步骤,这点[15]中有指出。

最后,另一个问题可能也存在与今天的研究实践中。[27]中讨论了这类问题,包括薄弱的评审、对作者的不对称的激励,也刺激了这类问题。

这里的研究工作,目标是阐述以上报告的问题是否存在与基于深度学习的推荐算法中。其中包括两类问题:

(1)可复现性:经过合理的尝试,最近研究的复现性如何?
(2)增进:相对简单但精细调优后的baseline方法,最近的算法实际对效果增加的多少?

为了回答这些问题,我们对TopN推荐问题领域的新提出的基于深度学习的算法,进行了有系统性的分析。我们仔细检查了包括KDD, SIGIR, TheWebConf(WWW)和RecSys最新进展,锁定了18篇相关的论文。

第一步,对于源码可获得的,并且数据可访问的论文,我们尝试复现论文中报告的结果。最后,进过合理的尝试,我们值复现了7篇论文报告的结果。我们工作的一个贡献就是,评估了此领域的研究结果复现性。

我们分析的第二部分,重新执行论文中是实验之外,我们增加了另外的baseline算法作为比较对象。我们使用了基于用户和基于物品的启发式方法,以及基于图模型的联众变种方法。令人惊讶的是,我们发现,大部分(7篇当中的6篇)论文中新方法,并不能总是优于简单精细调参后的baseline方法。甚至在其中一种情况下,非个性化的推荐最流行物品的方法,按照按照准确率的度量来衡量,是最好的方法。我们工作的第二项贡献就是,揭示机器学习领域的这个潜在的更深远的问题。

这篇论文的结果如下。第2节中我们描述我们的研究方法以及如果复现现存的方法。第3节展示复现的结果,包括额外加入的baseline方法。最后第4节讨论我们研究工作的意义。

2 研究方法

2.1 收集可复现论文

为了确保我们的工作不是基于最近发表的研究的个例,我们人工系统地详细检查了若干科学会议的最近进展,筛选出相关的长论文。包括2015到2018年期间,以下会议中发表的论文:KDD,SIGIR,TheWebConf(WWW)和RecSys。判断论文是否相关的标准是(a)是否提出了基于深度学习的技术,(b)关注点是否在于TopN推荐问题。关注于组推荐或基于会话的推荐等推荐问题的论文,不在我们的分析范围之内。因为我们的兴趣点在TopN推荐问题,我们只考虑用于评估分类或排序的论文,如准确率,召回率,MAP。经过筛查之后,我们收集了18篇相关的论文。

下一步,我们视图复现论文中报告的结果。我们复现的方法最大程度的依赖原作者提供的素材,包括源码和数据集等。理论上来说,只需要采用论文中描述的技术,就能复现发表的结果。实际上,很多其他的细节影响实验的结果,包括算法的实现,评测的步骤,数据的分割。

我们因此视图从作者那获取源码和数据集。当这些都没有公开发布的时候,我们联系了论文的作者,并30天之内等待他们的回复。最后如果满足下满条件,我们则任务论文是可复现的:

  • 可获取可用版本的源码或需要极小改动便可用的源码。
  • 可获取至少一个原文中的数据集。要么按照原文中的训练测试集可获取,要么可以按照按照原文的买哦书从新生成。

否则,我们则任务原论文不可复现。注意,如果源码虽然一公布,但是只包含模型框架,许多部分和实现细节不在,则也任务此论文不可复现。基于私有的非公开的数据的论文,我们也认为它不可复现。

俺在我们的规则,各个会议的论文复现情况入下表:
推荐算法普查(基于深度学习)

2.2 评测方法

至少有两种方法可以验证新算法相对baseline的改进效果。一总方式是用相同的配置评测所有的算法,包括相同的数据集,相同的评测步骤[29].虽然这种方法可以比较不同算法在相同的数据集墒的效果,但是与原论文上的评测方法坑不一样。因此这种评测方法跟我们分析方法的初衷不同,我们的初衷是精确的复现论文报告的结果。

对于所有复现的算法,我们采用原论文中报告的最优超参,因为我们使用了原论文中提供的代码和数据集。我们共享了我们baseline方法的代码和参数以及超参等等细节。

我们采用的baseline方法如下,都是比较简单的方法:

TopPopular:这是一种非个性化的推荐方法,为每个人推荐最流行的物品。物品的流行度有显式的或隐式评价来衡量。

ItemKNN:一种基于KNN(k-nearest-neighborhood)和物品相似度的协同过滤算法。两个物品i,ji,j之间的相似度计算方式为:

sij=rirjrirj+hs_{ij}=\frac{\boldsymbol r_i \cdot \boldsymbol r_j }{||\boldsymbol r_i||||\boldsymbol r_j||} + h

其中ri,rjRU\boldsymbol r_i,\boldsymbol r_j\in R^{|U|},表示物品i,ji,j的显示评分向量。U|U|表示用户的数量。评分可以用TF-IDF或BM25加权处理[50].并且相似度可以选择使用或不使用模乘积做规则化。参数hh用于减小只有少数评分的物品相似度。

UserKNN:基于KNN和用户相似度的协同过滤推荐算法。超参与ItemKNN相同[40]。

ItemKNN-CBF:基于内容过滤(CBF)近邻算法。物品间的相似度有物品的内容特征(属性)计算得出:

sij=fifjfifj+hs_{ij}=\frac{\boldsymbol f_i\cdot\boldsymbol f_j}{||\boldsymbol f_i||||\boldsymbol f_j|| + h}

其中向量fi,fjRF\boldsymbol f_i,\boldsymbol f_j\in R^{|F|}表示物品i,ji,j的特征。F|F|表示特征的个数。

ItemKNN-CFCBF:CF+CBF的混合算法,首先价格物品的评分向量和特征向量相连得到[ri,wfi][\boldsymbol r_i,w\boldsymbol f_i],然后计算物品间的相似度。其中ww表示内容特征相对于评分的权重。

p3α\boldsymbol p^3\alpha:这是一种简单的基于图的算法[8]。puip_{ui}表示从用户uu跳转到物品ii的概率,计算方法为pui=(rui/Nu)αp_{ui}=(r_{ui}/N_u)^{\alpha}.其中ruir_{ui}表示用户uu对物品ii的评分。NuN_u表示用户uu的评分个数。α\alpha表示阻尼系数。piup_{iu}表示跳转回来的概率,piu=(rui/Ni)αp_{iu}=(r_{ui}/N_i)^{\alpha}。物品间的相似度计算方法为:

sij=vpjvpvis_{ij}=\sum_{v}p_{jv}p_{vi}

RP3β\boldsymbol R\boldsymbol P^3\beta: [34]提出的P3αP^3\alpha的一个变体。当β=0\beta=0时此算法等同于P3α\boldsymbol P^3\alpha.

对于所有的baseline算法和数据集,我们通过贝叶斯检索[1]决定最优参数。近邻数kk搜索范围为5到800;hh为0到1000之间,α,β\alpha,\beta为0到2之间的实数。

3 验证结果

这一节总结所复现的实验与baseline的对比结果。我们在线共享了所有的细节数据,包括统计结果,和最后的参数。

3.1 Collaborative Memory Networks(CMN)

CMN算法2018年发表于SIGIR,结合了记忆网络(memory networks)、神经网络注意力机制、潜因子学习和近邻模型[10]。作者选择的对比模型有:矩阵分解模型、神经网络模型和ItemKNN模型(没有参数h).用到了三个数据集:Epinions,CiteULike-a和Pinterest。原论文中报告了CMN模型的最优参数,但是没有记录如何调优baseline模型。命中率和NDGG作为性能指标。原论文报告的实验结果是,CMN模型超过了所有的baseline模型。

我们在他们的数据集上复现了他们的实验。对于我们额外增加的baseline实验,针对命中率我恩优化了参数,结果记录如下表2中:

推荐算法普查(基于深度学习)
实验结果显示,优化basline之后,CMN的表现在任何数据集上都不是最好的。

3.2 Metapath based Context for RECommendation(MCRec)

MCRec[17]算法2018年发表于KDD,基于元路径的模型,针对TopN推荐问题,利用了譬如电影类型等额外信息。技术角度来说,作者提出了一种优先级采样的方法选择高质量路径实例,并提出一种协注意力机制改进基于元路径的上下文,用户和物品的表示方法。

我们的实验分析结果如下表3:

推荐算法普查(基于深度学习)

3.3 Collaborative Variational Autoencoder(CVAE)

CAVE[23]算法2018年发表于KDD,是一种同时考虑了物品内容信息和评分信息的混合技术。算法通过非监督的方式从内容信息中学习深度潜在表示,并结合内容和评分信息,学习物品与用户间的关系。

我们的分析结果如下表4:

推荐算法普查(基于深度学习)

3.4 Collaborative Deep Learing(CDL)

上面的分析的CVAE算法,将2015年发表于KDD的CDL算法作为baseline之一。CDL算法是一个前向概率模型,联合学习堆叠降噪自动编码器(stacked denoising autoencoders)和协同过滤。它采用深度学习技术联合学习内容信息和协同信息的深度表示。

我们的实验分析结果如下表5:

推荐算法普查(基于深度学习)

3.5 Neural Collaborative Filtering(NCF)

基于神经网络的协同过滤算法[14]2017年发表与WWW,扩展了传统的矩阵分解算法,将其中的内积运算替换为神经网络。

我们的实验分析结果如下表6:

推荐算法普查(基于深度学习)

3.6 Spectral Collaborative Filtering(SpectralCF)

SpectralCF[53]算法2018年发表于RecSys,基于频谱图理论(Spectral Graph Theory),专门为了解决冷启动问题而设计。

我们的实验分析结果如下表7:

推荐算法普查(基于深度学习)

3.7 Variational Autoencoders for Collaborative Filtering(Mult-VAE)

Mult-VAE[24]算法2018年发表于WWW,是基于自动编码器(),是一种利用隐式反馈数据的协同过滤算法。

我们的实验分析结果如下表8:
推荐算法普查(基于深度学习)

4 讨论

4.1 可复现性和可测量性

从某些方面来看,在机器学习领域建立可复现性的难度,应该比其他学科和其他计算机学科要简单。虽然许多推荐算法都不是完全确定性的,比如使用了某些随机方式初始化参数,但是多次实验的结果的波动,大部分情况下应该比较小。因此,当研究者提供了提供了他们的代码和数据集时,每个人都应该可以复现大致相同的结果。

然而我们的工作显示,复现率实际上并不高。或许是因为各种会议提高了复现性的要求,相比过去更多的研究者共享了代码。但是超参优化,评测,数据预处理,以及baseline的代码,都没有共享,因此其他人验证报告的发现比较困难。

复现的另一个的困难在于计算的复杂度。

5 总结

我们分析了TopN推荐问题的最近若干神经网络类的算法。我们的分析显示,复现已发表的研究结果任然有不小的挑战。进一步分析显示,概念或计算量方面较简单的算法至少能在某些数据集上,超过被分析的新算法。因此我们认为在算法的评价方面有待改进,呼吁更严格更好的研究实践。

目前我们的分析还局限在特定的接个会议内。未来,我们计划扩展我们的分析目标,包括更多的出版物和TopN推荐之外的其他推荐问题。并且,我们计划考虑更加传统的算法作为baseline,比如基于矩阵分解的。