编程语言
首页 > 编程语言> > 推荐系统 - 排序算法 - 神经网络:WDL

推荐系统 - 排序算法 - 神经网络:WDL

作者:互联网

今天回顾一下Google在2016年提出的模型:WDL(Wide & Deep Learning for Recommender Systems),WDL模型巧妙的将传统的特征工程与深度模型进行了强强联合。WDL一出,一下引爆了深度学习模型在推荐系统的应用,随后沿着WDL的思路相继出了多个模型,如PNN/DeepFM/DCN/xDeepFM等。直到今天,WDL依然作为很多公司落地深度学习模型的首要选择,之后再在上面做各种迭代。

一、推荐系统架构

Google的论文里面不仅介绍了WDL模型,还顺带给我们展示了一下推荐系统的架构。上图是推荐系统的架构图,记录了一次query请求的全过程。一个query请求过来,会先进行检索Retrieval,从上万个候选集里面选出少量的100条数据(一般是规则或者粗排),然后通过ranking进行打分并排序,最后把排好序的结果经过策略/屏控选出10条数据展现给用户,这就是推荐系统里面经典的召回->粗排->精排->策略流程,今天的推荐系统,大多也是这个流程。

二、模型结构

(黄色的圆圈表示原先的稀疏特征;灰色的代表embedding或者组合特征)

上图WDL的模型结构,可以看到包含两个部分。Wide部分是指人工先验的交叉特征,通过LR模型的形式做了直接的预测。右边Deep部分是前向神经网络,属于分组的学习方式。下面分别介绍下这两部分的实现。

3.1 The Wide Component

Wide部分就是通用的线性模型 y = w^Tx+b ,其中 w = [w_1, w_2, ... w_d]x = [x_1,x_2,...x_d] 分别表示模型参数和输入特征:

记号:

 

公式(1)中如果第i个特征参与了交叉则为1,否则为0。这样做可以捕获特征之间的交互关系,比如在新闻推荐中,用户信息和新闻类别的交叉,可以刻画用户对新闻的喜好。

3.2 The Deep Component

Deep部分是一个前向的神经网络,对于高维稀疏特征,首先转化为稠密的embedding,embedding的大小一般为10-100,然后Concatenated到一起喂给MLP,每一层的计算方式如下:

//

3.3 WDL联合训练

WDL使用FTRL训练Wide部分,使用AdaGrad训练Deep部分,对于二分类问题,模型预估函数表示为:

//

从上面可以看出WDL的结构并不复杂,但是却非常有效,是特征工程+LR往deep learning迁移的一次很好尝试,同时又保留了传统人工特征组合在模型中的作用。

Google在论文里面介绍了WDL在APP推荐中的具体应用,里面讲的连续特征处理以及高维稀疏特征降维方法一直沿用至今,下面介绍下具体怎么做的。

四、WDL应用实例

Google在论文里面介绍了APP推荐的一个案例,流程如图所示。这里面主要包含三个部分,Data GenerationModel TrainingModel Serving,今天Model Serving主要通过tf Serving方式部署,就不再介绍了,后面主要讲一下前面两个。

4.1 Data Generation

关于特征的处理,主要介绍下高维稀疏特征连续特征,对于取值少的类别特征,直接使用one-hot编码。

 

4.2 Model Training

图4是APP推荐场景的WDL模型结构,可以看到Wide部分只包含了用户安装过的APP和展现APP的交叉,而年龄、安装的APP数和设备类别等特征都只放在了Deep侧,实验会发现,如果把所有特征也都放在Wide侧,效果反而会变差。

从图4还可以看出,不同的特征是分开做embedding,embdding size可以不同。设想如果所有ID特征学习一个embedding,如果embedding size太小,便不足以客刻画信息本身,最后模型的参数空间就是 m*n ,假设特征空间 m = 1000w, n = 1000 ,那么模型参数就是百亿级别,对于计算和存储的要求太高了。而分组embedding再Concatenated,不仅不会损失信息,而且模型参数可以降低到1亿左右。

五、实验

tensorflow里面可以直接通过调用tf.estimator.DNNLinearCombinedClassifier实现WDL模型的训练和预测,在我们的数据上做了一下测试,训练样本3000万,测试样本1000万,和LR以及MLR两个模型做了对比,实验结果如表1所示。

表1:实验结果对比

从实验结果来看,WDL的AUC相比LR和MLR都有所提升,相比MLR提升0.38%

六、总结

Google在2016年推出的WDL是推荐系统里面非常经典的模型,里面有关特征交叉,模型融合,分组embedding的思路在今天也不过时,使得DL在推荐系统的应用迈出了一大步。我们部门早期也尝试了将WDL引入到实际业务中,最后效果提升显著,并成为了DL在我们业务中的第一个base model。

标签:Wide,特征,模型,WDL,神经网络,embedding,排序,APP
来源: https://blog.csdn.net/weixin_41332009/article/details/113396037