Neural Collaborative Filtering--神经协同过滤

1 摘要

近年来,深度神经网络在语音识别、计算机视觉和自然语言处理方面取得了巨大的成功。然而,深度神经网络在推荐系统上的探索相对较少受到关注。在这项工作中,我们致力于开发基于神经网络的技术来解决推荐中的关键问题——基于隐式反馈的协同过滤

虽然最近的一些工作已经采用了深度学习来推荐,但他们主要使用它来模拟辅助信息,例如项目的文本描述和音乐的声学特征。在对协同过滤的关键因素——用户和项目特征之间的交互进行建模时,他们仍然求助于矩阵分解,并对用户和项目的潜在特征应用内积。

通过将内积替换为可以从数据中学习任意函数的神经结构,我们提出了一个通用框架NCF,简称基于神经网络的协同过滤。NCF是泛型的,可以在其框架下表达和推广矩阵分解。

为了增强非线性NCF建模,我们建议利用多层感知器来学习用户-项目交互功能。在两个真实数据集上进行的大量实验表明,与最先进的方法相比,我们提出的NCF框架有了显著的改进。经验证据表明,使用更深层次的神经网络可以提供更好的推荐性能。

这项工作的主要贡献如下

  1. 我们提出了一种神经网络结构来模拟用户和项目的潜在特征,并设计了基于神经网络的协同过滤的通用框架NCF。

  2. 我们表明MF可以被解释为NCF的特例,并利用多层感知器来赋予NCF高水平的非线性建模能力。

  3. 我们对两个现实世界的数据集进行广泛的实验,以证明我们的NCF方法的有效性和对使用深度学习进行协作过滤的承诺。

2 准备工作

我们首先把问题形式化,并讨论现有的隐性反馈协同过滤解决方案。然后,我们简要概括广泛使用的MF模型,重点指出使用内积所造成的对模型的限制

2.1 学习隐性数据

M M M N N N 分别表示用户和项目的数量。我们将从用户的隐性反馈得到的用户-项目交互矩阵 Y ∈ R M × N Y∈R^{M×N} YRM×N 定义为:
在这里插入图片描述

这里 y u i y_{ui} yui 为 1 表示用户 u u u 和项目 i i i 存在交互记录;然而这并不意味着 u u u 真的喜欢 i i i同样的,值 0 也不是表明 u u u 不喜欢 i i i,也有可能是这个用户根本不知道有这个项目。这对隐性反馈的学习提出了挑战,因为它提供了关于用户偏好的噪声信号。虽然观察到的条目至少反映了用户对项目的兴趣,但是未查看的条目可能只是丢失数据,并且这其中存在自然稀疏的负反馈。

在隐性反馈上的推荐问题可以表达为估算矩阵 Y Y Y 中未观察到的条目的分数问题(这个分数被用来评估项目的排名)。基于模型的方法假定这些缺失的数据可以由底层模型生成(或者说描述)。形式上它可以被抽象为学习函数 y ^ u i = f ( u , i ∣ Θ ) , \hat{y}_{ui}=f(u,i|Θ) , y^ui=f(u,iΘ),其中 y ^ u i \hat{y}_{ui} y^ui表示交互 y u i y_{ui} yui 的预测分数, Θ Θ Θ 表示模型参数, f f f表示表示模型参数映射到预测分数的函数(我们把它称作交互函数)。

为了估计参数 Θ Θ Θ,现有的方法一般是遵循机器学习范例,优化目标函数。在文献中最常用到两种损失函数:逐点损失pointwise loss)和成对损失 (pairwise loss) 。由于显性反馈研究上丰富的工作的自然延伸[21,46],在逐点的学习方法上通​​常是遵循的回归模式,最小化 y ^ u i \hat{y}_{ui} y^ui 及其目标值 y u i y_{ui} yui 之间的均方误差。同时为了处理没有观察到的数据,他们要么将所有未观察到的条目视作负反馈,要么从没有观察到条目中抽样作为负反馈实例[14]。对于成对学习[27,44],做法是,观察到的条目应该比未观察到的那些条目的排名更高。因此,成对学习最大化观察项 y ^ u i \hat{y}_{ui} y^ui和未观察到的条目 y ^ u i \hat{y}_{ui} y^ui之间的空白,而不是减少 y ^ u i \hat{y}_{ui} y^ui y u i y_{ui} yui之间的损失误差。

2.2矩阵分解

MF(Matrix Factorization)用一个潜在特征向量实值将每个用户和项目关联起来。令 p u p_u pu q i q_i qi 分别表示用户 u 和项目 i 的潜在向量;MF评估相互作用 y u i y_{ui} yui 作为 p u p_u pu q i q_i qi 的内积: y u , i = f ( u , i ∣ p u , q i ) = p u T q i = ∑ k = 1 K p u k q i k , y_{u,i}=f(u,i|p_u,q_i)=p^T_uq_i=∑^K_{k=1}p_{uk}q_{ik}, yu,i=f(u,ipu,qi)=puTqi=k=1Kpukqik,
这里的 K K K 表示潜在空间(latent space)的维度。正如我们所看到的,MF模型是用户和项目的潜在因素的双向互动,它假设潜在空间的每一维都是相互独立的并且用相同的权重将它们线性结合。因此,MF可视为潜在因素(latent factor)的线性模型。
在这里插入图片描述
图1(Figure 1)展示了的内积函数(inner product function)如何限制MF的表现力。这里有两个背景必须事先说明清楚以便于更好地了解例子。第一点,由于MF将用户和项目映射到同一潜在空间中,两个用户之间的相似性也可以用内积,或者潜在向量之间的角度的余弦值来衡量2。第二点,不失一般性,我们使用Jaccard系数3作为MF需要恢复的两个用户的真实状况之间的相似度。

2假定潜在向量都是单位长度

3 R u R_u Ru 表示与用户 u 交互的项目集,那么用户 u 和 j 之间的Jaccard相似系数就被定义为: s i j = ∣ R i ∣ ∩ ∣ R j ∣ ∣ R i ∣ ∪ ∣ R j ∣ s_{ij}=\frac{|R_i|∩|R_j|}{|R_i|∪|R_j|} sij=RiRjRiRj
我们首先关注的图1(a)中的前三行(用户)。很容易可以计算出 s 23 ( 0.66 ) > s 12 ( 0.5 ) > s 13 ( 0.4 ) s_{23}(0.66)>s_{12}(0.5)>s_{13}(0.4) s23(0.66)>s12(0.5)>s13(0.4) 。这样, p 1 p_1 p1 p 2 p_2 p2 p 3 p_3 p3 在潜在空间中的几何关系可绘制成图1(b)。现在,让我们考虑一个新的用户 u 4 u_4 u4,它的输入在图1(a)中的用虚线框出。我们同样可以计算出 s 41 ( 0.6 ) > s 43 ( 0.4 ) > s 42 ( 0.2 ) s_{41}(0.6)>s_{43}(0.4)>s_{42}(0.2) s41(0.6)>s43(0.4)>s42(0.2) ,表示 u 4 u_4 u4 最接近 u 1 u_1 u1,接着是 u 3 u_3 u3 ,最后是 u 2 u_2 u2 。然而,如果MF模型将 p 4 p_4 p4 放在了 最接近 p 1 p_1 p1 的位置(图1(b) 中的虚线展示了两种不同的摆放 p4 的方式,结果一样),那么会使得 p 4 p_4 p4 相比与 p 3 p_3 p3 更接近于 p 2 p_2 p2 (显然,根据图1(a), u 4 u_4 u4 应该更接近 u 3 u_3 u3,这会导致很大的排名误差(ranking loss)。

上面的示例显示了MF因为使用一个简单的和固定的内积,来估计在低维潜在空间中用户-项目的复杂交互,从而所可能造成的限制。我们注意到,解决该问题的方法之一是使用大量的潜在因子 K K K (就是潜在空间向量的维度)。然而这可能对模型的泛化能力产生不利的影响(e.g. 数据的过拟合问题),特别是在稀疏的集合上。在本文的工作中,我们通过使用DNNs从数据中学习交互函数,突破了这个限制。

3. 神经协同过滤

我们首先提出的总体框架NCF,阐述NCF如何学习强调了隐式数据的二进制属性的概率模型。然后,我们展示了,MF能够表达为NCF 的推广(MF矩阵分解模型是NCF的一个特例)。我们探索DNNs在协同过滤上的应用,提出了NCF的一个实例,它采用了多层感知器(MLP)来学习用户-项目交互函数。最后,我们在NCF框架下结合了MF和MLP,提出了一种新的神经矩阵分解模型(neural matrix factorization model);它统一了在建模用户项目潜在结构方面,MF的线性建模优势和MLP的非线性优势。

3.1 通用框架

为了允许神经网络对协同过滤进行一个完整的处理,我们采用图2(Figure 2)展示的多层感知机去模拟一个用户项目交互 y u i y_{ui} yui ,它的一层的输出作为下一层的输入。底部输入层包括两个特征向量 v u U v^U_u vuU v i I v^I_i viI ,分别用来描述用户 u u u 和项目 i i i 。 他们可以进行定制,用以支持广泛的用户和项目的建模,例如上下文感知[28,1],基于内容[3],和基于邻居的构建方式[26]。由于本文工作的重点是纯的协同过滤模型设置,我们仅使用一个用户和一个项目作为输入特征,它使用one-hot编码将它们转化为二值化稀疏向量。注意到,我们对输入使用这样的通用特征表示,可以很容易地使用的内容特征来表示用户和项目,以调整解决冷启动问题。
在这里插入图片描述

输入层上面是嵌入层(Embedding Layer);它是一个全连接层用来将输入层的稀疏表示映射为一个稠密向量(dense vector)。所获得的用户(项目)的嵌入(就是一个稠密向量)可以被看作是在潜在因素模型的上下文中用于描述用户(项目)的潜在向量。然后我们将用户嵌入和项目嵌入送入多层神经网络结构,我们把这个结构称为神经协作过滤层,它将潜在向量映射为预测分数。NCF层的每一层可以被定制,用以发现用户-项目交互的某些潜在结构。最后一个隐含层 X X X的维度尺寸决定了模型的能力。最终输出层是预测分数 y ^ u i \hat{y}_{ui} y^ui ,训练通过最小化 y ^ u i \hat{y}_{ui} y^ui和其目标值 y u i y_{ui} yui之间逐点损失进行。我们注意到,另一种方式来训练模型是通过成对学习,如使用个性化贝叶斯排名[27]和基于余量的损失(margin-based)[33]。由于本文的重点是对神经网络建模部分,我们将使用成对学习训练NCF留给今后的工作。

当前我们制定的NCF预测模型如下:
y ^ u i = f ( P T v u U , Q T v i I ∣ P , Q , Θ f ) , \hat{y}_{ui}=f(P^Tv^U_u,Q^Tv^I_i|P,Q,Θ_f), y^ui=f(PTvuU,QTviIP,Q,Θf),
其中 P ∈ R M × K P∈R^{M×K} PRM×K Q ∈ R N × K Q∈R^{N×K} QRN×K,分别表示用户和项目的潜在因素矩阵; Θ j Θ_j Θj 表示交互函数 f f f 的模型参数。由于函数 f f f 被定义为多层神经网络,它可以被定制为: f ( P T v u U , Q T v i I ) = ϕ o u t ( ϕ X ( . . . ϕ 2 ( ϕ 1 ( P T v u U , Q T v i I ) ) . . . ) ) , f(P^Tv^U_u,Q^Tv^I_i)=ϕ_{out}(ϕ_X(...ϕ_2(ϕ_1(P^Tv^U_u,Q^Tv^I_i))...)), f(PTvuU,QTviI)=ϕout(ϕX(...ϕ2(ϕ1(PTvuU,QTviI))...)),
其中 ϕ o u t ϕ_{out} ϕout ϕ x ϕ_x ϕx 分别表示为输出层和第 x x x 个神经协作过滤(CF)层映射函数,总共有 X X X 个神经协作过滤(CF)层。

3.1.1 NCF学习

训练模型参数,现有的逐点学习方法[14,39]主要运用均方误差(squared loss)进行回归:
L s q r = ∑ ( u , i ) ∈ y ∪ y − w u i ( y u i − y ^ u i ) 2 , L_{sqr}=∑_{(u,i)∈y∪y^−}w_{ui}(y_{ui}−\hat{y}_{ui})^2, Lsqr=(u,i)yywui(yuiy^ui)2,

其中 y y y表示交互矩阵 Y Y Y 中观察到的条目(如对电影有明确的评分,评级), y − y− y 表示消极实例(negative instances,可以将未观察的样本全体视为消极实例,或者采取抽样的方式标记为消极实例); w u i w_{ui} wui 是一个超参数,用来表示训练实例 ( u , i ) (u,i) (u,i) 的权重。虽然均方误差可以通过假设观测服从高斯分布[29]来作出解释,我们仍然指出,它不适合处理隐性数据(implicit data)。这是因为对于隐含数据来说,目标值 y u i y_{ui} yui 是二进制值1或0,表示 u u u 是否与 i i i 进行了互动。在下文中,我们提出了逐点学习NCF的概率学方法,特别注重隐性数据的二进制属性。

考虑到隐性反馈的一类性质,我们可以将 y u i y_{ui} yui的值作为一个标签————1表示项目 i i i 和用户 u u u 相关,否则为0。这样一来预测分数 y ^ u i \hat{y}_{ui} y^ui代表了项目 i i i 和用户 u u u 相关的可能性大小。为了赋予NCF这样的概率解释,我们需要将网络输出限制到[0,1]的范围内,通过使用概率函数(e.g. 逻辑函数sigmoid或者probit函数)作为激活函数作用在输出层 ϕ o u t ϕ_{out} ϕout ,我们可以很容易地实现数据压缩。经过以上设置后,我们这样定义似然函数: p ( y , y − ∣ P , Q , Θ f ) = ∏ ( u , i ) ∈ y y ^ u i ∏ ( u , i ) ∈ y − ( 1 − y ^ u i ) . p(y,y^−|P,Q,Θ_f)=∏_{(u,i)∈y}\hat{y}_{ui}∏_{(u,i)∈y^−}(1−\hat{y}_{ui}). p(y,yP,Q,Θf)=(u,i)yy^ui(u,i)y(1y^ui).
对似然函数取负对数,我们得到(负对数可以用来表示Loss函数,而且还能消除小数乘法的下溢出问题): L = − ∑ ( u , i ) ∈ y l o g y ^ u i − ∑ ( u , i ) ∈ y − l o g ( 1 − y ^ u i ) = ∑ ( u , i ) ∈ y ∪ y − y u i l o g y ^ u i + ( 1 − y u i ) l o g ( 1 − y ^ u i ) . L=−∑_{(u,i)∈y}log\hat{y}_{ui}−∑_{(u,i)∈y^−}log(1−\hat{y}_{ui})=∑_{(u,i)∈y∪y^−}y_{ui}log\hat{y}_{ui}+(1−y_{ui})log(1−\hat{y}_{ui}). L=(u,i)ylogy^ui(u,i)ylog(1y^ui)=(u,i)yyyuilogy^ui+(1yui)log(1y^ui).
这是NCF方法需要去最小化的目标函数,并且可以通过使用随机梯度下降(SGD)来进行训练优化。细心的读者可能发现了,这个函数和二进制交叉熵损失(binary cross-entropy loss,又被成为log loss)是一样的。交叉熵作为损失函数还有一个好处是使用sigmoid函数在梯度下降时能避免均方误差损失函数学习速率降低的问题,因为学习速率可以被输出的误差所控制。通过在NCF上使用这样一个概率处理(probabilistic treatment),我们把隐性反馈的推荐问题当做一个二分类问题来解决。由于分类用的交叉熵损失很少出现在有关推荐的文献中,我们将在这项工作中对它进行探讨,并在4.3节展示它的有效性。对于消极实例 y − y^− y ,我们在每次迭代均匀地从未观察到的相互作用中采样(作为消极实例)并且对照可观察到交互的数量,控制采样比率。虽然非均匀采样策略(例如,基于项目流行度进行采样[14,12])可能会进一步提高模型性能,我们将这方面的探索作为今后的工作。

3.2 广义矩阵分解

我们现在来证明 M F MF MF是如何被解释为我们的 N C F NCF NCF框架的一个特例。由于 M F MF MF是推荐领域最流行的模型,并已在众多文献中被广泛的研究,复现它能证明 N C F NCF NCF可以模拟大部分的分解模型[26]。由于输入层是用户(项目)ID中的一个one-hot encoding编码,所获得的嵌入向量可以被看作是用户(项目)的潜在向量。我们用 P T v u U P^Tv^U_u PTvuU表示用户的潜在向量 p u p_u pu Q T v i I Q^Tv^I_i QTviI 表示项目的潜在向量 q i q_i qi ,我们定义第一层神经 C F CF CF层的映射函数为: ϕ 1 ( p u , q i ) = p u ⊙ q i , ϕ_1(p_u,q_i)=p_u⊙q_i, ϕ1(pu,qi)=puqi,其中 ⊙ ⊙ 表示向量的逐元素乘积。然后,我们将向量映射到输出层: y ^ u i = a o u t ( h T ( p u ⊙ q i ) ) , \hat{y}_{ui}=a_{out}(h^T(p_u⊙q_i)), y^ui=aout(hT(puqi)),
其中 a o u t a_{out} aout h h h 分别表示输出层的激活函数和连接权。直观地讲,如果我们将 a o u t a_{out} aout 看做一个恒等函数, h h h 权重全为1,显然这就是我们的MF模型。在NCF的框架下, M F MF MF可以很容易地被泛化和推广。例如,如果我们允许从没有一致性约束(uniform constraint)的数据中学习 h h h ,则会形成MF的变体,它允许潜在维度的不同重要性(这句话不好翻译,原文放在这里For example, if we allow h to be learnt from data without the uniform constraint, it will result in a variant of MF that allows varying importance of latent dimensions)。如果我们用一个非线性函数 a o u t a_{out} aout ,将进一步推广 M F MF MF到非线性集合,使得模型比线性MF模型更具有表现力。在本文的工作中,我们在 N C F NCF NCF下实现一个更一般化的 M F MF MF,它使用Sigmoid函数 σ ( x ) = 1 ( 1 + e − x ) σ_{(x)}=\frac{1}{(1+e^{−x})} σ(x)=(1+ex)1作为激活函数,通过log loss(第3.1.1节)学习 h h h 。我们称她为 G M F GMF GMF(Generalized Matrix Factorization,广义矩阵分解)。

3.3 多层感知机(MLP)

由于 N C F NCF NCF用两条路线来对用户和项目建模(图2中可以明显看出用户和项目两个输入),自然地,需要通过两个路线,把他们各自的特征连接结合起来。这种设计已经在多模态深度学习工作中[47,34]被广泛采用。然而,简单地对向量的连接不足以说明用户和项目之间的潜在特征,这对协同过滤建模来说是不够的。为了解决这个问题,我们提出在向量连接上增加隐藏层,使用标准的 M L P MLP MLP(多层感知机)学习用户和项目潜在特征之间的相互作用。在这个意义上,我们可以赋予模型高水平的灵活性和非线性建模能力,而不是 G M F GMF GMF(广义矩阵分解)那样的简单使用逐元素相乘的内积来描述用户和项目之间的潜在交互特征。更确切地说,我们的NCF框架下的MLP模型定义为:
在这里插入图片描述
这里的 W x W_x Wx, b x b_x bx a x a_x ax 分别表示 x 层的感知机中的的权重矩阵,偏置向量(神经网络的神经元阈值)和激活函数。对于MLP层的激活函数,可以选择sigmoid,双曲正切(tanh)和ReLU,等等。我们分析一下每个函数:1)sigmoid函数将每个神经元的输出限制在(0,1),这有可能限制该模型的性能;并且它存在过饱和的问题,当输出接近1或者0的时候,神经元就会陷入停止学习的困境(这里应该指的是“早停的问题”)。2)虽然双曲正切是一个更好的选择,并已被广泛使用[6,44],但它只是在一定程度上缓和了sigmoid的问题,因为它可以被看作是sigmoid的缩放的版本(tanh(x/2)=2σ(x)−1)。3)因此,我们选择ReLU,它更具生物合理性(biologically plausible),并且已经被证明不会导致过饱和[9];此外,它支持稀疏的激活(sparse activations),非常适合稀疏的数据,使模型不至于过拟合。我们的实验结果表明,ReLU的表现略好于双曲正切函数tanh和sigmoid。

至于网络结构的设计,一种常见的解决方案是设计一个塔式模型,其中,底层是最宽的,并且每个相继的层具有更少的神经元数量(如图2(Figure 2))。(设计这种结构的)前提是,通过在更高层使用少量的隐藏单元,它们可以从数据中学习到更多的抽象特征[10]。根据经验,我们搭建这样的塔结构:对于更高的层,相比于之前一层,缩减一半规模。

3.4 结合GMF和MLP

到目前为止,我们已经开发了NCF的两个实例:GMF,它应用了一个线性内核来模拟潜在的特征交互;MLP,使用非线性内核从数据中学习交互函数。接下来的问题是:我们如何能够在NCF框架下融合GMF和MLP,使他们能够相互强化,以更好地对复杂的用户-项目交互建模?

一个直接的解决方法是让GMF和MLP共享相同的嵌入层(Embedding Layer),然后再结合它们分别对相互作用的函数输出。这种方式和著名的神经网络张量(NTN,Neural Tensor Network)[33]有点相似。具体地说,对于结合GMF和单层MLP的模型可以公式化为:
在这里插入图片描述
然而,共享GMF和MLP的嵌入层可能会限制融合模型的性能。例如,它意味着,GMF和MLP必须使用的大小相同的嵌入(embedding,这里指的应该是潜在向量维度,下面的embedding都被译为嵌入);对于数据集,两个模型的最佳嵌入尺寸差异很大,使得这种解决方案可能无法获得最佳的组合。
在这里插入图片描述
为了使得融合模型具有更大的灵活性,我们允许GMF和MLP学习独立的嵌入,并结合两种模型通过连接他们最后的隐层输出。图3(Figure 3)展示了我们的方案,公式如下:

在这里插入图片描述

这里的 p u G p^G_u puG p u M p^M_u puM 分别表示 GMF 部分和 MLP 部分的用户嵌入(user embedding);同样的, q i G q^G_i qiG q i M q^M_i qiM 分别表示项目的嵌入。如之前所讨论的,我们使用ReLU作为 MLP层的激活功能。该模型结合MF的线性度和DNNs的非线性度,用以建模用户-项目之间的潜在结构。我们将这一模式称为“NeuMF”,简称神经矩阵分解(Neural Matrix Factorization)。该模型的每个模型参数都能使用标准反向传播(back-propagation)计算,由于空间限制这里就不再展开。

3.5 预训练

由于NeuMF的目标函数的非凸性,使得基于梯度的优化方法只能找到局部最优解(这也是训练一般神经网络所面临的问题)。研究表明,初始化(initialization)在深度学习模型的收敛性和性能的方面起到了重要的作用[7]。由于 NeuMF 是 GMF 和 MLP 的组合,我们建议使用 GMF 和 MLP 的预训练模型来初始化NeuMF

我们首先训练随机初始化的 GMF 和 MLP 直到模型收敛。然后,我们用它们的模型参数初始化 NeuMF 相应部分的参数唯一的调整是在输出层,在那里我们将两者用权重连接起来
  在这里插入图片描述
这里 h G M F h^{GMF} hGMF h M L P h^{MLP} hMLP 分别表示 GMF 和 MLP 模型预训练的 h h h 向量; α α α 是一个超参数,用来权衡两个预训练模型(的比重)。

对于从头开始训练的 GMF 和 MLP ,我们采用自适应矩估计(Adam,Adaptive Moment Estimation)[20],它通过对不频繁的参数进行频繁和更大幅度的更新来适应每个参数的学习速率。Adam方法在两种模型上的收敛速度都比普通SGD快,并缓解了调整学习率的痛苦。在将预先训练的参数输入NeuMF之后,我们用普通SGD而不是Adam进行优化。 这是因为Adam需要保存更新参数的动量信息(momentum information)。因为我们用预先训练的模型参数初始化NeuMF,并且放弃保存动量信息,不适合用基于动量的方法进一步优化NeuMF。

4. 实验

  • 在本节中,我们指导实验的进行,用以回答以下研究问题:

    RQ1 我们提出的NCF方法是否胜过 state-of-the-art 的隐性协同过滤方法?

    RQ2 我们提出的优化框架(消极样本抽样的log loss)怎样为推荐任务服务?

    RQ3 更深的隐藏单元是不是有助于对用户项目交互数据的学习?

接下来,我们首先介绍实验设置,其次是回答上述三个问题。

4.1 实验设置

Datasets 。 我们尝试了两个可公开访问的数据集: MovieLens4 和 Pinterest5 两个数据集,它们的特征总结在表1中。在这里插入图片描述
4http://grouplens.org/datasets/movielens/1m/

5https://sites.google.com/site/xueatalphabeta/ academic-projects

1.MovieLens。 这个电影评级数据集被广泛地用于评估协同过滤算法。我们使用的是包含一百万个评分的版本,每个用户至少有20个评分。 虽然这是显性反馈数据集,但我们有意选择它来挖掘(模型)从显式反馈中学习隐性信号[21]的表现。为此,我们将其转换为隐式数据,其中每个条目被标记为0或1表示用户是否已对该项进行评级。

2.Pinterest.这个隐含的反馈数据的构建[8]用于评估基于内容的图像推荐。原始数据非常大但是很稀疏。 例如,超过20%的用户只有一个pin(pin类似于赞一下),使得难以用来评估协同过滤算法。 因此,我们使用与MovieLens数据集相同的方式过滤数据集:仅保留至少有过20个pin的用户。处理后得到了包含55,187个用户和1,580,809个项目交互的数据的子集。 每个交互都表示用户是否将图像pin在自己的主页上。

评估方案。 为了评价项目推荐的性能,我们采用了leave-one-out方法评估,该方法已被广泛地应用于文献[1,14,27]。即:对于每个用户,我们将其最近的一次交互作为测试集(数据集一般都有时间戳),并利用余下的培训作为训练集。由于在评估过程中为每个用户排列所有项目花费的时间太多,所以遵循一般的策略[6,21],随机抽取100个不与用户进行交互的项目,将测试项目排列在这100个项目中。排名列表的性能由命中率(HR)和归一化折扣累积增益(NDCG)[11]来衡量。 没有特别说明的话,我们将这两个指标的排名列表截断为10。如此一来,HR直观地衡量测试项目是否存在于前10名列表中,而NDCG通过将较高分数指定为顶级排名来计算命中的位置。我们计算了每个测试用户的这两个指标,并求取了平均分。

基准线(Baselines)。我们NCF方法(GMF,MLP和NeuMF)和下列方法进行了比较:

  • ItemPop。按项目的互动次数判断它的受欢迎程度,从而对项目进行排名。 这对基于评估推荐性能来说是一种非个性化的方法[27]。

    ItemKNN[31]。这是基于项目的标准协同过滤方法。我们遵循[19]的设置来适应隐含数据。

    BPR[27]。该方法优化了使用公式(2)的MF模型,该模型具有成对排序损失,BPR调整它使其可以从隐式反馈中学习。它是项目推荐基准的有力竞争者。我们使用固定的学习率,改变它并报告了它最佳的性能。

    eALS[14]。这是项目推荐的 state-of-the-art 的MF方法。
    它优化了公式(5)的均方误差,将所有未观察到的交互视作消极实例,并根据项目流行度对它们进行不均匀的加权。由于 eALS
    显示出优于WMF[19]均匀加权方法的性能,我们不再进一步展示报告 WMF 的性能。

我们提出的方法旨在建模用户和项目之间的关系,我们主要比较用户-项目模型。因为性能差异可能是由个性化的用户模型引起的(因为它们是项目-项目模型),所以我们忽略了与项目-项目模型的比较,项目-项目模型有 SLIM[25] 和 CDAE[44]。

参数设置 。我们基于Keras6实现了我们提出的方法。为了确定NCF方法的超参数,我们为每个用户随机抽取一个交互作为验证数据并调整其超参数。通过优化公式(7)的对数损失(log loss)来学习所有NCF模型,其中我们对每个积极实例进行四个消极实例的采样。对于从头开始训练的NCF模型,我们采用高斯分布随机初始化模型参数(平均值为0,标准差为0.01),用小批次Adam[20]优化模型。我们分别测试了批次大小[128,256,512,1024],学习速率为[0.0001,0.0005,0.001,0.005]。 由于NCF的最后一层隐藏层决定了模型的性能,所以我们将其作为预测因子(predictive factors),并分别使用[8,16,32,64]的因素大小进行了模型评估。值得注意的是,大的因子可能导致过拟合,降低性能。 没有特别说明,我们采用了三层隐藏的MLP; 例如,如果预测因子的大小为8,则神经CF层的结构为32→16→8,嵌入大小为16。对于预训练过的NeuMF,α 设置为0.5,允许预训练的 GMF 和 MLP 对 NeuMF 的初始化做出同样的贡献(相同权重)。

4.2 性能比较(RQ1)

在这里插入图片描述
图4(Figure 4)显示了 HR@10 和 NDCG@10 相对于预测因素数量的性能。对于使用MF的方法BPR和eALS,预测因子的数量等于潜在因素的数量。对于ItemKNN,我们测试了不同的邻居大小并报告了最佳性能。由于ItemPop的性能较差,所以在图4中略去,以更好地凸显个性化方法的性能差异。

首先,我们可以看到,NeuMF在两个数据集上都取得了最好的表现,远远超过了最先进的方法eALS和BPR(平均而言,相对于eALS和BPR的相对改善分别为4.5%和4.9%) )。对于Pinterest而言,即使是8的小预测因子,NeuMF也远远优于在64维潜在因子下的eALS和BPR。这展现了NeuMF通过融合线性MF和非线性MLP模型的高水平的表达能力。其次,另外两种NCF方法:GMF和MLP,也表现出相当强劲的性能。其中,MLP略逊于GMF。请注意,MLP可以通过添加更多的隐藏层来进一步改进(参见第4.4节),这里我们只展示使用三层的性能。对于小数目的预测因子,GMF在两个数据集上都优于eALS;虽然GMF在高纬因子的情况下受到过拟合的影响,但其获得的最佳性能优于eALS(或差不多)。最后,GMF显示出与BPR一致的进步,说明了在推荐任务的分类问题中使用log loss的有效性,因为GMF和BPR学习相同的MF模型但具有不同的目标函数。

图5(Figure 5)显示了Top-K推荐列表的性能,排名位置K的范围为1到10。为了使图像更加清晰,我们仅仅展示了NeuMF的性能,而不是所有三种NCF方法。可以看出,NeuMF表现出与其他方法在位置上的一致性改进,我们进一步进行单样本配对的t检验,验证所有的改善对p <0.01有统计学意义。对于基准方法,eALS在MovieLens上的性能优于BPR大约5.1%,而在NDCG方面则逊于BPR。 这与[14]发现吻合,它指出:由于BPR学习和感知成对排名,它可能在排名上表现出强劲的性能。 基于相邻(用户或者项目)的ItemKNN表现则逊于基于模型的方法。 而ItemPop表现最差,表明用户对个人喜好的建模是必要的,而不是仅向用户推荐热门项目。

4.2.1 预训练的作用

为了展示NeuMF预训练的效果,我们比较了NeuMF两种版本的性能,并且没有预训练。 对于没有预训练的NeuMF,我们使用了Adam随机初始化。如表2所示,在大多数情况下,具有预训练的NeuMF表现出了更好的性能; 只有对于具有8的小预测因子的MovieLens,预训练方法执行稍差一些。 对于MovieLens和Pinterest,NeuMF与预训练的相对改进分别为2.2%和1.1%。 这个结果证明了我们的预训练方法对初始化NeuMF是有用的。
在这里插入图片描述

4.3 对消极采样使用Log Loss(RQ2)

为了处理隐性反馈的一类性质,我们将推荐作为一个二分类任务。我们将NCF视为概率模型,使用log loss对其进行了优化。图6(Figure 6)显示了NCF方法在MovieLens上每次迭代的训练损失(所有实例的平均值)和推荐性能。在Pinterest上的结果显示相同的趋势,由于空间限制而被省略。首先,我们可以看到,随着迭代次数的增多,NCF模型的训练损失逐渐减少,推荐性能得到提高。最有效的更新发生在前10次迭代中,更多的迭代可能使模型过拟合(例如,虽然NeuMF的训练损失在10次迭代之后持续下降,但其推荐性能实际上降低)。其次,在三种NCF方法中,NeuMF达到最低的训练损失,其次是MLP,然后是GMF。推荐性能也显示出与NeuMF> MLP> GMF相同的趋势。上述实验结果为优化从隐性数据学习的log loss的合理性和有效性提供了经验证据。
  在这里插入图片描述
对于成对目标函数的逐点log loss(对数损失)的优势[27,33]是对于消极实例的灵活采样率。不像成对目标函数只能将一个采样消极实例与一个积极实例配对,逐点损失我们可以灵活地控制采样率。为了说明消极采样对NCF方法的影响,我们在不同的消极实例采样比下展示了NCF方法的性能。如图7所示。可以清楚地看到,每个积极实例只有一个消极实例不足以达到模型的最佳性能,而抽样更多的消极实例则是有益的。将GMF与BPR进行比较,我们可以看出,采样率为1成的GMF的性能与BPR相当,而GMF在采样率较高的情况下性能明显高于BPR。这表明了相较于成对BPR损失,逐点对数损失的优势所在。对于两个数据集,最佳采样率约为3比6。在Pinterest上,我们发现当采样率大于7时,NCF方法的性能开始下降。这说明,设置过大的采样率可能会对性能产生不利影响。

4.4 Is Deep Learning Helpful? (RQ3)

由于使用神经网络学习用户-项目之间交互函数的工作很少,因此,使用深层网络结构是否有利于推荐任务是值得思考的。 为此,我们进一步研究了具有不同隐藏层数的MLP。 结果总结在表3和表4中。MLP-3表示具有三个隐藏层(除了嵌入层)的MLP方法,其他类似的符号具有相似的意义。 我们可以看到,即使具有相同能力的模型,堆叠更多的层也有利于性能的提升。 这个结果非常令人鼓舞,它表明使用深层模型进行协同推荐的有效性。 我们将性能提升归功于堆叠更多非线性层所带来的高非线性度。 为了验证这一点,我们进一步尝试堆叠线性层,使用恒等函数作为激活函数。 性能比使用ReLU单元差很多。

在这里插入图片描述
在这里插入图片描述

对于没有隐藏层(即,嵌入层直接映射到预测结果)的MLP-0,性能非常弱,不过比非个性化ItemPop更好。这验证了我们在3.3节中的观点:简单地连接用户和项目的潜在向量不足以对其特征的相互作用进行建模,因此需要使用隐藏层进行变换。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值