引言
Deep & Cross模型来自于2017年的KDD论文:《Deep & Cross Network for Ad Click Predictions》。该模型可以看作是Wide & Deep模型的延续,着眼于解决特征交叉问题。
研究动机
传统的特征交叉都需要学者进行人工定义,过程较为繁琐。深度神经网络(DNNs)虽然可以自动完成特征交叉过程,节省了人工操作。但是,DNNs的特征交叉操作是自动且隐式(implicit)的:无法显式地判断哪些特征组合是有利的,并且对所有特征组合都进行计算,网络参数呈现爆炸趋势。
Deep & Cross的主要创新点就是提出了Cross Network,综合了人工定义和深度神经网络的优点,使用网络层权重进行有限的特征组合,既削减了网络参数,又达到人为控制交叉力度的目的。
上图是Deep & Cross的网络结构图。可以看出,原始的输入向量先通过一个Embedding层得到
x
0
x_0
x0 :
x
0
=
[
x
e
m
b
e
d
d
,
1
T
,
.
.
.
.
,
x
e
m
b
e
d
d
,
k
T
,
x
d
e
n
s
e
T
]
x_0 = [x_{embedd,1}^{T},....,x_{embedd,k}^{T},x_{dense}^{T}]
x0=[xembedd,1T,....,xembedd,kT,xdenseT]
然后分别通过 Deep Network和Cross Network。Deep Network的表达式是:
h
l
+
1
=
R
e
L
U
(
W
h
,
l
x
l
+
b
h
,
l
)
h_{l+1} = ReLU(W_{h,l}x_l+b_{h,l})
hl+1=ReLU(Wh,lxl+bh,l)
最后将两个部分的输出拼接在一起,使用交叉熵函数进行优化:
l
o
s
s
=
−
1
N
∑
i
=
1
N
y
i
l
o
g
(
p
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
p
i
)
+
λ
∑
l
∣
∣
w
l
∣
∣
2
loss = -\frac{1}{N}\sum_{i=1}^{N}y_ilog(p_i)+(1-y_i)log(1-p_i)+λ\sum_{l}||w_l||^2
loss=−N1i=1∑Nyilog(pi)+(1−yi)log(1−pi)+λl∑∣∣wl∣∣2
因为Deep Netowrk和Wide & Deep中一模一样,这里不再赘述。本文后续将重点介绍 Cross Network。
Cross Network
Cross Network中每一层的表达式如下:
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_0x_{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
其中,
x
0
x_0
x0是原始输入向量,
w
l
,
b
l
w_l,b_l
wl,bl是网络层权重。论文中也给出了上述式子的可视化:
上述式子中,Cross Network对输入向量
x
0
x_0
x0进行重复利用,既规避了DNNs参数过多的缺点,又保证了输入输出向量的变化不会过于剧烈。
同时,Cross Network也加入了残差链接,每层网络 f f f拟合的是残差 x l + 1 − x l x_{l+1}-x_l xl+1−xl,可以缓解梯度消失问题。
那么,Cross Network是如何做到人为控制特征交叉的程度呢?论文中给出了解释:特征交叉的多项式次数
d
d
d由Cross Network的层数
L
L
L决定,并且有以下关系式:
d
=
L
+
1
d=L+1
d=L+1。下面参考《揭秘 Deep & Cross : 如何自动构造高阶交叉特征》中的例子进行解释,假设各层的偏置
b
i
b_i
bi为零,可以得到:
从上述
x
1
、
x
2
x_1、x_2
x1、x2的表达式可以看出,
x
1
x_1
x1囊括了所有多项式次数
d
=
1
,
2
d=1,2
d=1,2的组合,
x
2
x_2
x2则囊括了所有多项式次数
d
=
1
,
2
,
3
d=1,2,3
d=1,2,3的组合,也就是前面提到的
d
=
L
+
1
d=L+1
d=L+1。
总结一下Cross Network的三个优点:
- 有限高阶。通过网络层数控制特征交叉的力度。
- 参数共享。例如,上图 x 1 x_1 x1中的 w 0 , 1 x 0 , 1 2 和 w 0 , 1 x 0 , 2 x 0 , 1 w_{0,1}x_{0,1}^2和w_{0,1}x_{0,2}x_{0,1} w0,1x0,12和w0,1x0,2x0,1共享了 w 0 , 1 w_{0,1} w0,1参数,这样设计的好处是参数的更新不会受限于某一对特征组合,缓解了数据稀疏的问题。
- 自动进行特征交叉。每增加一层网络层,都囊括了该次数下的所有特征组合。
同时,论文中还对比了Deep部分和Cross部分的参数复杂度,发现Cross参数复杂度小了一个量级,在实际工业应用中颇具吸引力。
结论
Deep & Cross着眼于特征交叉,设计了独特的Cross Layer,对特征进行显式、有限度的组合,缓解了数据稀疏问题,提升了模型的推荐效果。