CTR 系列文章:
- 广告点击率(CTR)预测经典模型 GBDT + LR 理解与实践(附数据 + 代码)
- CTR经典模型串讲:FM / FFM / 双线性 FFM 相关推导与理解
- CTR深度学习模型之 DeepFM 模型解读
- 【CTR模型】TensorFlow2.0 的 DeepFM 实现与实战(附代码+数据)
- CTR 模型之 Deep & Cross (DCN) 与 xDeepFM 解读
- 【CTR模型】TensorFlow2.0 的 DCN(Deep & Cross Network) 实现与实战(附代码+数据)
- 【CTR模型】TensorFlow2.0 的 xDeepFM 实现与实战(附代码+数据)
本篇文章讲解 CTR 经典模型 Deep & Cross (DCN) 与 xDeepFM,之所以把这两个模型放一起讲是因为它们有很近的“血缘关系”。理解了 DCN 的思想,再去理解 xDeepFM 就不觉得困难了。
以下文章对这两个模型的讲解很到位:
首先了解揭秘 Deep & Cross : 如何自动构造高阶交叉特征
推荐系统遇上深度学习(二十二)–DeepFM升级版XDeepFM模型强势来袭!
xDeepFM:名副其实的 ”Deep” Factorization Machine
因此,本文主要是对上述文章内容的梳理。
Deep & Cross (DCN)
首先来看看网络结构:
首先来看看网络的输入部分。元素特征需要做如下处理:
-
对sparse特征进行embedding,对于multi-hot的sparse特征,embedding之后再做一个简单的average pooling;
-
对dense特征归一化,然后和embedding特征拼接,作为随后Cross层与Deep层的共同输入:
x 0 = [ x e m b e d , 1 T , x e m b e d , 2 T , . . . x e m b e d , k T , x d e n s e T ] T x_0 = [x^T_{embed, 1},x^T_{embed, 2},...x^T_{embed, k},x^T_{dense}]^T x0=[xembed,1T,xembed,2T,...xembed,kT,xdenseT]T
接下来看看 Cross 部分。
上图中模型的左半部分是包含了许多层的 Cross network,目标是以显式、可控、高效的方式自动构建有限高阶交叉特征。其中第 l + 1 l + 1 l+1 层的计算过程为:
x l + 1 = f ( x l , w l , b l ) + x l = x 0 x l T w l + b l + x l x_{l+1} = f(x_l, w_l, b_l)+x_l =x_0x^T_lw_l + b_l + x_l xl+1=f(xl,wl,bl)+xl=x0xlTwl+bl+xl
其中, x l + 1 , x l , x 0 x_{l+1}, x_l, x_0 xl+1,xl,x0 是 d 维向量。计算过程有两个特点:
- 输出神经元个数与输入网络的 x 0 x_0 x0 维度相同;
- 每一层的 f f f 都是在拟合 x l + 1 − x l x_{l+1} - x_l xl+1−xl 的残差,这样可以减缓梯度消失问题,使得网络更深。
为什么这么设计呢?先看一些计算的例子:
假设 Cross 网络有两层, x 0 = [ x 0 , 1 x 0 , 2 ] T x_0 = [x_{0, 1} x_{0, 2}]^T x0=[x0,1x0,2]T,为方便讨论令 b i = 0 b_i = 0 bi=0,则有:
x 1 = x 0 x 0 T w 0 + x 0 = [ x 0 , 1 x 0 , 2 ] [ x 0 , 1 , x 0 , 2 ] [ w 0 , 1 w 0 , 2 ] + [ x 0 , 1