wide & deep learning for recomme

2019-09-28  本文已影响0人  celine_zhou

摘要

处理非线性特征的广义线性模型在高维稀疏输入的回归和分类问题中被广泛使用的。
通过cross-product特征模型具有很好的可解释性,但意味着特征工程的工作量非常巨大。使用很少的特征,深度学习网络通过低维向量embeddings操作后会比大量特征产生更好的效果。不过,在用户交互稀疏和高排名的情况下,使用embedding的深度学习网络可能高度概括特征信息,使得推荐相关性较小的item 给用户。
在这篇文章中,我们提出了wide&deep学习框架 —一起训练广度线性模型和深度线性模型 在推荐系统中同时发挥模型的记忆和概括的优势

核心概念

机器学习 神经网络 监督学习 信息系统 推荐系统

关键词

wide & deep learning 推荐系统

1.前言

推荐系统可以被看做是搜索排序系统,输入是用户和上下文信息,输出是items的排序
考虑一个query 推荐系统的任务是在数据库中找到相关的items,然后基于某种指标,比如点击率和购买率去排序items。

推荐系统的一个难点和通常搜索排序问题相同,如何实现记忆和概括功能。
记忆功能 粗略的被定义为学习频繁相关的items、特征,在历史数据中能够利用这些相关性。
概括功能 基于记忆功能的相关传递性去探索在过去没有出现过、出现过很少的新特征。
基于
记忆功能
的推荐系统通常和用户表现过过行为具有直接相关性和主题性。相比较记忆功能,
概括功能*倾向于提高推荐系统的多样性。
paper中,我们聚焦谷歌软件商城的推荐问题,不过我们的方法应该是能被应用到广泛的推荐系统中。

对于大部分工业界在线推荐和排序系统,广义线性模型比如逻辑回归被广泛应用,因为lr是简单、扩展性强、可解释强。线性模型经常使用one-hot编码 训练二值化稀疏特征。比如,特征user_installed_app=netflix 如果安装 value 1
在稀疏特征使用cross-product 能有效实现记忆功能
比如说user_installed_app=netflix, impression_app=pandora”
如果用户安装netflix 的value 是1,就会推荐pandora
这个很好的解释了共现的特征点对和目标标签的关系。
概括功能 可以使用粒度较小的特征 加入
比如特征user_installed_category=video, impression_category=music
但是需要很多人工特征工程。
cross-product(向量内积,叉乘) 转换 的局限性是它不能概括在训练数据中没有出现query-items 特征点对。

embeddings-based的模型,比如因子分解和深度学习网络,在很小的特征工程量,通过学习低维紧凑embedding向量后能概括没有出现查询特征点对。然而,当底层的query-items 矩阵稀疏和高排序,比如具有特定偏好的用户以及吸引力较小的items,学习query和items的有效低维表示形式是非常困难的。
在这种cases中,大部分query-items 之前是没有交互关系的,但是embedding会导致非0 预测这些关系,因此会过度概括和推荐不相关的items。从另一方面说,使用cross-product 转换的线性模型使用更少的参数就能记住这些规则。

paper中,我们提出wide&deep learning 框架在一个模型中去实现记忆和概括功能,通过一起训练线性和深度模型,如图


image.png

这篇文章的主要贡献是:
1、wide & deep learning 框架 :一起训练 使用embedding 的深度网络和使用特征转换的线性模型
2、实现和评估wide&deep 推荐系统在谷歌pay 上的表现
3.、在开源 TensorFlow 中提高高可用的API

idea 是非常简单的,我们展示wide& deep框架显著提高了app 的下载量

2.推荐系统前言

一般app 推荐系统如图展示,一个查询,包含各种用户和上下文信息,这些信息都是用户浏览app stores 产生的。推荐系统返回一组apps 列表,
这些用户行为,伴随着查询和展示信息,会被记录在日志中 作为训练数据


image.png

数据库中存储了数百亿的apps,在10ms 以内对这次查询所有的结果打分是非常困难的。因此第一步 是接收到查询后检索,基于不同的指标(比如机器学习和自定义指标),检索系统返回匹配的list -items。降低候选集后,排序系统通过打分排序items。评分是P(y|x),给定特征x,用户行为y 标签的概率。特征x包含用户信息(城市、语言),上下文(hour,week、设备),展示信息(app age,APP的历史统计信息)。这篇paper ,我们聚焦使用wide&deep的排序系统。

3、wide&deep learning

3.1 the wide component

wide component 是一个广义线性模型:


image.png


y是target,x是 特征向量,w是model 参数,b是bias。特征集合包含原始输入和转换特征。转换特征最重要的部分是交叉转换


image.png
cki 是bool值,1代表第i-th特征是k-th 的一部分

比如AND(gender=female, language=en
只有特征都为1,φk(x) 为1
这种特征cross-product,增加了非线性关系到广义线性模型。

3.2 the deep component

the deep component 是一个前馈的神经网络,如图所示,对于categorical features原始输入是 string 类型,高维稀疏的categorical features 首先转换成低维紧密的向量,经常提到是embedding vector,embedding的维数 从100到10,embedding的维数首先随机初始化,然后在训练过程中被训练到最小的误差。低维的embedding vector 喂到隐藏层,特别的,每个隐藏层的计算公式是: image.png

l 是层数,f是激活函数,通常是relu函数 ,a 、b、w 是神经元 、偏差 和权重

3.3 交叉训练wide&deep model

The wide component and deep component 使用权重相加log(输出)作为预测值,然后喂到逻辑回归。值得注意的是,joint training and ensemble 的区别。在ensemble 中,单个模型的训练是分开的,他们的预测值在最后combine 。相反,joint training 优化所有参数通过一起训练wide和deep part 。这在model size 也暗示了,对于ensemble ,因为训练是分开的,所以单个model size 比较大。相反的是,对于wide&deep ,交叉训练使得wide部分仅仅只需要deep part 比较不善于处理的 cross-product 转换信息,而不是全部size的特征集合。

wide&deep 的训练时候使用mini-batch 去优化。在实验中,使用FTRL 算法(L1正则化、adaGrad)去训练deep

model的公式如下描述


image.png

Y是二值标签,最终使用SIGMOD函数。

4.系统实现

app推荐pipline 的实现有三个部分组成:数据生成、模型训练、模型服务


image.png

4.1 数据生成

这个环节,用户和app 一段时间内的展示信息生成训练数据。比如label:app 安装,app 没有安装
将string类型的特征转换成整数类型也是这个环节,系统计算ID 空间。连续特征标准化到【0,1】

4.2 模型训练

image.png

模型结构如图四所示,在训练过程中,我们的输入层的输入是string特征和one-hot特征。wide部分 包含交叉信息。对于deep part ,32维的embedding vector从categorical 特征学习到。我们连接所有embedding vector ,大概1200维,然后喂到3层relu 层,最后逻辑回归输出。
wide&deep model使用500亿的样本训练,每次新的样本集,model 需要重新训练。每次重新训练模型是非常昂贵的,更新模型需要时间。为了克服,我们实现了一个热启动系统,初始化新模型
使用模型前,需要验证

4.3 模型服务

模型训练和验证后,我们加载模型到模型服务中。对于每次请求,服务接收到app检索系统返回过来的候选集和用户特征 ,然后评分。系统按分数从高到低排序,然后展示给用户,分数由 wide&deep 模型给出。
为了响应10ms 的请求,我们使用多线程并行运行优化性能。

5.实验结果

为了评估wide&deep在真实推荐系统的效果,我们在线实验了模型和系统,指标是:app 下载率和系统性能。

5.1 app 下载

我们比较在3周内的A/B 测试结果。对于每个组,1%的用户被随机选择和展示排序结果,在实验中
wide%deep 比wide 提升了3.9%的下载率。
在表中还展示了离线的AUC。
wide&deep 在AUC 上面表现略好,在线流量中表现突出。可能原因是,离线的数据集合都是固定的,在线系统能够高度概括从新用户中学习到的特征。

5.2 服务性能

使用了多线程并发 和切分数据 去提高响应时间

6.相关工作

wide和deep 整合idea 来源因子分解机
在nlp 中,一起训练rnn 和最大信息熵模型已经被提出,来较低rnn 的复杂度。在计算视觉中,残差网络用来降低训练难度和提高准确率,一起训练的图神经网络已经被运用到人类姿势识别中。在我们的工作中,我们一起训练前馈神经网络和线性模型。
在推荐系统的文献中,有人探索了协同深度学习,通过一个系统过滤矩阵和上下文信息并且在appJoy 中应用。不同他们的工作,我们提出了wide&deep

结论

记忆和概括功能在推荐系统都非常重要,wide线性模型能有效记忆稀疏特征通过叉积转换的信息,同时deep 深度模型能够概括之前没有出现过特征。我们提出了wide&deep学习框架整合两个模型的长处,我们生产评估了推荐系统的效果,在线实验中wide&deep 比纯wide 和纯deep 效果都要好。

上一篇下一篇

猜你喜欢

热点阅读