一、DeepFM

可以看到,整个模型大体分为两部分:FM(左边)和DNN(右边)。

FM Layer负责提取Wide特征,DNN部分(上图中的Hidden Layer 部分)提取deep特征,注意FM Layer 和Hidden Layer 共享输入层(Dense Embedding 层, 这个Embedding层得权重矩阵就是FM算法中的辅助矩阵V) 最后将两部分特征拼接到一起输出,这样该模型就具有学习高阶和低阶特征的能力。

模型大概的流程如下:
1.首先利用FM进行embedding得到Dense Embeddings的输出。
2.将Dense Embeddings的结果作为左边FM模块和右边DNN模块的输入。
3.通过一定方式组合后,模型左边FM模块的输出完全模拟出了FM的效果,而右边的DNN模块则学到了比FM模块更加高阶的特征交叉。
4.最后将DNN和FM的结果组合后激活输出。

补:市面上究竟有哪些基于特征组合的模型,他们又有哪些不足


二、xDeepFM

xDeepFM 是 Wide & Deep 的改进版,在此基础上添加了 CIN 层显式的构造有限阶特征组合。xDeepFM 虽然名字跟 DeepFM 类似,但是两者相关性不大,DCN 才是它的近亲。


模型分为三个子模型:

  • 这里只有CIN是论文的创新部分,是显式特征组合。
  • 加上Linear是为了引入人工设计的特征,
  • 加上DNN是为了引入隐式特征组合。

图为 xDeepFM 的总体结构,有三个分支:Linear(稀疏的01向量作为输入)、DNN(经过embedding的稠密向量作为输入)、CIN(压缩感知层)。xDeepFM 如果去掉 CIN 分支,就等同于 Wide & Deep, Wide & Deep 原理不做介绍,本文主要围绕 CIN 层进行展开。

1.它的近亲 DCN 中的 cross layer



是将所有 field 的向量横向 concat,作为一个输入向量 ,然后每层特征都会与 做内积,得到更高一阶的特征相互,很明显,是在元素级(bit-wise)的特征交互。

这样的缺陷也很明显,模型意识不到域的概念了,同属一个 field 的元素,应该被同等对待,与其他特征交互时应该使用同一权重,所以这是 bit-wise 方式的缺陷所在。CIN 引入 vector-wise 的方式,特征交互时同属一个 field 的元素整体考虑,有效避免了这种缺陷。

2.CIN

2.1 步骤

2.2下面详细介绍两个特征矩阵交互的计算过程



x_0,x_k的哈德马积




显然,这个地方采用的是vector-wise的特征组合方式。


H_k个(H_k-1,m)的卷积核进行卷积操作
CNN卷积核与通道讲解 - 双手插袋的文章 - 知乎
https://zhuanlan.zhihu.com/p/251068800

3 总结

优点:

1.使用 vector-wise 的方式,通过特征的元素积来进行特征交互,将一个特征域的元素整体考虑,比 bit-wise 方式更 make sence 一些;
2.自动高效的学习隐式和显式的高维特征交互。
3.设计了一个新的CIN网络可以显式的学习高阶特征交互,而且是vector-wise的,层数越多,交互程度指数级增大。
4.实践是检验真理的唯一标准,XDeepFM的效果确实要好于其他形式的模型。

缺点:

CIN 层的复杂度通常比较大,它并不具有像 DCN 的 cross layer 那样线性复杂度,它的复杂度通常是平方级的,因为需要计算两个特征矩阵中特征的两两交互,这就给模型上线带来压力。

为什么 CIN 叫压缩感知层?

因为每次矩阵 W 都会将特征两两交互得到的三维矩阵压缩成一维,所以叫做压缩感知。

为什么模型名称中有 DeepFM?

关于CIN为什么是显式的特征组合,文中也做了推导

DeepFM、xDeepFM相关推荐

  1. 推荐系统遇上深度学习(二十二):DeepFM升级版XDeepFM模型强势来袭!

    今天我们要学习的模型是xDeepFM模型,论文地址为:https://arxiv.org/abs/1803.05170.文中包含我个人的一些理解,如有不对的地方,欢迎大家指正!废话不多说,我们进入正题 ...

  2. 【推荐算法】ctr预估模型总结(LR、FM、FFM、NFM、AFM、WDL、DCN、DeepFM、FwFM、FLEN)

    文章目录 前言 LR POLY2 FM(Factorization Machine) FFM(Field-aware Factorization Machine) AFM(Attention Fact ...

  3. 深度学习 - 35.TF x Keras FM、WideAndDeep、DeepFM、DeepFwFM、DeepFmFM 理论与实战

    目录 一.引言 二.浅层模型概述 1.LR 2.FM 3.FMM 4.FwFM 5.FmFM 三.常用推荐算法实现 Pre.数据准备 1.FM 2.WideAndDeep 3.DeepFM 4.Dee ...

  4. 推荐系统(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. ...

  5. 深度学习 - 42.特征交叉与 SENET、Bilinear Interaction 与 FiBiNet

    目录 一.引言 二.摘要 - ABSTRACT 三.介绍 - INTRODUCTION 四.相关工作 - RELATED WORK 1.因式分解机及其变体 - Factorization Machin ...

  6. 深度学习 - 43.SeNET、Bilinear Interaction 实现特征交叉 By Keras

    目录 一.引言 二.SENET Layer 1.简介 2.Keras 实现 2.1 Init Function 2.2 Build Function 2.3 Call Function 2.4 Tes ...

  7. WSDM2021 | 多交互注意力网络用于CTR预估中细粒度特征学习

    | 作者:YEN | 单位:东北大学 | 研究方向:推荐系统.计算广告 本文分享一篇发表在WSDM'21的点击率预估方面的文章:交互注意力网络用于CTR预估中细粒度特征学习 论文核心内容:构建更细粒度 ...

  8. MaskNet 这个CTR模型,有点意思

    CTR模型相关论文,大家已经看了很多了,如FNN.DeepFm.XDeepFM等,难免会"审美疲劳",所以这些模型真的充分挖掘了交叉特征了吗?这篇论文<MaskNet: In ...

  9. 聊一聊搜索推荐中的 Position Bias

    作者 | Chilia 哥伦比亚大学 NLP搜索推荐 整理 | NewBeeNLP 在搜索推荐系统中,Bias可以说无处不在.之前我们整理过搜索.推荐.广告中的曝光偏差问题,今天来看看 positio ...

最新文章

  1. 递归行为时间复杂度估算
  2. 我用 PyTorch 复现了 LeNet-5 神经网络(CIFAR10 数据集篇)!
  3. 树莓派实现AD转换(pcf8591模块)
  4. 【LeetCode笔记】1143. 最长公共子序列(Java、动态规划、字符串)
  5. memcached的java客户端_Memcached Java客户端
  6. 【高德地图API】从零开始学高德JS API(六)坐标转换
  7. golang——strconv包常用函数
  8. python序列中是否包含某个元素
  9. Android JNI入门第六篇——C调用Java
  10. R 学习笔记《五》 R语言初学者指南--第二章总结
  11. ubuntu 16.04: 添加字体
  12. 爱河许云上计算机乐谱,神马乐团爱河简谱
  13. Anaconda的安装与基本使用
  14. linux显卡驱动编译安装,联想Y470下CentOS 6.4 AMD显卡驱动编译安装与配置
  15. 亿图图示上线小程序,MindMaster移动端迎来大更新,亿图软件八周年再出发
  16. Matlab:求出n边凹多边形内角
  17. 在树莓派中解决浏览器自动更新失败弹框遮挡数据的方案
  18. 多线程编程实例(使用CompletableFuture)
  19. idea插件开发icon设计
  20. 电脑如何截长图?如何用电脑截取长图——规划全景

热门文章

  1. 【机器学习开放项目】KDD Cup 2010竞赛题目与数据集
  2. HTML <header> 标签
  3. android朋友圈动态视频,安卓版微信7.0.5尝鲜,朋友圈可发30秒视频,网友最爱的功能是?...
  4. 简易在线留言板(上)——树洞留言板
  5. 学习英文-学以致用【场景:拍照片】
  6. SX1302官方开源代码无法在NUC980主控芯片中使用SPI片选脚
  7. three.js创建地球带大气层、辉光、云层、凹凸、高光
  8. 串口DCB结构详细说明
  9. 如何订立合规的电子劳动合同 ——关于人社部发布《电子劳动合同订立指引》的深度解读(一)
  10. Unity3D之Position的设置