推荐系统实践 0x10 Deep Crossing

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

特征

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

  • 查询。
    用户在搜索框中输入的文本字符串
  • 关键字
    与产品相关的文本字符串,广告主添加的其产品描述词
  • 标题
    赞助广告的标题(简称为"广告",以下简称 "广告"),由广告主指定,以获取关注度
  • 落地页
    用户点击了相应的广告之后进入的页面
  • 匹配类型
    给广告商的一个选项,包括精准匹配、短语匹配、语义匹配等等
  • 点击
    显示是否有一个印象被点击用户的点击。点击通常会与运行时的其他信息一起被记录下来
  • 点击率
    广告的历史点击率
  • 点击预测
    平台的关键模式,即预测用户点击给定广告的可能性。
  • 广告计划
    广告主创造的投放广告的计划、包括预算、定向条件等
  • 曝光样例
    一个广告“曝光”的例子,记录了广告在实际曝光场景的相关信息
  • 点击阳历
    一个广告“点击”的例子,记录了广告在实际点击场景的相关信息

模型结构

网络的主要模型结构如下图所示
推荐系统实践 0x10 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的残差的思想进行优化的网络结构。通过多层残差网络对特征向量的各个维度进行充分的交叉组合,使得模型能够捕捉到更多的非线性特征以及组合特征的信息,同时残差也使得网络变得更深以及更容易优化。下图就是一个残差单元的结构:
推荐系统实践 0x10 Deep Crossing

将原始的输入和通过网络层的输出进行逐元素相加,也被称为短路(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

发表评论

相关文章