论文地址:https://arxiv.org/abs/1901.04704
官方代码:https://github.com/familyld/DeepCF
一 为什么读这篇
来新东家这边做推荐召回层的相关工作,刘总提的召回层的粗排也希望能用模型的方式,同时提到了关键词Representation Learning和Matching Function Learning,google了一翻,找到这篇,还比较新,从题目上看,不仅照顾了表示学习,还考虑了匹配函数学习,而且是把两者统一到同一个框架中去,所以值得研究下作者是怎么做的。
二 截止阅读时这篇论文的引用次数
2019.6.12 0次。对于今年1月份才出的文章,就不苛求什么了。。
三 相关背景介绍
中了AAAI19,而且还是Oral。一作Zhi-Hong Deng(邓智鸿)貌似是中山大学的本科生,这个碉堡了。。怪不得搜不到什么信息。二作Ling Huang是个PHD妹子,也是中山大学的,产量挺高,有20多篇paper。三作Chang-Dong Wang(王昌栋)是中山大学的副教授,应该是他们老板了。最后一个作者从机构看感觉很突兀,因为前4个作者都是中山大学的,怎么最后突然冒出一个伊利诺伊大学芝加哥分校兼清华的了。仔细一查彻底碉堡,Philip S. Yu(俞士纶),清华数据科学研究院院长,拥有超过300项美国专利,在谷歌学术上的H-index高达138,跟Michael I. Jordan伯仲之间,是名列全球计算机科学领域高引作者前十的华人。。。也是《Top 10 algorithms in data mining》这篇引用高达4000多次的神文作者之一,得,有这样一个超级大牛肯为本科生的paper挂名,又有官方开源代码,质量应该有保证了。
四 关键词
DeepCF
Representation Learning
Matching Function Learning
五 论文的主要贡献
1 联合表示学习和匹配函数函数学习到同一个架构
六 详细解读
0 摘要
由于用户和item之间存在巨大的语义鸿沟,几乎不可能直接在它们初始的表示空间来匹配用户和item。为了解决这个问题,通常可分为基于表示学习的CF方法及基于匹配函数学习的CF方法。基于表示的CF方法试图将用户和item映射到一个共同的表示空间,该情况下,用户和item在空间中越相似则意味着越匹配。另一方面,基于匹配函数学习的CF方法试图直接学习复杂的匹配函数来映射user-item对的匹配分数。这两个方法分别有两个本质缺陷,例如,点积的表达能力有限,以及捕获user-item低秩关系的能力有限。本文提出的DeepCF(Deep Collaborative Filtering)就是用来克服上述两个缺陷的。
1 介绍
MF方法学习用户和item的低维密集表示,然后采用点积作为匹配函数来计算匹配分数。然而,原始MF假设初始表示空间和隐式空间之间的映射是线性的,这一点很难得到保证。为了更好地学习这两个空间之间复杂的映射,Xue等人提出的DMF(Deep Matrix Factorization)使用双路网络架构来代替在原始MF中使用的线性Embedding操作,然而匹配函数仍然用的是点积。
因为万能极限定理,DNN很适合学习复杂的匹配函数。例如He等人提出的NeuMF(Neural Collaborative Filtering)将用户Embedding和item Embedding作为MLP的输入来进行预测,该情况下,MLP用来替代点积,然而,如Beutel等人指出,MLP在捕获低秩关系时是非常低效的。
本文首先使用基于表示学习的和基于匹配函数学习的这两种CF方法来获取user-item对的不同表示。因为这两种类型的方法具有不同的优点并且能从不同的角度学习表示,因此可以通过连接它们学习到的表示来获取user-item对的更强和更健壮的联合表示。为了计算匹配分数,之后将此联合表示传给全连接层,以使得模型能够在特征上分配不同的权重。本文聚焦于隐式反馈数据。
本文主要贡献有3点
1 本文指出了基于表示学习和基于匹配函数学习合并后的协同过滤方法的重要性,并提出了DeepCF。该框架舍弃了传统的Deep+Shallow模式,仅采用深度模型来实现具有隐式反馈的协同过滤。
2 本文提出全新的模型命名为协同过滤网络(Collaborative Filtering Network) (CFNet),它是在DeepCF框架下基于原始MLP的,可以极大的扩展学习复杂匹配函数同时有效率的学习用户和item之间的低秩关系。
3 本文对4个现实世界的数据集进行了大量实验,以证明DeepCF的有效性和合理性。
2 相关工作
2.1 隐式数据的协同过滤
早期的模型有ALS和SVD++。后面的模型有BPR,VBPR。
2.2 基于表示学习的协同过滤
从06年的Funk-SVD开始,后续提出了各种基于MF的模型。尽管这些工作是通过引入时间,社交信息,文本描述等方法来提升MF,其本质仍然是将用户和item映射到同一空间。其后的DL模型有AutoRec,CDAE。DeepMF用双路径网络架构来分解评分矩阵并学习表示。
2.3 基于匹配函数学习的协同过滤
NeuMF是最近(2017)提出的用网络协同原始MF学习到的匹配函数来替代点积操作。为了抵消MLP捕获低秩关系的弱点,NeuMF用一个模型统一了MF和MLP。NNCF是NeuMF的变种,它采用用户和item的邻居作为输入。ConvNCF使用外积来替代NeuMF中的连接操作,以使模型更好的学习Embedding维度之间的成对相关性。除了NeuMF,其他许多工作也试图通过完全使用辅助数据来直接学习匹配函数,如Wide&Deep,DeepFM,NFM。
本文聚焦于纯协同过滤方法,而不使用辅助数据(这有可能是坑。。。),在这个条件下,仅拿NeuMF来做比较。
3 前置条件
3.1 如何定义问题
有M个用户,N个item,通过用户隐式反馈构建user-item交互举证。相比显式反馈,隐式反馈有两个问题。一是不像评分那样,不能精确地描述用户对item的喜爱程度。二是未观察到的交互并不意味着用户不限换item,很有可能是用户压根没有看到过。
对缺乏实际负反馈的隐式数据执行协同过滤也称为一类协同过滤(OCCF:One-Class Collaborative Filtering)问题。通常有两种处理办法,一种是将所有未观察到的交互视为弱的负实例,还有一种是从未观察到的交互中采样一些作为负实例。本文采用第二种方法。
本文将二分类问题通过概率转换为匹配分数预测问题。假设服从伯努利分布:
3.2 如何学习模型
推荐系统中主要用point-wise loss和pair-wise loss这两种目标函数,本文主要用point-wise。
通过用替代上式中的,定义似然函数为:
其中为中所有观察到的交互,为采样的未观察到的交互。
本节扯了一大通,其实就是要引出交叉熵。。
4 提出的框架
4.1 常规处理
如图1所示。注意3个函数f, g, h。
deepcf-fig1.jpg4.2 表示学习
本文仅使用没有辅助数据的隐式数据。用MLP来学习用户和item的隐式表示。与现有基于表示的CF方法不同,匹配函数定义如下:
通过用element-wise product和参数化的网络层,来替代点积或余弦相似度,本文模型仍然聚焦于捕获用户和item间的低秩关系,但是更有表现力,因为隐式维度的重要性可以是不同的,且映射可以是非线性的。
本文中通过公式5,6实现的模型称之为CFNet-rl。
4.3 匹配函数学习
本文采用MLP来学习匹配函数。将交互矩阵Y作为输入,而不是IDs(???)。匹配函数定义如下:
隐式表示,通过简单的拼接操作连接起来。
本文中通过公式7实现的模型称之为CFNet-ml。
4.4 融合和学习
融合
最常见的一种融合策略是拼接学习到的表示来得到联合表示,然后输入全连接层。
对于CFNet-rl,公式6的匹配函数可以分为2步。模型首先计算用户隐因子和item隐因子的element-wise乘积,然后将其用不同权重相加。在第一步中获得的乘积向量在本文中称为预测向量(predictive vector)。
对于CFNet-ml,MLP的最后一层称之为预测向量(predictive vector)。
在这两种情况下,预测向量都可以视为user-item对的表示。因为两种类型的CF方法具有不同的优点并且是从不同的角度去学习预测向量,因此两个预测向量的拼接会得到user-item对的更强且更健壮的联合表示。更重要的是,随后的全连接层使模型能够为联合表示中的特征分配不同的权重。
定义和分别为两个预测向量,则融合模型的输出定义为:
通过上式,合并CFNet-rl和CFNet-ml,得到最终的模型CFNet,架构如图2所示
学习
adam,batch_size=256,lr=0.001,负样本通过均匀采样得到。
预训练
因为CFNet由两部分组成,所以可以分别预训练CFNet-rl和CFNet-ml,然后用它们来初始化CFNet。
5 实验
5.1 实验设置
数据集
deepcf-table1.jpg评估指标
用HR(Hit Ratio)和NDCG(Normalized Discounted Cumulative Gain)来评估排序性能。两种方法都截断到10个。HR衡量测试item是否出现在top10,NDCG衡量赋予更高分的top位置排序的排序质量。
5.2 比较结果
ItemPop
非个性化方法,用作baseline,item根据热度排序。
eALS
SOTA MF方法。
DMF
SOTA的基于表示学习的MF方法。
NeuMF
SOTA的基于匹配函数学习的MF方法。与本文提出的方法最相关,不同的是采用了类似wide&deep,DeepFM类似的深浅模式。此外,是将IDs作为输入,而CFNet用交互矩阵作为输入。
deepcf-table2.jpg根据表2发现,数据越稀疏,提升越明显。通过对DMF和CFNet-rl的对比,用element-wise乘积和参数化网络层代替非参数的余弦相似度有明显的提升。
5.3 预训练的影响
deepcf-table3.jpg5.4 超参数敏感度分析
负采样率
deepcf-fig3.jpg采样一两个是不够的,采样越多越有帮助,最优采样比率在3-7之间,但是采样更多的负实例不仅需要更多的训练时间也降低了性能。
预测因子的数量
即和的维度。通常来说维度越高,效果越好。
deepcf-table4.jpg6 总结及展望
未来还能干的事:
1 用辅助数据
2 除了element-wise乘积和拼接,也可以探索其他聚集方法
3 除了point-wise损失,也可以用pair-wise损失
七 小结
本文提的想法很直接,将表示学习和匹配函数学习结合起来,可能也有许多人想到过,但是不会或者没能做出来?另外整个行文风格感觉学生气还是很重,许多地方很啰嗦,一些基础概念反复讲,一些观点重复好多遍。还有就是在开头的介绍部分在无意义的地方疯狂的引用自己团队的paper啊。。有点疑问的是文中一直强调的基于匹配函数学习的方法捕获低秩关系的能力不行,但,这个真的很重要吗?仔细看网络图,无非就是因为多层MLP后初始的关系丢了,补救方法就是图2中直接用两个向量表示做predictive vector。本文提出的网络光看图感觉很常规,但结合论文内容仔细一看,发现这个网络的输入还是不太一样滴,还得改成User/Item rating这种。最后有个问题是图2左右两部分的latent factor到底是不是共用同一个,猜测应该不是,如果共用的话,该网络就更普通了。
素质四连
要解决什么问题
如何分别克服表示学习,匹配函数学习的缺点。
用了什么方法解决
将两者结合起来,共同使用。关键词是element-wise乘积,predictive vector。
效果如何
在4个不是很大的数据集上得到了比NeuMF还好的效果。
还存在什么问题
最大的质疑,没有用辅助数据,只用了行为数据来做方法的PK。还有就是速度上作者没提,这点也存疑。
算法背后的模式和原理
其实还是组合的思想。A和B各有自己的优缺点,那能不能组合起来进行互补。
网友评论