作者:九羽 ,公众号:炼丹笔记

基于Embedding的推荐算法模型一直是近几年研究的热门,在各大国际会议期刊都能看到来自工业界研究与实践的成果。MF(Matrix Factorization)作为传统基于点积和高阶组合Embedding的方式,在推荐系统被广泛应用。对user和item的交互行为的建模大多使用MF,对user和item的隐特征使用内积计算,而这是一种线性方式。

而通过引入user、item偏置提高MF效果也说明内积不足以捕捉到用户交互数据中的复杂结构信息。因此在NCF(Neural Collaborative Filtering)论文中,作者引入深度学习方法对特征之间的相互关系进行非线性的描述是解决该问题的一种方式。

本文主要阐述的内容主要为:

1、在相同实验情况下,矩阵分解(Matrix Factorization)在进行参数调优之后是否能比MLP(Multi Layer Perceptron)具有较大幅度的提升?

2、虽然MLP理论上可以逼近任何函数,但是本文通过实验对比分析MLP与点积函数之间的逼近关系;

3、最后,讨论MLP在实际线上生成环境中提供Service时的高成本问题,对比“点积”可以通过类似Faiss等高效搜索算法快速找到相似Item。

什么是Dot Product 和MLP?

Dot Product

用户向量UserEmbedding(图中p)和物品向量ItemEmbedding(图中q)的点积。

MLP (Multi Layer Perceptron)& NCF

MLP理论上能拟合任何函数,在NCF论文中作者用MLP替换点积,将用户向量UserEmbedding和物品向量ItemEmbedding拼接后作为输入。

NCF网络可以分解为两个子网络,一个被称为广义矩阵分解Generalized Matrix Factorization (GMF),另一个是多层感知机Multi-Layer Perceptron (MLP)。

其中GMF,利用用户向量UserEmbedding和物品向量ItemEmbedding,进行了哈达玛乘积进行组合(元素级别),然后在全连接层进行了线性的加权组合,即训练了一个h向量(权重向量)。

MLP部分,用户向量UserEmbedding和物品向量ItemEmbedding进行拼接,然后输入多层FC层。由于<User,Item>的拼接操作后过FC层,所以这些特征经过了充分的非线性组合,最后的输出再使用sigmoid函数。

原论文里模型效果如下:

Dot Product vs. MLP

本文有意思的地方是作者提出了一个疑问,MLP模型真的优于点积吗?

基于以上的介绍,我们会有一种潜在的认知,使用MLP替换点积可以增强模型的表达能力,毕竟MLP具有拟合任意函数的能力。在《Neural Collaborative Filtering vs. Matrix Factorization Revisited》论文中,完成了对NCF实验的复现,同时在相同数据集上,采用留一法,保留每个用户最后一次点击作为验证。并且通过HR和NDCG评估点积Dot Product和NCF的效果如下:

通过图中的效果,是不是对原有的认知有所怀疑了。当然无论是原文中对比试验也好,还是本文想表达的,都不是否定Deep Learning推荐领域所发挥的积极作用。作为一名深度学习炼丹者,思考对比背后的一些意义反而更加有意思。原文中对调参部分的是较为详尽的,也是非常值得学习的,作者介绍了自己的炼丹过程,如何为矩阵分解(MF)模型搜索最优参数。

矩阵分解炼丹过程

论文原文

From our past experience with matrix factorization models, if the other hyperparameters are chosen properly, then the larger the embedding dimension the better the quality – our experiments Figure 2 confirm this. For the other hyperparameters: learning rate and number of training epochs influence the convergence curves. Usually, the lower the learning rate, the better the quality but also the more epochs are needed. We set a computational budget of up to 256 epochs and search for the learning rate within this setting. In the first hyperparameter pass, we search a coarse grid of learning rates η ∈ {0.001, 0.003, 0.01} and number of negatives m = {4, 8, 16} while fixing the regularization to λ = 0. Then we did a search for regularization in {0.001, 0.003, 0.01} around the promising candidates. To speed up the search, these first coarse passes were done with 128 epochs and a fixed dimension of d = 64 (Movielens) and d = 128 (Pinterest). We did further refinements around the most promising values of learning rate, number of negatives and regularization using d = 128 and 256 epochs.

Throughout the experiments we initialize embeddings from a Gaussian distribution with standard deviation of 0.1; we tested some variation of the standard deviation but did not see much effect. The final hyperparameters for Movielens are: learning rate η = 0.002, number of negatives m = 8, regularization λ = 0.005, number of epochs 256. For Pinterest: learning rate η = 0.007, number of negative samples m = 10, regularization λ = 0.01, number of epochs 256.

炼丹笔记

(1)训练集、验证集、测试集划分,用户最后一次点击作为测试集,倒数第二次点击作为验证集正样本。

(2)超参调整。可调参数列表:

参数 含义
epochs 训练轮数
m 负采样率
η SGD学习率
d Embedding维度
std 初始化模型系数的(标准正态分布的)标准差
λ 正则化系数

(3)利用Grid Search调整学习率η ∈ {0.001, 0.003, 0.01}和负采样率m={4,8,16}进行第一层结果粗粒度选择,然后选择较优的结果对λ = {0.001, 0.003, 0.01}进行第二层结果进行细粒度选择。于此同时固定epochs、embedding维数、标准差。

(4)对训练轮数,负采样率等进行调优;

参考文献

1、《Neural Collaborative Filtering vs. Matrix Factorization Revisited》

arxiv.org/abs/2005.0968

2、复现代码github.com/hexiangnan/n


后续我们会筛选出在我们实践中带来提升或者启发的工作进行细致的解读与探讨,欢迎关注我们的公众号,也欢迎多交流,我是三品炼丹师: 一元。

作者:一元

公众号:炼丹笔记

炼丹笔记

推荐算法炼丹笔记:序列化推荐系统

推荐算法炼丹笔记:电商搜索推荐业务词汇表

推荐算法炼丹笔记:推荐系统采样评估指标及线上线下一致性问题

推荐算法炼丹笔记:CTR点击率预估系列入门手册

推荐算法炼丹笔记:科学调参在模型优化中的意义

推荐算法炼丹笔记:如何让你的推荐系统具有可解释性?

2020年推荐系统工程师炼丹手册

推荐算法炼丹笔记:科学调参在模型优化中的意义相关推荐

  1. 推荐算法炼丹笔记:序列化推荐系统

    作者:一元 公众号:炼丹笔记 特约审稿:杰少 背景 序列推荐系统(SRS)不同于传统推荐系统(RSs)包括协同过滤和基于内容的过滤,SRSs试图理解和建模用户的连续行为.用户与物品之间的交互作用以及用 ...

  2. 推荐算法炼丹笔记:推荐系统采样评估指标及线上线下一致性问题

    本文对于推荐系统中的采样评估指标进行了讨论,内容略多, 还有一些数学推导, 有兴趣的可以去阅读文末给出的原始论文链接, 此处直接列出核心观点: 在评估推荐算法的效果时,能不采样就不采样! 除了AUC, ...

  3. 推荐算法炼丹笔记:如何让你的推荐系统具有可解释性?

    作者:一元, 公众号:炼丹笔记 可解释性和有效性是构建推荐系统的两大关键成份,之前的工作主要关注通过引入辅助信息来获得更好的推荐效果.但这些方法会存在下面的两个问题: 基于神经网络的embedding ...

  4. 推荐算法炼丹笔记:排序模型CTR点击率预估系列

    微信公众号:炼丹笔记 ​CTR点击率预估系列家谱 炼丹之前,先放一张CTR预估系列的家谱,让脉络更加清晰. (一)FiBiNET:结合特征重要性和双线性特征交互进行CTR预估 1.1 背景 本文发表在 ...

  5. 推荐算法炼丹笔记:CTR点击率预估系列入门手册

    ​CTR点击率预估系列家谱 炼丹之前,先放一张CTR预估系列的家谱,让脉络更加清晰. (一)FiBiNET:结合特征重要性和双线性特征交互进行CTR预估 1.1 背景 本文发表在RecSys 2019 ...

  6. 推荐算法炼丹笔记:电商搜索推荐业务词汇表

    电商搜索推荐业务必备词汇表 本篇文章搜集了一波电商中搜索推荐业务相关的一些核心词汇,目前为版本1,后续会继续补充完善. 很多时候,新人听产品经理或者周围人交流业务数据时经常会很懵,希望本文能提供一定的 ...

  7. 分级加权打分算法 java_推荐算法炼丹笔记:令人着迷的时间动态CF算法

    作 者:一元 公众号:炼丹笔记 背景 本文是一篇较老的文章,是Yahoo的研究员关于协同过滤中时间动态建模的最为细致的讨论. 顾客对产品的偏好随着时间的推移而变化.随着新选择的出现,产品的认知和受欢迎 ...

  8. 推荐算法炼丹笔记:序列化推荐算法Bert4Rec

    作者:一元 公众号:炼丹笔记 之前和海归博士朋友聊天,他说,这篇文章是他所有的复现算法中,处理序列最好的算法之一.原本以为Bert只常见于NLP中,本文我们一起详细地阅读学习一下如何使用Bert来做推 ...

  9. 推荐算法炼丹笔记:标签工程

    作者:一元 公众号:炼丹笔记 Deep Feedback Network for Recommendation(IJCAI20) 背景 做数据挖掘相关的朋友,大多数都听说过特征工程这个艺术的词汇,却鲜 ...

最新文章

  1. 计算机内存不足 ssd,电脑提示内存不足怎么办 虚拟内存设置方法【详解】
  2. 改变宇宙之前,GPT-3最先改变的可能是OpenAI
  3. 【C++编程题2】字符串插入空格
  4. c语言竞赛成绩排序,吧内编程竞赛:成绩公布
  5. 消息队列MQ如何保证消息的幂等性
  6. Zabbix 对接 LDAP 实现用户统一登录的方法
  7. Mysql 索引入门
  8. [论文笔记]Poly-encoders: architectures and pre-training strategies for fast and accurate multi-sentence
  9. 一篇通俗易懂的文章初探NIO
  10. Silverlight MMORPG WebGame游戏设计(二)--通讯协议之惑
  11. 微信小程序实现全局登陆状态
  12. 利用大智慧DDE数据生成每只股票的历史数据文件(SQLServer2005)
  13. Python笔记五(写excel,加密模块,字典排序,常用的标准模块,操作mysql,时间模块)...
  14. 无线网服务器亮红灯什么情况,无线网猫光信号闪红灯是什么原因
  15. C# 如何在Excel表格中插入、编辑和删除批注(三)删除Excel批注
  16. Oracle RMAN 的 show,list,crosscheck,delete命令整理
  17. 西北师范大学本科毕业论文答辩PPT模板
  18. 一位老学长的真实互联网校招求职心路历程~
  19. 20几岁男人应该懂得50件事
  20. python将大文件拆分成多个小文件,同时对各小文件处理以节省时间

热门文章

  1. 海康/大华 IpCamera RTSP地址和格式
  2. 如何让Visual Studio 2010支持HTML5和CSS3
  3. java学习论坛汇总
  4. ASP.Net开发新手常见问题备忘录
  5. GraphPad Prism 教程,如何在坐标上放置2条生存曲线
  6. 共轭梯度法求解线性方程组
  7. 机器人学习--智能移动机器人的有关技术演讲(浙大-熊蓉教授-2018年)
  8. Cadence IC CDB-OA工艺库转换方法
  9. Keil forc51安装教程
  10. android 输入光标修改颜色_2.2 输入数值与文本