推荐系统(十七)——kdd'17「谷歌」deep cross network(DCN)

2022-09-19 11:49:26 浏览数 (1)

Deep & Cross Network for Ad Click Predictionshttps://dl.acm.org/doi/pdf/10.1145/3124749.3124754

背景

前一篇文章介绍了很多FM系列的方法,但是FM通过特征之间的两两关系来构建交叉特征,这些都是低阶特征组合。谷歌提出DCN,除了DNN部分,在显示构造特征的部分进行多层cross network进行特征的交叉。

方法

如图所示为DCN的结构示意图。通过embedding层将输入数据转换为embedding,然后右边部分是DNN部分,用于发掘特征之间的高阶关系,他能自动的进行特征交互,但是DNN是隐式的对所有特征值进行交互,不一定能学习到有效的特征交叉。右边部分则是采用显示的特征交叉来构建特征之间的相互关系。DeepFM中也是用类似的方法,不过缺点正如背景中所说的,因此本文提出了多层交叉的方式。

Cross Network

cross network就是交叉网络,即结构图中的左边部分。下式为交叉网络中每一层的计算方式,每一层计算的时候都是前一层的输出

x_l

和最初始的输入特征

x_0

做交叉,可视化如下图。

mathbf{x}_{l 1}=mathbf{x}_{0} mathbf{x}_{l}^{T} mathbf{w}_{l} mathbf{b}_{l} mathbf{x}_{l}=fleft(mathbf{x}_{l}, mathbf{w}_{l}, mathbf{b}_{l}right) mathbf{x}_{l}

交叉网络的特征交叉程度随着层数的加深而增大,如果交叉网络有L层,则交叉程度为L 1

DNN和Combination Layer

DNN部分就是多层前馈神经网络,

h_{l 1}=f(w_lh_l b_l)

。结合层:

p=sigmaleft(left[mathbf{x}_{L_{1}}^{T}, mathbf{h}_{L_{2}}^{T}right] mathbf{w}_{text {logits }}right)

,将交叉网络和DNN的输出结合起来,经过一层全连接层和sigmoid得到ctr预估。损失函数依旧是交叉熵损失函数,加上L2正则项。

总结

可以发现,DCN和FM系列还是有明显区别的。首先,FM系列做的特征交叉是比较低阶的,而DCN做的多层交叉使得整个交叉后的特征是高阶的。其次,FM系列在FFM之后都采用了Field的概念,分成不同的field来对特征做交叉,而DCN是对整个特征进行操作。

0 人点赞