1 引言
DeepFM通过FM显式引入了二阶特征交叉,提升了低阶特征交叉能力。但在推荐场景中,三阶、四阶甚至更高阶的特征交叉同样十分重要。比如在应用市场(如Google Play)推荐场景中,“年轻”的“男性”用户,对“射击类游戏App”下载率较高。此处特征组“用户年龄、用户性别、App类型”的三阶交叉,对标签“用户是否下载App”十分重要。有没有办法在模型中显式引入高阶特征交叉呢?有两种思路:
- 通过DNN深度神经网络。DNN具有高阶特征交叉能力,但交叉是隐式,而不是显式的。DNN由多层全连接网络构成,全连接本质上是对特征向量加权求和,即使堆叠多层,也很难拟合向量间的内积、外积等显式高阶操作。
- 引入更高阶的FM。FM通过内积操作,具备显式二阶特征交叉能力。那能否扩展到三阶、四阶甚至更高阶呢?理论上可行,但参数量和计算量会爆炸性提升。对于50个特征,二阶交叉有 种组合,尚且可以接受。三阶交叉有种组合,参数量爆炸,难以训练和上线。这也是为什么这么多年来,FM很难突破二阶的原因。
DCN则提出了另一种解决方案,理论上可以实现任意高阶特征的显式交叉,而且不会带来参数量的爆炸增长。论文由斯坦福大学和谷歌研究人员于2017年联合提出,全称“ Deep & Cross Network for Ad Click Predictions”[8]。
2 DCN模型结构
DCN同样采用异构模型,分为交叉网络(Cross network)和深度网络(Deep network)两部分,这也是其名字的由来。最底层是Embedding层和拼接层(Stacking layer),之上为并行的交叉网络和深度网络,最后利用一层逻辑回归融合二者并输出。模型整体结构和DeepFM比较相似,如图4-9所示。
DCN的深度网络与Wide & Deep、DeepFM相似,就不再赘述。重点看交叉网络是怎么实现的。交叉网络的输入为拼接好的特征Embedding向量,如图4-9最下边方框所示。网络可堆叠多层,理论上不限制。每层的计算过程如公式4-20所示。
3 DCN总结和思考
DCN看起来很美好,但其实也存在不少问题,在业界有不少争议。主要有:
- 它对所有特征向量拼接后,再整体进行外积交叉,其操作是element-wise的。而不是像FM那样先在特征间交叉,再累加起来,也就是vector-wise的。同一特征向量内的各元素,应该整体考虑,被同等对待,故采用vector-wise的方式进行特征交叉更为合理。另外,特征向量间交叉是具备实际物理意义的,比如向量内积代表了两者的余弦相似度。而DCN的这种交叉则不具备实际物理意义。
- DCN仅使用少量的参数就可以实现显式高阶特征交叉,其模型容量十分有限,不得不让人怀疑。最直接的,一层的DCN其实并不能退化为FM网络。
不过,DCN关于“显式高阶特征交叉”的思考,还是非常值得学习的。其交叉网络的设计,虽然有一定缺陷,但也值得借鉴。后续DCN-V2、xDeepFM等模型给出了更为合理的解决方案。
4 作者新书推荐
历经两年多,花费不少心血,终于撰写完成了这部新书。本文在4.7节中重点阐述了。
源代码:扫描图书封底二维码,进入读者群,群公告中有代码下载方式
微信群:图书封底有读者微信群,作者也在群里,任何技术、offer选择和职业规划的问题,都可以咨询。
详细介绍和全书目录,详见
《精通推荐算法》,限时半价,半日达https://u.jd.com/VbCJsCz