1、简介
Wide and deep 模型是 TensorFlow 在 2016 年 6 月左右发布的一类用于分类和回归的模型,并应用到了 Google Play 的应用推荐中。详见论文: Wide & Deep Learning for Recommender Systems
Wide and deep 是一种融合浅层(wide)模型和深层(deep)模型进行联合训练的框架,综合利用浅层模型的记忆能力和深层模型的泛化能力,实现单模型对推荐系统准确性和扩展性的兼顾。
wide and deep 模型的核心思想是结合线性模型的记忆能(memorization)和 DNN 模型的泛化能力(generalization),在训练过程中同时优化 2 个模型的参数,从而达到整体模型的预测能力最优。
- 记忆(memorization)即从历史数据中发现item或者特征之间的相关性。
- 泛化(generalization)即相关性的传递,发现在历史数据中很少或者没有出现的新的特征组合。
性能比较:
- 效果上,在Google Play 进行线上A/B实验,W&D模型相比高度优化的Wide浅层模型,app下载率+3.9%。相比deep模型也有一定提升。
- 性能上,通过切分一次请求需要处理的app 的Batch size为更小的size,并利用多线程并行请求达到提高处理效率的目的。单次响应耗时从31ms下降到14ms。
2、特征
2.1 稀疏特征
2.2 密集特征
3、分解
3.1 wide models
通俗来说,wide就是层数比较浅的是基础的线性模型,主要为传统模型中的基础特征和交叉特征。
在目前大规模线上推荐排序系统中,通用的线性模型如LR被广泛应用。线性模型通常输入二进制的one-hot稀疏表示特征进行训练。比如特征“user_installed_app=netflix”为1,表示用户已安装netflix。交叉特征AND(user_installed_app=netflix,impresion_app=Pandora)表示既安装了netflix app同时又浏览过Pandora的用户特征为1,否则为0。wide模型可以通过利用交叉特征高效的实现记忆能力,达到准确推荐的目的。wide模型通过加入一些宽泛类特征实现一定的泛化能力。但是受限与训练数据,wide模型无法实现训练数据中未曾出现过的泛化。
3.2 deep models
通俗来说,deep models就是层数比较深的前馈网络模型。特征换为低维稠密向量。
像FM和DNN这种Embedding类的模型,可以通过学习到的低纬度稠密向量实现模型的泛化能力,包括可以实现对未见过的内容进行泛化推荐。当模型query-item矩阵比较稀疏时,模型的会过分泛化,推荐出很多无相关性的内容,准确性不能得到保证。
4、实战
后面的博客将具体介绍wide&deep模型的多种程序:
函数API实现wide&deep模型:https://blog.csdn.net/caoyuan666/article/details/105928883
子类API实现wide&deep模型:
https://blog.csdn.net/caoyuan666/article/details/105929407
wide&deep模型多输入多输出:
https://blog.csdn.net/caoyuan666/article/details/105930238