【Wide & Deep Learning for Recommender Systems】

说些废话

 

       最近开始接触深度学习的东西,有些无从下手,需要学的东西太多了。另外感觉很久没写过博客了,很有些怀念当初在实验室一起学习一起训练的日子。嗯不出意外的话,准备将这一阶段的学习记录同步到博客,也给自己加深印象。

        这篇论文是我看的第二篇论文,关于第一篇论文的理解后续应该会继续更在这个专栏里。这篇论文讲的是一个 Wide & Deep 模型,通过名字就可以看出,是一个分为 Wide 部分和 Deep 部分的模型。至于具体介绍(我理解的)会在正文里提到。

        关于这篇文章,其实最开始写的时候,写了蛮长的字的,基本把论文的每一段都描述了一遍,但是后来删删减减,就剩下现在这个样子了。好了,下次再叨叨,下面是正文。

Wide & Deep

        先简单介绍一下这个模型。

        Wide&Deep 模型的核心思想是结合线性模型的记忆能力(memorization)和 DNN (Deep Neural Networks(深度神经网络))模型的泛化能力(generalization),在训练过程中同时优化 2 个模型的参数,从而达到整体模型的预测能力最优。

        Memorization能力:模型直接学习并利用(exploiting)历史数据中物品或特征“贡献频率”的能力。

        Generalization能力:基于特征传递的相关性,探索(exploring)过去从未或很少发生的新特征组合。

        那么知道了这两个概念,再来理解 Wide & Deep 模型就很简单了。顾名思义,Wide & Deep分为 Wide 和 Deep。

  • Wide部分:通过线性模型来处理大量历史的行为特征,使模型具有“记忆能力”。但其通常依赖于更多的特征工程。
  • Deep部分:通过对稀疏特征的embedding进行学习,模型可以较好地推广到不可见的深度特征组合,让模型具有“泛化能力”。但如果数据过于稀疏,那么神经网络会过度泛化,即过拟合。

模型结构

 

         图片来源于论文,图中从左到右分别为Wide Models,Wide & Deep Models 和 Deep Models。从图中可以看出来,Wide 模型其实就是一个线性模型,Deep模型是深度神经网络模型。

Wide 部分

        Wide部分是一个广义线性模型:

                y = w^Tx + b

        其中y是我们要预测的结果,x是特征(一个d维的向量),这里的d是特征的数量。同样w也是一个d维的权重向量,b则是偏移量(其实就是一个标准的线性回归模型)。  

        特征包含两个部分,一种是原始数据直接拿过来的数据,另外一种是我们经过特征转化(cross-product transformation)之后得到的特征。 

Deep 部分

        这部分是一个Embedding+MLP的神经网络模型。观察图可以发现,图中输入是Sparse Features。大规模稀疏特征通过embedding转化为低维密集型特征。然后特征进行拼接输入到MLP中,挖掘藏在特征背后的数据模式。

        奥对,先介绍一下embeding,深度神经网络模型通常需要的输入是连续的稠密特征,对于稀疏,高维的类别特征,通常首先将其转换为低维的向量,这个过程也称为embedding。

        MLP就是一个除了输入输出层,中间会包含一些隐藏层(hidden layer)的结构。

        网络会对一些sparse特征(如ID类特征)学习一个低维的dense embeddings(维度量级通常在O(10)到O(100)之间),然后和一些原始dense特征一起作为网络的输入。

Wide & Deep模型的联合训练

        Wide部分和Deep部分的输出进行加权求和作为最后的输出。 

        图中最上层输出之前其实是一个sigmoid层或者是一个linear层,就是一个简单的线性累加,即joint。

模型具体实现

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

        文中的模型实现:

        输入的features 分为 Continuous Features(连续特征)和 Categorical Features(分类特征)。Categorical 特征映射到32维embeddings,和原始Continuous特征共1200维作为输入。Wide部分只用了一组特征叉乘,即被推荐的app ☓ 用户下载的app。线上模型更新时,通过“热启动”重训练,即使用上次的embeddings和模型参数初始化。

总结

        以上就是本篇文章的全部内容了,删减之后剩下的东西不多,其中部分比较重要的公式也没有介绍写入。当然~,也有我还没整明白具体实现的原因在内。不过基本上就是这个样子了,后面会尝试一下去用代码实现这部分功能。现在还没开始动手,准备先多了解一下。

        嗯下篇要记录的论文是一个很厉害的东西,【Deep Residual Learning for Image Recognition】

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值