Neural Collaborative Filtering
Summary
之前的论文用深度学习for recomendation都是用它们来对辅助信息建模.当要对协同过滤中的关键因子——(user和item的特征的相互作用)建模时它们仍采用matrix factorization(MF)并且运用user和item隐特征的内积.
通过用神经结构(能从数据中学得任意函数)来代替内积,作者提出了一种框架称为NCF(neural network based Collaborative Filtering).
为了使NCF能表现出非线性,作者提出利用多层感知器来学习user-item的相互作用的函数。
介绍
个性化推荐系统的关键是基于过去的相互作用关系,建模users对items的偏好(例如,ratings and clicks),这种方法称为collaborative filtering(协同过滤).
在多种协同过滤的技术里,最出名的是matrix factorization(MF),它将投影user和item到一个共同的隐空间内,通过使用一个隐特征的向量来表达user或item.
文中的关注的是一种潜在反馈(implicit feedback),它不是直接反映用户的偏好而是通过行为像观看视频,购买产品和点击项目来反映.
相比于直观的反馈(例如,打分和评述),潜在反馈能被自动跟踪并且更容易收集.
本文主要贡献:
- 提出了一种神经网络结构来对user和item的潜在特征进行建模并且设计了一个对collaborative filtering基于神经网络的一般性框架NCF。
- MF能被解释为特殊的NCF形式并且利用多层感知器(MLP)来帮助NCF,使其能有较高层面的非线性。
- 对真实世界数据集进行实验.
Preliminaries
我们首先形式化问题并讨论潜在反馈(implicit feedback)的协同过滤已存在的解决方案.
从潜在数据中学习
用M和N分别表示user和item的数目.定义user-item相互作用的矩阵Y∈$R^{M×N}$,这来源于隐反馈(implicit feedback).
当$y_{ui}$取值为0时不一定是意味着u不喜欢i,有可能是user不知道item.所以这存在一个挑战:我们的潜在数据只提供关于用户偏好的信号。
潜反馈的推荐系统问题是难以在Y中建立未观察到实体的分数.
基于模型的方法假定数据能用根本模型产生.形式上,他们能被抽象为学习$\hat{y}_{ui}=f(u,i|\theta)$,其中$\hat{y}_{ui}$表示相互作用$y_{ui}$期望的分数,$\theta$表示模型的参数,f表示能将模型参数映射为期望分数的函数(称为推断函数).
为了估计参数$\theta$,现有方法一般遵循机器学的范式——优化目标函数.有两类目标函数常在文献中使用——pointwise loss和pairwise loss. 基于pointwise学习的方法常常遵循回归框架通过最小化$\hat{y}_{ui}$和它的目标值$y_{ui}$的平方损失.
为了处理负数据缺失,要么把所有未观察到的实体视为负反馈,要么从未观察到的实体中采样负样例.对于pairwise learning,该观点是观察到的实体应该排分高于未观察到的实体。代替最小化$\hat{y}_{ui}$和$y_{ui}$之间的loss,pairwise学习最大化了观察到的实体$\hat{y}_{ui}$和未观察到的实体$\hat{y}_{uj}$之间的边缘.
MF
MF关联了每个带有潜特征的实值向量的User和item。用$p_u$和$q_i$表示对于user u和item i的潜向量。MF估计相互作用$y_{ui}$通过$p_u$和$q_i$的内积.
其中K表示潜空间的维度。如我们所见,MF建模了user和item潜在成分二者的相互作用,假定潜空间每个维度相互独立并且以相同的权重线性结合它们.
上图解释了内积函数是如何限制MF的表达.
这里有两点要注意:
- 因为MF映射users和items到相同的潜空间中,因此user和item的相似度也能被用内积或cosine夹角来计算。
- 不失一般性,我们用Jaccard系数作为两个users的相似度.
用简单固定的内积来估计复杂的user-item相互作用会造成MF有局限性.作者还注意到使用大数潜因子K可能会造成模型的泛化出现问题(过拟合).本文打算用DNN来解决上述提出的局限性.
Neural collaborative filtering
一般性框架
用神经元的方式构建协同过滤,作者采用多层表达方式来对user-item的相互作用$y_{ui}$来建模,如图2所示.
图中最底下的是输入层,里面的向量是onehot的形式。其上面是一个embedding层,就是一个全连接层,目的是映射稀疏表达到一个密集的向量中去.The obtained user(item) embedding can be seen as the latent vector for user(item) in the context of latent factor model.
user embedding 和item embedding 被喂到一个多层神经元结构里去,图上称这个结构为Neural CF layer,为的就是将隐向量映射到期望分数上去.最后在输出层对预测分数$\hat{y}_{ui}$和目标值$y_{ui}$的pointwise loss做最小化处理.
文中还提出另一种训练模型的方法是执行pairwise learning,例如用Bayesian personalized ranking and margin-based loss.但文中将这部分视为未来工作.
学习NCF
文中采用的学习方法是pointwise方法,也就是类似于回归的方法
其中N表示在Y中已观察到的相互作用,而$N^-$表示负实例集合,它们全都是(或部分采样于)未观察到的相互作用.
然而平方loss一般被解释认为观察物由高斯分布产生,因此作者认为这不适合于implicit data.这是因为对于implicit data,目标值$y_{ui}$是二值0/1表明u是否与i相互作用.为了解决上述问题,作者提供了一种概率的方法来学习pointwise NCF,这种方法刚好适合implicit data的二值性质
预测分数$\hat{y}_{ui}$表示i是如何与u相关的.为了给NCF引入概率解释,我们需要约束输出$\hat{y}_{ui}$在[0,1]范围内.根据上述设置,我们定义似然函数为
对其进行负对数化,得到
上式与二值的cross-entropy loss一样.接下来就可以用SGD来最小化.
以上就是概率化对待NCF,作者解决推荐的隐反馈通过将其视为二值分类问题.
Generalized Martix Factorization(GMF)
MF能被解释为NCF框架的特列?
由于input层的user(item)是用one-hot编码来表示,那么获得的embedding向量能被视为user(item)的潜向量.user潜向量$P_u$是$P^Tv_u^U$并且item潜向量$q_i$是$Q^Tv_i^I$.定义第一个neural CF层的映射函数为
其中$\odot$表示向量的element-wise product.然后将该向量映射到输出层
其中$a_{out}$和h分别表示激活函数和输出层向量.
在NCF的框架下,MF能很容易被泛化和扩展.