「xDeepFM」- 论文摘要

1、前言#

基于 DNN 的分解机模型,能够发现低阶和高阶组合特征,在 bit-wise level 上,本文提出了 Compressed Interaction Network (CIN) 网络结构,目的在生成的特征在 vector-wise level 上,CNN 和 RNN 的功能应用到了 CIN 上,进一步将 CIN 和 DNN 结合,将此网络称为 xDeepFM。

2、CTR 整体发展情况介绍#

对于 CTR 方面的输入一般具有高维度高度稀疏的特点,传统的做法即采用 LR 来进行预测,效果也很不错,但达到瓶颈后很难进行提升了,由于 LR 需要进行人工特征工程,所以效率会有点低,而且在达到瓶颈后无论加减特征效果都会下降,后来 2010 年提出 FM 模型,能够自动发现二阶组合特征,但是发现高阶组合特征的复杂度太大,所以 FM 仅用来发现二阶组合特征。2014 年 Facebook 提出 GBDT+LR 的融合方案,简单的来说由于 GBDT 本身可以发现多种有区分性的特征以及特征组合,决策树的路径可以直接作为 LR 输入特征使用,省去了人工寻找特征、特征组合的步骤。所以可以将 GBDT 的叶子结点输出,作为 LR 的输入。为了自动去发现组合特征以及减少人工特征工程的复杂性,相继提出了 Wide&Deep,Deep&Cross,FNN,AFM,PNN,DIN,DeepFM 等网络模型。

3、xDeepFM#

由于 Deep&Cross Network 中的 cross network 实际上无法有效的捕获高阶组合特征,因此本文设计出一个新的网络 CIN 来代替 DCN 中的 cross network 部分,所以 xDeepFM 的提出实际上是在 DCN 的基础上进行改进的,而且 CIN 可以具体指定最高多少阶。 特征组合在向量级别(向量组相互交叉)上而不是在位级别(各个位的值为 1 时的交叉结果,AND (userId=1,gender=1))上 (features interact at the vector-wise level rather than the bit-wise level)。

xDeepFM 结构图:

3.1、Embedding Layer#

embedding 层是将原始高维度高度稀疏的特征进行降维,转化从 dense vector。对于单值特征,例如 gender=[1,0],the feature embedding is used as the field embedding。如果是多值特征,例如 interests=comedy&rock,interests=[0,1,0,0,1,0….], the sum of feature embedding is used as the field embedding。最后将各个 embedding vector 结合起来。

e=[e1,32,,3m]e = [e_1, 3_2, …, 3_m]

3.2、High-order Interactions#

3.2.1、DeepFM + PNN 组合网络结构:#

从图中可以发现此模型共享 Embedding 层,而且此结构中包含两种组合特征的方式,所以该模型在组合特征上既包括向量级别上也包括位级别上,其中的 Product Layer 是在向量级别上进行两两相乘,FM Layer 是在位级别上进行相乘。PNN 和 DeepFM 的主要区别在于 PNN 将 Product 层的输出连接到 DNN,而 DeepFM 将 FM 层直接连接到输出单元。

3.2.2、CrossNet:#

表达式:

xk=x0xk1Twk+bk+xk1x_k = x_0 x^T_{k-1} w_k +b_k +x_{k-1}

x0 均参与每层的 cross 操作。CrossNet 设计目的在于发现高阶组合特征,然而本文却发现这个网络并不能有效的发现高阶组合特征。证明如下:
第 i+1 层定义如下:

xi+1=x0xiTwi+1+xix_{i+1} = x_0x^T_i w_{i+1} +x_i

,输出为 xk
假设 k=1,

x1=x0(x0Tw1)+x0=x0(x0Tw1+1)=α1x0 \begin{matrix} x_1 &= x_0 (x_0 ^Tw_1) +x_0 & \\ &= x_0(x^T_0w_1 +1) & \\ & =\alpha^1x^0 & \end{matrix}

其中

α1=x0Tw1+1\alpha ^1 = x^T_0w_1 +1

,实际上可发现 x1 与 x0 是线性关系。
那么当 k=i+1 时,有:

xi+1=x0xiTwi+1+xi=x)((αix0)Twi+1)+αix0=αi+1x0\begin{matrix} x_{i+1}& = x_0x_i^T w_{i+1} +x_i\\ &=x_)((\alpha^ix_0)^Tw_{i+1}) +\alpha ^ix_0\\ &= \alpha^{i+1} x_0 \end{matrix}

其中

αi+1=αi(x0Twi+1+1)\alpha ^{i+1} = \alpha^i(x^T_0w_{i+1} +1)

,xi+1 与 x0 还是线性关系,所以该网络本身无法有效的发现高阶组合特征。

3.3、Compressed Interaction Network(CIN)#

结构图:

CIN 侧重在以下方面:

在向量级别上进行特征组合(相乘),而不是在位级别上
可以指定最高多少阶
明确高阶组合特征,而不是像 CrossNet 一样,存在线性关系。

经过 Embedding 层后得到 x0,其以一张图的形式表示出来,形状大小为 m X D,其中 m 由多个经过 embedding 后得到的 (embedding) field vector 组成,D 的大小为 field feature 的大小。设 CIN 结构有 k 层,每层的输出结果为 xk,xk 的结果与 x0 和 xk-1 有关,其计算公式为:

,里面包含 Hadamard 乘积(◦ 的含义),即⟨a1 ,a2 ,a3 ⟩ ◦ ⟨b1 ,b2 ,b3 ⟩ = ⟨a1 b1 ,a2 b2 ,a3 b3 ⟩ 。表达式含义:xk-1 的每一行 i 和 x0 的每一行 j 进行相乘,然后乘上权重

的对应项!$W^{k,h}_{ij}$,最后求总和得到 xk 的值。Hk 表示第 k 层的 embedding vector 的个数。H0=m,由此公式可知道,此操作方法与 RNN 类似,下一层的输入依赖前一层的结果。本文引入了 CNN 的方式来解释此公式,将 xk 看成 image,把!$W^{k,h}$ 看成卷积核,这样以卷积操作的形式构成下一个 image。

根据图 (c),我们发现还需要对 CIN 中每层进行 sum pooling 操作,公式:

,表示第 i 层中每个 embedding vector 进行求和,得到!$p^{k}_{i}$。将 1~k 层的 pooling 结果进行 concat,即

。如果我们直接使用 CIN 进行二分类,则加入 sigmoid 层,计算公式:

3.4、Combination with Implicit Networks#

根据 xDeepFM 结构图得到,如下公式:

损失函数为 logloss:

加入正则项,防止过拟合,最后目标函数为:

本作品采用《CC 协议》,转载必须注明作者和本文链接
文章!!首发于我的博客 Stray_Camel (^U^) ノ~YO