本文主要介绍 CTR 预估中一些深度学习模型,包括 FNN、Wide&Deep、PNN、DIN、 Deep&Cross等。每个模型会简单介绍其原理、论文出处以及其一些开源实现。

FNN(Factorization-machine supported Neural Network)

模型结构

FNN 是伦敦大学于 2016 在一篇论文中发表的,模型的结构如下

FNN

FNN 假设输入数据的格式是离散的类别特征(表示为 one-hot 编码),且每个特征属于一个 field,通过 embedding 层将高纬稀疏特征映射成低维稠密特征后,再作为多层感知机(MLP)的输入。

一般来说,embedding 层的参数可以随机初始化,但是在 FNN 中,初始化 embedding 是采用通过 FM 预训练得到的每个特征的隐向量,这样初始化的好处是将预训练的向量作为初始化参数时,能够让模型的参数在初始化的时候就处于较优的位置(训练的目的其实就是为了得到最优的模型参数),能够加快收敛的过程,至于效果方面,则不一定会优于随机初始化的情况,因为随机初始化经过多轮的迭代也可能会收敛同样的效果。

相关论文

提出 FNN 的论文 Deep Learning over Multi-field Categorical Data: A Case Study on User Response Prediction是张伟楠博士在伦敦大学时发表的,张伟楠博士还有很多与 RTB 相关的论文,具体可参看其主页。

开源实现

论文作者在 github 上的 deep-ctr 这个仓库中提供了 FNN 的代码,但是是 Theano 实现的;后来作者又将代码更新为 Tensorflow 框架实现的,详见 product-nets,这个仓库也包含了后面要介绍的 PNN 的实现代码。

Wide&Deep

模型结构

Wide & Deep 是 Google 在2016年6月中发布的。模型结合了传统的特征工程与深度模型:既有 Wide 的 LR 模型,也有 Deep 的 NN 模型。

其结构如下所示

model structure

wide 部分其实就是 LR,deep部分其实就是 FNN,只是 deep 部分中的 embedding 层不用 FM 训练得到的隐向量初始化。根据论文的描述,wide 部分主要负责memorization, deep 部分主要负责 generalization;memorization 主要指的是记住出现过的样本,可以理解为拟合训练数据的能力,generalization 则是泛化能力。

根据论文的实验,wide & deep 比起单纯的 wide 或 deep 都要好,但是根据我后面的实验以及网上的一些文章,wide 部分仍然需要人工设计特征,在特征设计不够好的情况下,wide&deep 整个模型的效果并不如单个的 deep 模型。

Wide&Deep 中还允许输入连续的特征,这点与 FNN 不同,连续特征可以直接作为 Wide 部分或 Deep 部分的输入而无需 embedding 的映射,具体如下图所示。

input feature

相关论文

Wide&Deep 是 Google 在论文 Wide & Deep Learning for Recommender Systems 中提出的,论文原来是用于 Google Play 的推荐中,但是推荐和CTR实际上是同一类的问题:排序问题,所以也可以迁移到CTR预估的领域。

开源实现

由于 Wide&Deep 是 google 提出的,因此在自家的框架 Tensorflow 中提供了 Wide&Deep API,具体的使用方法可参考官方的文档 TensorFlow Wide & Deep Learning Tutorial。

PNN(Product-based Neural Networks)

模型结构

PNN 是上海交大在2016年发表的,FNN 是在 PNN 的基础上进行了改进,就是增加了特征的二阶交叉项。因此,FNN 和 PNN 的关系,类似于 LR 和 FM 的关系,只是 FNN 和 PNN 均是对原始特征进行了 embedding 映射。PNN 模型的结构如下所示

PNN

特征经过 embedding 层映射后,有两种乘积的操作,第一种是跟1做外积,实际上就是将映射后的特征进行拼接, 得到了上图中的 z 向量部分;第二种是与其他特征分别两两进行内积,得到了上图中的 p 向量部分,这个操作其实就相当于进行了特征交叉,只是这种交叉是在 embedding 映射后。再后面的结构其实又是一个多层感知机了。

相关论文

PNN 是在上海交大于2016年在这篇论文 Product-based Neural Networks for User Response Prediction 中提出。

开源实现

PNN 的作者在 github 上的 product-nets 上开源了其代码,通过 Tensorflow 实现,代码里面也包含了 FNN,DeepFM 等一些其他模型的实现。

DeepFM

模型结构

DeepFM 是华为诺亚方舟实验室在 2017 提出的用于 CTR 预估的模型,DeepFM 其实就是模仿 Wide&Deep,只是将 Wide 部分替换成了 FM,所以创新性并不算大。其结构如下所示,

DeepFM

相关论文

DeepFM 是在这篇论文中提出的 DeepFM: A Factorization-Machine based Neural Network for CTR Prediction

开源实现

作者没有公开源码,上面提到的 product-nets 提供了这个模型的实现代码,同时 tensorflow-DeepFM也提供了一个 tensorflow 实现的版本,star 数是 github 上较高的了。

DIN(Deep Interest Network)

模型结构

从之前提到的几个模型可知,CTR预估中的深度学习模型的基本思路是将原始的高维稀疏特征映射到一个低维空间中,也即对原始特征做了embedding操作,之后一起通过一个全连接网络学习到特征间的交互信息和最终与CTR之间的非线性关系。这里值得注意的一点是,在对用户历史行为数据进行处理时,每个用户的历史点击个数是不相等的,我们需要把它们编码成一个固定长的向量。以往的做法是,对每次历史点击做相同的embedding操作之后,将它们做一个求和或者求最大值的操作,类似经过了一个pooling层操作。提出 DIN 的论文认为这个操作损失了大量的信息,于是引入了 attention 机制(其实就是一种加权求和)。

DIN 是阿里妈妈在 2017 年提出的,其模型的结构如下所示

Deep Interest Network

Activation Unit 的结构如下所示

Activation Unit

DIN模型在对用户的表示计算上引入了attention network (也即图中的Activation Unit) 。DIN把用户特征、用户历史行为特征进行embedding操作,视为对用户兴趣的表示,之后通过attention network,对每个兴趣表示赋予不同的权值。这个权值是由用户的兴趣和待估算的广告进行匹配计算得到的,如此模型结构符合了之前的两个观察——用户兴趣的多样性以及部分对应。attention network 的计算公式如下, VuVu 代表用户表示向量, ViVi 代表用户兴趣表示向量, VaVa 代表广告表示向量,wiwi 表示各个用户兴趣表示向量的权重,gg 是 Activation Unit 的逻辑,论文中提出了一种如上图的 Activation Unit 所示,当然也可自行设计新的 Activation 方法。

DIN

相关论文

DIN 是在论文 Deep Interest Network for Click-Through Rate Prediction 中提出的。

开源实现

论文作者在 github 上的仓库 DeepInterestNetwork 开源了其代码,通过 Tensorflow 实现。

Deep&Cross

模型结构

PNN 进行了特征的二阶交叉,目前是为了获得信息量更多的特征,除了二阶,三阶四阶甚至更高阶的特征会更加有区分度;Deep&Cross 就是一个能够进行任意高阶交叉的神经网络。

Deep&Cross 是 StandFord 和 Google 与 2017年 提出的,类似于 Wide&Deep,模型也是由两部分组成,分别是 Deep network 和 Cross network,该模型结构如下所示

Deep & Cross

xixi 表示可由如下公式确定

x0

xl

从上面两条公式可知,Cross network 中的第 l+1l+1 层的神经元由最原始的输入和第 ll 层的神经元共同决定,因此第 ll 层相当于对原始特征进行了 ll 阶交叉。

相关论文

Deep&Cross 是在这篇论文 Deep & Cross Network for Ad Click Predictions 中提出的。

开源实现

论文没有公开代码,DeepCTR 中提供了 Deep&Cross 的 tensorflow 实现,可供参考。

总结

在CTR预估中,模型适用传统方法还是深度学习方法,其实是一个海量离散特征+简单模型 和 少量连续特征+复杂模型 的权衡。既可以离散化用线性模型,也可以用连续特征加深度学习。特征与模型往往是对偶的,前者容易,而且可以n个人一起并行做,有成功经验;后者目前看很赞,能走多远还须拭目以待。

原文

CTR 预估模型简介--深度学习篇相关推荐

  1. 前深度学习时代CTR预估模型的演化之路:从LR到FFM\n

    本文是王喆在 AI 前线 开设的原创技术专栏"深度学习 CTR 预估模型实践"的第二篇文章(以下"深度学习 CTR 预估模型实践"简称"深度 CTR ...

  2. 深度学习CTR预估模型凭什么成为互联网增长的关键?

    本文是王喆在InfoQ开设的原创技术专栏"深度学习CTR预估模型实践"的第一篇文章(以下"深度学习CTR预估模型实践"简称"深度CTR模型" ...

  3. 从FM推演各深度学习CTR预估模型

    本文的PDF版本.代码实现和数据可以在我的github取到. 1.引言 点击率(click-through rate, CTR)是互联网公司进行流量分配的核心依据之一.比如互联网广告平台,为了精细化权 ...

  4. 前深度学习时代CTR预估模型的演化之路 [王喆观点]

    毕业于清华大学计算机系的王喆学长梳理从传统机器学习时代到深度学习时代所有经典CTR(click through rate)模型的演化关系和模型特点.内容来源:https://zhuanlan.zhih ...

  5. 深度长文 | 从FM推演各深度CTR预估模型(附开源代码)

    作者丨龙心尘 & 寒小阳 研究方向丨机器学习,数据挖掘 题记:多年以后,当资深算法专家们看着无缝对接用户需求的广告收入节节攀升时,他们可能会想起自己之前痛苦推导 FM 与深度学习公式的某个夜晚 ...

  6. 深度CTR预估模型中的特征自动组合机制演化简史

    文 | 杨旭东 源 | 知乎 众所周知,深度学习在计算机视觉.语音识别.自然语言处理等领域最先取得突破并成为主流方法.但是,深度学习为什么是在这些领域而不是其他领域最先成功呢?我想一个原因就是图像.语 ...

  7. 【论文导读】2019阿里CTR预估模型---DIEN(深度兴趣演化网络)

    前言 今天分享一篇阿里2019发表在AAAI上的CTR预估的论文<Deep Interest Evolution Network for Click-Through Rate Predictio ...

  8. 从FM推演各深度CTR预估模型(附代码)

    作者: 龙心尘 && 寒小阳 时间:2018年7月 出处:https://blog.csdn.net/longxinchen_ml/article/details/81031736 h ...

  9. 深度CTR预估模型的演化之路2019最新进展

    作者 | 锅逗逗 来源 | 深度传送门(ID: deep_deliver) 导读:本文主要介绍深度CTR经典预估模型的演化之路以及在2019工业界的最新进展. 介绍 在计算广告和推荐系统中,点击率(C ...

  10. SIGIR阿里论文 | 可视化理解深度神经网络CTR预估模型

    小叽导读:尽管业界对于图像处理和自然语言处理领域,在算法可解释性方向上已经取得了一些进展,但对于电商与广告领域,目前还是空白.另一方面,深度学习技术已经开始被大规模应用到广告业务中.广告是很多互联网现 ...

最新文章

  1. 第九代小冰惊喜登场,多端融合且琴棋书画样样精通
  2. win7系统连接2003服务器时快时慢,win7/win8/win10访问Windows2003和XP共享慢的解决方法【图文教程】...
  3. 最短路径(Shortest Paths)
  4. 如何使用SAP HANA Studio的PlanViz分析CDS view性能问题
  5. tomcat jsp导入java_[导入]Tomcat JSP Web 开发中的乱码问题小姐
  6. [转载] JAVA笔记_(Day04,Day05)函数数组
  7. 洛谷P3648 [APIO2014]序列分割(斜率优化)
  8. 别说你不知IE9正式版浏览器小技巧9则
  9. Spring.NET教程(三)——对象的创建(基础篇)
  10. 知道css有个content属性吗?有什么作用?有什么应用?可以伪类清除浮动
  11. android小米手机变慢,小米手机出现变慢卡顿现象怎么办 教你如何让小米手机跑的更快的方法...
  12. 启动mongodb时发现错误libcrypto.so.10
  13. 2006年100款最佳安全工具谱
  14. leapftp,小编悄悄告诉你leapftp是什么
  15. 母亲节海报太暖心,速来围观打卡吧~
  16. Layui选项卡Tab和Layui模板laytpl冲突问题
  17. IM 即时通讯系统【源码好优多】
  18. 26岁零基础想转行做软件测试可行吗?多方面分析
  19. Python四种读取数据文件的方法
  20. Solidworks 如何复制 基准面

热门文章

  1. magic ui3.0是鸿蒙系统吗,magicui3.1更新内容要不要升级 magicui3.0新功能体验
  2. Flink 流批一体在阿里的落地
  3. 面试官:问点基础,说说Object类下面有几种方法呢?
  4. 接口自动化测试框架搭建(5、封装get.post请求方法)--python+HTMLTestRunnerCN+request+unittest+mock+db
  5. jsonpath学习链接
  6. C语言1379最小公倍数,求最小公倍数的三种方法
  7. mysql++缓冲区_思考mysql内核之初级系列4--innodb缓冲区管理(摘自老杨)
  8. 经纬度两点距离计算器_基于位置的服务之Redis Geo地理空间距离计算
  9. python实现归并排序_排序算法学习(python版本)之归并排序(MergeSort)
  10. 高考340分理科学计算机,2021年高考340分可以上什么大学 340分左右的院校