专栏首页AI科技时讯Wide&Deep: Wide & Deep Learning for Recommender System》

Wide&Deep: Wide & Deep Learning for Recommender System》

设为星标,第一时间获取更多干货

本文介绍 Google 发表在 DLRS 2016 上的文章《Wide & Deep Learning for Recommender System》。Wide & Deep 模型的核心思想是结合线性模型的记忆能力和 DNN 模型的泛化能力,从而提升整体模型性能。Wide & Deep 已成功应用到了 Google Play 的app推荐业务,并于TensorFlow中封装。该结构被提出后即引起热捧,在业界影响力非常大,很多公司纷纷仿照该结构并成功应用于自身的推荐等相关业务。

题外话,这里介绍下这个“年轻”的会议 DLRS :

DLRS 全称 Workshop on Deep Learning for Recommender Systems,2016举办第一届,旨在加速深度学习在RecSys社区中的传播和应用。深度学习已经在很多领域上取得巨大成功,会议组织相信它有潜力成为下一代推荐系统的核心,现在已经是将它们应用于RecSys的时候了。

一、Motivation

推荐系统的主要挑战之一,是同时解决Memorization和Generalization,理解这两个概念是理解全文思路的关键,下面分别进行解释。

  • Memorization

面对拥有大规模离散sparse特征的CTR预估问题时,将特征进行非线性转换,然后再使用线性模型是在业界非常普遍的做法,最流行的即「LR+特征叉乘」。Memorization 通过一系列人工的特征叉乘(cross-product)来构造这些非线性特征,捕捉sparse特征之间的高阶相关性,即“记忆” 历史数据中曾共同出现过的特征对。

例如,特征1——专业: {计算机、人文、其他},特征2——下载过音乐《消愁》:{是、否},这两个特征one-hot后的特征维度分别为3维与2维,对应的叉乘结果是特征3——专业☓下载过音乐《消愁》: {计算机∧是,计算机∧否,人文∧是,人文∧否,其他∧是,其他∧否}。

典型代表是LR模型,使用大量的原始sparse特征和叉乘特征作为输入,很多原始的dense特征通常也会被分桶离散化构造为sparse特征。这种做法的优点是模型可解释高,实现快速高效,特征重要度易于分析,在工业界已被证明是很有效的。Memorization的缺点是:

  1. 需要更多的人工设计;
  2. 可能出现过拟合。可以这样理解:如果将所有特征叉乘起来,那么几乎相当于纯粹记住每个训练样本,这个极端情况是最细粒度的叉乘,我们可以通过构造更粗粒度的特征叉乘来增强泛化性;
  3. 无法捕捉训练数据中未曾出现过的特征对。例如上面的例子中,如果每个专业的人都没有下载过《消愁》,那么这两个特征共同出现的频次是0,模型训练后的对应权重也将是0;
  • Generalization

Generalization 为sparse特征学习低维的dense embeddings 来捕获特征相关性,学习到的embeddings 本身带有一定的语义信息。可以联想到NLP中的词向量,不同词的词向量有相关性,因此文中也称Generalization是基于相关性之间的传递。这类模型的代表是DNN和FM。

Generalization的优点是更少的人工参与对历史上没有出现的特征组合有更好的泛化性 。但在推荐系统中,当user-item matrix非常稀疏时,例如有和独特爱好的users以及很小众的items,NN很难为users和items学习到有效的embedding。这种情况下,大部分user-item应该是没有关联的,但dense embedding 的方法还是可以得到对所有 user-item pair 的非零预测,因此导致 over-generalize并推荐不怎么相关的物品。此时Memorization就展示了优势,它可以“记住”这些特殊的特征组合。

Memorization根据历史行为数据,产生的推荐通常和用户已有行为的物品直接相关的物品。而Generalization会学习新的特征组合,提高推荐物品的多样性。论文作者结合两者的优点,提出了一个新的学习算法——Wide & Deep Learning,其中Wide & Deep分别对应Memorization & Generalization。

二、Model

  • 模型结构

Wide & Deep模型结合了LR和DNN,其框架图如下所示。

Wide 该部分是广义线性模型,即

,其中

表示原始特征与叉乘特征。

Deep 该部分是前馈神经网络,网络会对一些sparse特征(如ID类特征)学习一个低维的dense embeddings(维度量级通常在O(10)到O(100)之间),然后和一些原始dense特征一起作为网络的输入。每一层隐层计算:

,其中

是第

层的激活值、偏置和权重,

是激活函数。

损失函数 模型选取logistic loss作为损失函数,此时Wide & Deep最后的预测输出为:

其中

表示sigmoid函数,

表示叉乘特征,

表示NN最后一层激活值。

  • 联合训练

联合训练(Joint Training)和集成(Ensemble)是不同的,集成是每个模型单独训练,再将模型的结果汇合。相比联合训练,集成的每个独立模型都得学得足够好才有利于随后的汇合,因此每个模型的model size也相对更大。而联合训练的wide部分只需要作一小部分的特征叉乘来弥补deep部分的不足,不需要 一个full-size 的wide 模型。

在论文中,作者通过梯度的反向传播,使用 mini-batch stochastic optimization 训练参数,并对wide部分使用带L1正则的Follow- the-regularized-leader (FTRL) 算法,对deep部分使用 AdaGrad算法。

三、Experiment

实验场景 Google Play商店的app推荐中,当一个user访问Google Play,会生成一个包含user和contextual信息的query,推荐系统的精排模型会对于候选池中召回的一系列apps(即item,文中也称 impression)进行打分,按打分生成app的排序列表返回给用户。Deep&Wide对应这里的精排模型,输入

包括<user,contextual,impression>的信息,

=1表示用户下载了impression app,打分即

实验的Depp&Wide模型结构如下:

实验细节

  • 训练样本约5000亿
  • Categorical 特征(sparse)会有一个过滤阈值,即至少在训练集中出现m次才会被加入
  • Continuous 特征(dense)通过CDF被归一化到 [0,1] 之间
  • Categorical 特征映射到32维embeddings,和原始Continuous特征共1200维作为NN输入
  • Wide部分只用了一组特征叉乘,即被推荐的app ☓ 用户下载的app
  • 线上模型更新时,通过“热启动”重训练,即使用上次的embeddings和模型参数初始化

Wide部分设置很有意思,作者为什么这么做呢?结合业务思考,在Google Play商店的app下载中,不断有新的app推出,并且有很多“非常冷门、小众”的app,而现在的智能手机user几乎全部会安装一系列必要的app。联想前面对Memorization和Generalization的介绍,此时的Deep部分无法很好的为这些app学到有效的embeddding,而这时Wide可以发挥了它“记忆”的优势,作者在这里选择了“记忆”user下载的app与被推荐的app之间的相关性,有点类似“装个这个app后还可能会装什么”。对于Wide来说,它现在的任务是弥补Deep的缺陷,其他大部分的活就交给Deep了,所以这时的Wide相比单独Wide也显得非常“轻量级”,这也是Join相对于Ensemble的优势。

实验结果 通过3周的线上A/B实验,实验结果如下,其中Acquisition表示下载。

论文中也在Wide&Deep的性能方面给出了介绍和实验,这里不做叙述,简而言之,这是一个可以在工业界实际落地使用的模型,模型代码已经开源并封装于TensorFlow。

四、Conclusion

  1. 详细解释了目前常用的 Wide 与 Deep 模型各自的优势:Memorization 与 Generalization。
  2. 结合 Wide 与 Deep 的优势,提出了联合训练的 Wide & Deep Learning。相比单独的 Wide / Deep模型,实验显示了Wide & Deep的有效性,并成功将之成功应用于Google Play的app推荐业务。
  3. 目前Wide 结合 Deep的思想已经非常流行,结构虽然简单,从业界的很多反馈来看,合理地结合自身业务借鉴该结构,实际效果确实是efficient,我们的feeds流主模型也借鉴了该思想。

本文分享自微信公众号 - AI科技时讯(aiblog_research),作者:知乎

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何从机器学习数据中获取更多收益

    对于深度学习而言,合适的数据集以及合适的模型结构显得至关重要。选择错误的数据集或者错误的模型结构可能导致得到一个性能不佳的网络模型,甚至可能得到的是一个不收敛的...

    用户3578099
  • 机器学习能诊断病情,还能预测患者出院后的情况?

    随着数据量以及计算机性能的不断提升,机器学习技术正逐渐渗透于各行各业中。计算机视觉、自然语言处理、机器人等领域基本上已经被机器学习算法垄断,正逐步...

    用户3578099
  • GBDT+LR:Practical Lessons from Predicting Clicks on Ads

    本文主要介绍Facebook提出的CTR预估模型LR(Logistic Regression)+GBDT。当时深度学习还没有应用到计算广告领域,Facebook...

    用户3578099
  • 特征工程的黑色艺术

    想象一下,当今社会备受瞩目的人工智能和数据挖掘算法工程师每天大部分时间都在做什么呢?是花大量时间手推公式,还是思考各种trick对算法调参,还是一遍遍清洗数据和...

    小萌哥
  • 【机器学习】特征工程

    作者:JasonDing1354 引言 在之前学习机器学习技术中,很少关注特征工程(Feature Engineering),然而,单纯学习机器学习的算法流程,...

    陆勤_数据人网
  • 机器学习中模型优化不得不思考的几个问题

    ? 图1 机器学习工程师的知识图谱 图1列出了我认为一个成功的机器学习工程师需要关注和积累的点。机器学习实践中,我们平时都在积累自己的“弹药库”:分类、回归、...

    美团技术团队
  • 自主研发、不断总结经验,美团搜索推荐机器学习平台

    内容来源:2018 年 5 月 26 日,美团点评技术专家杨一帆在“饿了么技术沙龙·第25弹【搜索推荐】”进行《Why WAI: 美团点评搜索推荐机器学习平台》...

    IT大咖说
  • 你还在用“人工特征工程+线性模型”?

    作者:李沐M 11年的时候我加入百度,在凤巢使用机器学习来做广告点击预测。当时非常惊讶于过去两年内训练数据如此疯狂的增长。大家都在热情的谈特征,每次新特征的...

    机器学习AI算法工程
  • 数据挖掘竞赛的套路就在这里了,看完本文全明白!

    刚好在暑假通过参加 Kaggle 的 Zillow Prize 比赛来让我在数据挖掘和机器学习中完成了菜逼到 Level 1 的转变,借这个平台总结一下比赛的...

    AI研习社
  • 基于机器学习场景,如何搭建特征数据管理中台?

    理想的机器学习场景是给到数据,训练模型后就能直接上线服务。然而真实的 AI 应用落地过程非常复杂,并不是有数据、懂算法就可以了。

    AI科技大本营

扫码关注云+社区

领取腾讯云代金券