1.背景
Wide and deep 模型是 TensorFlow 在 2016 年 6 月左右发布的一类用于分类和回归的模型,并应用到了 Google Play 的应用推荐中。wide and deep 模型的核心思想是结合线性模型的记忆能力(memorization)和 DNN 模型的泛化能力(generalization),在训练过程中同时优化 2 个模型的参数,从而达到整体模型的预测能力最优。
记忆(memorization)即从历史数据中发现item或者特征之间的相关性。
泛化(generalization)即相关性的传递,发现在历史数据中很少或者没有出现的新的特征组合。
2.原理
2.1 网络结构
![](https://img.haomeiwen.com/i1500965/e5896703dd49b541.png)
可以认为:WideDeep = LR + DNN
2.2 推荐系统
![](https://img.haomeiwen.com/i1500965/5ea892380a0015c9.png)
流程:
- query召回 100 个 相关的items;
- 根据query+items+用户日志学习排序模型;
- 利用 2 的模型,对 1 中召回的items排序,先去top10 推荐给用户;
论文主要讲排序的部分,排序时使用到的特征:
- user features (e.g., country, language, demographics);
- contextual features (e.g., device, hour of the day, day of the week);
- impression features (e.g., app age, historical statistics of an app).
2.3 The Wide Component
wide部分就是LR,LR的输入特征包括了原始特征和交叉特征;
交叉特征的定义:
![](https://img.haomeiwen.com/i1500965/d30ec9dbe4829fbe.png)
在论文中,当x_i = 1 x_j = 1 其他值都是 0 时,就添加一个交叉特征 1 ,由于输入的x是one-hot类型,交叉特征可以理解为任意两个特征的乘积。
2.4 The Deep Component
Deep部分就是一个MLP,隐藏层的激活函数使用了ReLUs = max(0, a)。MLP的输入包括了连续的特征和 embedding特征,对于每个field embedding特征采样随机初始化的方式。
2.5 joint training
![](https://img.haomeiwen.com/i1500965/13fa11d119bb20b7.png)
joint training指同时训练Wide模型和Deep模型,并将两个模型的结果的加权作为最终的预测结果:
![](https://img.haomeiwen.com/i1500965/fb5866cf220fe233.png)
在论文实验中,训练部分,Wide使用Follow-the-regularized-learder(FTRL)+L1正则, Deep使用了AdaGrad。
2.6 实验结果:
![](https://img.haomeiwen.com/i1500965/f16abe3b3ffde0c9.png)
wide和deep 对于推荐系统都很重要。 Wide 线性模型可以通过交叉特征记忆稀疏特征;Deep模型可以通过embedding 生成看不见的特征。
3.源码
tf 没有使用过,最近计划好好研究一下。
网友评论