《Neural Collaborative Filtering》
在信息爆炸的时代,推荐系统在缓解信息过载(information overload
)方面发挥着举足轻重的作用,并且已经被许多在线服务广泛采用,包括电商、在线新闻、社交媒体网站。个性化推荐系统的关键在于根据用户历史交互(例如评分、点击)对user-item
的偏好进行建模,这就是所谓的协同过滤(collaborative filtering
)。
在各种协同过滤技术中,矩阵分解(matrix factorization: MF
)是最流行的一种,它将用户和 item
投影到共享的潜在空间(latent space
)中,使用潜在特征向量来表示用户和 item
。此后,用户对 item
的交互被建模为它们潜在向量(latent vector
)的内积。通过Netflix Prize
的推广,MF
已经成为基于潜在因子模型(latent factor model-based
)的推荐的事实上的方法。
许多研究工作致力于增强 MF
,例如将其与基于邻域的模型(neighbor-based model
)相结合、将其与item
内容的主题模型(topic model
)相结合、将其扩展到分解机(factorization machine
)从而进行特征的通用建模。
尽管 MF
对于协同过滤很有效,但是众所周知,它的性能可能会受到简单选择“内积” 作为交互函数的阻碍。例如,对于基于显式反馈的评分预测任务,众所周知,可以通过将 user bias
项和 item bias
项添加到交互函数中从而提高 MF
模型的性能。虽然这对于内积算子而言似乎只是一个微不足道的调整,但是它指出了设计一个更好的、专用的交互函数来建模用户和 item
之间潜在特征交互的积极效果。内积算子,它仅仅简单地线性组合多个潜在特征(latent feature
)的乘法,可能不足以捕获用户交互数据的复杂结构。
在论文 《Neural Collaborative Filtering》
中,作者探讨了使用深度神经网络从数据中学习交互函数,而不是像以前许多工作那样人工设计交互函数。神经网络已经被证明能够逼近任何连续函数,而且最近发现神经网络(deep neural networks: DNNs
)在多个领域都有效 ,从计算机视觉、语音识别到文本处理。然而,与大量关于 MF
方法的文献相比,使用 DNN
进行推荐的工作相对较少。尽管最近的一些进展已经将 DNN
应用于推荐任务并显示出有希望的结果,但是它们主要使用 DNN
来建模辅助信息(auxiliary information
),例如item
的文本描述、音乐的音频特征、图像的视觉特征。在建模关键的协同过滤效果方面,他们仍然采用 MF
,使用内积来结合用户潜在特征和 item
潜在特征。论文通过形式化(formalize
)用于协同过滤的神经网络建模方法来解决上述研究问题(利用神经网络来建模交互函数)。通过采用可以从数据中学习任意函数的神经网络架构代替内积,论文提出了一个名为 Neural Network-based Collaborative Filtering: NCF
的通用框架。
论文聚焦于隐式反馈(implicit feedback
),隐式反馈通过视频观看、商品购买、item
点击等行为间接反映了用户的偏好。和显式反馈(explicit feedback
)(即显式评分rating
和评论review
)相比,隐式反馈可以自动跟踪,因此更容易被内容提供商(content provider
)所收集。然而,隐式反馈的使用更具有挑战性,因为无法观察到用户满意度(user satisfaction
),并且负反馈(negative feedback
)天然的稀疏性。在本文中,作者探讨了如何利用DNN
对包含噪音的隐式反馈信号进行建模。
论文的主要贡献:
论文提出了一个神经网络架构来对用户和 item
的潜在特征进行建模,并设计了一个基于神经网络的协同过滤通用框架 NCF
。
论文表明: MF
可以被解释为 NCF
的特殊情况,并利用多层感知机赋予 NCF
模型高度的非线性。
论文在两个真实数据集上进行了大量的实验,从而证明 NCF
方法的有效性,以及深度学习在协同过滤方面的前景。
相关工作:
隐式反馈:虽然关于推荐的早期文献主要集中在显式反馈,但最近人们越来越关注隐式数据。具有隐式反馈的协同过滤( collaborative filtering: CF
)任务通常被形式化为 item
推荐问题,其目的是向用户推荐一个简短的 item
列表。和显式反馈工作广泛解决的评分预测相比,解决 item
推荐问题更实用但更具有挑战性。一个关键的洞察(insight
)是对缺失数据进行建模,而这些缺失数据总是被显式反馈的工作所忽略。
为了使用隐式反馈为 item
推荐定制(tailor
)潜在因子模型,早期工作应用了两种均匀加权策略:将所有缺失数据视为负样本,或者从缺失数据中均匀采样负样本。最近,《Fast matrix factorization for online recommendation with implicit feedback》
和 《Modeling user exposure in recommendation》
提出了专门的模型来对缺失数据进行加权。 《A generic coordinate descent framework for learning from implicit feedback》
为基于特征的分解模型开发了一种隐式坐标下降(implicit coordinate descent: iCD
)解决方案,实现了 SOTA
的 item
推荐性能。
基于神经网络的推荐:早期先驱工作 《Restricted boltzmann machines for collaborative filtering》
提出了一种两层受限玻尔兹曼机(Restricted Boltzmann Machine: RBM
)来建模用户对 item
的显式评分。《Ordinal boltzmann machines for collaborative filtering》
扩展了该工作从而对评分的保序性质(ordinal nature
)进行建模。
最近,自编码器已经成为构建推荐系统的流行选择。《Autorec: Autoencoders meet collaborative filtering》
提出了基于用户的 AutoRec
,其思想是学习隐藏的结构(hidden structure
),这些结构可以根据用户的历史评分作为输入从而重构用户的评分。在用户个性化方面,该方法与 item-item
模型(将用户表示为他/她的历史评分 item
)具有相似的精神。
为了避免自编码器学习恒等函数(identity function
)从而无法泛化到未见(unseen
)的数据,降噪自编码器(denoising autoencoder: DAE
)应用于从故意损坏的输入中学习。
最近 《A neural autoregressive approach to collaborative filtering》
提出了一种用于 CF
的神经自回归方法。
虽然这些工作为神经网络解决 CF
的有效性提供了支持,但是其中大多数都专注于显式评分,并仅对观察到的数据进行建模。结果,对于从只有正样本的隐式数据中学习的任务,它们很容易失败。
神经网络用于隐式反馈的推荐:最近的一些工作探索了基于隐式反馈的深度学习模型来进行推荐,但是他们主要使用 DNN
对辅助信息进行建模,例如item
的文本描述、音乐的声学特征、用户的跨域行为、以及知识库中的丰富信息。然后,将 DNN
学到的特征与用于协同过滤的 MF
集成。
与我们的工作最相关的工作是 《Collaborative denoising auto-encoders for top-n recommender systems》
,它为 CF
提供了一个带有隐式反馈的协同降噪自编码器(collaborative denoising autoencoder: CDAE
)。 和 DAE-based CF
相比,CDAE
额外地将一个用户节点插入到自编码器的输入中从而重建用户的评分。如作者所示,当应用恒等映射作为 CDAE
的隐层激活函数时,CDAE
等效于 SVD++
模型。这意味着虽然 CDAE
是一种用于 CF
的神经网络建模方法,但是它仍然应用线性核(linear kernel
)(即内积)来对 user-item
交互进行建模。这可以部分解释为什么 CDAE
使用更深的层不会提高性能。
与 CDAE
不同,我们的 NCF
采用双路架构,使用多层前馈神经网络对 user-item
交互进行建模。这允许 NCF
从数据中学习任意函数,比固定的内积函数更强大、更具表达能力。
其它工作:沿着类似的路线,在知识图谱文献中已经深入研究了学习两个实体之间的关系。已有很多关系型机器学习(relational machine learning method
)方法被提出。与我们的方法最相似的一个是神经张量网( Neural Tensor Network: NTN
),它使用神经网络来学习两个实体的交互并展示层强大的性能。在这里,我们关注协同过滤的不同 problem setting
。虽然将 MF
和 MLP
相结合的 NeuMF
的思想部分受到 NTN
的启发,但是在允许 MF
和 MLP
学习不同的 embedding
集合方面,我们的 NeuMF
比 NTN
更灵活、更通用。
最近,谷歌公布了他们用于 App
推荐的 Wide & Deep
方法。Deep
组件同样在特征 embedding
之上使用 MLP
,据报道它具有很强的泛化能力。虽然他们的工作重点是结合用户和 item
的各种特征,但是我们的目标是探索纯协同过滤系统的 DNN
。我们表明,DNN
是对 user-item
交互建模的一个很有前景的选择。据我们所知,以前从未有工作对此进行研究过。
我们首先将问题形式化并讨论现有的带隐式反馈的协同过滤解决方案。然后我们简短地概括了广泛使用的 MF
模型,并强调其内积造成的局限性。
从隐式数据中学习(Learning from Implicit Data
):令 item
数量。定义从用户隐式反馈(implicit feedback
)得到的 user-item
交互矩阵
注意:
item
item
item
item
item
这给从隐式数据中学习带来了挑战,因为隐式数据仅提供了关于用户偏好(users' preference
)的带噪音的信号(noisy signals
)。虽然观察到的 item
至少反映了用户对item
的兴趣,但是未观察到的 item
可能只是缺失的数据(missing data
),并且天然(natural
)缺乏负反馈(negative feedback
)。
带隐式反馈的推荐问题被表述为估计 item
的得分(score
)的问题,其中这些score
用于对 item
进行排序。model-based
方法假设数据可以由底层模型生成(或描述)。形式上, 模型可以抽象为学习:
其中:
predicted score
。
interaction function
)。
为了估计参数 point-wise loss
和 pair-wise loss
。
作为显式反馈(explicit feedback
)大量工作的自然延伸,point-wise loss
通常定义为最小化 negative data
的缺失,他们要么将所有未观察到的 item
视为负样本、要么从未观察到的 item
中采样负样本。
pair-wise loss
的思想是:观察到的 item
应该比未观察到的 item
的排名更高。因此,它不是最小化 pair-wise learning
最大化观察到的 item
item
margin
)。
更进一步地,我们的 NCF
框架使用神经网络参数化交互函数 NCF
自然支持 point-wise learning
和 pair-wise learning
。
矩阵分解(Matrix Factorization: MF
):MF
将每个用户、每个 item
都和潜在特征向量(latent feature vector
)相关联。令 MF
估计(estimate
)交互
其中 latent space
)的维度。
正如我们所看到的,MF
对用户潜在因子(latent factor
)和 item
潜在因子的双向交互(two-way interaction
)进行建模,假设潜在空间的每个维度彼此独立,并以相同的权重线性组合它们。因此,MF
可以视为潜在因子的线性模型。
下图说明了内积函数如何限制 MF
的表达能力。为了更好地理解示例,有两个设置(settings
)需要事先说明。
首先,因为 MF
将用户和 item
都映射到相同的潜在空间,所以两个用户之间的相似性也可以用内积来衡量(或者它们潜在向量之间的余弦相似度来衡量)。
其次,不失一般性,我们使用 Jaccard
系数(用户A
观察到的item
集合与用户B
观察到的 item
集合之间的 Jaccard
系数)作为 MF
需要恢复的、两个用户之间的真实相似度(ground-truth similarity
)。
我们首先关注图 (a)
中的前三行(用户)。很容易有 (b)
所示绘制。
现在,让我们考虑一个新的用户 (a)
中的虚线所示。所以我们有 MF
模型将 (b)
中用虚线显示的两个选择),则会导致 ranking loss
)。
这个例子显示了MF
使用简单的、且固定的内积来估计低维潜在空间中复杂的 user-item
交互的限制。在这个例子中,我们注意到解决该问题的一种方法是使用更大的潜在因子数量
在本文中,我们通过从数据中使用 DNN
学习交互函数来解决MF
的这个限制。
我们首先介绍了通用的 NCF
框架,详细说明了如何学习 NCF
的概率模型,该模型强调了隐式数据的二元属性(binary property
)。
然后我们证明了 MF
可以在 NCF
下表达和推广。
为了探索用于协同过滤的 DNN
,我们接着提出 NCF
的实例化,使用多层感知机(multi-layer perceptron: MLP
)来学习 user-item
交互函数。
最后,我们提出了一个新的神经矩阵分解模型,它在 NCF
框架下集成了 MF
和 MLP
,从而统一了 MF
的线性和 MLP
的优势来建模 user-item
潜在结构(latent structures
)。
为了允许全(full
)神经网络来处理协同过滤, 我们采用 multi-layer representation
来建模 user-item
交互
底部输入层由两个特征向量 item
输入特征向量可以自定义(customized
)从而支持广泛的用户建模和 item
建模,例如上下文感知(context-aware
)建模、content-based
建模、neighbor-based
建模。由于这项工作聚焦于纯粹(pure
)的协同过滤设置(setting
),我们仅采用user id
和 item id
作为输入特征,并将其转换为稀疏的 one-hot
向量。
基于输入的这种通用特征表示(generic feature representation
),我们的方法可以通过使用内容特征来表示用户和 item
,从而轻松地解决冷启动问题(cold-start problem
)。
输入层之上是 embedding
层,它是一个全连接层,将稀疏表示(sparse representation
)投影到稠密向量(dense vector
)。得到的 user embedding
(item embedding
)可以视为潜在因子模型背景下的用户潜在向量(item
潜在向量)。
然后,用户 embedding
和 item embedding
被馈入多层神经架构,我们称之为神经协同过滤层(neural collaborative filtering layers
),从而将潜在向量映射为预估分。
神经CF
层的每一层都可以自定义,从而发现 user-item
交互的某些潜在结构。最后一个隐层 X
的维度决定了模型的能力。
最终的输出层是预估分 point-wise loss
来进行训练。
我们注意到训练模型的另一种方法是执行 pair-wise learning
,例如使用 Bayesian Personalized Ranking
和 margin-based loss
。由于本文的重点是神经网络建模部分,我们将扩展 NCF
的 pair-wise learning
作为未来的工作。
我们形式化 NCF
预测模型为:
其中:
item
的潜在因子矩阵(latent factor matrix
)。
由于交互函数
其中
为了学习模型参数,现有的 point-wise
方法主要使用平方损失进行回归:
其中:
user-item
权重高于未观察到交互的 user-item
。
这里
表示未观察到交互的样本。
虽然平方损失可以通过假设观测值(observations
)由高斯分布产生来解释,但是我们指出这可能与隐式数据不符。这是因为对于隐式数据,目标值 1
或者 0
,表示用户 item
point-wise NCF
的概率方法,该方法特别关注隐式数据的二元属性(binary property
)。
考虑到隐式反馈的one-class
特性,我们可以将 label
:1
表示item
0
表示item
item
NCF
这样的概率解释,我们需要将输出 [0.0, 1.0]
之间。这可以通过使用概率函数(例如 Logistic
或 Probit
函数)作为输出层 setting
,我们将似然函数定义为:
使用负的对数似然,我们得到:
这是 NCF
方法需要最小化的目标函数,其优化可以通过执行随机梯度下降(stochastic gradient descent: SGD
)来完成。细心的读者可能已经意识到它与二元交叉熵损失(binary cross-entropy loss
)(也称作对数损失log loss
)相同。
通过对NCF
进行概率处理,我们将带有隐式反馈的推荐作为二元分类问题来解决。由于分类感知(classification-aware
)的 log loss
在推荐文献中很少被研究,我们在这项工作中对其进行了探索,并在实验中证明了其有效性。
对于负样本集合 sampling ratio
)(这个比例是相对于观察到的交互数量)。虽然非均匀采样策略(例如,item popularity-biased
)可能会进一步提高性能,但是我们将这个探索留作未来的工作。
我们现在展示如何把 MF
解释为我们 NCF
框架的一个特例。由于 MF
是最流行的推荐模型,并在文献中进行了广泛的研究,因此能够复原 MF
使得 NCF
可以模拟一大族因子分解模型。
由于NCF
输入层的 user ID
(或者 item ID
)是 one-hot
编码,因此得到的 embedding
向量可以视为 user
(或者 item
)的隐向量。令用户 item
其中
然后我们将结果向量投影到输出层:
其中
直观地讲,如果我们选择 1
的向量,那么我们就可以准确地复原 MF
模型。
在 NCF
框架下,MF
可以很容易地推广和扩展。例如:
如果我们允许 MF
的一个变体,这个变体允许MF
模型学习各潜在维度的不同重要性。
如果我们对 MF
的一个变体,这个变体是一个非线性模型,并且可能比线性 MF
模型更具有表达能力。
在这项工作中,我们在 NCF
框架下实现了一个广义版本的 MF
,它使用 sigmoid
函数作为
我们称这个模型为广义矩阵分解( Generalized Matrix Factorization: GMF
)。
由于 NCF
使用两路分别对用户和 item
进行建模,因此通过将这两路特征拼接起来从而组合它们的特征是很直观的。这种设计已经在多模态(multimodal
)深度学习工作中广泛采用。 然而,简单的向量拼接并没有考虑用户潜在特征和 item
潜在特征之间的任何交互,这不足以建模协同过滤效果。为了解决这个问题,我们提出在拼接向量上添加隐层,使用标准 MLP
来学习用户潜在特征和 item
潜在特征之间的交互。从这个意义上讲,我们可以赋予模型很大程度的灵活性和非线性从而学习 GMF
那样只使用一个固定的逐元素乘积。
具体而言,我们的 NCF
框架下的 MLP
模型定义为:
其中
对于 MLP
层的激活函数,可以自由选择 sigmoid
、tanh
、ReLU
等。
sigmoid
函数将每个神经元限制在 (0.0,1.0)
之间,这可能会限制模型的性能。众所周知,sigmoid
受到饱和(saturation
)的影响:当神经元的输出接近 0
或 1
时,神经元就会停止学习。
尽管 tanh
是更好的选择并且已经被广泛采用,但是它只能一定程度上缓解 sigmoid
的问题。因为tanh
可以视作 sigmoid
的 rescale
版本:
最终我们选择 ReLU
,它在生物学上更合理,并且被证明是非饱和(non-saturated
)的。此外,它鼓励稀疏激活(sparse activations
)(即大多数神经元是非激活的) ,非常适合稀疏数据并使得模型不太可能过拟合。我们的实验结果表明:ReLU
的性能略优于 tanh
,而 tanh
又明显优于 sigmoid
。
对于网络结构的设计,最常见的解决方案是采用塔式模式(tower pattern
),其中底层最宽、接下来每一层的神经元数量依次减少。基本假设是:对更高层使用更少的隐单元,使得更高层能够学习数据的更抽象的特征。
我们根据经验实现了塔式结果,将每个连续层的神经元数量减半。
到目前为止,我们已经开发了NCF
的两个实例:
GMF
应用一个linear kernel
来建模潜在特征交互。
MLP
使用一个non-linear kernel
来从数据中学习非线性交互。
那么接下来的问题是:我们如何在 NCF
框架下融合 GMF
和 MLP
,以便它们可以相互加强从而更好地建模复杂的 user-item
交互?
一个简单的解决方案是:让 GMF
和 MLP
共享相同的 embedding
层,然后组合(combine
)它们交互函数的输出。这种方式与著名的神经张量网络(Neural Tensor Network: NTN
)有着相似的精神。
具体而言,将 GMF
和one-layer MLP
相结合的模型可以表述为:
然而,共享 GMF
和 MLP
的 embedding
可能会限制模型的性能。这意味着 GMF
和 MLP
使用相同大小的 embedding
。对于两个子模型最佳 embedding
大小差异很大的数据集,该解决方案可能无法获得最佳的集成(ensemble
)。
为了给融合模型(fused model
)提供更大的灵活性,我们允许 GMF
和 MLP
学习单独的 embedding
,并通过拼接它们最后一个隐层来组合这两个模型。下图给出了我们的方案,其公式如下:
其中:
GMF
和 MLP
部分的 user embedding
。
GMF
和 MLP
部分的 item embedding
。
如前所述,我们使用 ReLU
作为 MLP layer
的激活函数。
该模型结合了 MF
的线性和 DNN
的非线性,从而对 user-item
潜在结构进行建模。我们将该模型称作神经矩阵分解( Neural Matrix Factorization: NeuMF
)。
模型相对于每个参数的导数可以用标准的反向传播来计算,由于空间限制这里省略了标准反向传播的描述。
NeuMF
类似于DeepFM
,它们相同点在于:都使用线性部分来直接捕获特征交互;都使用非线性DNN
来捕获非线性交互;都通过拼接两部分来同时捕获线性和非线性交互。区别在于:
NeuMF
的线性部分仅捕获user
和item
之间的二阶交互,而DeepFM
捕获所有特征之间的二阶交互。但是这里NeuMF
只有user id
和item id
特征,因此它们之间的二阶交互也意味着所有特征的二阶交互。
NeuMF
的两个组件独立使用embedding
,而DeepFM
使用共享的embedding
。
预训练:由于 NeuMF
目标函数的非凸性(non-convexity
),基于梯度的优化方法只能找到局部最优解。据报道,初始化对深度学习模型的收敛和性能起着重要作用。由于 NeuMF
是 GMF
和 MLP
的集成(ensemble
),我们提出使用 GMF
和 MLP
的预训练模型初始化 NeuMF
。
我们首先使用随机初始化来训练 GMF
和 MLP
,直到收敛。
然后我们使用 GMF
和 MLP
模型的参数作为 NeuMF
相应参数部分的初始化。唯一的调整是在输出层,我们将两个模型的权重拼接起来作为初始化:
其中:
GMF
模型和 MLP
模型的
tradeoff
的超参数。
为了从头开始训练 GMF
和 MLP
,我们采用 Adaptive Moment Estimation: Adam
优化器,它通过对频繁参数(frequent parameters
)执行较小的更新、对不频繁参数(infrequent parameters
)执行较大的更新,从而调整每个参数的学习率。和普通 SGD
相比,Adam
方法为两种模型都产生了更快的收敛速度,并缓解了调整学习率的痛苦。
在将预训练参数输入 NeuMF
之后,我们使用普通 SGD
而不是 Adam
进行优化。这是因为 Adam
需要保存动量信息(momentum information
)以正确更新参数。由于我们仅使用预训练模型的参数来初始化 NeuMF
并放弃保存动量信息,因此不适合使用基于动量的方法进一步优化 NeuMF
。
我们进行实验以回答以下三个问题:
RQ1
:我们提出的 NCF
方法是否优于 SOTA
的隐式协同过滤方法?
RQ2
:我们提出的优化框架(带负采样的 log loss
)如何用于推荐任务?
RQ3
:更深层的网络是否有助于从 user-item
交互数据中学习?
接下来,我们首先介绍实验配置,然后回答上述三个问题。
数据集:我们在两个公共数据集上进行实验。
MovieLens
:一个电影评分数据集,该数据集已经被广泛用于评估协同过滤算法。我们使用包含100
万个评分的版本,其中每个用户至少有 20
个评分。
虽然它是一个显式反馈数据集,但是我们有意选择它来研究从显式反馈的隐式信号中学习的性能。为此,我们将其转换为隐式数据,其中每一项被标记为 0
或 1
,表明用户是否对该 item
进行了评分。
Pinterest
:一个基于内容的图像推荐数据集。原始数据非常大,但是非常稀疏。例如超过 20%
的用户只有一个 pin
,这使得评估协同过滤算法变得困难。因此,我们以与 MovieLens
数据相同的方式过滤数据集,仅保留至少有 20
次交互的用户。结果我们得到一个包含 55,187
个用户、1,500,809
个互动的子集。每个互动都表示用户是否将图片钉到用户的 board
上。
这些数据集的统计信息如下表所示。Sparsity
表示未观测到互动的 user-item pair
占比。
评估方式:为了评估item
推荐的性能,我们采用了广泛使用的 leave-one-out
评估。对于每个用户,我们将 hold-out
其最近的交互作为测试集,并使用剩余的数据进行训练。
由于在评估过程中,每个用户对所有的 item
进行排序太耗时,因此我们遵循了常见的策略:随机抽取 100
个用户未交互的 item
,然后在 100
个 item
中对测试 item
进行排序。
ranked list
的性能由 Hit Ratio: HR
和 Normalized Discounted Cumulative Gain: NDCG
来判断。在没有特别说明的情况下,我们将这两个指标的 ranked list
长度截断为 10
。因此:
HR
直观地衡量测试 item
是否出现在列表的 top-10
中。
NDCG
通过为排名靠前的 hit
分配更高的分数来说明 hit
的 position
。
我们为每个测试用户计算这两个指标并报告了平均得分。
baseline
方法:我们将 NCF
方法(GMF/MLP/NeuMF
)和以下方法进行比较:
ItemPop
:根据互动数量来判断item
的流行度popularity
从而对 item
进行排序。这是一种对推荐性能进行基准测试benchmark
的非个性化方法。
ItemKNN
:这是标准的基于item
的协同过滤方法。我们遵循 《Collaborative filtering for implicit feedback datasets》
的设置从而使其适应隐式数据。
BRP
:该方法使用 pairwise ranking loss
来优化 MF
模型,使得模型适合从隐式反馈中学习。这是一个极具竞争力的item
推荐 baseline
。我们使用固定的学习率并报告最佳性能。
eALS
:这是 item
推荐的 state-of-the-art MF
方法。它优化了平方损失,将所有未观察到的交互视为负样本,并通过item
流行度对它们进行非均匀加权。由于 eALS
显示出优于均匀加权方法 WMF
的性能,因此我们不会进一步报告 WMF
的性能。
由于我们提出的方法旨在对用户和 item
之间的关系进行建模,因此我们主要与 user-item
模型进行比较。我们省略了与 item-item
模型的比较,如 SLIM, CDAE
,因为性能差异可能是由于使用个性化的用户模型引起的(因为 SLIM, CDAE
这些模型是 item-item
模型)。
实验配置:
我们基于 Keras
实现了我们的方法。
为了确定 NCF
方法的超参数,我们为每个用户随机抽取了一个交互作为验证集,并在其上调优了超参数。
我们测试了 batch size
为 [128, 256, 512, 1024]
、learning rate
为 [0.0001, 0.0005, 0.001, 0.005]
。
所有 NCF
模型都是通过优化 log loss
来学习的,其中我们为每个正样本采样了四个负样本。
对于从头开始训练的 NCF
模型,我们使用高斯分布(均值为0
、标准差为 0.01
)来随机初始化模型参数,并使用 mini-batch
的 Adam
优化器来优化模型。
由于 NCF
的最后一个隐层决定了模型的能力(因为 NCF
的隐层维度采用逐层减半的策略),我们将其称为预测因子(predictive factors
),并评估了维度为 [8, 16, 32, 64]
。
值得注意的是,维度较高的预测因子可能会导致过拟合并降低性能。
如果没有特别说明,那么我们为 MLP
使用三层的隐层。例如,如果预测因子维度为 8
,那么神经 CF
层的架构为 32 -> 16 -> 8
,embedding size
为 16
。
对于预训练的 NeuMF
,GMF
和 MLP
对 NeuMF
的初始化做出同等的贡献。
下图显示了 HR@10
和 NDCG@10
在不同预测因子维度方面的性能。
对于 MF
方法 BPR
和 eALS
,预测因子的维度等于潜在因子的维度。对于 ItemKNN
,我们测试了不同邻域大小并报告了最佳性能。由于 ItemPop
性能较弱,因此下图中省略了 ItemPop
从而更好地突出个性化方法的性能差异。
首先,我们可以看到 NeuMF
在两个数据集上都实现了最佳性能,明显优于 state-of-the-art
的 eALS
和 BPR
(平均而言,相对于 eALS
和 BPR
的提升为 4.5%
和 4.9%
)。
对于 Pinterest
数据集,NeuMF
使用 8
维预测因子也大大超越了64
维预测因子的 eALS
和 BPR
。这表明 NeuMF
通过融合线性MF
和非线性 MLP
模型从而具有高的表达能力。
其次,另外两种 NCF
方法(GMF
和 MLP
)也表现出相当强劲的性能。在它们之间,MLP
的表现略差于 GMF
。注意,可以通过添加更多隐层来进一步提升 MLP
的性能(参考下面的实验),这里我们仅展示三层隐层的 MLP
性能。
对于小的预测因子维度,GMF
在两个数据集上均优于 eALS
。尽管 GMF
在大的预测因子为维度上过拟合,但是它的最佳性能优于eALS
或者与 eALS
相当。
GMF
使用自动学习的加权权重,而eALS
根据item
流行度来加权。
最后,GMF
显示出对 BPR
的持续改进,表明分类感知(classification-aware
)的 log loss
对推荐任务的有效性。因为 GMF
和 BPR
是学习相同的 MF
模型、但是具有不同的目标函数。
下图显示了 Top-K
推荐列表的性能,其中排序位置 K
的范围从 1 ~ 10
。为了使图更加清晰,我们展示了 NeuMF
的性能,而不是所有三种 NCF
方法。可以看到:
和其它方法相比,NeuMF
在不同位置上表现出一致的提升。我们进一步进行了one-sample paired
的 t
检验,验证所有提升对于
在所有的 baseline
方法中,eALS
在 MovieLens
上的性能优于 BPR
(相对提升约 5.1%
),而在 Pinterest
方面的性能低于 BPR
。这与 《Fast matrix factorization for online recommendation with implicit feedback》
的发现一致,即 BPR
由于其 pairwise ranking-aware learner
而可以成为强大的排序器。
基于邻域的 ItemKNN
表现不如基于模型的方法。
Item Pop
表现最差,说明有必要对用户的个性化偏好进行建模,而不是仅仅向用户推荐热门item
。
预训练的效用( utility
):为了证明预训练对 NeuMF
的效用,我们比较了两个版本的 NeuMF
的性能--有预训练、没有预训练。对于没有预训练的 NeuMF
,我们使用 Adam
通过随机初始化来学习。结果如下表所示。
可以看到:
经过预训练的 NeuMF
在大多数情况下取得了更好的性能,仅在预测因子维度为8
的 MovieLens
时预训练方法的性能稍差。
在 MovieLens
和 Pinterest
数据集上,使用预训练的 NeuMF
的相对提升分别为 2.2%
和 1.1%
。这一结果证明了我们预训练方法对初始化 NeuMF
的有效性。
为了处理隐式反馈的 one-class
性质,我们将推荐转换为二元分类任务。通过将 NCF
视为概率模型,我们使用 log loss
对其进行了优化。
下图显示了在 MovieLens
上NCF
方法每次迭代的训练损失(所有训练样本的均值)和推荐性能,其中预测因子维度为 8
。Pinterest
上的结果也显示了相同的趋势,由于篇幅所限,这里没有给出 Pinterest
上的结果。
首先,可以看到随着迭代次数的增加,NCF
模型的训练损失逐渐减少,推荐性能得到提升。
最有效的更新发生在前 10
次迭代中,更多的迭代可能会使模型发生过拟合(例如,尽管 NeuMF
的训练损失在10
次迭代之后不断减少,但是推荐性能实际上会下降)。
其次,在三种 NCF
方法中,NeuMF
的训练损失最低、其次是 MLP
、最次是 GMF
。推荐性能也呈现同样的趋势,即 NeuMF > MLP > GMF
。
上述发现为优化 log loss
以从隐式数据中学习的合理性(rationality
)和有效性(effectiveness
)提供了经验证据。
pointwise log loss
相对于 pairwise
目标函数的一个优势是负样本的灵活采样比例。虽然 pairwise
目标函数只能将一个采样的负样本和一个正样本配对,但是在 pointwise log loss
中我们可以灵活控制采样比例。
为了说明负采样比例对 NCF
方法的影响,我们在下图中展示了 NCF
方法在不同负采样比例下的性能。其中预测因子维度为 16
。注意:BPR
对于每个正样本采样一个负样本从而构成 pair
对,因此它的表现是一条直线。
可以看到:
在 NCF
中,每个正样本仅一个负样本不足以实现最佳性能,采样更多的负样本是有利的。
将 GMF
和 BPR
进行比较,我们可以看到:采样比例为 1
的 GMF
的性能与 BPR
相当,而较大采样比例的 GMF
的性能明显优于 BPR
。这显示了 pointwise log loss
相对于 pairwise BPR loss
的优势。
在这两个数据集上,最佳采样比例约为 3 ~ 6
。在 Pinterest
数据集上,我们发现采样比例大于 7
时,NCF
方法的性能开始下降。这表明:过于激进地设置采样比例可能会对性能产生不利影响。
由于用神经网络学习 user-item
交互函数的工作很少,所以很好奇使用深层的网络结构是否有利于推荐任务。为此,我们进一步研究了具有不同隐层数量的 MLP
,结果总结在下表中。MLP-3
表示具有三层隐层(除了embedding
层和输出层)的 MLP
方法,其它符号类似。可以看到:
即使对于具有相同能力的模型,堆叠更多的层也有利于性能。这一结果非常令人振奋,表明使用深层模型进行协同推荐的有效性。
我们将性能提升归因于堆叠更多非线性层带来的高度非线性。为了验证这一点,我们进一步尝试堆叠线性层,使用恒等映射作为激活函数,结果其性能比使用 ReLU
非线性激活函数差得多。
对于没有隐层的 MLP-0
(即 embedding
层直接投影到预测),性能非常弱,并不比非个性化的 Item-Pop
好。这验证了我们前面的论点:即简单地拼接用户潜在向量和 item
潜在向量,不足以对特征交互进行建模,因此需要用隐层来进行转换。