【RS】Wide & Deep Learning for Recommender Systems - 广泛和深度学习的推荐系统

【论文标题】Wide & Deep Learning for Recommender Systems (DLRS‘16)

【论文作者】

Heng-Tze Cheng, Levent Koc, Jeremiah Harmsen, Tal Shaked, Tushar Chandra,
Hrishi Aradhye, Glen Anderson, Greg Corrado, Wei Chai, Mustafa Ispir, Rohan Anil,
Zakaria Haque, Lichan Hong, Vihan Jain, Xiaobing Liu, Hemal Shah

—— Google Inc.

【论文链接】Paper(4-pages // Double column)

(FY内容待check)

【摘要】

线性模型被广泛地应用于回归和分类问题,具有简单、快速和可解释性等优点,但是线性模型的表达能力有限,经常需要人工选择特征和交叉特征才能取得一个良好的效果,但是实际工程中的特征数量会很多,并且还会有大量的稀疏特征,人工筛选特征和交叉特征会很困难,尤其是交叉高阶特征时,人工很难实现。DNN模型可以很容易的学习到高阶特征之间的作用,并且具有很好的泛化能力。同时,DNN增加embedding层可以很容易的解决稀疏特征的问题。文章将传统的LR和DNN组合构成一个wide&deep模型,既保留了LR的拟合能力,又具有DNN的泛化能力,并且不需要单独训练模型,可以方便模型的迭代。

【关键词】

广泛和深度学习,推荐系统

【1 介绍】

1、Wide&Deep解决什么问题

在推荐系统(包括推荐、计算广告)中,当用户来到平台时,需要向用户展示适合用户的物品(商品、广告等),通常的做法是先从海量的物品库(通常是上亿数量)中,筛选出一些跟用户兴趣最相关的物品(通常是千级规模),这个过程叫做召回,召回可以是机器学习模型或者规则;然后再对这上千的物品进行排序,从而展示给用户。因此推荐系统也经常被叫做搜索排序系统。整个系统流程如图:

排序的规则有很多,主要是依据业务的目标而言,例如点击、购买等。wide&deep可以应用到此类目标的排序问题中,最经典的就是CTR预估。

2、现有模型的问题

提到CTR预估,最经典的应该是LR模型了,LR模型简单、快速并且模型具有可解释,有着很好的拟合能力,但是LR模型是线性模型,表达能力有限,泛化能力较弱,需要做好特征工程,尤其需要交叉特征,才能取得一个良好的效果,然后工业中,特征的数量会很多,可能达到成千上万,甚至数十万,这时特征工程就很难做,并且特征工程是一项很枯燥乏味的工作,搞得算法工程师晕头转向,还不一定能取得更好的效果。 DNN模型不需要做太精细的特征工程,就可以取得很好的效果,已经在很多领域开始应用了,DNN可以自动交叉特征,学习到特征之间的相互作用,尤其是可以学到高阶特征交互,具有很好的泛化能力。另外,DNN通过增加embedding层,可以有效的解决稀疏数据特征的问题,防止特征爆炸。推荐系统中的泛化能力是很重要的,可以提高推荐物品的多样性,但是DNN在拟合数据上相比较LR会较弱。 为了提高推荐系统的拟合性和泛化性,可以将LR和DNN结合起来,同时增强拟合能力和泛化能力,wide&deep就是将LR和DNN结合起来,wide部分就是LR,deep部分就是DNN,将两者的结果组合进行输出。

【3  Wide&Deep学习(模型)】

wide&deep模型主要分成两部分,wide部分就是传统的LR模型,deep部分就是DNN,整个模型的结构如下图:

上图中最左边是传统的LR模型,最右边是DNN模型,中间的是将LR和DNN结合起来的wide&deep模型。

【3.1 Wide 部分】

wide部分就是LR模型,传统的LR模型:
用  X=[x1,x2,x3,...,xd]  表示一个有d个特征的样本,W=[w1,w2,w3,...,wd]  表示模型的参数,b表示bia,y表示预测值,有

在实际中往往需要交叉特征,对于这部分定义如下:

用 ?k 表示第 k 个交叉特征,Cki 表示是第 k 个交叉特征的一部分。 
最终的wide部分为:

【3.2 Deep 部分】

deep部分就是一个普通的神经网络结构,只不过在这个网络中增加embedding层用来将稀疏、高维的特征转换为低维、密集的实数向量,可以有效地解决维度爆炸。先将原始特征经过embedding层转化后,再送入DNN的隐藏层,隐藏层之间的关系定义为:

上面 l 表示隐藏层数,f 表示激活函数,可以是sigmoid、Relu、than等,目前最常用的是Relu函数。

【3.3  Wide & Deep 模型的融合训练】

wide&deep模型中,wide部分和deep部分是同时训练的,不需要单独训练任何一部分。GBDT+LR模型中GBDT需要先训练,然后再训练LR,两部分具有依赖关系,这种架构不利于模型的迭代。
Join training和ensemble training的区别:(1)ensemble中每个模型需要单独训练,并且各个模型之间是相互独立的,模型之间互相不感知,当预测样本时,每个模型的结果用于投票,最后选择得票最多的结果。而join train这种方式模型之间不是独立的,是相互影响的,可以同时优化模型的参数。(2)ensemble的方式中往往要求存在很多模型,这样就需要更多的数据集和数据特征,才能取得比较好的效果,模型的增多导致难以训练,不利于迭代。而在wide&deep中,只需要两个模型,训练简单,可以很快的迭代模型。

【4 系统实现】

目前Tensorflow中已经提供了wide&deep模型的API,参见 https://www.tensorflow.org/tutorials/wide_and_deep,并且官方提供了一个Demo,工程上可以很快的搭建起wide&deep模型。

【Reference】

1、https://blog.csdn.net/guozhenqiang19921021/article/details/80871641

原文地址:https://www.cnblogs.com/shenxiaolin/p/11180128.html

时间: 2024-11-03 09:30:53

【RS】Wide & Deep Learning for Recommender Systems - 广泛和深度学习的推荐系统的相关文章

论文笔记-Wide & Deep Learning for Recommender Systems

本文提出的W&D是针对rank环节的模型. 网络结构: 本文提出的W&D是针对rank环节的模型. 网络结构: wide是简单的线性模型,但是可以预先对特征做各种变换.交叉等来增加wide模型的非线性性. deep是一个FNN,对高维稀疏类别特征采取embedding降维,embedding的结果是在训练时候学出来的. wide与deep结合的方式,是将两者的输出通过加权最后喂给一个logistic损失函数.值得注意的是,这里是join train并不是ensemble,ensemble是

读《Deep Learning Tutorial》(台湾大学 李宏毅 深度学习教学ppt)后杂记

原ppt下载:pan.baidu.com/s/1nv54p9R,密码:3mty 需深入实践并理解的重要概念: Deep Learning: SoftMax Fuction(输出层归一化函数?) DNN(Deep Neural Networks): MSE(Means Square Error,均方误差) / CE(Cross Entropy,交叉熵) - Use to minimum total loss for softmax layer. CE is better. Mini-batch &

Wide & Deep Learning Model

Generalized linear models with nonlinear feature transformations are widely used for large-scale regression and classification problems with sparse inputs. Memorization of feature interactions through a wide set of cross-product feature transformatio

Machine Learning - XVI. Recommender Systems 推荐系统(Week 9)

http://blog.csdn.net/pipisorry/article/details/44850971 机器学习Machine Learning - Andrew NG courses学习笔记 Recommender Systems 推荐系统 {an important application of machine learning} Problem Formulation 问题规划 Note: 1. to allow 0 to 5 stars as well,because that

《Deep Learning》译文 第六章 深度前馈网络 从异或函数说起

6.1 从异或函数说起 为了使前馈网络的概念更具体化,我们先从一个简单地例子说起,这个例子中,我们使用前馈网络解决一个简单的任务:学习异或函数. 众所周知,异或(XOR)操作是一种针对二进制值的二目操作符.当两个操作数不同时返回1,其他返回0.异或函数为我们提供了我们想要学习到的目标函数y=f*(x),而我们的模型提供了函数y=f(x;θ),我们的学习算法将修正参数θ使得模型函数f尽可能的接近目标函数f*. 在本例中,我们更加关心网络能否在X={[0,0]T,[0,1]T,[1,0]T,and

【深度学习Deep Learning】资料大全

转载:http://www.cnblogs.com/charlotte77/p/5485438.html 最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下: Free Online Books Deep Learning66 by Yoshua Bengio, Ian Goodfellow and Aaron Courville Neural Networks and Deep Learning42 by Michael Nielsen Deep Learning27 by

Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1

3.Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1 http://blog.csdn.net/sunbow0 Spark MLlib Deep Learning工具箱,是根据现有深度学习教程<UFLDL教程>中的算法,在SparkMLlib中的实现.具体Spark MLlib Deep Learning(深度学习)目录结构: 第一章Neural Net(NN) 1.源码 2.源码解析 3.实例 第二章D

Spark MLlib Deep Learning Neural Net(深度学习-神经网络)1.1

Spark MLlib Deep Learning Neural Net(深度学习-神经网络)1.1 http://blog.csdn.net/sunbow0/ Spark MLlib Deep Learning工具箱,是根据现有深度学习教程<UFLDL教程>中的算法,在SparkMLlib中的实现.具体Spark MLlib Deep Learning(深度学习)目录结构: 第一章Neural Net(NN) 1.源码 2.源码解析 3.实例 第二章Deep Belief Nets(DBNs

Deep Learning综述[下]

Image understanding with deep convolutional networks 直到2012年ImageNet大赛之前,卷积神经网络一直被主流机器视觉和机器学习社区所遗弃.2012年ImageNet大赛上卷积神经网络用来识别1000种分类的近100万张图片,错误率比之前大赛的最好成绩降低了近一半. 基于卷积神经网络视觉系统的表现引起了大多数技术公司的注意,包括Google.Facebook.Microsoft.IBM.Yahoo!.Twitter 和Adobe等. 许多