NeuralCF模型——CF与深度学习的结合

1、前言

尽管最近的一些工作已经将深度学习运用到了推荐的任务中,但只是用深度学习给一些辅助的信息建模例如项目中的文字描述或音乐的声学特征等等。在表示用户与项目之间的交互仍然使用矩阵分解德国用内积来建模。本篇论文主要是用多层神经网络给用户和数据之间的交互建模,我们的数据主要是居于隐式反馈(例如购买记录,浏览记录等)在本文中,我们 探讨了如何利用DNN来模拟噪声隐式反馈信号的中心问题。

  • 显示反馈(explicit feedback):用户直接反映其对产品的喜好信息,如评分等等。
  • 隐式反馈(implicit feedback):间接反映出用户对于产品的喜好,如:购买历史、浏览记录、搜索记录等

2、从深度学习的角度理解矩阵分解技术

符号表示:

这里的 y u i y_{ui} yui为1仅表示用户u和项目i之间有交互,并不意味着u喜欢i;同样,为0仅表示无交互。这其中缺少负反馈信息,所以这也是隐性反馈的一个挑战,因为它给用户偏好信息带来了干扰。

隐式反馈的推荐任务可以表示为预测矩阵Y中未观察到交互的entry的分数 y u i h a t = f ( u , i ∣ θ ) y^{hat}_{ui}=f(u,i|\theta) yuihat=f(u,iθ)

什么是矩阵分解技术?

简单来讲,矩阵分解技术就是将协同过滤的共现矩阵分解为user矩阵与item矩阵乘积的形式。

p u p_u pu q i q_i qi分别表示用户u和项目i的潜在向量,MF用 p i 和 q i p_i和q_i piqi的内积来评估它们之间的交互 y u i h a t y^{hat}_{ui} yuihat
y u i h a t = f ( u , i ∣ p u , q i ) = P u T q i = ∑ k = 1 K p u k q i k y^{hat}_{ui}=f(u,i|p_u,q_i)=P_u^Tq_i=\sum_{k=1}^Kp_{uk}q{ik} yuihat=f(u,ipu,qi)=PuTqi=k=1Kpukqik
K是潜在空间(latent space)的维度,MF模型是用户和项目的潜在因素的双向互动,它们假设潜在空间的每一维都是相互独立的并且用相同的权重将它们线性组合。因此,MF可视为签字啊因素的线性模型。

注释

(1)由于MF将用户和项目映射到同一潜在空间中,两个用户之间的相似性也可以用内积,或者潜在向量之间的角度的余弦值来衡量。

(2)我们使用Jaccard系数作为MF需要恢复的两个用户的真实状况之间的相似度。
R u R_u Ru 表示与用户 u交互的项目集,那么用户 u和 j 之间的Jaccard相似系数就被定义为:
s i j = ∣ R i ∣ ∩ ∣ R j ∣ ∣ R i ∣ ∪ ∣ R j ∣ s_{ij}=\frac{\mid \boldsymbol R_i\mid \cap \mid \boldsymbol R_j\mid}{\mid \boldsymbol R_i\mid \cup \mid \boldsymbol R_j\mid} sij=RiRjRiRj

从深度学习角度看待矩阵分解技术

在矩阵分解技术中user矩阵中的user向量可以堪称每个user的embedding,而item矩阵中每个item向量可以看作是每个item的embedding,也就是说,从深度学习embedding的角度来看,矩阵相乘过程中user vector 和item vector的内积操作结果,也就是网络的输入层,即user和item的相似度,即对user的打分预测。

因此可以将矩阵分解模型的结构用神经网络的形式表示出来:

既然是神经网络,就不必拘泥于向量内积这样简单操作,而可以使用更加复杂的操作来代替。这样也恰好弥补了内积操作因为表达能力弱而无法充分拟合目标的缺陷,NeuralCF就是这样做的。

3、NeuralCF的网络结构

NeuralCF用一个多层神经网络代替了矩阵分解中的简单操作。

输入层 上面是嵌入层;它是一个全连接层,用来将输入层的稀疏表示映射为一个密集向量(稠密向量)。这些嵌入后的向量其实就可以看做是用户(项目)的潜在向量。然后我们将这些嵌入向量送入多层网络结构,最后得到预测的分数。NCF层的每一层可以被定制,用以发现用户-项目交互的某些潜在结构。最后一个隐层 X 的维度尺寸决定了模型的能力。最终输出层是预测分数 y u i h a t y^{hat}_{ui} yuihat,文中,训练目标是最小化 y u i h a t y^{hat}_{ui} yuihat和其目标值 y u i y_{ui} yui之间逐点损失(point-wise loss)。

因此NCF的预测模型可以表示为:
y u i h a t = f ( P T v u U , Q T v i I ∣ P , Q , Θ f ) y^{hat}_{ui}=f(\boldsymbol P^T\boldsymbol v^U_u,\boldsymbol Q^T\boldsymbol v^I_i\mid \boldsymbol P,\boldsymbol Q,\Theta_f) yuihat=f(PTvuU,QTviIP,Q,Θf)
其中$ P\in \mathbf R^{M\times K} , , Q\in \mathbf R^{N\times K} , 分 别 表 示 用 户 和 项 目 的 潜 在 因 素 矩 阵 ; ,分别表示用户和项目的潜在因素矩阵; \Theta_f$ 表示交互函数 f 的模型参数。由于函数 f 被定义为多层神经网络,上面的式子也可以表示为:
f ( P T v u U , Q T v i I ) = ϕ o u t ( ϕ x ( . . . ϕ 2 ( p h i 1 ( P T v u U , Q T v i I ) ) . . . ) ) f(\mathbf P^T\mathbf v^U_u,\mathbf Q^T\mathbf v^I_i)=\phi_{out}(\phi _x(...\phi_2(phi_1(\mathbf P^T\mathbf v^U_u,\mathbf Q^T\mathbf v^I_i))...)) f(PTvuU,QTviI)=ϕout(ϕx(...ϕ2(phi1(PTvuU,QTviI))...))
其中 ϕ o u t \phi_{out} ϕout ϕ x \phi_x ϕx分别表示输出层和第x个neural CF层映射函数,总共由X个neuralCF层。

4、NeuralCF的目标函数

常用的逐点学习方法主要是均方误差,但是它不适用处理隐性数据,这里提出了一种逐点学习NCF的概率学方法,特别注重隐性数据的二进制属性。

我们可以将 y u i y_{ui} yui的值作为一个标签——1表示项目 ii 和用户 u 相关,否则为0。这样,预测分数 y u i h a t y^{hat}_{ui} yuihat 就代表了项目 i 和用户 u 相关的可能性大小。因此,我们需要将网络输出限制到[0,1]的范围内。这可以通过在输出层 ϕ o u t \phi _{out} ϕout使用概率函数(e.g. 逻辑函数sigmoid或者probit函数)作为激活函数实现。经过以上设置后,我们这样定义似然函数
p ( y , y − ∣ P , Q , Θ f ) = ∏ ( u , i ) ∈ y y u i h a t ∏ ( u , i ) ∈ y − ( 1 − y u j h a t ) p(y,y^-\mid \mathbf P,\mathbf Q,\Theta_f)=\prod_{(u,i)\in y}y^{hat}_{ui}\prod_{(u,i)\in y^-}(1-y^{hat}_{uj}) p(y,yP,Q,Θf)=(u,i)yyuihat(u,i)y(1yujhat)
对似然函数取负对数,即可得到:
L = − ∑ ( u , i ) ∈ y l o g   y u i h a t − ∑ ( u , j ) ∈ y − l o g   ( 1 − y u j h a t ) = − ∑ ( u , i ) ∈ y   ∪ y − y u i   l o g   y u i h a t + ( 1 − y u i )   l o g ( 1 − y u i h a t ) L=-\sum_{(u,i)\in y}log\:y^{hat}_{ui}-\sum_{(u,j)\in y^-}log\:(1-y^{hat}_{uj})=-\sum_{(u,i)\in y\,\cup y^-}y_{ui}\,log\,y^{hat}_{ui}+(1-y_{ui})\, log(1-y^{hat}_{ui}) L=(u,i)ylogyuihat(u,j)ylog(1yujhat)=(u,i)yyyuilogyuihat+(1yui)log(1yuihat)
NeuralCF网络混合版可以分解为两个子网络,一个被称为Generalized Matrix Factorization (GMF, 广义矩阵分解),另一个是Multi-Layer Perceptron (MLP, 多层感知机). 这两个子网络都包含User和Item的表征部分:GMF是利用线性的方式来构建特征交叉,MLP则是引入了非线性组合的表达能力,这样的NeuralCF结合了线性和非线性两种组合,因此表达能力效果拔群。

GMF(广义矩阵分解)

由于嵌入后的向量可以看作是潜在向量,我们用 P T V U P^TV^U PTVU表示用户的潜在向量 p u p_u pu, Q T V i I Q^TV^I_i QTViI表示项目的潜在向量 q i q_i qi,因此我们定义的第一层神经CF层的映射函数为:
ϕ 1 ( p u , q i ) = p u ⊙ q i \phi_1(\mathbf p_u,\mathbf q_i)=\mathbf p_u \odot \mathbf q_i ϕ1(pu,qi)=puqi
其中 ⊙ \odot 表示向量的逐元素乘积,然后再将向量映射到输出层:
y u i h a t = a o u t ( h T ( p u ⊙ q i ) ) y^{hat}_{ui}=a_{out}(h^T(\mathbf p_u \odot \mathbf q_i)) yuihat=aout(hT(puqi))
其中 a o u t a_{out} aout 和 h 分别表示输出层的激活函数和连接权重。如果我们将 a o u t a_{out} aout看做一个恒等函数, h 权重全为 1,显然这就是我们的MF模型。

在NCF的框架下,MF可以很容易地被泛化和推广。例如,如果我们允许从没有一致性约束(uniform constraint)的数据中学习h ,则会形成MF的变体,它允许潜在维度的不同重要性。如果我们用一个非线性函数 a o u t a_{out} aout ,将进一步推广MF到非线性集合,使得模型比线性MF模型更具有表现力。在本文的工作中,我们在NCF下实现一个更一般化的MF,它使用Sigmoid函数 σ ( x ) = 1 / ( 1 + e − x ) σ(x)=1/(1+e^{−x}) σ(x)=1/(1+ex) 作为激活函数,通过log loss(学习 h 。我们称之为GMF(Generalized Matrix Factorization,广义矩阵分解)。

MLP(多层感知机)

我们用MLP(多层感知机)来学习用户和项目潜在特征之间的相互作用。NCF框架下,MLP模型定义为:

其中,这里的 W x W_x Wx, b x b_x bx a x a_x ax 分别表示第 x 层的感知机中的的权重矩阵,偏置向量(神经网络的神经元阈值)和激活函数。激活函数可以选择sigmoid,tanh和ReLU等等。经过分析我们选择ReLu函数。实验结果也证明ReLU的表现略好于tanh和sigmoid。

GMF和MLP的结合:

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

一个直接的解决方法是让GMF和MLP共享相同的嵌入层(Embedding Layer),然后再结合它们分别对相互作用的函数输出。具体地说,对于结合GMF和单层MLP的模型可以公式化为:

然而,共享GMF和MLP的嵌入层可能会限制融合模型的性能。例如,它意味着,GMF和MLP必须使用的大小相同的嵌入,对于数据集,两个模型的最佳嵌入尺寸差异很大,使得这种解决方案可能无法获得最佳的组合。

为了使得融合模型具有更大的灵活性,我们允许GMF和MLP学习独立的嵌入,并结合两种模型通过连接他们最后的隐层输出。上图展示了我们的方案,公式如下:

这里的 p u G p^G_u puG q i G q^G_i qiG分别表示 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)计算。

4、总结

NeuralCF具备足够的拟合能力可以把CF的共现矩阵拟合的足够好。但是观察输入特征,很显然,它并没有比CF引入更多的特征,因此缺陷也是很明显的,改进方案的话就是加入更多有价值的信息。

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值