深度学习推荐模型-DeepFM

本文参考链接,仅供个人学习:

https://github.com/datawhalechina/team-learning-rs/tree/master/DeepRecommendationModel

CTR预估算法之FM, FFM, DeepFM及实践_JohnSon-CSDN博客

相关学习书籍推荐:《深度学习推荐系统》王喆

在DeepFM提出之前,已有LR,FM,FFM,FNN,PNN(以及三种变体:IPNN,OPNN,PNN*),Wide&Deep模型,这些模型在CTR或者是推荐系统中被广泛使用。

DeepFM模型结合了广度和深度模型的有点,联合训练FM模型和DNN模型,来同时学习低阶特征组合和高阶特征组合。此外,DeepFM模型的Deep component和FM component从Embedding层共享数据输入,这样做的好处是Embedding层的隐式向量在(残差反向传播)训练时可以同时接受到Deep component和FM component的信息,从而使Embedding层的信息表达更加准确而最终提升推荐效果。DeepFM相对于现有的广度模型、深度模型以及Wide&Deep; DeepFM模型的优势在于:

DeepFM模型同时对低阶特征组合和高阶特征组合建模,从而能够学习到各阶特征之间的组合关系。

DeepFM算法原理:

  1. FM Component + Deep Component。FM提取低阶组合特征,Deep提取高阶组合特征。但是和Wide&Deep不同的是,DeepFM是端到端的训练,不需要人工特征工程。

  2. 共享feature embedding。FM和Deep共享输入和feature embedding不但使得训练更快,而且使得训练更加准确。相比之下,Wide&Deep中,input vector非常大,里面包含了大量的人工设计的pairwise组合特征,增加了他的计算复杂度。

DeepFM架构图:

DeepFM包含两部分,左边的FM部分和右边的DNN部分。这两部分共享相同的输入。

1.FM

详细内容参考FM模型部分的内容,下图是FM的一个结构图,从图中大致可以看出FM Layer是由一阶特征和二阶特征Concatenate到一起在经过一个Sigmoid得到logits(结合FM的公式一起看),所以在实现的时候需要单独考虑linear部分和FM交叉特征部分。

2.Deep

Deep Module是为了学习高阶的特征组合,在上图中使用用全连接的方式将Dense Embedding输入到Hidden Layer,这里面Dense Embeddings就是为了解决DNN中的参数爆炸问题,这也是推荐模型中常用的处理方法。

DeepFM模型对比

目前在推荐领域中比较流行的深度模型有FNN、PNN、Wide&Deep。

  • FNN模型是用FM模型来对Embedding层进行初始化的全连接神经网络。
  • PNN模型则是在Embedding层和全连接层之间引入了内积/外积层,来学习特征之间的交互关系。
  • Wide&Deep模型由谷歌提出,将LR和DNN联合训练,在Google Play取得了线上效果的提升。Wide&Deep模型,很大程度上满足了模型同时学习低阶特征和高阶特征的需求,让模型同时具备较好的“memorization”和“generalization”。但是需要人工特征工程来为Wide模型选取输入特征。具体而言,对哪些稀疏的特征进行embedding,是由人工指定的。

Wide&Deep和DeepFM模型不同点主要有以下两点:
1.wide模型部分由LR替换为FM。FM模型具有自动学习交叉特征的能力,避免了原始Wide & Deep模型中浅层部分人工特征工程的工作。
2.共享原始输入特征。DeepFM模型的原始特征将作为FM和Deep模型部分的共同输入,保证模型特征的准确与一致。

DeepFM的三大优势:

  • 相对于Wide&Deep不再需要手工构建wide部分;
  • 相对于FNN把FM的隐向量参数直接作为网络参数学习;
  • DeepFM将embedding层结果输入给FM和MLP,两者输出叠加,达到捕捉了低阶和高阶特征交叉的目的。

深度学习推荐模型-DeepFM相关推荐

  1. NVIDIA GPUs上深度学习推荐模型的优化

    NVIDIA GPUs上深度学习推荐模型的优化 Optimizing the Deep Learning Recommendation Model on NVIDIA GPUs 推荐系统帮助人在成倍增 ...

  2. 深度学习推荐模型-DIN

    深度学习推荐模型-DIN 本文参考链接,仅供个人学习: https://github.com/datawhalechina/team-learning-rs/tree/master/DeepRecom ...

  3. 深度学习推荐模型-NFM

    深度学习推荐模型-NFM 本文参考链接,仅供个人学习: https://github.com/datawhalechina/team-learning-rs/tree/master/DeepRecom ...

  4. 深度学习推荐模型-DeepCrossing

    深度学习推荐模型-DeepCrossing 本文参考链接,仅供个人学习:https://github.com/datawhalechina/team-learning-rs/tree/master/D ...

  5. Facebook 面向个性化推荐系统的深度学习推荐模型

    作者:王鸣辉 整理:Hoh Xil 来源:http://wd1900.github.io/#blog https://www.zhihu.com/people/wang-ming-hui-38/pos ...

  6. 深度学习推荐模型-WideDeep

    本文参考链接,仅供个人学习: https://github.com/datawhalechina/team-learning-rs/tree/master/DeepRecommendationMode ...

  7. 深度推荐模型 - DeepFM

    DeepFM 文章目录 DeepFM 之前的模型的缺点和局限 线性模型的局限性 多项式模型的问题 DNN的局限性 FM(因子分解机) FFM FNN & PNN Wide & Deep ...

  8. 保存模型后无法训练_如何解决推荐系统工程难题——深度学习推荐模型线上serving?...

    这里是「王喆的机器学习笔记」的第二十三篇文章,这篇文章希望讨论的问题是深度推荐模型的线上serving问题. 对于推荐模型的离线训练,很多同学已经非常熟悉,无论是TensorFlow,PyTorch, ...

  9. 【推荐算法】深度学习推荐算法综述 Deep Learning based Recommender System: A Survey and New Perspectives

    一.MLP based Recommender System 1. Deep Crossing模型 Deep Crossing模型完整的解决了从特征工程.稀疏向量稠密化.多层神经网络进行优化目标拟合等 ...

最新文章

  1. (十五)Java springcloud B2B2C o2o多用户商城 springcloud架构-commonservice-sso服务搭建(一)...
  2. 《云安全原理与实践》——2.2 云计算面临的管理风险
  3. easyui datagrid表头 toolbar 固定
  4. 【Deep Learning】深度学习中的函数类型
  5. 一个没有收到任何Offer的应届生回想
  6. 大学编译原理试卷考试题
  7. php 二维数组 根据某个字段排序
  8. UILabel自适应高度和自动换行
  9. 【渝粤题库】陕西师范大学209041 金融工程学 作业(专升本)
  10. Springboot(2.0.0.RELEASE)+spark(2.1.0)框架整合到jar包成功发布(原创)!!!
  11. 题目一:给出一个n,代表有从1到n的数字[1,2,3,··· n],问可以构成多少种二叉搜索树?...
  12. 10以内的分解与组成怎么教_【一年级数学】(上)10以内的分与合技巧及练习题...
  13. 取得数组下标_《零基础C++入门教程》——(8)搞定二维数组与循环嵌套
  14. android实现带下划线的密码输入框
  15. 页号P与页内偏移地址W的计算
  16. CI 与 CD 有什么区别
  17. Whai_springmvc笔记
  18. 秦嘉哲:12.13黄金原油欧盘操作计划、黄金原油最新分析及策略布局
  19. 分享一些前端主流面试题
  20. python自学行_python自学行吗

热门文章

  1. PHP手册总结《预定义变量》
  2. resharper 7.x 注册码key
  3. 【廖雪峰官方网站/Java教程】Maven基础
  4. 程序员面试金典——18.4 2的个数
  5. 程序员面试金典——1.6像素翻转
  6. TCP连接发送窗口问题思考
  7. 一点对 KL 散度的理解
  8. 人人都能看懂的LSTMGRU
  9. Emacs基本操作说明
  10. jsp+servlet+jdbc实现对数据库的增删改查