DCN模型
背景
特征交叉最早是基于 LR方法,通过人工设计交叉项作为LR的输入,这种方法原理简单,可解释性强,但对人工经验依赖强,且推荐场景的特征高维稀疏,导致LR难以学好稀疏特征的交叉性。
基于FM的方法通过引入隐向量的方式,不同交叉项之间可以共享隐向量,从而解决了LR中稀疏特征交叉项难学的问题,同时也可以通过模型对所有特征组合项学习,摆脱了对人工经验的强依赖,此外,FM方法经过计算优化,计算速度快,实现了特征自动显式交叉。基于FM的方法也存在明显的不足。这些方法的显式交叉往往只局限于二阶,更高阶的交叉会导致交叉项呈指数形式增加,计算复杂度高,使用成本高。推荐中数据交叉模式复杂,不仅限于二阶,如例1所示,而更高阶的数据交叉模式难以被FM这类方法挖掘出。
DCN系列的模型,整体的结构框架简单,采用Wide&Deep的设计思路,包括特征交叉(Cross Net)和DNN两部分结构。特征交叉部分实现特征的显式高阶交叉,其输出和DNN模块的输出结合,得到最终结果。
特征交叉部分是DCN系列模型的关键结构,它的核心思想是通过多层网络对特征向量进行加和乘等操作,得到特征的显式高阶交叉
DCN 网络结构
Embedding and Stacking Layer
一般情况下,模型输入主要有两类特征:dense feature、sparse feature
把每个 sparse feature field 压缩成一个embedding然后concat dense feature送入下一层
Cross Network
模型的中间部分包括:cross network、deep network
deep network 和其它模型没有什么不同
cross network的结构如下:
注意:这里的向量都是列向量
Combination Layer
Loss function
总结
DCN主要同过bit粒度的乘积、加和达到特征交叉的目的,并通过引入残差网络类似的实现高阶的交叉特征
DCN 优点:
- 实现了通过模型自动进行特征的显式高阶交叉,摆脱了对人工设计交叉特征的依赖;
- 特征交叉的阶数由cross net网络深度决定,灵活可调,一般设为3-4,可根据具体业务调整;
- 模型参数的增加量小,新增参数的复杂度为O(NL),和cross net的深度呈线性关系。
DCN 缺点:
- 特征交叉为bit-wise,忽略了特征的域信息,对该方法进行一定的改进,可以实现field-wise的特征交叉;
- 特征交叉中使用vector形式的参数,对的特征交叉项形成的feature map中所有行进行无差别的线性组合,无法使模型捕捉不同交叉项组合的差异性。
参考资料
https://zhuanlan.zhihu.com/p/597346245