Wide and Deep

本文探讨了Wide&Deep模型在点击率预估中的应用,解释了为何在高维稀疏数据场景下提出,强调了模型的'记忆'和'泛化'能力。通过实例说明操作流程,并对比了各种模型的优缺点,重点介绍了Wide部分的稀疏性和Deep部分的深度学习在特征表达上的优势。
摘要由CSDN通过智能技术生成

W and D


一、点击率预估

点击率预估是对每次广告点击情况作出预测,可以输出点击或者不点击,也可以输出该次点击的概率,后者有时候也称为pClick.
通过上述点击率预估的基本概念,我们会发现其实点击率预估问题就是一个二分类的问题,在机器学习中可以使用逻辑回归作为模型的输出,其输出的就是一个概率值,我们可以将机器学习输出的这个概率值认为是某个用户点击某个广告的概率。

点击率预估与推荐算法有什么不同?
广告点击率预估是需要得到某个用户对某个广告的点击率,然后结合广告的出价用于排序;而推荐算法很多大多数情况下只需要得到一个最优的推荐次序,即TopN推荐的问题。当然也可以利用广告的点击率来排序,作为广告的推荐。

二、为什么提出

之前我们已经学了FM模型,不是已经很好了吗,为啥还要整这个Wide&Deep呢?

其缺点在于:当query-item矩阵是稀疏并且是high-rank的时候(比如user有特殊的爱好,或item比较小众),很难非常低效率的学习出低维度的表示。

这种情况下,大部分的query-item都没有什么关系。但是dense embedding会导致几乎所有的query-item预测值都是非0的,这就导致了推荐过度泛化,会推荐一些不那么相关的物品。相反,简单的linear model却可以通过cross-product transformation来记住这些exception rules。

三、 Wide & Deep模型的“记忆能力”与“泛化能力”

Memorization 和 Generalization是推荐系统很常见的两个概念,其中Memorization指的是通过用户与商品的交互信息矩阵学习规则,而Generalization则是泛化规则。

FM算法就是很好的Generalization的例子,它可以根据交互信息学习到一个比较短的矩阵V,其中vi储存着每个用户特征的压缩表示(embedding),而协同过滤与SVD都是靠记住用户之前与哪些物品发生了交互从而推断出的推荐结果,这两者推荐结果当然存在一些差异,我们的Wide&Deep模型就能够融合这两种推荐结果做出最终的推荐,得到一个比之前的推荐结果都好的模型。

可以这么说:Memorization趋向于更加保守,推荐用户之前有过行为的items。相比之下,generalization更加趋向于提高推荐系统的多样性(diversity)。Memorization只需要使用一个线性模型即可实现,而Generalization需要使用DNN实现。
在这里插入图片描述
如何理解Wide部分有利于增强模型的“记忆能力”,Deep部分有利于增强模型的“泛化能力”?
wide部分是一个广义的线性模型y=WTx+b,输入的特征主要有两部分组成,一部分是原始的部分特征,另一部分是原始特征的交互特征(cross-product transformation),对于交互特征可以定义为:
在这里插入图片描述
k表示第k个组合特征。i表示输入X的第i维特征。cki表示第i个特征是否是第k个转换的一部分,1表示是,0表示否。d表示输入X的维度。那么到底有哪些维度特征要参与构造组合特征那?这个是你之前自己定好的,在公式中没有体现。
其实就是我们之前一直在说的one-hot之后的组合特征:仅仅在输入样本X中的特征gender=female和特征language=en同时为1,新的组合特征才为1。所以只要把两个特征的值相乘就可以了。

对于wide部分训练时候使用的优化器是带L1正则的FTRL算法(Follow-the-regularized-leader),而L1 FTLR是非常注重模型稀疏性质的,也就是说W&D模型采用L1 FTRL是想让Wide部分变得更加的稀疏,即Wide部分的大部分参数都为0,这就大大压缩了模型权重及特征向量的维度。

Wide部分模型训练完之后留下来的特征都是非常重要的,那么模型的“记忆能力”就可以理解为发现"直接的",“暴力的”,“显然的”关联规则的能力例如Google W&D期望wide部分发现这样的规则:用户安装了应用A,此时曝光应用B,用户安装应用B的概率大。

四、操作流程

Retrieval:利用机器学习模型和一些人为定义的规则,来返回最匹配当前Query的一个小的items集合,这个集合就是最终的推荐列表的候选集。

Ranking:

  • 收集更细致的用户特征,如:
    • User features(年龄、性别、语言、民族等)
    • Contextual features(上下文特征:设备,时间等)
    • Impression features(展示特征:app age、app的历史统计信息等)
  • 将特征分别传入Wide和Deep一起做训练。在训练的时候,根据最终的loss计算出gradient,反向传播到Wide和Deep两部分中,分别训练自己的参数(wide组件只需要填补deep组件的不足就行了,所以需要比较少的cross-product feature transformations,而不是full-size wide Model)
    • 训练方法是用mini-batch stochastic optimization。
    • Wide组件是用FTRL(Follow-the-regularized-leader) + L1正则化学习。
    • Deep组件是用AdaGrad来学习。
    • 训练完之后推荐TopN

所以wide&deep模型尽管在模型结构上非常的简单,但是如果想要很好的使用wide&deep模型的话,还是要深入理解业务,确定wide部分使用哪部分特征,deep部分使用哪些特征,以及wide部分的交叉特征应该如何去选择

五、优缺点对比

在CTR预估以及推荐系统等场合下:

LR: LR最大的缺点就是无法组合特征,依赖于人工的特征组合,这也直接使得它表达能力受限,基本上只能处理线性可分或近似线性可分的问题。
FM: FM通过隐向量latent vector做内积来表示组合特征,从理论上解决了低阶和高阶组合特征提取的问题。但是实际应用中受限于计算复杂度,一般也就只考虑到2阶交叉特征。后面又进行了改进,提出了FFM,增加了Field的概念。
CNN: CNN模型的缺点是:偏向于学习相邻特征的组合特征。
RNN: RNN模型的缺点是:比较适用于有序列(时序)关系的数据。
FNN: 先使用预先训练好的FM,得到隐向量,然后作为DNN的输入来训练模型。缺点在于:受限于FM预训练的效果,Embedding的参数受FM的影响,不一定准确;预训练阶段增加了计算复杂度,训练效率低; FNN只能学习到高阶的组合特征。模型中没有对低阶特征建模。
PNN: PNN为了捕获高阶组合特征,在embedding layer和first hidden layer之间增加了一个product layer。但是内积的计算复杂度依旧非常高,原因是:product layer的输出是要和第一个隐藏层进行全连接的;product layer的输出需要与第一个隐藏层全连接,导致计算复杂度居高不下;和FNN一样,只能学习到高阶的特征组合。没有对于1阶和2阶特征进行建模。
Wide&Deep:同时学习低阶和高阶组合特征,它混合了一个线性模型(Wide part)和Deep模型(Deep part)。这两部分模型需要不同的输入,而Wide part部分的输入,依旧依赖人工特征工程。
但是,这些模型普遍都存在一个问题:偏向于提取低阶或者高阶的组合特征。不能同时提取这两种类型的特征。 需要专业的领域知识来做特征工程。无论是FNN还是PNN,他们都有一个绕不过去的缺点:对于低阶的组合特征,学习到的比较少。

DeepFM:在Wide&Deep的基础上进行改进,不需要预训练FM得到隐向量,不需要人工特征工程,能同时学习低阶和高阶的组合特征;FM模块和Deep模块共享Feature Embedding部分,可以更快的训练,以及更精确的训练学习。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值