DCN
DCN是DeepFM的升级版,后者是只能做二阶交叉特征,随着阶数上升,模型复杂度大幅提高,且FM网络层较浅,表达能力有限。google团队通过构建深度交叉网络来自动进行特征的高阶交叉,且时空复杂度均为线性增长,极大提升了模型性能。
模型结构
整体网络结构跟DeepFM类似:
特征交叉细节:
代码实现
代码其实非常简单:
1 | def cross_net(self, inputs): |
这里的 cross
其实是相当于学习残差。
实验结果
就随便看看吧,baselines提到了FM、LR,但只字不提跟它们的性能比较,无语。。。(Wide&Deep依赖于大量人工先验来选择交叉特征,DCN只跟自动交叉特征的方法比,例如FM等)