这一篇,我们将介绍微软BING AD团队提出的Deep Crossing模型,用来解决大规模特征组合问题的模型,这些特征可以是稠密的,也可以是稀疏的,从而避免了人工进行特征组合,并使用了当年提出的残差神经网络。这个模型也算是深度学习在推荐系统的完整应用了:完整的解决了特征工程、稀疏向量稠密化、多层神经网络进行优化等一些列深度学习的目标应用。

特征

微软在广告场景中所使用的特征如下面所示:

  • 查询。

    用户在搜索框中输入的文本字符串
  • 关键字

    与产品相关的文本字符串,广告主添加的其产品描述词
  • 标题

    赞助广告的标题(简称为"广告",以下简称 "广告"),由广告主指定,以获取关注度
  • 落地页

    用户点击了相应的广告之后进入的页面
  • 匹配类型

    给广告商的一个选项,包括精准匹配、短语匹配、语义匹配等等
  • 点击

    显示是否有一个印象被点击用户的点击。点击通常会与运行时的其他信息一起被记录下来
  • 点击率

    广告的历史点击率
  • 点击预测

    平台的关键模式,即预测用户点击给定广告的可能性。
  • 广告计划

    广告主创造的投放广告的计划、包括预算、定向条件等
  • 曝光样例

    一个广告“曝光”的例子,记录了广告在实际曝光场景的相关信息
  • 点击阳历

    一个广告“点击”的例子,记录了广告在实际点击场景的相关信息

模型结构

网络的主要模型结构如下图所示

可以看出网络结构主要包括4种网络层——Embedding层,Stacking层,Multiple Residual Units层以及Scoring层。所需要的优化目标也是很常见的点击与否的二分类log损失:

\[logloss=-\frac{1}{N}\sum_{1}^{N}(y_i\log(p_i))+(1-y_i)\log(1-p_i))
\]

Embedding层

Embedding层以全连接层为主,主要目的是用来将稀疏的特征类别特征转化成稠密的Embedding向量,一般来说,Embedding向量的维度要远小于原始的洗漱特征向量。数值类型的特征不需要经过Embedding层而直接进入Stacking层。从下面的公式也能看出,所使用的激活函数是ReLU函数。

\[X^O_j=\max(0, W_jX_j^I+b_j)
\]

Stacking层

Stacking层比较简单,将所有的Embedding向量与数值类型的特征拼接在一起,从而形成新的特征向量,该层也常被成为连接层(Concatenate)。

Multiple Residual Untis层

这个层主要大量使用了带有残差的多层感知机,也就是借鉴了ResNet的残差的思想进行优化的网络结构。通过多层残差网络对特征向量的各个维度进行充分的交叉组合,使得模型能够捕捉到更多的非线性特征以及组合特征的信息,同时残差也使得网络变得更深以及更容易优化。下图就是一个残差单元的结构:

将原始的输入和通过网络层的输出进行逐元素相加,也被称为短路(Shortcut)操作。

\[X^O=\mathcal{F}(X^I,\{W_0, W_1\},\{b_0,b_1\})+X^I
\]

Scoring层

Scoring层作为输出层,为了拟合优化目标存在的,如CTR预估这种二分类模型,Scoring层往往使用的逻辑回归模型,对于图像分类等多分类模型,Scoring层使用的Softmax模型。

小结

作为一个“Embedding+多层神经网络”的结构,在历史上是具有革命意义的,没有使用任何的人工特征,并且相对于FM/FFM等模型,做到了通过调整网络层数进行深度特征交叉。这也是Deep Crossing模型的名字由来。

参考

Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features

推荐系统实践 0x10 Deep Crossing的更多相关文章

  1. 推荐系统系列(五):Deep Crossing理论与实践

    背景 特征工程是绕不开的话题,巧妙的特征组合也许能够为模型带来质的提升.但同时,特征工程耗费的资源也是相当可观的,对于后期模型特征的维护.模型线上部署不太友好.2016年,微软提出Deep Cross ...

  2. 协同滤波 Collaborative filtering 《推荐系统实践》 第二章

    利用用户行为数据 简介: 用户在网站上最简单存在形式就是日志. 原始日志(raw log)------>会话日志(session log)-->展示日志或点击日志 用户行一般分为两种: 1 ...

  3. zz京东电商推荐系统实践

    挺实在 今天为大家分享下京东电商推荐系统实践方面的经验,主要包括: 简介 排序模块 实时更新 召回和首轮排序 实验平台 简介 说到推荐系统,最经典的就是协同过滤,上图是一个协同过滤的例子.协同过滤主要 ...

  4. 推荐系统实践 0x07 基于邻域的算法(2)

    基于邻域的算法(2) 上一篇我们讲了基于用户的协同过滤算法,基本流程就是寻找与目标用户兴趣相似的用户,按照他们对物品喜好的对目标用户进行推荐,其中哪些相似用户的评分要带上目标用户与相似用户的相似度作为 ...

  5. 推荐系统实践 0x0b 矩阵分解

    前言 推荐系统实践那本书基本上就更新到上一篇了,之后的内容会把各个算法拿来当专题进行讲解.在这一篇,我们将会介绍矩阵分解这一方法.一般来说,协同过滤算法(基于用户.基于物品)会有一个比较严重的问题,那 ...

  6. 推荐系统实践 0x09 基于图的模型

    用户行为数据的二分图表示 用户的购买行为很容易可以用二分图(二部图)来表示.并且利用图的算法进行推荐.基于邻域的模型也可以成为基于图的模型,因为基于邻域的模型都是基于图的模型的简单情况.我们可以用二元 ...

  7. Spark推荐系统实践

    推荐系统是根据用户的行为.兴趣等特征,将用户感兴趣的信息.产品等推荐给用户的系统,它的出现主要是为了解决信息过载和用户无明确需求的问题,根据划分标准的不同,又分很多种类别: 根据目标用户的不同,可划分 ...

  8. 基于Neo4j的个性化Pagerank算法文章推荐系统实践

    新版的Neo4j图形算法库(algo)中增加了个性化Pagerank的支持,我一直想找个有意思的应用来验证一下此算法效果.最近我看Peter Lofgren的一篇论文<高效个性化Pagerank ...

  9. 推荐系统实践 0x05 推荐数据集MovieLens及评测

    推荐数据集MovieLens及评测 数据集简介 MoiveLens是GroupLens Research收集并发布的关于电影评分的数据集,规模也比较大,为了让我们的实验快速有效的进行,我们选取了发布于 ...

随机推荐

  1. bugku-PHP_encrypt_1(ISCCCTF)

    前言 懒得写详细wp了.... 我佛了 这个题纠结好久......... 前言 需要解密的密文: fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA ...

  2. CENTOS 6 配置 yum 安装 nginx

    摘要: 本文介绍如何用yum源安装Nginx,比编译安装简单很多 1.在/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo: cd /etc/yum.repos.d/ vi ...

  3. redhat-DHCP服务的配置与应用

    DHCP服务器为客户端提供自动分配IP地址的服务,减轻网管的负担 首先 rpm -q dhcp 查看是否安装dhcp yum -y install dhcp进行安装 安装完成 dhcp服务配置 dhc ...

  4. Codeforces741D

    dsu on tree 题目链接 点我跳转 题目大意 一棵根为 \(1\) 的树,每条边上有一个字符(\(a-v\)共\(22\)种) 一条简单路径被称为Dokhtar-kosh当且仅当路径上的字符经 ...

  5. 在线思维导图Ayoa可以用来梳理双十一优惠规则哦

    一年一度的双十一又要来了,小伙伴们是否准备好开始买买买了呢?今年双十一,遇上英雄联盟S10总决赛,1/4决赛苏宁对上京东也让这个"电商大战"产生了很多有趣的梗.当然在玩梗的同时,广 ...

  6. FL Studio水果音乐制作入门教程

    "没有早期音乐教育,干什么事我都会一事无成".这并非某位音乐家精心熬制的心灵鸡汤,而是出自物理学家爱因斯坦之口,朋友们没有看错,就是那个被称为二十世纪伟大科学家的爱因斯坦,所以,别 ...

  7. bash反弹shell检测

    1.进程 file descriptor 异常检测 检测 file descriptor 是否指向一个socket 以重定向+/dev/tcp Bash反弹Shell攻击方式为例,这类反弹shell的 ...

  8. python -- 对list去重并找出列表list中的重复元素

    一.一个列表中可能含有重复元素,使用set()可以实现列表的去重处理,但是无法知道哪些元素是重复的,下面的函数用于找出哪些元素重复了,以及重复的次数. 代码: from collections imp ...

  9. 饱含辛酸开发 WPF CustomControl

    引言 不知不觉间WPF开发已有两年光景,或许有很多人会问WPF还需要学习吗?WPF还有前途吗?其实我也很担心这个问题. .Net Core3.x已经支持WPF开发,.Net 5也宣布要支持WPF.是否 ...

  10. 转:Python2字符编码问题汇总

    这篇文章的部分问题在Python3以后不再存在,老猿只是觉得文章的部分内容还是有参考价值,因此在此原文转发连接: Python2字符编码问题汇总