...NeuralCollaborativeFiltering(NCF)论文精度BPRloss

推荐系统NeuralCollaborativeFiltering(NCF)论⽂精度BPRloss
⽂章⽬录
数据集的构建与处理
将⽤户的评分显式反馈转换为隐式反馈
作者是在MovieLens数据集和Pinterset数据上进⾏实验验证,我们在实验中只选择了MovieLens。在我的代码实现中,有记录的为交互过,记录为1,没有记录为未交互,记为0,核⼼代码如下。这个我的理解是,在rating表中,记录的是交互记录,那么user-item的笛卡尔积减去这些交互记录,就是没有交互记录,
添加负样本
作者在论⽂中采⽤的⽅式是统⼀采样,从未交互在每⼀轮的迭代中,确定的采样率。采样⽅式选择随机电话银行是什么
采样即可。(作者提到,这样是统⼀的看待到剩余交互,其实可以考虑物品流⾏度偏置等等),这篇论⽂中,作者点到为⽌,没有再继续讨论。
我在我的代码中通过控制负样本的个数来实现,随机采样。
核⼼模型构建
作者在论⽂与实现中的模型有两部分组成GMF和MLP
GMF部分
作者在实现时,⾮常简单,直接将User和Item的Embbending层相乘就可。这样的简单处理,但是作者在论⽂中提到了⼀个很重要的思想就是,GMF如何泛化为MF?就是相乘只是⼀种最朴素的交互关系,交互关系甚⾄可以是复杂的函数关系**。
MLP部分
简单概括MLP部分就是全连接⽹络。
全连接⽹络⼀些设定,⾸先,作者在论⽂中详细阐述了为什么选择了Relu函数作为激活函数,并且实验证明Relu好于tanh,远好于sigmoid,相关原因与⽐较我⽤红线进⾏了标出。我在实现中按照论⽂思路也选择了Relu激活函数。
波导
作者说明了⽹络的设计结构。每次减少⼀半神经元数量。这是⼀种常见的随着层数增加神经元数量减少的塔形结构。
GMF和MLP的融合
如图标红部分所⽰,在GMF部分是将user的Embedding和item的Embedding对应元素相乘,MLP部分是将user的Embedding和item的Embedding直接拼接,最后在输出部分将模型两部分输出再次拼接。
共享嵌⼊层,在输⼊维度必须保持⼀致,最后输出使⽤sigmoid激活函数。
南澳1号
数值仿真
为了模型的灵活(flexibility)
在作者的论⽂和实现中GMF和MLP是独⽴实现的。也是可以独⽴训练的。
同时提供了预训练⽅式和⾮预训练⽅式
最终模型部分实现
损失函数构建
BPRloss损失函数如下
摆线
实现效果如下图所⽰
1.推荐系统中的两类损失函数,point-wise损失函数和pair-wise损失函数之间有什么区别?
林木林地权属争议处理办法⾸先,我最⼤的感受是,point-wise损失函数,⼤多数情况下你可以直接调⽤深度学习框架中已经实现好的部分。Pointwise ⽅法⾮常简单,也容易实现。在训练时候,也可以指定Shuffle。因为本⾝与顺序并⽆太⼤关系。
⽽pair-wise⾸先就需要⾃⼰去构造这样的pair,所以需要⾃⼰去实现计算逻辑。因为是⼀组,⾃然不能全局Shuffle,可以每个batch读⼊若⼲pair。
2.基于深度学习⽅法的推荐对⽐之前传统的推荐算法的改进体现在哪⾥?
这⼀点在我前⾯的关于GMF部分泛化MF部分的阐述中就有所体现。相乘只是⼀种最朴素的交互关系,交互关系甚⾄可以是复杂的函数关系。传统的⽅法只是⼀些简单的相乘或者其他矩阵运算,⽽深度学习⽅法通过Embedding物品和⽤户向量,利⽤神经⽹络强⼤的学习表征能⼒,来实现物品与⽤户的特征挖掘,和他们之间复杂交互关系的抽取。
在数据读⼊部分
在pytorch的实现中,数据读取在pytorch数据集构造中,需要继承DataSet,需要重写len⽅法和getitem⽅法。pandlepandle部分⽐较特殊,它是需要返回⼀个数据迭代器。**
在pytorch的实现中,数据读取在pytorch数据集构造中,需要继承DataSet,需要重写len⽅法和getitem⽅法。pandlepandle部分⽐较特殊,它是需要返回⼀个数据迭代器。**
模型搭建,两个深度学习框架在使⽤细节上有所不同,但是通过查阅API⽂档,和官⽹提供的案例,基本⼀致。⾃定义损失函数,也采⽤BPR_loss,所以这⼀部分需要根据⾃⼰在数据读⼊时的逻辑来写。在上⾯有详细的介绍。训练与评估逻辑,训练逻辑依照按照,计算出loss,深度学习框架根据我们定义好的前向传播过程帮助我们⾃动进⾏反向传播。评估采⽤HR命中率来进⾏评估

本文发布于:2024-09-21 03:16:52,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/572768.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:实现   交互   部分   函数   数据   记录   需要   学习
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议