深度学习推荐模型-NFM
深度学习推荐模型-NFM
本文参考链接,仅供个人学习:
https://github.com/datawhalechina/team-learning-rs/tree/master/DeepRecommendationModel
知乎-推荐NFM
相关学习书籍推荐:《深度学习推荐系统》王喆
推荐算法-NFM
FM对于特征的组合仅限于二阶,缺少对特征之间深层次关系的抽取。因此,NFM提出来就是在FM的基础上引入神经网络,实现对特征的深层次抽取。
NFM Model
与FM(因式分解机)相似,NFM使用实值特征向量。给定一个稀疏向量x∈Rn作为输入,其中特征值为xi=0表示第i个特征不存在,NFM预估的目标为:
其中第一项和第二项是线性回归部分,与FM相似,FM模拟数据的全局偏差和特征权重。第三项f(x)是NFM的核心组成部分,用于建模特征交互。它是一个多层前馈神经网络。
NFM的模型结构图:
首先输入就是离散化的特征,然后再进行embedding操作,获得每一个特征的向量表示。接着就到了Bi-interaction Pooling层,这里其实就是FM部分。FM的公式如下图所示:
去掉最外层的累加号,我们得到的是一个长度为K的向量,也就是embedding部分的长度。然后再对这个向量送入几层全连接层即可,最后输出ctr预估值。这就是NFM的整体思路。
1.Embedding Layer
和其他的DNN模型处理稀疏输入一样,Embedding将输入转换到低维度的稠密的嵌入空间中进行处理。这里做稍微不同的处理是,使用原始的特征值乘以Embedding vector,使得模型也可以处理real valued feature。
2.B-Interaction Layer
Bi是Bi-linear的缩写,这一层其实是一个pooling层操作,它把很多个向量转换成一个向量,形式化如下:
fbi的输入是整个的嵌入向量,xi ,xj是特征取值,vi, vj是特征对应的嵌入向量。中间的操作表示对应位置相乘。所以原始的嵌入向量任意两个都进行组合,对应位置相乘结果得到一个新向量;然后把这些新向量相加,就得到了Bi-Interaction的输出。这个输出只有一个向量。
3.Hidden Layer
这个跟其他的模型基本一样,堆积隐藏层以期来学习高阶组合特征。一般选用constant的效果要好一些。
4.Prediction Layer
最后一层隐藏层Zl到输出层最后预测结果形式化如下:
其中h是中间的网络参数。考虑到前面的各层隐藏层权重矩阵,f(x)形式化如下:
这里相比于FM其实多出的参数其实就是隐藏层的参数,所以说FM也可以看做是一个神经网络架构,就是去掉隐藏层的NFM。
NFM主要的特点:
1. NFM核心就是在NN中引入了Bilinear Interaction(Bi-Interaction) pooling操作。基于此,NN可以在low level就学习到包含更多信息的组合特征。
2. 通过deepen FM来学习高阶的非线性的组合特征。
3. NFM相比于上面提到的DNN模型,模型结构更浅、更简单(shallower structure),但是性能更好,训练和调整参数更加容易。
所以,依旧是FM+DNN的组合套路,不同之处在于如何处理Embedding向量,这也是各个模型重点关注的地方。现在来看业界就如何用DNN来处理高维稀疏的数据并没有一个统一普适的方法,依旧在摸索中。
深度学习推荐模型-NFM相关推荐
- NVIDIA GPUs上深度学习推荐模型的优化
NVIDIA GPUs上深度学习推荐模型的优化 Optimizing the Deep Learning Recommendation Model on NVIDIA GPUs 推荐系统帮助人在成倍增 ...
- 深度学习推荐模型-DIN
深度学习推荐模型-DIN 本文参考链接,仅供个人学习: https://github.com/datawhalechina/team-learning-rs/tree/master/DeepRecom ...
- 深度学习推荐模型-DeepFM
深度学习推荐模型-DeepFM 本文参考链接,仅供个人学习: https://github.com/datawhalechina/team-learning-rs/tree/master/DeepRe ...
- 深度学习推荐模型-DeepCrossing
深度学习推荐模型-DeepCrossing 本文参考链接,仅供个人学习:https://github.com/datawhalechina/team-learning-rs/tree/master/D ...
- Facebook 面向个性化推荐系统的深度学习推荐模型
作者:王鸣辉 整理:Hoh Xil 来源:http://wd1900.github.io/#blog https://www.zhihu.com/people/wang-ming-hui-38/pos ...
- 深度学习推荐模型-WideDeep
本文参考链接,仅供个人学习: https://github.com/datawhalechina/team-learning-rs/tree/master/DeepRecommendationMode ...
- 保存模型后无法训练_如何解决推荐系统工程难题——深度学习推荐模型线上serving?...
这里是「王喆的机器学习笔记」的第二十三篇文章,这篇文章希望讨论的问题是深度推荐模型的线上serving问题. 对于推荐模型的离线训练,很多同学已经非常熟悉,无论是TensorFlow,PyTorch, ...
- 【推荐算法】深度学习推荐算法综述 Deep Learning based Recommender System: A Survey and New Perspectives
一.MLP based Recommender System 1. Deep Crossing模型 Deep Crossing模型完整的解决了从特征工程.稀疏向量稠密化.多层神经网络进行优化目标拟合等 ...
- 「DLP-KDD 2021征文」及上届论文全集,包含深度学习推荐/广告系统、多目标、模型服务等
「DLP-KDD 2021征文」及上届论文全集,包含深度学习推荐/广告系统.多目标.模型服务等 在DLP-KDD 2021征稿之际,为大家准备了DLP-KDD2020的全部文章和资源列表,内容涵盖了几 ...
最新文章
- nodejs报错解决:Error: Can only perform operation while paused. - undefined
- Java assert
- 【CentOS 7】 yum源安装mysql5.6
- CentOS7Selinux设置
- 【docker】第二节:安装nginx、mysql、php
- python 之 string() 模块
- 基于 vue + zhengAdmin 的一套后台模板
- 实验10. Hadoop环境搭建
- 关于IE6 双倍间距的真正原因
- 设计模式-工厂模式的3中不同实现[JAVA]
- File.createTempFile创建临时文件
- 夜光带你走进python开发 (十七)传奇语言
- 魔百盒CM211-2系列(ZG/CH/YS)海思MV300H/310芯片-刷机固件及教程
- [面经整理] 机器/深度学习补充篇
- Allegro Shape菜单详解
- 「机器学习速成」嵌套:高维度数据映射到低维度空间
- Cocos2d-x + Android + Eclipse + Windows 8
- 华为大数据平台FusionInsight HD部署中遇到的问题汇总
- springboot项目通过gradle制作webjars
- air playit在安卓4.0下崩溃