ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-01-29 18:00:20  阅读:666  来源: 互联网

标签:Wide 特征 模型 WDL 神经网络 embedding 排序 APP


今天回顾一下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编码。

  • 相同ID空间的高维稀疏特征 比如用户安装的APP类别和当前展现的APP类别,属于相同的ID空间(这属于同一个field, 每个field的embedding是一样的),这类特征应该使用相同的embdding,这样可以减少模型参数和训练时间。
  • multi-hot高维稀疏特征 比如用户安装的APP,一个用户可以安装多个,这类特征的处理使用embedding + average/sum pooling的方式,映射到固定维度。

 

  • 多值的可变类别特征 比如用户在多个APP上的使用率(每天点击的概率),这类特征可以使用embedding + weight pooling的方式。
  • 连续值处理 和大多数DL模型一样,WDL对于输入特征的尺度和分布非常敏感,连续值特征归一化处理对DL模型的收敛非常关键

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有