前言
这算是Wide&Deep模型的一个补充吧,前面写了一篇文章推荐算法之Wide&Deep模型,本想着这两个模型合在一起写的,结果Deep&Cross模型都快写完了,断网了,没保存,只有前面的W&D模型(万字长文啊,心态炸裂)。休息了一会打算重开一个继续写吧,真的是难熬,关于前面总结的其余模型优劣点在这里就不说了,可以参考我前面的文章。还是老规矩,先上一下总体框架图吧。
关于这个模型其实就是对W&D中Wide部分进行改进的模型,前文中我们说过,W&D模型原理很简单,但是最主要的是要掌握W&D这种线性和非线性,处理高维稀疏向量和embedding稠密向量的方式,能够使得模型同时具有泛化能力和记忆能力。能够根据最新数据在最短时间内以最小的代价做出回应(更新参数)。
一、Deep&Corss模型
Deep&Cross模型是2017年由斯坦福大学和谷歌在ADKDD会议上联合提出的,该模型是对Wide&Deep模型的一种改进。由于Wide&Deep模型的Wide部分的特征交互需要特征工程,而手工设计特征工程非常的繁琐。2阶的FM模型在线性的时间复杂度中自动进行特征交互,但是这些特征交互的表现能力并不够,并且随着阶数的上升,模型复杂度会大幅度提高。所以作者对Wide部分进行更改,提出了一个Cross Network来自动进行特征之间的交叉,并且网络的时间和空间复杂度都是线性的。通过与Deep部分相结合,构成了深度交叉网络(Deep & Cross Network),简称DCN。模型的结构也非常简洁,从下往上依次为:Embedding和Stacking层、Cross网络层与Deep网络层并列、输出合并层,得到最终的预测结果。
可以看到,和W&D模型不同的是在embedding部分和Cross部分,在本文中也是着重讲一下这两部分。其中我打算先讲一下Cross层再讲embedding,原因后面再说(wink
二、Cross Network
这是本文最大的创新点---Cross网络(Cross Network),设计该网络的目的是增加特征之间的交互力度。交叉网络由多个交叉层组成,假设第l层的输出向量是,那么对于第l+1层的输出向量表示为: