数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
- 线性模型
- 支持向量机
- 朴素贝叶斯
- 决策树
- knn
- 集成学习
- 梯度提升树
- 数据预处理
- 模型评估
- 降维
- 聚类
- 半监督学习
- EM 算法
- 最大熵算法
- 隐马尔可夫模型
- 概率图与条件随机场
- 边际概率推断
- 主题模型
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- CRF ++
- lightgbm
- xgboost
- xgboost 使用指南
- scikit-learn
- spark
- numpy
- matplotlib
- matplotlib 使用指南
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
十六、NCF [2017]
-
在信息爆炸的时代,推荐系统在缓解信息过载
information overload
方面发挥着举足轻重的作用,并且已经被许多在线服务广泛采用,包括电商、在线新闻、社交媒体网站。个性化推荐系统的关键在于根据用户历史交互(例如评分、点击)对user-item
的偏好进行建模,这就是所谓的协同过滤collaborative filtering
。在各种协同过滤技术中,矩阵分解
matrix factorization: MF
是最流行的一种,它将用户和item
投影到共享的潜在空间latent space
中,使用潜在特征向量来表示用户和item
。此后,用户对item
的交互被建模为它们潜在向量latent vector
的内积。通过Netflix Prize
的推广,MF
已经成为基于潜在因子模型latent factor model-based
的推荐的事实上的方法。许多研究工作致力于增强
MF
,例如将其与基于邻域的模型neighbor-based model
相结合、将其与item
内容的主题模型topic model
相结合、将其扩展到分解机factorization machine
从而进行特征的通用建模。尽管
MF
对于协同过滤很有效,但是众所周知,它的性能可能会受到简单选择“内积” 作为交互函数的阻碍。例如,对于基于显式反馈的评分预测任务,众所周知,可以通过将user bias
项和item bias
项添加到交互函数中从而提高MF
模型的性能。虽然这对于内积算子而言似乎只是一个微不足道的调整,但是它指出了设计一个更好的、专用的交互函数来建模用户和item
之间潜在特征交互的积极效果。内积算子,它仅仅简单地线性组合多个潜在特征latent feature
的乘法,可能不足以捕获用户交互数据的复杂结构。在论文
《Neural Collaborative Filtering》
中,作者探讨了使用深度神经网络从数据中学习交互函数,而不是像以前许多工作那样人工设计交互函数。神经网络已经被证明能够逼近任何连续函数,而且最近发现神经网络deep neural networks: DNNs
在多个领域都有效 ,从计算机视觉、语音识别到文本处理。然而,与大量关于MF
方法的文献相比,使用DNN
进行推荐的工作相对较少。尽管最近的一些进展已经将DNN
应用于推荐任务并显示出有希望的结果,但是它们主要使用DNN
来建模辅助信息auxiliary information
,例如item
的文本描述、音乐的音频特征、图像的视觉特征。在建模关键的协同过滤效果方面,他们仍然采用MF
,使用内积来结合用户潜在特征和item
潜在特征。论文通过形式化formalize
用于协同过滤的神经网络建模方法来解决上述研究问题(利用神经网络来建模交互函数)。通过采用可以从数据中学习任意函数的神经网络架构代替内积,论文提出了一个名为Neural Network-based Collaborative Filtering: NCF
的通用框架。论文聚焦于隐式反馈
implicit feedback
,隐式反馈通过视频观看、商品购买、item
点击等行为间接反映了用户的偏好。和显式反馈explicit feedback
(即显式评分rating
和评论review
)相比,隐式反馈可以自动跟踪,因此更容易被内容提供商content provider
所收集。然而,隐式反馈的使用更具有挑战性,因为无法观察到用户满意度user satisfaction
,并且负反馈negative feedback
天然的稀疏性。在本文中,作者探讨了如何利用DNN
对包含噪音的隐式反馈信号进行建模。论文的主要贡献:
- 论文提出了一个神经网络架构来对用户和
item
的潜在特征进行建模,并设计了一个基于神经网络的协同过滤通用框架NCF
。 - 论文表明:
MF
可以被解释为NCF
的特殊情况,并利用多层感知机赋予NCF
模型高度的非线性。 - 论文在两个真实数据集上进行了大量的实验,从而证明
NCF
方法的有效性,以及深度学习在协同过滤方面的前景。
- 论文提出了一个神经网络架构来对用户和
-
相关工作:
-
隐式反馈:虽然关于推荐的早期文献主要集中在显式反馈,但最近人们越来越关注隐式数据。具有隐式反馈的协同过滤
collaborative filtering: CF
任务通常被形式化为item
推荐问题,其目的是向用户推荐一个简短的item
列表。和显式反馈工作广泛解决的评分预测相比,解决item
推荐问题更实用但更具有挑战性。一个关键的洞察insight
是对缺失数据进行建模,而这些缺失数据总是被显式反馈的工作所忽略。为了使用隐式反馈为
item
推荐定制tailor
潜在因子模型,早期工作应用了两种均匀加权策略:将所有缺失数据视为负样本,或者从缺失数据中均匀采样负样本。最近,《Fast matrix factorization for online recommendation with implicit feedback》
和《Modeling user exposure in recommendation》
提出了专门的模型来对缺失数据进行加权。《A generic coordinate descent framework for learning from implicit feedback》
为基于特征的分解模型开发了一种隐式坐标下降implicit coordinate descent: iCD
解决方案,实现了state-of-the-art
的item
推荐性能。 -
基于神经网络的推荐:早期先驱工作
《Restricted boltzmann machines for collaborative filtering》
提出了一种两层受限玻尔兹曼机Restricted Boltzmann Machine: RBM
来建模用户对item
的显式评分。《Ordinal boltzmann machines for collaborative filtering》
扩展了该工作从而对评分的保序性质ordinal nature
进行建模。最近,自编码器已经成为构建推荐系统的流行选择。
《Autorec: Autoencoders meet collaborative filtering》
提出了基于用户的AutoRec
,其思想是学习隐藏的结构hidden structure
,这些结构可以根据用户的历史评分作为输入从而重构用户的评分。在用户个性化方面,该方法与item-item
模型(将用户表示为他/她的历史评分item
)具有相似的精神。为了避免自编码器学习恒等函数
identity function
从而无法泛化到未见unseen
的数据,降噪自编码器denoising autoencoder: DAE
应用于从故意损坏的输入中学习。最近
《A neural autoregressive approach to collaborative filtering》
提出了一种用于CF
的神经自回归方法。虽然这些工作为神经网络解决
CF
的有效性提供了支持,但是其中大多数都专注于显式评分,并仅对观察到的数据进行建模。结果,对于从只有正样本的隐式数据中学习的任务,它们很容易失败。 -
神经网络用于隐式反馈的推荐:最近的一些工作探索了基于隐式反馈的深度学习模型来进行推荐,但是他们主要使用
DNN
对辅助信息进行建模,例如item
的文本描述、音乐的声学特征、用户的跨域行为、以及知识库中的丰富信息。然后,将DNN
学到的特征与用于协同过滤的MF
集成。与我们的工作最相关的工作是
《Collaborative denoising auto-encoders for top-n recommender systems》
,它为CF
提供了一个带有隐式反馈的协同降噪自编码器collaborative denoising autoencoder: CDAE
。 和DAE-based CF
相比,CDAE
额外地将一个用户节点插入到自编码器的输入中从而重建用户的评分。如作者所示,当应用恒等映射作为CDAE
的隐层激活函数时,CDAE
等效于SVD++
模型。这意味着虽然CDAE
是一种用于CF
的神经网络建模方法,但是它仍然应用线性核linear kernel
(即内积)来对user-item
交互进行建模。这可以部分解释为什么CDAE
使用更深的层不会提高性能。与
CDAE
不同,我们的NCF
采用双路架构,使用多层前馈神经网络对user-item
交互进行建模。这允许NCF
从数据中学习任意函数,比固定的内积函数更强大、更具表达能力。 -
其它工作:沿着类似的路线,在知识图谱文献中已经深入研究了学习两个实体之间的关系。已有很多关系型机器学习
relational machine learning method
方法被提出。与我们的方法最相似的一个是神经张量网络Neural Tensor Network: NTN
,它使用神经网络来学习两个实体的交互并展示层强大的性能。在这里,我们关注协同过滤的不同problem setting
。虽然将MF
和MLP
相结合的NeuMF
的思想部分受到NTN
的启发,但是在允许MF
和MLP
学习不同的embedding
集合方面,我们的NeuMF
比NTN
更灵活、更通用。最近,谷歌公布了他们用于
App
推荐的Wide & Deep
方法。Deep
组件同样在特征embedding
之上使用MLP
,据报道它具有很强的泛化能力。虽然他们的工作重点是结合用户和item
的各种特征,但是我们的目标是探索纯协同过滤系统的DNN
。我们表明,DNN
是对user-item
交互建模的一个很有前景的选择。据我们所知,以前从未有工作对此进行研究过。
-
16.1 模型
16.1.1 基本概念
-
我们首先将问题形式化并讨论现有的带隐式反馈的协同过滤解决方案。然后我们简短地概括了广泛使用的
MF
模型,并强调其内积造成的局限性。 -
从隐式数据中学习
$ y_{u,i} = \begin{cases} 1,& \text{if } (u,i) \text{ interaction is observed }\\ 0,&\text{else} \end{cases} $Learning from Implicit Data
:令 $ M $ 表示用户数量、 $ N $ 表示item
数量。定义从用户隐式反馈implicit feedback
得到的user-item
交互矩阵 $ \mathbf Y\in \mathbb R^{M\times N} $ 为:注意:
- $ y_{u,i} = 1 $ 表示用户 $ u $ 和
item
$ i $ 之间存在交互,然而这并不意味着用户 $ u $ 真的喜欢item
$ i $ 。 - $ y_{u,i} = 0 $ 表示用户 $ u $ 和
item
$ i $ 之间不存在交互,这也并不意味着用户 $ u $ 真的不喜欢item
$ i $ ,可能是因为用户 $ u $ 没注意到item
$ i $ 。
这给从隐式数据中学习带来了挑战,因为隐式数据仅提供了关于用户偏好
users' preference
的带噪音的信号noisy signals
。虽然观察到的item
至少反映了用户对item
的兴趣,但是未观察到的item
可能只是缺失的数据missing data
,并且天然natural
缺乏负反馈negative feedback
。带隐式反馈的推荐问题被表述为估计 $ \mathbf Y $ 中未观察到的
$ \hat y_{u,i} = f(u,i\mid \Theta) $item
的得分score
的问题,其中这些score
用于对item
进行排序。model-based
方法假设数据可以由底层模型生成(或描述)。形式上, 模型可以抽象为学习:其中:
- $ \hat y_{u,i} $ 表示对交互 $ y_{u,i} $ 的预估分
predicted score
。 - $ \Theta $ 表示模型参数; $ f(\cdot) $ 表示将模型参数映射到预估分的函数,我们称之为交互函数
interaction function
。
为了估计参数 $ \Theta $ ,现有方法通常遵循优化目标函数的机器学习范式。文献中最常用的目标函数有两种:
point-wise loss
和pair-wise loss
。- 作为显式反馈
explicit feedback
大量工作的自然延伸,point-wise loss
通常定义为最小化 $ \hat y_{u,i} $ 和目标值 $ y_{u,i} $ 之间的平方损失。为了处理negative data
的缺失,他们要么将所有未观察到的item
视为负样本、要么从未观察到的item
中采样负样本。 pair-wise loss
的思想是:观察到的item
应该比未观察到的item
的排名更高。因此,它不是最小化 $ \hat y_{u,i} $ 和目标值 $ y_{u,i} $ 之间的损失,而是pair-wise learning
最大化观察到的item
$ \hat y_{u,i} $ 和未观察到的item
$ \hat y_{u,j} $ 之间的边距margin
。
更进一步地,我们的
NCF
框架使用神经网络参数化交互函数 $ f(\cdot) $ 从而估计 $ \hat y_{u,i} $ 。因此,NCF
自然支持point-wise learning
和pair-wise learning
。 - $ y_{u,i} = 1 $ 表示用户 $ u $ 和
-
矩阵分解
$ \hat y_{u,i} = f\left(u,i\mid \mathbf{\vec p}_u,\mathbf{\vec q}_i\right) = \mathbf{\vec p}_u^\top \mathbf{\vec q}_i = \sum_{k=1}^K p_{u,k}\times q_{i,k} $Matrix Factorization: MF
:MF
将每个用户、每个item
都和潜在特征向量latent feature vector
相关联。令 $ \mathbf{\vec p}_u $ 表示用户 $ u $ 的潜在特征向量, $ \mathbf{\vec q}_i $ 表示用户 $ i $ 的潜在特征向量。MF
估计estimate
交互 $ y_{u,i} $ 为 $ \mathbf{\vec p}_u $ 和 $ \mathbf{\vec q}_i $ 的内积:其中 $ K $ 为潜在空间
latent space
的维度。正如我们所看到的,
MF
对用户潜在因子latent factor
和item
潜在因子的双向交互two-way interaction
进行建模,假设潜在空间的每个维度彼此独立,并以相同的权重线性组合它们。因此,MF
可以视为潜在因子的线性模型。下图说明了内积函数如何限制
MF
的表达能力。为了更好地理解示例,有两个设置settings
需要事先说明。- 首先,因为
MF
将用户和item
都映射到相同的潜在空间,所以两个用户之间的相似性也可以用内积来衡量(或者它们潜在向量之间的余弦相似度来衡量)。 - 其次,不失一般性,我们使用
Jaccard
系数(用户A
观察到的item
集合与用户B
观察到的item
集合之间的Jaccard
系数)作为MF
需要恢复的、两个用户之间的真实相似度ground-truth similarity
。
我们首先关注图
(a)
中的前三行(用户)。很容易有 $ s_{2,3}(0.66) \gt s_{1,2}(0.5)\gt s_{1,3}(0.4) $ 。因此, $ \mathbf{\vec p}_1,\mathbf{\vec p}_2,\mathbf{\vec p}_3 $ 在潜在空间中的几何关系可以如图(b)
所示绘制。现在,让我们考虑一个新的用户 $ u_4 $ ,其输入如图
(a)
中的虚线所示。所以我们有 $ s_{4,1}(0.6)\gt s_{4,3}(0.4)\gt s_{4,2}(0.2) $ ,这意味着 $ u_4 $ 最类似于 $ u_1 $ 、其次是 $ u_3 $ 、最后是 $ u_2 $ 。但是,如果MF
模型将 $ \mathbf{\vec p}_4 $ 放置在最接近 $ \mathbf{\vec p}_1 $ 的位置(图(b)
中用虚线显示的两个选择),则会导致 $ \mathbf{\vec p}_4 $ 更靠近 $ \mathbf{\vec p}_2 $ 而不是更靠近 $ \mathbf{\vec p}_3 $ ,而这会导致更大的排序损失ranking loss
。这个例子显示了
MF
使用简单的、且固定的内积来估计低维潜在空间中复杂的user-item
交互的限制。在这个例子中,我们注意到解决该问题的一种方法是使用更大的潜在因子数量 $ K $ (即更高维的潜在空间)。 然而,这种方法可能会对模型的泛化能力产生不利影响(如,过拟合),尤其是在数据稀疏的环境中。 - 首先,因为
-
在本文中,我们通过从数据中使用
DNN
学习交互函数来解决MF
的这个限制。- 我们首先介绍了通用的
NCF
框架,详细说明了如何学习NCF
的概率模型,该模型强调了隐式数据的二元属性binary property
。 - 然后我们证明了
MF
可以在NCF
下表达和推广。 - 为了探索用于协同过滤的
DNN
,我们接着提出NCF
的实例化,使用多层感知机multi-layer perceptron: MLP
来学习user-item
交互函数。 - 最后,我们提出了一个新的神经矩阵分解模型,它在
NCF
框架下集成了MF
和MLP
,从而统一了MF
的线性和MLP
的优势来建模user-item
潜在结构latent structures
。
- 我们首先介绍了通用的
16.1.2 NCF 通用框架
-
为了允许全
full
神经网络来处理协同过滤, 我们采用multi-layer representation
来建模user-item
交互 $ y_{u,i} $ ,如下图所示。其中前一层的输出作为后一层的输入。-
底部输入层由两个特征向量 $ \mathbf{\vec v}_u^U $ 和 $ \mathbf{\vec v}_i^I $ 组成,分别表示用户 $ u $ 输入特征和
item
$ i $ 输入特征。输入特征向量可以自定义
customized
从而支持广泛的用户建模和item
建模,例如上下文感知context-aware
建模、content-based
建模、neighbor-based
建模。由于这项工作聚焦于纯粹pure
的协同过滤设置setting
,我们仅采用user id
和item id
作为输入特征,并将其转换为稀疏的one-hot
向量。基于输入的这种通用特征表示
generic feature representation
,我们的方法可以通过使用内容特征来表示用户和item
,从而轻松地解决冷启动问题cold-start problem
。 -
输入层之上是
embedding
层,它是一个全连接层,将稀疏表示sparse representation
投影到稠密向量dense vector
。得到的user embedding
(item embedding
)可以视为潜在因子模型背景下的用户潜在向量(item
潜在向量)。 -
然后,用户
embedding
和item embedding
被馈入多层神经架构,我们称之为神经协同过滤层neural collaborative filtering layers
,从而将潜在向量映射为预估分。神经
CF
层的每一层都可以自定义,从而发现user-item
交互的某些潜在结构。最后一个隐层X
的维度决定了模型的能力。 -
最终的输出层是预估分 $ \hat y_{u,i} $ ,并通过最小化 $ \hat y_{u,i} $ 和目标值 $ y_{u,i} $ 之间的
point-wise loss
来进行训练。我们注意到训练模型的另一种方法是执行
pair-wise learning
,例如使用Bayesian Personalized Ranking
和margin-based loss
。由于本文的重点是神经网络建模部分,我们将扩展NCF
的pair-wise learning
作为未来的工作。
-
-
我们形式化
$ \hat y_{u,i} = f\left(\mathbf P^\top \mathbf{\vec v}_u^U, \mathbf Q^\top \mathbf{\vec v}_i^I\mid \mathbf P,\mathbf Q,\Theta_f\right) $NCF
预测模型为:其中:
- $ \mathbf P\in \mathbb R^{M\times K},\mathbf Q\in \mathbb R^{N\times K} $ 分别表示用户和
item
的潜在因子矩阵latent factor matrix
。 - $ \Theta_f $ 表示交互函数 $ f(\cdot) $ 的模型参数。
由于交互函数 $ f(\cdot) $ 定义为一个多层神经网络,因此它可以被形式化为:
$ \hat y_{u,i} = f\left(\mathbf P^\top \mathbf{\vec v}_u^U, \mathbf Q^\top \mathbf{\vec v}_i^I \right) = \phi_{\text{out}}\left(\phi_{X}\left(\cdots\phi_2\left(\phi_1\left(\mathbf P^\top \mathbf{\vec v}_u^U, \mathbf Q^\top \mathbf{\vec v}_i^I\right)\right)\cdots\right)\right) $其中 $ \phi_{\text{out}}(\cdot) $ 为输出层的映射函数, $ \phi_x(\cdot) $ 为第 $ x $ 层神经协同过滤层的映射函数,并且一共有 $ X $ 层神经协同过滤层。
- $ \mathbf P\in \mathbb R^{M\times K},\mathbf Q\in \mathbb R^{N\times K} $ 分别表示用户和
-
为了学习模型参数,现有的
$ \mathcal L_{\text{sqr}} = \sum_{(u,i)\in \mathcal Y\cup \mathcal Y^-} w_{u,i} \left(y_{u,i} - \hat y_{u,i}\right)^2 $point-wise
方法主要使用平方损失进行回归:其中:
-
$ \mathcal Y $ 表示 $ \mathbf Y $ 中观测交互的集合。
-
$ \mathcal Y^- $ 表示负样本的集合,它们是所有未观测交互,或者从未观测交互中采样而来。
-
$ w_{u,i} $ 表示训练样本 $ (u,i) $ 的权重超参数。通常选择 $ w_{u,i} = 1+\alpha\times y_{u,i} $ ,即观察到交互的
user-item
权重高于未观察到交互的user-item
。这里 $ y_{u,i} =0 $ 表示未观察到交互的样本。
虽然平方损失可以通过假设观测值
observations
由高斯分布产生来解释,但是我们指出这可能与隐式数据不符。这是因为对于隐式数据,目标值 $ y_{u,i} $ 是二元的1
或者0
,表示用户 $ u $ 是否和item
$ i $ 进行了交互。这里我们提出了一种用于学习point-wise NCF
的概率方法,该方法特别关注隐式数据的二元属性binary property
。考虑到隐式反馈的
$ p(\mathcal Y,\mathcal Y^-\mid \mathbf P,\mathbf Q,\Theta_f) = \prod_{(u,i)\in \mathcal Y} \hat y_{u,i} \prod_{(u,j)\in \mathcal Y^-}(1-\hat y_{u,j}) $one-class
特性,我们可以将 $ y_{u,i} $ 的值视为一个label
:1
表示item
$ i $ 和用户 $ u $ 相关,0
表示item
$ i $ 和用户 $ u $ 不相关。预估分 $ \hat y_{u,i} $ 表示item
$ i $ 和用户 $ u $ 的相关程度。为了赋予NCF
这样的概率解释,我们需要将输出 $ \hat y_{u,i} $ 限制在[0.0, 1.0]
之间。这可以通过使用概率函数(例如Logistic
或Probit
函数)作为输出层 $ \phi_{\text{out}}( \cdot) $ 的激活函数轻松实现。通过这种setting
,我们将似然函数定义为:使用负的对数似然,我们得到:
$ \mathcal L = -\sum_{(u,i)\in \mathcal Y} \log \hat y_{u,i} - \sum_{(u,j)\in \mathcal Y^-}\log\left(1-\hat y_{u,j}\right)\\ = -\sum_{(u,i)\in \mathcal Y\cup \mathcal Y^-} \left[y_{u,i}\log \hat y_{u,i} + (1-y_{u,i})\log (1-\hat y_{u,i}) \right] $这是
NCF
方法需要最小化的目标函数,其优化可以通过执行随机梯度下降stochastic gradient descent: SGD
来完成。细心的读者可能已经意识到它与二元交叉熵损失binary cross-entropy loss
(也称作对数损失log loss
)相同。通过对
NCF
进行概率处理,我们将带有隐式反馈的推荐作为二元分类问题来解决。由于分类感知classification-aware
的log loss
在推荐文献中很少被研究,我们在这项工作中对其进行了探索,并在实验中证明了其有效性。对于负样本集合 $ \mathcal Y^- $ ,我们在每次迭代中从未观察的交互中均匀随机采样,并控制采样比例
sampling ratio
(这个比例是相对于观察到的交互数量)。虽然非均匀采样策略(例如,item popularity-biased
)可能会进一步提高性能,但是我们将这个探索留作未来的工作。 -
16.1.3 广义矩阵分解 GMF
-
我们现在展示如何把
MF
解释为我们NCF
框架的一个特例。由于MF
是最流行的推荐模型,并在文献中进行了广泛的研究,因此能够复原MF
使得NCF
可以模拟一大族因子分解模型。 -
由于
$ \phi_1\left(\mathbf{\vec p}_u,\mathbf{\vec q}_i\right) = \mathbf{\vec p}_u\odot \mathbf{\vec q}_i $NCF
输入层的user ID
(或者item ID
)是one-hot
编码,因此得到的embedding
向量可以视为user
(或者item
)的隐向量。令用户 $ u $ 的潜在向量 $ \mathbf{\vec p}_u $ 为 $ \mathbf P^\top \mathbf{\vec v}_u^U $ ,item
$ i $ 的潜在向量 $ \mathbf{\vec q}_i $ 为 $ \mathbf Q^\top \mathbf{\vec v}_i^I $ 。我们将第一层神经协同过滤层的映射函数定义为:其中 $ \odot $ 为向量之间的逐元素乘积。
然后我们将结果向量投影到输出层:
$ \hat y_{u,i} = a_{\text{out}}\left(\mathbf{\vec h}^\top \left(\mathbf{\vec p}_u\odot \mathbf{\vec q}_i\right)\right) $其中 $ a_{\text{out}}(\cdot) $ 为激活函数, $ \mathbf{\vec h} $ 为输出层的权重向量。
直观地讲,如果我们选择 $ a_{\text{out}}(\cdot) $ 为恒等映射、并且令 $ \mathbf{\vec h} $ 为全
1
的向量,那么我们就可以准确地复原MF
模型。 -
在
NCF
框架下,MF
可以很容易地推广和扩展。例如:-
如果我们允许 $ \mathbf{\vec h} $ 可以从数据中学习(而不是固定的常量),那么它将导致
MF
的一个变体,这个变体允许MF
模型学习各潜在维度的不同重要性。 -
如果我们对 $ a_{\text{out}}(\cdot) $ 使用非线性函数,那么它将导致
MF
的一个变体,这个变体是一个非线性模型,并且可能比线性MF
模型更具有表达能力。 -
在这项工作中,我们在
$ a_{\text{out}}(\cdot) = \frac{1}{1+\exp(-x)} $NCF
框架下实现了一个广义版本的MF
,它使用sigmoid
函数作为 $ a_{\text{out}}(\cdot) $ ,并且以对数损失为目标从数据中学习 $ \mathbf{\vec h} $ 。其中:我们称这个模型为广义矩阵分解
Generalized Matrix Factorization: GMF
。
-
16.1.4 多层感知机
-
由于
NCF
使用两路分别对用户和item
进行建模,因此通过将这两路特征拼接起来从而组合它们的特征是很直观的。这种设计已经在多模态multimodal
深度学习工作中广泛采用。 然而,简单的向量拼接并没有考虑用户潜在特征和item
潜在特征之间的任何交互,这不足以建模协同过滤效果。为了解决这个问题,我们提出在拼接向量上添加隐层,使用标准MLP
来学习用户潜在特征和item
潜在特征之间的交互。从这个意义上讲,我们可以赋予模型很大程度的灵活性和非线性从而学习 $ \mathbf{\vec p}_u $ 和 $ \mathbf{\vec q}_i $ 之间的交互,而不是像GMF
那样只使用一个固定的逐元素乘积。具体而言,我们的
$ \mathbf{\vec z}_1 = \phi_1\left(\mathbf{\vec p}_u,\mathbf{\vec q}_i\right) = \begin{bmatrix} \mathbf{\vec p}_u\\ \mathbf{\vec q}_i \end{bmatrix}\\ \mathbf{\vec z}_2=\phi_2\left(\mathbf{\vec z}_1\right) = a_2 \left(\mathbf W_2^\top\mathbf{\vec z}_1+\mathbf{\vec b}_2\right)\\ \cdots\\ \mathbf{\vec z}_L=\phi_L\left(\mathbf{\vec z}_{L-1}\right) = a_L \left(\mathbf W_L^\top\mathbf{\vec z}_{L-1}+\mathbf{\vec b}_L\right)\\ \hat y_{u,i} = \sigma\left(\mathbf{\vec h}^\top \mathbf{\vec z}_L\right) $NCF
框架下的MLP
模型定义为:其中 $ \mathbf W_l,\mathbf{\vec b}_l,a_l(\cdot) $ 分别为第 $ l $ 层感知机的权重矩阵、偏置向量、激活函数。
-
对于
MLP
层的激活函数,可以自由选择sigmoid
、tanh
、ReLU
等。-
sigmoid
函数将每个神经元限制在(0.0,1.0)
之间,这可能会限制模型的性能。众所周知,sigmoid
受到饱和saturation
的影响:当神经元的输出接近0
或1
时,神经元就会停止学习。 -
尽管
$ \tanh(x/2) = 2\sigma(x) - 1 $tanh
是更好的选择并且已经被广泛采用,但是它只能一定程度上缓解sigmoid
的问题。因为tanh
可以视作sigmoid
的rescale
版本: -
最终我们选择
ReLU
,它在生物学上更合理,并且被证明是非饱和non-saturated
的。此外,它鼓励稀疏激活sparse activations
(即大多数神经元是非激活的) ,非常适合稀疏数据并使得模型不太可能过拟合。我们的实验结果表明:ReLU
的性能略优于tanh
,而tanh
又明显优于sigmoid
。
-
-
对于网络结构的设计,最常见的解决方案是采用塔式模式
tower pattern
,其中底层最宽、接下来每一层的神经元数量依次减少。基本假设是:对更高层使用更少的隐单元,使得更高层能够学习数据的更抽象的特征。我们根据经验实现了塔式结果,将每个连续层的神经元数量减半。
16.1.5 融合 GMF 和 MLP
-
到目前为止,我们已经开发了
NCF
的两个实例:GMF
应用一个linear kernel
来建模潜在特征交互。MLP
使用一个non-linear kernel
来从数据中学习非线性交互。
那么接下来的问题是:我们如何在
NCF
框架下融合GMF
和MLP
,以便它们可以相互加强从而更好地建模复杂的user-item
交互?一个简单的解决方案是:让
GMF
和MLP
共享相同的embedding
层,然后组合combine
它们交互函数的输出。这种方式与著名的神经张量网络Neural Tensor Network: NTN
有着相似的精神。具体而言,将
$ \hat y_{u,i} = \sigma\left(\mathbf{\vec h}^\top a\left(\mathbf{\vec p}_u\odot \mathbf{\vec q}_i+\mathbf W \begin{bmatrix}\mathbf{\vec p}_u\\\mathbf{\vec q}_i\end{bmatrix}+\mathbf{\vec b}\right)\right) $GMF
和one-layer MLP
相结合的模型可以表述为:然而,共享
GMF
和MLP
的embedding
可能会限制模型的性能。这意味着GMF
和MLP
使用相同大小的embedding
。对于两个子模型最佳embedding
大小差异很大的数据集,该解决方案可能无法获得最佳的集成ensemble
。为了给融合模型
$ \phi^{\text{GMF}} = \mathbf{\vec p}_u^G \odot \mathbf{\vec q}_i^G\\ \phi^{\text{MLP}}= a_L \left(\mathbf W_L^\top\left(a_{L-1}\left(...a_2\left(\mathbf W_2^\top \begin{bmatrix}\mathbf{\vec p}_u^M\\ \mathbf{\vec q}_i^M\end{bmatrix} +\mathbf{\vec b}_{2}\right) ...\right)\right )+\mathbf{\vec b}_L\right)\\ \hat y_{u,i} = \sigma\left(\mathbf{\vec h}^\top \begin{bmatrix}\phi^{\text{GMF}}\\ \phi^{\text{MLP}} \end{bmatrix}\right) $fused model
提供更大的灵活性,我们允许GMF
和MLP
学习单独的embedding
,并通过拼接它们最后一个隐层来组合这两个模型。下图给出了我们的方案,其公式如下:其中:
- $ \mathbf{\vec p}_u^G $ 和 $ \mathbf{\vec p}_u^M $ 分别表示
GMF
和MLP
部分的user embedding
。 - $ \mathbf{\vec q}_i^G $ 和 $ \mathbf{\vec q}_i^M $ 分别表示
GMF
和MLP
部分的item embedding
。 - 如前所述,我们使用
ReLU
作为MLP layer
的激活函数。
该模型结合了
MF
的线性和DNN
的非线性,从而对user-item
潜在结构进行建模。我们将该模型称作神经矩阵分解Neural Matrix Factorization: NeuMF
。模型相对于每个参数的导数可以用标准的反向传播来计算,由于空间限制这里省略了标准反向传播的描述。
NeuMF
类似于DeepFM
,它们相同点在于:都使用线性部分来直接捕获特征交互;都使用非线性DNN
来捕获非线性交互;都通过拼接两部分来同时捕获线性和非线性交互。区别在于:
NeuMF
的线性部分仅捕获user
和item
之间的二阶交互,而DeepFM
捕获所有特征之间的二阶交互。但是这里NeuMF
只有user id
和item id
特征,因此它们之间的二阶交互也意味着所有特征的二阶交互。NeuMF
的两个组件独立使用embedding
,而DeepFM
使用共享的embedding
。
-
预训练:由于
NeuMF
目标函数的非凸性non-convexity
,基于梯度的优化方法只能找到局部最优解。据报道,初始化对深度学习模型的收敛和性能起着重要作用。由于NeuMF
是GMF
和MLP
的集成ensemble
,我们提出使用GMF
和MLP
的预训练模型初始化NeuMF
。-
我们首先使用随机初始化来训练
GMF
和MLP
,直到收敛。 -
然后我们使用
$ \mathbf{\vec h} \leftarrow \begin{bmatrix} \alpha \mathbf{\vec h}^{\text{GMF}}\\ (1-\alpha ) \mathbf{\vec h}^{\text{MLP}} \end{bmatrix} $GMF
和MLP
模型的参数作为NeuMF
相应参数部分的初始化。唯一的调整是在输出层,我们将两个模型的权重拼接起来作为初始化:其中:
- $ \mathbf{\vec h}^{\text{GMF}} $ 和 $ \mathbf{\vec h}^{\text{MLP}} $ 分别表示预训练的
GMF
模型和MLP
模型的 $ \mathbf{\vec h} $ 向量。 - $ \alpha $ 是决定两个预训练模型之间
tradeoff
的超参数。
- $ \mathbf{\vec h}^{\text{GMF}} $ 和 $ \mathbf{\vec h}^{\text{MLP}} $ 分别表示预训练的
为了从头开始训练
GMF
和MLP
,我们采用Adaptive Moment Estimation: Adam
优化器,它通过对频繁参数frequent parameters
执行较小的更新、对不频繁参数infrequent parameters
执行较大的更新,从而调整每个参数的学习率。和普通SGD
相比,Adam
方法为两种模型都产生了更快的收敛速度,并缓解了调整学习率的痛苦。在将预训练参数输入
NeuMF
之后,我们使用普通SGD
而不是Adam
进行优化。这是因为Adam
需要保存动量信息momentum information
以正确更新参数。由于我们仅使用预训练模型的参数来初始化NeuMF
并放弃保存动量信息,因此不适合使用基于动量的方法进一步优化NeuMF
。 -
16.2 实验
-
我们进行实验以回答以下三个问题:
RQ1
:我们提出的NCF
方法是否优于state-of-the-art
的隐式协同过滤方法?RQ2
:我们提出的优化框架(带负采样的log loss
)如何用于推荐任务?RQ3
:更深层的网络是否有助于从user-item
交互数据中学习?
接下来,我们首先介绍实验配置,然后回答上述三个问题。
-
数据集:我们在两个公共数据集上进行实验。
-
MovieLens
:一个电影评分数据集,该数据集已经被广泛用于评估协同过滤算法。我们使用包含100
万个评分的版本,其中每个用户至少有20
个评分。虽然它是一个显式反馈数据集,但是我们有意选择它来研究从显式反馈的隐式信号中学习的性能。为此,我们将其转换为隐式数据,其中每一项被标记为
0
或1
,表明用户是否对该item
进行了评分。 -
Pinterest
:一个基于内容的图像推荐数据集。原始数据非常大,但是非常稀疏。例如超过20%
的用户只有一个pin
,这使得评估协同过滤算法变得困难。因此,我们以与MovieLens
数据相同的方式过滤数据集,仅保留至少有20
次交互的用户。结果我们得到一个包含55,187
个用户、1,500,809
个互动的子集。每个互动都表示用户是否将图片钉到用户的board
上。
这些数据集的统计信息如下表所示。
Sparsity
表示未观测到互动的user-item pair
占比。 -
-
评估方式:为了评估
item
推荐的性能,我们采用了广泛使用的leave-one-out
评估。对于每个用户,我们将hold-out
其最近的交互作为测试集,并使用剩余的数据进行训练。由于在评估过程中,每个用户对所有的
item
进行排序太耗时,因此我们遵循了常见的策略:随机抽取100
个用户未交互的item
,然后在100
个item
中对测试item
进行排序。ranked list
的性能由Hit Ratio: HR
和Normalized Discounted Cumulative Gain: NDCG
来判断。在没有特别说明的情况下,我们将这两个指标的ranked list
长度截断为10
。因此:HR
直观地衡量测试item
是否出现在列表的top-10
中。NDCG
通过为排名靠前的hit
分配更高的分数来说明hit
的position
。
我们为每个测试用户计算这两个指标并报告了平均得分。
-
baseline
方法:我们将NCF
方法(GMF/MLP/NeuMF
)和以下方法进行比较:ItemPop
:根据互动数量来判断item
的流行度popularity
从而对item
进行排序。这是一种对推荐性能进行基准测试benchmark
的非个性化方法。ItemKNN
:这是标准的基于item
的协同过滤方法。我们遵循《Collaborative filtering for implicit feedback datasets》
的设置从而使其适应隐式数据。BRP
:该方法使用pairwise ranking loss
来优化MF
模型,使得模型适合从隐式反馈中学习。这是一个极具竞争力的item
推荐baseline
。我们使用固定的学习率并报告最佳性能。eALS
:这是item
推荐的state-of-the-art MF
方法。它优化了平方损失,将所有未观察到的交互视为负样本,并通过item
流行度对它们进行非均匀加权。由于eALS
显示出优于均匀加权方法WMF
的性能,因此我们不会进一步报告WMF
的性能。
由于我们提出的方法旨在对用户和
item
之间的关系进行建模,因此我们主要与user-item
模型进行比较。我们省略了与item-item
模型的比较,如SLIM, CDAE
,因为性能差异可能是由于使用个性化的用户模型引起的(因为SLIM, CDAE
这些模型是item-item
模型)。 -
实验配置:
-
我们基于
Keras
实现了我们的方法。 -
为了确定
NCF
方法的超参数,我们为每个用户随机抽取了一个交互作为验证集,并在其上调优了超参数。我们测试了
batch size
为[128, 256, 512, 1024]
、learning rate
为[0.0001, 0.0005, 0.001, 0.005]
。 -
所有
NCF
模型都是通过优化log loss
来学习的,其中我们为每个正样本采样了四个负样本。 -
对于从头开始训练的
NCF
模型,我们使用高斯分布(均值为0
、标准差为0.01
)来随机初始化模型参数,并使用mini-batch
的Adam
优化器来优化模型。 -
由于
NCF
的最后一个隐层决定了模型的能力(因为NCF
的隐层维度采用逐层减半的策略),我们将其称为预测因子predictive factors
,并评估了维度为[8, 16, 32, 64]
。值得注意的是,维度较高的预测因子可能会导致过拟合并降低性能。
-
如果没有特别说明,那么我们为
MLP
使用三层的隐层。例如,如果预测因子维度为8
,那么神经CF
层的架构为32 -> 16 -> 8
,embedding size
为16
。 -
对于预训练的
NeuMF
, $ \alpha = 0.5 $ ,从而允许预训练的GMF
和MLP
对NeuMF
的初始化做出同等的贡献。
-
16.2.1 RQ1 性能比较
-
下图显示了
HR@10
和NDCG@10
在不同预测因子维度方面的性能。对于
MF
方法BPR
和eALS
,预测因子的维度等于潜在因子的维度。对于ItemKNN
,我们测试了不同邻域大小并报告了最佳性能。由于ItemPop
性能较弱,因此下图中省略了ItemPop
从而更好地突出个性化方法的性能差异。-
首先,我们可以看到
NeuMF
在两个数据集上都实现了最佳性能,明显优于state-of-the-art
的eALS
和BPR
(平均而言,相对于eALS
和BPR
的提升为4.5%
和4.9%
)。对于
Pinterest
数据集,NeuMF
使用8
维预测因子也大大超越了64
维预测因子的eALS
和BPR
。这表明NeuMF
通过融合线性MF
和非线性MLP
模型从而具有高的表达能力。 -
其次,另外两种
NCF
方法(GMF
和MLP
)也表现出相当强劲的性能。在它们之间,MLP
的表现略差于GMF
。注意,可以通过添加更多隐层来进一步提升MLP
的性能(参考下面的实验),这里我们仅展示三层隐层的MLP
性能。对于小的预测因子维度,
GMF
在两个数据集上均优于eALS
。尽管GMF
在大的预测因子为维度上过拟合,但是它的最佳性能优于eALS
或者与eALS
相当。GMF
使用自动学习的加权权重,而eALS
根据item
流行度来加权。 -
最后,
GMF
显示出对BPR
的持续改进,表明分类感知classification-aware
的log loss
对推荐任务的有效性。因为GMF
和BPR
是学习相同的MF
模型、但是具有不同的目标函数。
-
-
下图显示了
Top-K
推荐列表的性能,其中排序位置K
的范围从1 ~ 10
。为了使图更加清晰,我们展示了NeuMF
的性能,而不是所有三种NCF
方法。可以看到:- 和其它方法相比,
NeuMF
在不同位置上表现出一致的提升。我们进一步进行了one-sample paired
的t
检验,验证所有提升对于 $ p < 0.01 $ 具有统计显著性。 - 在所有的
baseline
方法中,eALS
在MovieLens
上的性能优于BPR
(相对提升约5.1%
),而在Pinterest
方面的性能低于BPR
。这与《Fast matrix factorization for online recommendation with implicit feedback》
的发现一致,即BPR
由于其pairwise ranking-aware learner
而可以成为强大的排序器。 - 基于邻域的
ItemKNN
表现不如基于模型的方法。 Item Pop
表现最差,说明有必要对用户的个性化偏好进行建模,而不是仅仅向用户推荐热门item
。
- 和其它方法相比,
-
预训练的效用
utility
:为了证明预训练对NeuMF
的效用,我们比较了两个版本的NeuMF
的性能--有预训练、没有预训练。对于没有预训练的NeuMF
,我们使用Adam
通过随机初始化来学习。结果如下表所示。可以看到:
- 经过预训练的
NeuMF
在大多数情况下取得了更好的性能,仅在预测因子维度为8
的MovieLens
时预训练方法的性能稍差。 - 在
MovieLens
和Pinterest
数据集上,使用预训练的NeuMF
的相对提升分别为2.2%
和1.1%
。这一结果证明了我们预训练方法对初始化NeuMF
的有效性。
- 经过预训练的
16.2.2 RQ2 负采样的 Log Loss
-
为了处理隐式反馈的
one-class
性质,我们将推荐转换为二元分类任务。通过将NCF
视为概率模型,我们使用log loss
对其进行了优化。下图显示了在
MovieLens
上NCF
方法每次迭代的训练损失(所有训练样本的均值)和推荐性能,其中预测因子维度为8
。Pinterest
上的结果也显示了相同的趋势,由于篇幅所限,这里没有给出Pinterest
上的结果。-
首先,可以看到随着迭代次数的增加,
NCF
模型的训练损失逐渐减少,推荐性能得到提升。最有效的更新发生在前
10
次迭代中,更多的迭代可能会使模型发生过拟合(例如,尽管NeuMF
的训练损失在10
次迭代之后不断减少,但是推荐性能实际上会下降)。 -
其次,在三种
NCF
方法中,NeuMF
的训练损失最低、其次是MLP
、最次是GMF
。推荐性能也呈现同样的趋势,即NeuMF > MLP > GMF
。
上述发现为优化
log loss
以从隐式数据中学习的合理性rationality
和有效性effectiveness
提供了经验证据。 -
-
pointwise log loss
相对于pairwise
目标函数的一个优势是负样本的灵活采样比例。虽然pairwise
目标函数只能将一个采样的负样本和一个正样本配对,但是在pointwise log loss
中我们可以灵活控制采样比例。为了说明负采样比例对
NCF
方法的影响,我们在下图中展示了NCF
方法在不同负采样比例下的性能。其中预测因子维度为16
。注意:BPR
对于每个正样本采样一个负样本从而构成pair
对,因此它的表现是一条直线。可以看到:
- 在
NCF
中,每个正样本仅一个负样本不足以实现最佳性能,采样更多的负样本是有利的。 - 将
GMF
和BPR
进行比较,我们可以看到:采样比例为1
的GMF
的性能与BPR
相当,而较大采样比例的GMF
的性能明显优于BPR
。这显示了pointwise log loss
相对于pairwise BPR loss
的优势。 - 在这两个数据集上,最佳采样比例约为
3 ~ 6
。在Pinterest
数据集上,我们发现采样比例大于7
时,NCF
方法的性能开始下降。这表明:过于激进地设置采样比例可能会对性能产生不利影响。
- 在
16.2.3 RQ3 网络深度
-
由于用神经网络学习
user-item
交互函数的工作很少,所以很好奇使用深层的网络结构是否有利于推荐任务。为此,我们进一步研究了具有不同隐层数量的MLP
,结果总结在下表中。MLP-3
表示具有三层隐层(除了embedding
层和输出层)的MLP
方法,其它符号类似。可以看到:-
即使对于具有相同能力的模型,堆叠更多的层也有利于性能。这一结果非常令人振奋,表明使用深层模型进行协同推荐的有效性。
我们将性能提升归因于堆叠更多非线性层带来的高度非线性。为了验证这一点,我们进一步尝试堆叠线性层,使用恒等映射作为激活函数,结果其性能比使用
ReLU
非线性激活函数差得多。 -
对于没有隐层的
MLP-0
(即embedding
层直接投影到预测),性能非常弱,并不比非个性化的Item-Pop
好。这验证了我们前面的论点:即简单地拼接用户潜在向量和item
潜在向量,不足以对特征交互进行建模,因此需要用隐层来进行转换。
-
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论