Neural Collaborative Filtering

目录

      • 2 PRELIMINARIES
      • 3. NEURAL COLLABORATIVE FILTERING
        • 3.1 通用框架
        • 3.2 广义矩阵分解(GMF)
        • 3.3 MLP
        • 3.4 GMF和MLP的聚合—NeuMF
      • 4 EXPERIMENTS
        • Q1 NCF的效果比其他SOTA的隐式CF好吗?
        • Q2 带有负采样的log loss(这个优化框架)是否适用于RS?
        • Q3 更深的网络对于从交互数据中学习 有帮助吗?

核心: 内积的局限性,用神经结构代替内积。实验表明,使用更深层次的神经网络提供了更好的推荐性能。

2 PRELIMINARIES

隐反馈交互

在这里插入图片描述
目标函数分为ponit-wise和pair-wise loss:

  • ponit-wise,最小化预测值和实际值之间的差距,预测rmse,二分类Logloss
  • pair-wise,最大化正样本和负样本之间的差距,bpr, margin-based loss等

矩阵分解可以看作隐表示的加和,每个维度的贡献相同
在这里插入图片描述
内积的局限性例子,p4和p1最接近,然后是p3,最后是p2;但是p4和p1靠近之后,会改变p2、p3对于p4的相似性,距离与真正相似性不符合。解决这个问题的一个方法就是增大隐表示的维度,但是会破坏模型的泛化性(个人认为就是造成过拟合),本文通过使用DNN来学习交互函数来解决这个限制。
Neural Collaborative Filtering_第1张图片

3. NEURAL COLLABORATIVE FILTERING

3.1 通用框架

Neural Collaborative Filtering_第2张图片
输入都只含用户和物品的id,通过嵌入来得到对应的表示,还可以用content来获取用户或者物品的表示,以此解决冷启动问题。NCF层的每一层都可以定制,用以发现用户-项目交互的某些潜在结构。最后一个隐藏层X的维数决定了模型的能力。
NCF的形式化表示为:
在这里插入图片描述
前面两项表示 用户表示和物品表示;后面三项表示用户嵌入表、物品嵌入表、参数
在这里插入图片描述

使用ponitwise的损失函数:
在这里插入图片描述
Neural Collaborative Filtering_第3张图片

3.2 广义矩阵分解(GMF)

Neural Collaborative Filtering_第4张图片
a o u t = 1 a_{out}=1 aout=1 h h h 为各维度为1的向量,就相当于矩阵分解MF。如果我们允许h在没有统一约束的情况下从数据中学习,它将导致MF的变体,允许潜在维度的不同重要性。

本文所说的GMF就是输出为sigmoid,学习h,允许每一维度贡献不同。
在这里插入图片描述

3.3 MLP

将用户表示和物品表示concat,没有考虑用户和项潜在特征之间的任何交互,这不足以模拟协作过滤效果。为了解决这个问题,本文在concat向量上添加隐藏层,使用标准MLP来学习用户和项潜在特征之间的交互。
concat+MLP
Neural Collaborative Filtering_第5张图片
采用relu激活函数,因为它使用稀疏的激活,一定程度上缓解了过拟合问题,(sigmoid,tanh遭受饱和的问题,当sigmoid输出为0,1附近时,神经元不再学习)。采用塔形结构( tower pattern),(比如200-100-10这种),对于较高的层使用少量的隐藏单元,它们可以学习更抽象的数据特征。(可以关注一下塔形结构为什么有这种优点

3.4 GMF和MLP的聚合—NeuMF

到目前为止,提出了了两个NCF的实例化:

  • GMF应用线性内核来建模潜在特征交互
  • MLP使用非线性内核从数据中学习交互函数。

一个方法就是两者共享嵌入层,和Neural Tensor Network (NTN)的思想一致:
这里自己的疑问:就只有一层MLP吗?没有多层?
在这里插入图片描述
共享GMF和MLP的嵌入可能会限制融合模型的性能。我们允许GMF和MLP学习单独的嵌入,并通过concat它们的最后一个隐藏层来组合这两个模型。
Neural Collaborative Filtering_第6张图片
Neural Collaborative Filtering_第7张图片
使用GMF和MLP的预训练模型初始化NeuMF, 把GMF和MLP先单独学习,得到稳定的参数之后,作为NeuMF的初始化参数。唯一的调整是在输出层:(问题,concat还要用 α \alpha α ??
在这里插入图片描述
预训练的时候用Adam;NeuMF中用原始的SGD。这是因为Adam需要保存动量信息来正确更新参数。

4 EXPERIMENTS

实验设置说的比较详细,可以参考。并且两个数据集也能参考。
留一法 评估,每位用户选最新的点击作为test,其他作为train。随机抽取100个未由用户交互的项目,将测试项目排序在100个项目中。
指标选用HR,NDCG,计算每个测试用户的这两个指标,并使用平均分数。
对于每位用户,随机选一个已有的交互作为验证集,来调整参数。对于每个正样本,随机选4个负样本。

Q1 NCF的效果比其他SOTA的隐式CF好吗?

Neural Collaborative Filtering_第8张图片
还做了p检验

Q2 带有负采样的log loss(这个优化框架)是否适用于RS?

pointwise损失相对于pairwise损失的一个优点是负样本的灵活采样比。pairwise对于一个正样本只能对比一个负样本(pairwise一个正样本不能对比多个负样本吗??),但是point-wise可以对每一个正样本采取多个负样本。
Neural Collaborative Filtering_第9张图片
Neural Collaborative Filtering_第10张图片

Q3 更深的网络对于从交互数据中学习 有帮助吗?

结果表明使用更深的模型对于协同过滤能更有效。

Neural Collaborative Filtering_第11张图片
Neural Collaborative Filtering_第12张图片

你可能感兴趣的:(推荐系统)