美文网首页
Wide & Deep

Wide & Deep

作者: 山的那边是什么_ | 来源:发表于2018-08-11 21:11 被阅读713次

    1.背景

    Wide and deep 模型是 TensorFlow 在 2016 年 6 月左右发布的一类用于分类和回归的模型,并应用到了 Google Play 的应用推荐中。wide and deep 模型的核心思想是结合线性模型的记忆能力(memorization)和 DNN 模型的泛化能力(generalization),在训练过程中同时优化 2 个模型的参数,从而达到整体模型的预测能力最优。
    记忆(memorization)即从历史数据中发现item或者特征之间的相关性。
    泛化(generalization)即相关性的传递,发现在历史数据中很少或者没有出现的新的特征组合。

    2.原理

    2.1 网络结构


    可以认为:WideDeep = LR + DNN

    2.2 推荐系统


    流程:

    1. query召回 100 个 相关的items;
    2. 根据query+items+用户日志学习排序模型;
    3. 利用 2 的模型,对 1 中召回的items排序,先去top10 推荐给用户;

    论文主要讲排序的部分,排序时使用到的特征:

    1. user features (e.g., country, language, demographics);
    2. contextual features (e.g., device, hour of the day, day of the week);
    3. impression features (e.g., app age, historical statistics of an app).

    2.3 The Wide Component

    wide部分就是LR,LR的输入特征包括了原始特征和交叉特征;
    交叉特征的定义:



    在论文中,当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


    joint training指同时训练Wide模型和Deep模型,并将两个模型的结果的加权作为最终的预测结果:



    在论文实验中,训练部分,Wide使用Follow-the-regularized-learder(FTRL)+L1正则, Deep使用了AdaGrad。

    2.6 实验结果:


    wide和deep 对于推荐系统都很重要。 Wide 线性模型可以通过交叉特征记忆稀疏特征;Deep模型可以通过embedding 生成看不见的特征。

    3.源码

    tf 没有使用过,最近计划好好研究一下。

    4.参考文献

    1. 论文地址:https://arxiv.org/pdf/1606.07792.pdf
    2. 代码:https://github.com/tensorflow/tensorflow/blob/r1.3/tensorflow/examples/learn/wide_n_deep_tutorial.py
    3. FTRL:https://zhuanlan.zhihu.com/p/32903540
    4. AdaGrad:https://zhuanlan.zhihu.com/p/29920135

    相关文章

      网友评论

          本文标题:Wide & Deep

          本文链接:https://www.haomeiwen.com/subject/lcbdbftx.html