深度学习在 CTR 中应用

一. Wide&&Deep 模型

首先给出Wide && Deep [1] 网络结构:

本质上是线性模型(左边部分, Wide model)和DNN的融合(右边部分,Deep Model)。

推荐系统需要解决两个问题:

记忆性: 比如通过历史数据知道”麻雀会飞”,”鸽子会飞”

泛化性: 推断在历史数据中从未见过的情形,”带翅膀的动物会飞”

WideDeep是怎么解决这两个问题呢?

Wide模型:

比如现在有一个点餐推荐APP,我输入炸鸡(query),那么会给我进行推荐其他相关的食物(item),那么模型目地就是为了希望知道给定了query, 消费item的概率, 即: P(消费| query, item). 那我们就可以通过构建出一系列(query, item)的cross 特征, 通过LR去学习到这些不同的cross特征与target = 消费 的相关性。比如(query = “炸鸡”, item = “啤酒”) 与target = 消费 ,通过历史数据学习到有很强的相关性,那么就推荐给炸鸡。

Deep模型:

现在我厌倦了推荐的结果,希望推一些让我惊喜的食物,上面的wide模型,我们构建的cross特征也是有限的,不能面面俱到,cross特征或许可以是三个类别,四个类别。所以,需要deep模型自动帮我们做一些特征。每个特征可以映射到一个低维空间去,学习到一个低维dense的表达(embedding vector)。 那么给定一个query, 我们可以在embedding space中找距离相近的item, 认为是潜在喜欢的item

Wide模型与Deep模型的结合,目的是为了平衡记忆性和泛化性的结果.

二. FNN,SNN 模型

和wide deep出发点一样, 一些线性模型LR很难学到非线性表达, 非线性模型比如FM, GBDT又很难学到所有的特征组合方式。那么,如何利用DNN去自动学习到特征表达,自动去学习到特征之间的交叉呢?

FNN模型结构[2]:

首先需要对category特征进行一个one-hot编码。

l1, l2层都是隐藏层,那么, dense real layer 就可以看作一个embedding层, 每个field 分别 对应一个embedding的过程。通常,使用FM去初始化这些参数往往能够更快地收敛,最大限制避免训练过程中陷入局部最小,以及得到更好的结果。可以看到,FNN其实就是widedeep模型的deep部分,但是FNN有用FM进行一个参数初始化的过程。

SNN模型结构:

SNN和FNN模型区别于最底层的训练方法, FNN最底层先用FM初始化,可以看到,SNN最底层是全连接的,不区分不同的field。 初始化采用RBM(限制玻尔兹曼机) 和 DAE(自动编码机)。

训练过程中,没有每轮迭代都会用到所有的特征,对为0的单元进行一个下采样操作,图中黑色的单元即是没有被选取到,不参与参数迭代。计算复杂度得到大量的减少。

文章在iPinYou数据集上进行评测,可以看到FNN效果优于FM,LR。

文章对调参也给出了一些经验

  1. 网络结构,通常,钻石型的网络结构往往优于其他结构

    1. 隐藏层单元数不是越高越好,中间有一个临界值达到最优.
  2. Dropout在数据量本来就很稀疏的情况下尽量不用,不同的数据集dropout表现差距比较大。

三. PNN 模型

PNN[3]的网络结构:

PNN的结构的思想相比于WideDeep模型核心改动地方在对于embedding后的dense feature,增加了两两交叉的功能,widedeep是embedding feature全部输入到隐藏层了。不同field经过Embedding后的特征做点击运算其实就相当于FM,那么PNN认为首先需要确保学习到这些交叉特征,再去额外交给DNN去学习更复杂的交叉特征。那么PNN结构其实相当于FM+DEEP。

再说下网络细节: Embedding layer 和Wide Deep模型是一样的, 不同field特征映射到了一个embedding的空间上,这时,不是所有的特征直接送到一个NN网络里面去,这里分成两个部分z 和p。 z部分直接就是原始的embedding特征不变; P部分是embedding特征两两做内积运算,达到FM的效果,接下来z和p拼接成一个vector, 送到一个NN网络里面,最后softmax输出概率值。

四. DeepFM 模型

DeepFM[4]的网络结构:

可以看到,很像PNN结构,只是在这里FM没有和原始特征一起送到NN中去训练,而是单独拿出来类似于WIDE模型。其实就是WideDeep模型中Wide侧替换为FM。

五. NFM 模型

NFM模型[5]的网络结构:

首先,也是经过全连接得到embedding层,输入是

分别是不同特征对应的相同维数的embedding向量。接下来,这些embedding向量两两做element-wise的相乘运算得到B-interaction layer。(element-wide运算举例: (1,2,3)element-wide相乘(4,5,6)结果是(4,10,18)。)

该B-interaction Layer 得到的是一个和embedding维数相同的向量。然后后面接几个隐藏层输出结果。

为什么这么做呢?首先看如果B-interaction layer后面不接隐藏层,直接把向量的元素相加输出结果(对应下面的公式h=(1,1,1,...,1)) , 就是一个FM, 就好比一个线性模型,权重都是1 :

现在后面增加了隐藏层,相当于做了更高阶的FM,更加增强了非线性表达能力。

六. AFM 模型

AFM模型[6]的网络结构:

AFM是NFM模型的一个改进, 在传统FM模型中,使用二阶交叉特征得到非线性表达能力,但是不是所有的特征交叉都会有预测能力,很多无用的特征交叉加入后反而会相当于加入了噪声。

因此,在这个模型中,加入了Attention Net 机制,aij表示特征i,j交叉的权重。计算方式如下: 经过一个attention net的隐藏层,得到该特征交叉的权重

最后的预测方式和NFM类似, 当P=(1,1,1,...,1),是加了权重的FM, 后面也可以和NFM一样增加隐藏层,得到更高阶特征的表达能力。

结语: 没有万能的模型,针对不同的业务可能需要选择不同的模型,比如如果需要解释能力强的,那么不妨选择AFM模型, Wide Deep实际中应用比较广,效果也可以,但是很难定位问题,也难分析Deep侧的特征重要性。同时网络结构需要不断尝试,或许我们都可以embedding到一个固定的维数后,可以把这个embedding特征当作图像来做,做卷积,pooling, 说不定有惊喜,达到去噪声的目的。

参考文献

[1] Cheng H T, Koc L, Harmsen J, et al. Wide & Deep Learning for Recommender Systems[J]. 2016:7-10.

[2] Zhang, Weinan, T. Du, and J. Wang. "Deep Learning over Multi-field Categorical Data: A Case Study on User Response Prediction." (2016).

[3] Qu Y, Cai H, Ren K, et al. Product-Based Neural Networks for User Response Prediction[J]. 2016:1149-1154.

[4] Guo H, Tang R, Ye Y, et al. DeepFM: A Factorization-Machine based Neural Network for CTR Prediction[J]. 2017.

[5] He X, Chua T S. Neural Factorization Machines for Sparse Predictive Analytics[J]. 2017.

[6] Xiao J, Ye H, He X, et al. Attentional factorization machines: Learning the weight of feature interactions via attention networks[C]. IJCAI, 2017.

相关阅读

基于 word2vec 和 CNN 的文本分类 :综述 & 实践

深度学习的异构硬件加速:TPU 特性与数据中心的 ASIC 应用(概述篇)

基于深度学习的图像真实风格迁移


此文已由作者授权腾讯云技术社区发布,转载请注明文章出处

原文链接:https://cloud.tencent.com/community/article/817449

传播腾讯海量技术实践经验,www.qcloud.com

CTR深度学习的更多相关文章

  1. 深度学习在 CTR 中应用

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:高航 一. Wide&&Deep 模型 首先给出Wide && Deep [1] 网络结构: 本质上 ...

  2. 为什么要用深度学习来做个性化推荐 CTR 预估

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:苏博览 深度学习应该这一两年计算机圈子里最热的一个词了.基于深度学习,工程师们在图像,语音,NLP等领域都取得了令人振奋的进展.而深 ...

  3. 深度学习在CTR预估中的应用

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由鹅厂优文发表于云+社区专栏 一.前言 二.深度学习模型 1. Factorization-machine(FM) FM = LR+ e ...

  4. 机器学习如何选择模型 & 机器学习与数据挖掘区别 & 深度学习科普

    今天看到这篇文章里面提到如何选择模型,觉得非常好,单独写在这里. 更多的机器学习实战可以看这篇文章:http://www.cnblogs.com/charlesblc/p/6159187.html 另 ...

  5. 深度学习word2vec笔记之应用篇

    好不容易学了一个深度学习的算法,大家是否比较爽了?但是回头想想,学这个是为了什么?吹牛皮吗?写论文吗?参加竞赛拿奖吗? 不管哪个原因,都显得有点校园思维了. 站在企业的层面,这样的方式显然是不符合要求 ...

  6. 贾扬清分享_深度学习框架caffe

    Caffe是一个清晰而高效的深度学习框架,其作者是博士毕业于UC Berkeley的 贾扬清,目前在Google工作.本文是根据机器学习研究会组织的online分享的交流内容,简单的整理了一下. 目录 ...

  7. 用深度学习(DNN)构建推荐系统 - Deep Neural Networks for YouTube Recommendations论文精读

    虽然国内必须FQ才能登录YouTube,但想必大家都知道这个网站.基本上算是世界范围内视频领域的最大的网站了,坐拥10亿量级的用户,网站内的视频推荐自然是一个非常重要的功能.本文就focus在YouT ...

  8. ML平台_微博深度学习平台架构和实践

    ( 转载至: http://www.36dsj.com/archives/98977)  随着人工神经网络算法的成熟.GPU计算能力的提升,深度学习在众多领域都取得了重大突破.本文介绍了微博引入深度学 ...

  9. 深度学习在美团点评推荐平台排序中的应用&& wide&&deep推荐系统模型--学习笔记

    写在前面:据说下周就要xxxxxxxx, 吓得本宝宝赶紧找些广告的东西看看 gbdt+lr的模型之前是知道怎么搞的,dnn+lr的模型也是知道的,但是都没有试验过 深度学习在美团点评推荐平台排序中的运 ...

随机推荐

  1. Method and apparatus for transitioning between instruction sets in a processor

    A data processor (104) is described. The data processor (104) is capable of decoding and executing a ...

  2. Mindjet MindManager 思维导图软件-使用思维导图跟踪调用流程,绘制软件框架

    思维导图.据说是每一个产品经理必备的软件.假设你阅读大型源码.使用思维导图跟踪调用流程,绘制软件框架将会很方便. 特点:没什么好说的.用过的都说好. 软件截图: 下载:http://www.mindm ...

  3. [Angular] How to get Store state in ngrx Effect

    For example, what you want to do is navgiate from current item to next or previous item. In your com ...

  4. 【JEECG技术博文】JEECG 简单实例解说权限控制

    JEECG简单实例解说权限控制 请大家点击这里为我们投票.2015博客之星.很多其他分享敬请期待 博文地址:http://blog.itpub.net/30066956/viewspace-18687 ...

  5. Linux 常用解压缩归档命令

    linux 常见压缩.归档工具 创建压缩工具 压缩工具 后缀 描述 compress/uncompress .Z 早期工具,现在不常见了 gzip/gunzip .gz 进几年比较火的工具 bzip2 ...

  6. Day5下午解题报告1

    预计分数:100+60+30=190 实际分数:100+60+30=190 终于有一道无脑T1了哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 ...

  7. DG动态性能视图详解

    V$LOG 显示CONTROLFILE记录的LOG FILE信息. 列名          描述 GROUP#        日志组号 THREAD#       日志线程号 SEQUENCE#    ...

  8. windows新建或者重命名文件及文件夹必须手动刷新才能显示出来

    平台:win8.1 问题:windows新建或者重命名文件及文件夹必须手动刷新才能显示出来 解决方法: 注册表中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ ...

  9. C#操作SQLite方法实例详解

    用 C# 访问 SQLite 入门(1) CC++C#SQLiteFirefox  用 C# 访问 SQLite 入门 (1) SQLite 在 VS C# 环境下的开发,网上已经有很多教程.我也是从 ...

  10. HttpClient的基本使用

    HttpClient的基本使用 前言 HttpClient是Apache提供的一个用于在Java中处理HTTP请求.响应操作的工具,由于JDK自带的API对HTTP协议的支持不是很友好,使用起来也不是 ...