论文《Deep & Cross Network for Ad Click Predictions》
这篇文章的思想很简单。
wide&deep网络是在dnn旁加了一个需要特征工程的wide部分,
deep&cross则是在dnn旁加了一个cross network。
如上图所示,网络前面是常见的embedding层和连续feature拼接之后,送进deep&cross network。deep&cross network左边的部分就是整个结构的核心cross network。
cross network定义
cross network层与层之间的算子:
可见cross network显式地进行了特征之间的交叉组合,每一层在上一层的基础上进行矩阵乘法,很容易就获得高于二阶的特征组合。相比fm,可以获得更高阶的特征。相比wide&deep,不需要专门特征工程来获得高阶的交叉特征。
复杂度
另一方面,cross network所需要的参数只有上式w,b对应的dL2个参数(d是输入特征维度,L是cross network层数)。因此cross network相比dnn在计算复杂度上大大减少。这也是论文宣称的优点之一。
在代码实现上,embedding后size较大时, 显然会占用不少资源,得到的矩阵在和后面的w相乘,也是非常消耗计算资源的。由于矩阵满足交换率,可以先计算后面的 , 得到一个标量,标量再和 相乘,大大节省了计算复杂度。这也算deep&cross network在实现上的一个trick。
update:
实际应用了下cross network,在embedding层后面接了一层cross network。线上效果并不是很好。整体au基本持平,上涨千分之二。acp涨,ctr降。可能是接了一层cross network的缘故?需要更多层cross network才能发挥其优势。有待验证。