文章目录

  • Abstract
  • Introduction
  • Architecture
  • Experiment
  • 思考题
  • Reference

Abstract

概括如下:

  • 在很多预测任务中要对特征进行one-hot编码,使得最终的特征向量高度稀疏,因此需要进行特征交互。
  • FM模型只能表达特征之间两两组合之间的关系,无法建模两个特征之间深层次的关系或者说多个特征之间的交互关系。
  • 因此可以通过Deep Network来建模更高阶的特征之间的关系。
  • 然而Wide&deep和deepcross因为其深度结构而难以训练。
  • 故 FM和深度网络DNN的结合也就成为了CTR预估问题中主流的方法。
  • 有关FM和DNN的结合有两种主流的方法,并行结构和串行结构。
  • 两种结构的理解以及实现如下表所示:

Introduction

最近几年,Embedding-based方法开始成为主流,通过把高维稀疏的输入embed到低维度的稠密的隐向量空间中,模型可以学习到训练集中没有出现过的特征组合。

Embedding-based大致可以分为两类:

  • factorization machine-based linear models
  • neural network-based non-linear models

而这两者都有其缺陷:

FM还是属于线性模型,它的表达能力受限,而且它只能对二阶组合特征进行建模。
虽然多层神经网络已经被证明可以有效的学习高阶特征组合。但是DNN的缺点也很明显:网络优化或者说网络学习比较困难。

但是为了提高NN的学习能力就需要增加网络层数,复杂的网络结构会收到诸如梯度消失/爆炸、过拟合、degradation(简单说就是:随着网络层数的增加,训练准确率不升反降,非常反常)等问题的困扰,网络的学习或者优化会非常困难。

如下图所示,如果使用FM预训练初始化嵌入层,Wide&Deep和DeepCross性能都提升了,甚至超过了FM。Wide&Deep的degradation问题也解决了,因为训练集的性能得到了提升。但是两者依旧都有过拟合的问题。实验说明DNN的训练学习真的存在困难。

FM摒弃了直接把嵌入向量拼接输入到神经网络的做法,在嵌入层之后增加了Bi-Interaction操作来对二阶组合特征进行建模。这使得low level的输入表达的信息更加的丰富,极大的提高了后面隐藏层学习高阶非线性组合特征的能力。

Architecture

NFM的表达式如下:
y^NFM(x)=w0+∑i=1nwixi+f(x)\hat{y}_{N F M}(\mathbf{x})=w_{0}+\sum_{i=1}^{n} w_{i} x_{i}+f(\mathbf{x}) y^NFM(x)=w0+i=1nwixi+f(x)
其中第一项和第二项是与FM相似的线性回归部分,该部分模拟数据的偏差和特征的权重。第三项f (x)是NFM建模特征交互的核心组件,它是一个多层前馈神经网络。如下图:

Experiment

  1. 使用了两份公开的数据集:
  • Frappe。http://baltrunas.info/research-menu/frappe
  • MovieLens。https://grouplens.org/datasets/movielens/latest/
    随机的取70%数据作训练集,20%数据作验证集,10%数据作测试集。
  1. FM相当于是去掉DNN的NFM,论文中给出的数据是只用了一个隐藏层的NFM,相比于FM性能提升了7.3%;NFM只用了一个隐藏层,相比于3个隐藏层的Wide&Deep,和10个隐藏层的DeepCross,NFM用更简单的模型,更少的参数得到了性能的提升。

论文中对比了FM、Wide&Deep模型,效果不用说肯定是NFM最好,图片有点多就不放了。

此处,只给出一些重要的结论:

  • Dropout在NFM中可以有效的抑制过拟合
  • Batch Normalization在NFM中可以加快训练速度
  • NFM使用一个隐藏层得到了最好的效果
  • 如果用FM来pre-train嵌入层,NFM会收敛的非常快,但是NFM最终的效果并没有变好。说明NFM对参数有很好的鲁棒性。
  • 模型性能基本上随着Factor的增加而提升。Factor指Embedding向量的维度。

思考题

  1. NFM中的特征交叉与FM中的特征交叉有何异同,分别从原理和代码实现上进行对比分析
  • FM可以被看作是没有隐藏层的NFM的一个特例,NFM的特征交叉获得其表征向量,FM特征交叉得到的是一个值。
  • 代码部分后续补充

Reference

https://raw.githubusercontent.com/datawhalechina/team-learning-rs/master/DeepRecommendationModel/NFM.md
https://arxiv.org/pdf/1708.05027.pdf

推荐系统 -- NFM相关推荐

  1. 推荐系统深度学习篇-NFM 模型介绍(1)

    一.推荐系统深度学习篇-NFM 模型介绍(1) NFM是2017年由新加披国立大学提出的一种模型,其主要优化点在于提出了Bi-Interaction,Bi-Interaction考虑到了二阶特征组合, ...

  2. 推荐系统中特征交叉模型之——DeepWide/DeepFM/NFM

    前言 上篇文章中我们引入了推荐系统中特征交叉的概念,以及介绍了一些常见的特征交叉方法,这篇文章我们将详细地讨论一下推荐系统中特征交叉地模型,他们的特点,以及他们为什么会这样.本文中介绍的模型有Wide ...

  3. 推荐系统(5)-深度推荐模型-AutoRec、DeepCrossing、NeuralCF、PNN、WideDeep、FNN、DeepFM、NFM

    GBDT+LR 1. AutoRec-2015 2. Deep Crossing-2016 3. NeuralCF-2016 4. PNN-2016 5. Wide&Deep-2016 6. ...

  4. 推荐系统遇上深度学习(七)--NFM模型理论和实践

    预计阅读时间10分钟. 引言 在CTR预估中,为了解决稀疏特征的问题,学者们提出了FM模型来建模特征之间的交互关系.但是FM模型只能表达特征之间两两组合之间的关系,无法建模两个特征之间深层次的关系或者 ...

  5. 推荐系统之 FNN和DeepFM和NFM

    感谢FNN,让我发现自己FM,FFM还理解得不到位,于是重新跑了下别人复现的网络,感慨万千,自己怎么这么菜啊ORZ 1.FNN         我们发现,现有的网络,FM,FFM都只是做到了两路特征交 ...

  6. 推荐系统8---FNN、DeepFM与NFM(FM在深度学习中的身影重现)

    1,前言 Wide&Deep模型开启深度学习时代的组合模型之后,后面的模型都是在Wide&Deep的基础上进行各种方式的模型组合,以应对不同的模型任务.从大的角度看,模型的改进方向主要 ...

  7. 推荐系统之NFM原理与实现学习

    目录 特征交叉 NFM模型简介 目标函数 模型结构 代码学习 上一次学习了DeepFM模型,DeepFM是在经典的Wide&Deep模型的基础上将wide部分替换成了FM模型,然后将FM模型的 ...

  8. 600页!分享珍藏很久的《推荐系统学习手册》(附下载链接及入门经验)

    这是之前学习推荐系统时的学习资料,非常全面,包含经典模型的解析及代码实现.模型的评估.最新工业界论文解读等等,全网仅此一份!该手册有PDF版本和Markdown版本,总计有600多页! 资料领取方式: ...

  9. 全新的深度模型在推荐系统中的应用

    文章作者:周浩 第四范式 研究员 编辑整理:汪方野 出品平台:第四范式天枢.DataFunTalk 导读:如今,在电子商务.物联网等领域,推荐系统扮演着越来越重要的地位.如何根据用户的历史行为和项目的 ...

最新文章

  1. 爬虫之常见的验证码的种类
  2. 用leangoo做阶段式游戏新产品研发
  3. C语言打印1000以内的完数
  4. java 基本的数据类型_Java的基本数据类型介绍
  5. ECSHOP在商品详细页面上获取该商品的顶级分类id和名称
  6. Your local changes would be overwritten by merge. Commit, stash or revert them to proceed.
  7. VS2012 颜色配置成黑色
  8. java获取空闲端口_获取系统空闲端口
  9. python中类里self_Python类中的self到底是干啥的
  10. 数据结构实验之图论九:最小生成树
  11. 米家扫地机器人重置网络_谁家扫地机器人悄声打扫更干净,科沃斯DEEBOT N3对比米家1S...
  12. oracle----删除数据
  13. 小程序发送公众号模板消息+PHP后台
  14. 计算机设置桌面文件夹,win10电脑怎么更改桌面文件夹路径
  15. 风险投资的TS和DD
  16. 杀计算机病毒软件的的使用方法,查杀电脑病毒的方法步骤
  17. /node_modules/.bin/vue-cli-service: Permission denied
  18. ES6 入门:let
  19. mac os 13 通过网线共享mac的(wifi)网络
  20. 我的男女偶像:莱昂纳多和林青霞

热门文章

  1. 佐治亚理工计算机科学录取,佐治亚理工大学计算机科学硕士申请条件及案例分享...
  2. Python和VizViewer进行自动驾驶数据集可视化
  3. Kettle读取按行分割的文件
  4. meta-learning link for some Danniel
  5. 3.1.1 docker入门
  6. 面试题(javamysql)
  7. 看一个师兄的操作系统视频有感
  8. GO运行时报错: cannot find package “.“ in:
  9. java pdf 首行缩进_java使用iText生成pdf文档的对齐方式
  10. rk3288 Android 8,RK3288W Android8.1开发日志(一)