ABSTRACT

  主要点为用MLP来替换传统CF算法中的内积操作来表示用户和物品之间的交互关系.

INTRODUCTION

  NeuCF设计了一个基于神经网络结构的CF模型.文章使用的数据为隐式数据,想较于显性数据,implicit feedback更容易获取但比较难处理.文章的主要贡献有以下三点:

  (1) 使用神经网络结构对用户以及物品的latent features进行建模,设计了一个通用的NCF框架.

  (2)  文章证明了MF是NCF的一个特例,使用MLP赋予NCF获取高阶非线性交互的能力.

  (3) 文章对两个真实数据集进行了大量实验,以证明我们的NCF方法的有效性以及深度学习协同过滤的前景。

PRELIMINARIES

  隐式数据的描述参照DeepCF中implicit feedback的描述.目标函数的选择有以下两类:

  (1) pointwise learning.使用回归框架来计算预测值$\hat{y}_{ui}$以及真实值$y_{ui}$之间的误差.对于隐性反馈的处理,有两种方案:把所有未观测数据当作负样本;从未观测数据中进行负采样获取负样本. 

  (2) pairwise learning. pairwise核心思想是有用户对有观测的数据(产生过行为的数据)偏好度高与未观测数据.因此pariwise loss是最大化用户产生过行为的物品预测值$\hat{y}_{ui}$以及用户没有产生过行为的物品的预测值$\hat{y}_{uj}$.  

  使用神经网络来预测的NCF具备pointwise and pairwise learning的特性.

  MF的详细介绍点这里,MF的主要局限性在于其使用线性的方法结合用户和物品的latent factor,下图举例论证了该观点:

  

  有学者尝试增加MF隐因的个数来提高其表达能力,这么做会影响MF的泛化能力.

NEURAL COLLABORATIVE FILTERING

  流程图如下所示:

  

  文章仅考虑不考虑辅助信息的情况,对于后续可能产生的冷启动问题,可以通过添加辅助信息来解决. hidden layerX的维度决定了模型的容量,模型的预测公式如下:

  

其中$P\in\Re^{M{\times}K},Q\in\Re^{N{\times}K}$表示的是users以及items的latent factor,$\theta_f$为函数f的参数.

  NCF学习问题 文章使用pointwise的方案来计算损失,对应的损失函数如下:

  

   平方损失可以假设观测值是从高斯分布采样出来的,但这假设在implicit data不太行的通. 这里用一个概率的方式来描述这个implicit feedback,$y_{ui}$为用户u与物品i有关系的概率,在上述假设的前提下,模型的似然函数如下:

  对应的损失函数如下所示:

  

  这部分的记号和DeepCF中的类似,处理的一个大致的思想也类似,不多说了.(这里负样本的获取是从未观测数据集合从采样而来,采样的比例是一个超参数)

  GMF(Generalized Matrix Factorization)是MF在NCF的一个扩展,定义user latent vector $P_u$为${P^T}{V_{u}^{U}}$, item latent vector$q_i$为$Q^T{V_{i}^l}$

定义第一个neural CF layer为:

  

  这里$\odot$表示向量的追元素乘积(不是内积),输出层如下:

  

  文章中设定$a_{out}$为sigmoid函数learns h from data with the log loss.当$a_{out},{h}$分别为激活函数以及输出层边的权重,当$a_out$为实体函数,$h$为值全为1的向量的时候,GMF就退化成朴素的MF.

  MLP 结构的描述和DeepCF中类似,文章MLP的激活函数选择的是RELU主要考虑的是函数的饱和性问题,以及RELU激活函数比较适合稀疏的数据.(留个坑)在网络结构的设计上,文章遵循通用的塔形结构(输入层有较多神经元,从输入层到输出层神经元个数逐渐减少).这么做的前提是高层次的较少数的神经元能够从数据中学到较为抽象的数据.

GMF以及MLP的融合  

  GMF如果和MLP共享embedding layer的话会限制embedding layer的表达能力(两者对embedding layer起码size要求不一样).论文中GMF以及MLP有着独有的embedding layer.通过对两个模型最后的隐层级联来对两个模型进行融合,公式如下所示:

  

  p,q对应user,item的latent factor.通过融合使得NeuCF即有GMF的线性表达能力也有MLP的非线性表达能力.模型的概念图如下所示:

  

论文笔记 : NCF( Neural Collaborative Filtering)的更多相关文章

  1. 论文笔记系列-Neural Network Search :A Survey

    论文笔记系列-Neural Network Search :A Survey 论文 笔记 NAS automl survey review reinforcement learning Bayesia ...

  2. 【RS】:论文《Neural Collaborative Filtering》的思路及模型框架

    [论文的思路] NCF 框架如上: 1.输入层:首先将输入的user.item表示为二值化的稀疏向量(用one-hot encoding) 2.嵌入层(embedding):将稀疏表示映射为稠密向量( ...

  3. 论文笔记系列-Neural Architecture Search With Reinforcement Learning

    摘要 神经网络在多个领域都取得了不错的成绩,但是神经网络的合理设计却是比较困难的.在本篇论文中,作者使用 递归网络去省城神经网络的模型描述,并且使用 增强学习训练RNN,以使得生成得到的模型在验证集上 ...

  4. 阅读笔记:Item-based Collaborative Filtering Recommendation Algorithms

    概要: 推荐系统通过信息获取技术解决在线的个人的消息.产品或者服务的推荐问题.这些系统,特别是基于k临近协同过滤算法,在网络上取得了广泛的成功.可用信息和访问人数的巨大增加成了推荐系统一个难题.基于商 ...

  5. 论文笔记: Deep Learning based Recommender System: A Survey and New Perspectives

    (聊两句,突然记起来以前一个学长说的看论文要能够把论文的亮点挖掘出来,合理的进行概括23333) 传统的推荐系统方法获取的user-item关系并不能获取其中非线性以及非平凡的信息,获取非线性以及非平 ...

  6. 【翻译】Neural Collaborative Filtering--神经协同过滤

    [说明] 本文翻译自新加坡国立大学何向南博士 et al.发布在<World Wide Web>(2017)上的一篇论文<Neural Collaborative Filtering ...

  7. 【论文笔记】SamWalker: Social Recommendation with Informative Sampling Strategy

    SamWalker: Social Recommendation with Informative Sampling Strategy Authors: Jiawei Chen, Can Wang, ...

  8. 【论文笔记】 Denoising Implicit Feedback for Recommendation

    Denoising Implicit Feedback for Recommendation Authors: 王文杰,冯福利,何向南,聂礼强,蔡达成 WSDM'21 新加坡国立大学,中国科学技术大学 ...

  9. 【论文笔记】Malware Detection with Deep Neural Network Using Process Behavior

    [论文笔记]Malware Detection with Deep Neural Network Using Process Behavior 论文基本信息 会议: IEEE(2016 IEEE 40 ...

随机推荐

  1. win10系统2分钟睡眠

    https://blog.csdn.net/widenstage/article/details/78982722 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSe ...

  2. Android Studio 之 DataBing ,不需要再一个个findViewById了

    使用DataBinding,不需要再一个个findViewById了 1.在 build.gradel 中 添加下面语句 dataBinding{ enabled true } 2.在 activit ...

  3. 安装anaconda和tensorflow(windows)

    Anaconda安装时勾选All User和启用环境变量可切换为清华镜像conda config --add channels https://mirrors.tuna.tsinghua.edu.cn ...

  4. 动态查找之二叉树查找 c++实现

    算法思想 二叉搜索树(又称二叉查找树或二叉排序树)BST树 二叉查找树 二叉查找树,也称二叉搜索树,或二叉排序树.其定义也比较简单,要么是一颗空树,要么就是具有如下性质的二叉树: (1)若任意节点的左 ...

  5. RK3288板子刷linux-ubuntu16固件

    Firefly-RK3288 是一个高性能平台,拥有强大的多线程运算能力.图形处理能力以及硬件解码 能力,而且支 持 Android和Ubuntu双系统; 下面我们使用RK3288的板子刷linux ...

  6. JavaScript 工厂模式

    //工厂 function FruitMaker() { //function 后不带方法名,这里cococola未定义,make return时,返回 FruitMaker.cococola thi ...

  7. Ubuntu 16.04 Roboware Turtlesim 测试

    博客参考:https://www.jianshu.com/p/5509c8ba522b?utm_campaign 利用Turtlesim,编写简单的消息发布器和订阅器 1. Twist消息,它的Top ...

  8. js session失效退出iframe

    // 代码加入登陆页面中 if( window.top != window.self ){ window.top.location = window.location.href; }

  9. FineReport简单上手

    一.简介 FineReport是一个企业级报表制作.分析和展示工具 官网可以下载个人版进行体验学习:(windows版本设计器) https://www.finereport.com/product/ ...

  10. k8s记录-安装ansible

    ##1.安装1) python版本需要2.6以上,不过通过centos7都会默认安装上python2.7.5,查看方法:python -V2) 添加yum 源a.vim /etc/yum.repos. ...