「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 结合起来。
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:#
表达式:
x0 均参与每层的 cross 操作。CrossNet 设计目的在于发现高阶组合特征,然而本文却发现这个网络并不能有效的发现高阶组合特征。证明如下:
第 i+1 层定义如下:
,输出为 xk
假设 k=1,
其中
,实际上可发现 x1 与 x0 是线性关系。
那么当 k=i+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 协议》,转载必须注明作者和本文链接