Deep & Cross Network(DCN)在 2017 年由 google 和 Stanford 共同发表的一篇论文中被提出,类似于Wide & Deep Network(WDL),是用负杂网络预估CTR的一种方法。
特征工程一直是许多预测模型成功的关键。许多有效的特征都来自于原始特征的交叉组合。在WDL中,wide侧的交叉组合特征依然需要依靠hand-craft来完成。而DCN能对sparse和dense的输入自动学习特征交叉,可以有效地捕获有限阶(bounded degrees)上的有效特征交叉,无需人工特征工程或暴力搜索(exhaustive searching),并且计算代价较低。
本文在详细介绍Deep & Cross Network网络结构的基础上,给出了高效实现DCN模型的tensorflow代码,主要点出了网络上一些主流实现中常犯的错误,让你真正能够在企业级的生产环境中玩转DCN模型。
DCN网络结构DCN模型以一个嵌入和堆叠层(embedding and stacking layer)开始,接着并列连一个cross network和一个deep network,接着通过一个combination layer将两个network的输出进行组合。
嵌入和堆叠层考虑具有稀疏和稠密特征的输入数据。在网络规模推荐系统的CTR预测任务中,输入主要是分类特征,如“country=usa”。这些特征通常是编码为独热向量如[0,1,0];然而,这通常会产生超高维度的特征空间。
为了减少维数,我们采用嵌入过程将这些二进制特征转换成实数值的稠密向量(通常称为嵌入向量):
这一部分在tensorflow中,使用tf.feature_columnAPI可以很容易实现,大致代码结构如下:
交叉网络交叉网络的核心思想是以有效的方式应用显式特征交叉。交叉网络由交叉层组成,每个层具有以下公式:
总结DCN主要有以下几点贡献:
提出一种新型的交叉网络结构,可以用来提取交叉组合特征,并不需要人为设计的特征工程;这种网络结构足够简单同时也很有效,可以获得随网络层数增加而增加的多项式阶(polynomial degree)交叉特征;十分节约内存(依赖于正确地实现),并且易于使用;实验结果表明,DCN相比于其他模型有更出色的效果,与DNN模型相比,较少的参数却取得了较好的效果。源代码Github
论文阅读Deep & Cross Network for Ad Click Prediction