Wide & Deep Learning for Recommender Systems

论文链接:
https://arxiv.org/pdf/1606.07792.pdf

主要内容

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

1)什么是“记忆”能力和“泛化”能力
Memorization can be loosely defined as learning the frequent co-occurrence of items or features and exploiting the correlation available in the historical data.
“记忆”能力是指对历史数据集中已经出现过的特征、特征关联及其与label之间关系进行很好的学习。即对历史数据中已经出现过的模式进行很好的学习。
Generalization, is based on transitivity of correlation and explores new feature combinations that have never or rarely occurred in the past.
“泛化”能力指能将从历史数据集中学到的模式迁移,用于对包含未出现特征组合的样本进行预测。
(2)为什么wide模型的“记忆”能力强?deep模型的“泛化”能力强?
wide模型以逻辑回归(LR)模型为例,deep模型以深度神经网络为例。
主要差异在于两者的特征组合能力不一样。
LR是属于广义线性模型,本身不具备对特征之间非线性关系进行建模。所以通过人工构建特征组合(交叉特征)的方式来给LR模型增加非线性建模能力。
可以看出来人工构建组合特征,主要基于历史数据集中已经出现过的特征取值组合,而对于未出现过的特征取值组合没有办法构建组合特征。所以LR模型具备很好的记忆能力,但没有泛化能力。
深度神经网络模型无需人工构建组合特征,有自动做特征组合的能力。而且由于加入非线性的激活函数,神经网络模型具备非线性建模能力。神经网络模型的泛化能力除了因为它自动特征组合的能力,还因为它对类别特征的取值做embedding。这样,由于embedding的特性,即使没出现过的特征取值组合,神经网络模型也可以计算得到组合特征的值。

P ( Y = 1 ∣ x ) = σ ( w w i d e T [ x , ϕ ( x ) ] + w d e e p T a ( l f ) + b ) P(Y=1 | \mathbf{x})=\sigma\left(\mathbf{w}_{w i d e}^{T}[\mathbf{x}, \phi(\mathbf{x})]+\mathbf{w}_{d e e p}^{T} a^{\left(l_{f}\right)}+b\right) P(Y=1x)=σ(wwideT[x,ϕ(x)]+wdeepTa(lf)+b)

wide部分

wide部分就是LR模型,传统的LR模型:
用X=[x1,x2,x3,…,xd]X=[x1,x2,x3,…,xd]表示一个有d个特征的样本,W=[w1,w2,w3,…,wd]W=[w1,w2,w3,…,wd]表示模型的参数,b表示bias,y表示预测值,有 y=W*X+b
在实际中往往需要交叉特征,对于这部分定义如下
ϕ k ( X ) = ∏ i = 1 d x i C k i , c k i ∈ 0 , 1 \phi_{k}(X)=\prod_{i=1}^{d} x_{i}^{C_{k i}}, c_{k i} \in 0,1 ϕk(X)=i=1dxiCki,cki0,1
用ϕk表示第k个交叉特征,Cki表示是第k个交叉特征的一部分。
最终的wide部分为
y = W T X + b + ∑ k = 1 N w d + k ϕ k y=W^{T} X+b+\sum_{k=1}^{N} w_{d+k} \phi_{k} y=WTX+b+k=1Nwd+kϕk

Deep部分

我觉得没什么好讲的。。。
a l + 1 = f ( W l a l + b l ) a^{l+1}=f\left(W^{l} a^{l}+b^{l}\right) al+1=f(Wlal+bl)

WDL模型与ensemble的区别

本文将wide模型和deep模型联合训练不同于一般的模型融合(ensemble)。
ensemble时,单个的基模型在训练的时候是彼此独立的。只有在做预测的时候,才将多个基模型的预测结果进行融合得到最终的预测结果。
WDL是将wide模型和deep模型作为一个整体进行训练,意味着同步用反向传播技术更新wide模型和deep模型的参数

WDL训练方式

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

参考链接

https://www.jianshu.com/p/976a8d94172b
https://blog.csdn.net/guozhenqiang19921021/article/details/80871641

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值