DeepRecommendationModel task1 and task2

task 1 DeepCrossing

把深度学习的框架应用于推荐系统中
输入:特征向量
输出:0/1分类

deepcrossing分为四层 : embedding layer ,stacking layer, Multiple Residual Units Layer,Scoring Layer

  • Embedding Layer

将稀疏的类别型特征转成稠密的Embedding向量,即对one-hot向量做embedding

  • Stacking Layer

将embedding特征和数值型特征拼接在一起,形成新的包含全部特征的特征向量,TF使用Concatnate

  • Multiple Residual Units Layer

该层结构是MLP
原输入特征经过两层ReLU变换 + 原输入特征 -> 一个block

  • Scoring Layer

首先叠加多个残差块加深网络深度
最后用一个sigmoid回归转化为一个概率值输出

colab上的代码运行结果
在这里插入图片描述

task 2 Wide&Deep

Wide&Deep模型围绕记忆性和泛化性进行讨论的
模型能够从历史数据中学习到高频共现的特征组合的能力,称为是模型的Memorization。
能够利用特征之间的传递性去探索历史数据中从未出现过的特征组合,称为是模型的Generalization。
在这里插入图片描述
Wide
wide 部分是广义的线性模型。
input: 由两部分组成,一部分是原始的部分特征,另一部分是原始特征的交叉特征(cross-product transformation)
举例:
AND(user_installed_app=QQ, impression_app=WeChat),当特征user_installed_app=QQ,和特征impression_app=WeChat取值都为1的时候,组合特征AND(user_installed_app=QQ, impression_app=WeChat)的取值才为1,否则为0
对于wide部分训练时候使用的优化器是带 L 1 L_1 L1正则的FTRL算法(Follow-the-regularized-leader),L1 FTLR是注重模型的稀疏性质的,训练完后,wide部分的大部分参数都为0,压缩了模型权重和特征向量的维度。
则模型的记忆能力可以理解为发现直接的,暴力的,显然的关联规则的能力。

Deep
Deep部分是一个DNN模型,输入的特征主要分为两大类,一类是数值特征,一类是类别特征,需要embedding, 常用的优化器是AdaGrad.

Wide部分与Deep部分的结合
将deep和wide部分的输出重新使用一个逻辑回归模型做最终的预测,输出概率值。
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|x)=\delta(w_{wide}^T[x,\phi(x)] + w_{deep}^T a^{(lf)} + b) P(Y=1x)=δ(wwideT[x,ϕ(x)]+wdeepTa(lf)+b)

1、在你的应用场景中,哪些特征适合放在Wide侧,哪些特征适合放在Deep侧,为什么呢?
比较稀疏的向量或者特征交叉的向量或者任意特征都可以放在wide侧,因为wide侧可以过滤特征。
deep侧适合放数值型向量和进行了embedding的类别向量,因为使用DNN进行训练,特征过于稀疏会导致梯度消失。

2、为什么Wide部分要用L1 FTRL训练?
L1 FTRL 是稀疏性很好,精度又不错的随机梯度下降方法,L1正则化会使得部分特征的系数为0。 特征的维度过高,可能会导致维度爆炸,wide部分的权重数量变成海量,所以需要过滤掉一些稀疏的特征。

3、为什么Deep部分不特别考虑稀疏性的问题?
Deep部分的输入,要么是Age,#App Installs这些数值类特征,要么是已经降维并稠密化的Embedding向量,工程师们不会也不敢把过度稀疏的特征向量直接输入到Deep网络中。所以Deep部分不存在严重的特征稀疏问题,自然可以使用精度更好,更适用于深度学习训练的AdaGrad去训练。

colab 上代码运行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值