特征工程是许多预测问题成功的关键,但这一过程需要大量人力开销并且依赖于经验知识。DNN是解决这一问题的方法,但这种方法表示特征之间的交互是隐式。本篇论文提出的Deep & Cross Network (DCN)在保证了DNN对于特征交互的基本表示的同时,通过引入cross network使得其在特定阶数的交互关系时更加节省空间,并用CTR实验证明了DCN的这一特性。
CTR(Click-through rate)
是广告推荐领域关注的指标,它关系到广告投放地点等推荐策略的重大决策。然而,使用机器学习模型预测CTR是困难的,原因在于这个机器学习任务中的特征高维且稀疏,简单将特征拼接在一起后进入一个神经网络学习效率低,因此在推荐系统领域会使用交叉特征来提升后续模型的效率1。
早期的特征交互耗费大量人力,这种方法可以得到显式且有高解释性的交叉特征,但成本高不适合广泛使用。因而后续DNN
被直接简单粗暴地使用在编码交叉特征的模型中,这种模型虽然可以天然学出交叉特征,但这种交叉特征却是隐式的,并且DNN
也被发现不能够高效提取交叉特征。后续发展出了一些显式提取交叉特征、且脱离人的经验的模型,它们分为3类。本文提出的DCN
属于深度特征交互中的一种。
DCN
中的交互特征指cross network
中的每层输出,即
x
1
,
x
2
.
.
.
x_1, x_2...
x1,x2...,在计算这些中间输出的过程中,起到关键作用的
w
c
,
0
w_{c,0}
wc,0则代表了交叉系数的强度,随着层数增加,中间输出代表的交叉特征的阶数也随之增加。
DCN
主要包括4个模块:Embedding and stacking layer
、Cross network
、Deep network
和Combination output layer
。本文核心创新点在于Cross network
的设计。
与传统的神经网络不同,Cross network
中权重和原始层
x
0
x_0
x0以及上一层的输出结果相乘得到该层多学到的交叉特征与上一层的结果相加。
x
l
+
1
=
x
0
x
l
T
w
l
+
b
l
+
x
l
=
f
(
x
l
,
w
l
,
b
l
)
+
x
l
x_{l+1} =x_0 x_l^T w_l+b_l+x_l=f(x_l,w_l,b_l )+x_l
xl+1=x0xlTwl+bl+xl=f(xl,wl,bl)+xl
论文从3个方面解释cross network
的有效性:多项式拟合、与FM(Factorization Machines)
的关系、映射关系。
本文数学证明了cross network
等价于一个交叉特征的多项式,并且cross network
的巧妙设计使得多项式的表达更加高效2。
与FM
类似,DCN
也通过给2层之间的乘法加个权重来实现特征交叉。不同点在于FM3的权重计算基于向量乘法,而DCN
则通过层传递矩阵乘法叠加而得到真实的交叉特征权重。
每个cross network
实现的功能是计算
x
l
x_l
xl和
x
0
x_0
x0的交叉特征,其本质是计算任意层
x
i
x_i
xi和
x
j
x_j
xj的交互特征,DCN
利用了网络结构的特点实现了高效计算每个
x
i
x_i
xi和
x
j
x_j
xj的权重。
本文主要通过CTR
数据集上的表现来实验证明模型有效,实验结果证明DCN
可以取得更好的准确性,同时与DNN
比起网络结构更加高效,使用更少的参数能达到更好的结果。
定理3.1其实本质是说明cross network相当于给
x
0
x_0
x0向量的每一个维度做多项式变换:这个多项式中的每一项是该维度和其他维度乘积的次方,用数学公式表达为:
∑
α
c
α
(
w
0
,
w
1
,
.
.
.
w
l
)
x
1
α
1
x
2
α
2
.
.
.
x
d
α
d
∣
0
<
=
∣
α
∣
<
=
l
+
1
,
α
∈
N
d
{\sum_\alpha c_\alpha(w_0, w_1, ...w_l)x_1^{\alpha_1}x_2^{\alpha_2}...x_d^{\alpha_d} | 0 <= |\alpha| <= l+1, \alpha\in N^d}
α∑cα(w0,w1,...wl)x1α1x2α2...xdαd∣0<=∣α∣<=l+1,α∈Nd
其中,
x
=
[
x
1
,
⋅
⋅
⋅
,
x
d
]
T
x=[x_1,···,x_d]^T
x=[x1,⋅⋅⋅,xd]T是一个
d
∗
1
d*1
d∗1的向量。
文中证明分2步:首先引入 g l ( x 0 ) : = x l T w l g_l(x_0):=x_l^T w_l gl(x0):=xlTwl并计算 g l ( x 0 ) g_l(x_0) gl(x0)的 x 0 x_0 x0, w 0 → l − 1 w_{0 \rightarrow l-1} w0→l−1表示,接着由 g l ( x 0 ) g_l(x_0) gl(x0)得到 x l x_l xl的表示。