论文翻译(二) wide and deep Learning For Reconmmenter Systems

摘要

具有非线性特征变换的广义线性模型被广泛用于稀疏特征输入的大尺度的回归和分类问题。通过一系列方法来记忆特征交互效果是有效且可解释的,而泛化则需要更多的特征工程工作。在使用更少特征工程的情况下,深度神经网络可以通过低维度的embedding向量学习到更多隐形的特征组合,以此构建一个更好的稀疏模型。然而,带有embedding(嵌入层)向量的深层神经网络可能过于泛化,并在用户与item互动稀疏时对一些相关性较低的item进行高打分。在本文中,我们介绍Wide & Deep联合训练的广泛线性模型和深度神经网络-结合记忆和推广推荐系统的好处。我们在Google Play上生产并评估了该系统,拥有超过十亿活跃用户的商业移动应用商店用户和超过一百万个应用。在线实验结果结果表明,与“wide-only”和“deep-only”模型相比,Wide&Deep大大增加了应用的购买量。我们还已在TensorFlow中开源了我们的实现。

CCS概念
•计算方法论→机器学习; 神经网络; 监督学习; •信息系统→推荐系统;

1.引言

推荐系统可以视为搜索排名系统,其中输入查询是一组用户和上下文信息,并且输出是item的排名列表。特定一个查询词,推荐任务是找到相关的数据库中的项目,然后根据某些项目对项目进行排名目标,例如点击或购买。

与一般搜索排名问题类似,推荐系统中的一项挑战是同时保证学习到过往的经验,并且将这个经验进行泛化到新的时刻中(both memorization and generalization )。 Memorization 可以大致定义为学习频繁出现的item或特征,以及利用历史数据中可用的相关性。另一方面,泛化基于可传递性相关性,并探索过去从未或很少发生过的新功能组合。 基于记忆的推荐结果,通常比较容易将用户和已经有过交互的商品直接相关执行的动作给推荐出来。 与记忆相比,泛化倾向于提高推荐内容的多样性项目。 在本文中,我们重点介绍应用程序推荐Google Play商店出现问题,但该方法应该适用于通用推荐系统。

对于工业环境中的大规模在线推荐和排名系统,广义线性模型例如逻辑回归,由于逻辑回归简单,可扩展且可解释,因此被广泛使用。模型的输入经常是一些稀疏特征。例如,二进制特征“ user_installed_app = netflix”,如果用户安装了Netflix,那么值为1。模型通过对这些稀疏特征之间的交叉方式,可以更好的记忆下这些特点,例如AND(user_installed_app = netflix,impression_app = pandora”),如果用户已安装Netflix,其值为1,然后再曝光pandora。这说明了特征对的共现与目标相关标签。可以使用以下功能添加泛化功能:较小的粒度,例如AND(user_installed_category = video,impression_category = music),但通常需要手动进行特征工程。跨item转换的局限性在于它们不能推广到训练数据中未出现的查询项特征对。

基于嵌入的模型,例如分解机[5]或深度神经网络可以通过学习低维数来推广到以前不确定的query-item对特征,对每个query和item特征的密集嵌入向量,减轻了特征工程负担。 但是,当querys和items组成的矩阵很稀疏的情况下,要学习query和item之间的交互关系是很难的,例如具有特定偏好的用户或吸引人的利基产品时。 在这种情况下,大多数查询项对之间应该没有交互,但是密集的嵌入将导致用户和所有预测item直接都是非0的分数,这种情况下可以过度概括,推出一些不相干的Item。 另一方面,具有跨item特征交叉的线性模型可以记住这些具有更少参数的“例外规则”

在本文中,我们提出了Wide & Deep框架,可以在一个框架中同时实现记忆和泛化通过联合训练线性模型组件和神经网络组件如图1所示。

论文翻译(二) wide and deep Learning For Reconmmenter Systems

该论文的主要贡献包括:

•Wide & Deep学习框架,用于共同训练带有嵌入的前馈神经网络和具有特征转换的线性模型,以实现通用的具有稀疏数据输入的推荐系统。

•Wide & deep 在Google Play上生产的深度推荐系统的实现和评估,拥有超过十亿活跃用户的移动应用商店用户和超过一百万个应用。
•我们将实施的资源与TensorFlow1中的高级API。

虽然想法很简单,但我们证明了框架大大提高了应用程序的获取率在移动应用商店上,同时满足训练和服务速度要求。

2.推荐系统概述

在图2中显示了应用推荐系统的概述。一个查询,可以发生在不同的user和user访问应用商店程序时生成上下文特征。 推荐系统返回应用列表(也称为展示次数),用户可以在其上执行某些操作,例如点击或购买。 这些用户操作,连同查询和反应(曝光 点击 下载)一起记录为学习者的训练数据。

由于数据库中有超过一百万个应用程序,在服务延迟要求(通常为O(10)毫秒)内,难以为每个查询详尽地评分每个应用程序。 因此,接收到查询的第一步是检索。 检索系统返回项目的简短列表最适合使用各种信号查询的查询,通常是机器学习模型和人工定义的结合规则。 减少候选库后,排名系统将所有项目按其得分进行排名。 分数通常是P(y | x),代表用户在特征集x下,对推荐item进行点击/下载的概率,包括用户特征(例如,国家/地区,语言,受众特征),上下文特征(例如设备,日期,星期几)和展示功能(例如,应用年龄,应用的历史统计数据)。 在本文中,我们专注于使用广泛和深度学习框架的排名模型。

3. WIDE & DEEP 学习

3.1 The Wide Component
wide component 是模型的广义线性模型形式y = wT x + b,如图1所示(左)。 y是预测值,x = [x1,x2,…,xd]是d个特征的向量,w =[w1,w2,…,wd]是模型参数,b是偏差。特征集包括原始输入特征 + 已转换的特征。最重要的转变之一是交叉特征,定义为:
论文翻译(二) wide and deep Learning For Reconmmenter Systems

其中cki是一个布尔变量,如果第i个特征是第k个转换特征φk的一部分,则为1,否则为0。对于分类特征,进行交叉转换(例如,当且仅当“ AND(gender = female,language = en)”)为1构成特征(“性别=女性”和“语言= en”)全部为1,否则为0。 这捕获了交互之间的二元特征,并增加了非线性广义线性模型。

3.2 The Deep Component

deep component 是前馈神经网络,例如如图1所示(右)。 对于分类特征,原始输入是字符串(例如“ language = en”)。 这些稀疏的高维类别特征是首先转换为低维且密集的实值向量,通常称为嵌入向量。 嵌入的维数通常在O(10)至O(100)。 嵌入向量被随机初始化,然后训练值以最小化最终模型训练中的损失函数来进行优化这些向量。 这些低维密集的嵌入向量馈入隐藏层正向传递中的神经网络 具体来说,每个隐藏层执行以下计算:

论文翻译(二) wide and deep Learning For Reconmmenter Systems

其中l是层号,f是**函数,通常是线性整流单位(ReLU)。 a(L),b(L)和W(l)是第l层的**输入,偏差和模型权重。

3.3联合训练

wide部分和deep部分相结合,使用其输出对数几率的加权总和作为预测值,然后将其馈送到一个常见的对数损失函数以进行联合训练。注意联合训练和整体训练之间有区别。在整体联合中,单独的模型在不知道每个模型的情况下分别进行训练,并且它们的预测值仅在推断时进行组合,而不是在训练时间。相反,联合训练同时采用以及它们的总和的权重在训练时。对模型有影响大小也是如此:对整体训练而言,由于训练是不相交的,因此每个单个模型的大小通常需要更大(例如,更多功能和变化)以实现合理工作合奏的准确性。相比之下,对于联合训练广泛的部分只需要用少量的交叉操作来补充deep层的弱点特征转换,而不是全尺寸的模型。

Wide & Deep模型的联合训练是通过将输出的梯度反向传播到,wide和deep层。 在实验中,我们使用带有L1正则化的Follow-regularized-leader(FTRL)算法[3]作为模型wide部分的优化程序,而AdaGrad [1]是deep的部分。

组合模型如图1所示(中心)。对于逻辑回归问题,模型的预测为:

论文翻译(二) wide and deep Learning For Reconmmenter Systems
其中Y是二进制类别标签,σ(·)是S形函数 sigmoid,φ(x)是原始特征集x的交叉变换,b是偏差项。 Wwide是wide层的模型权重向量,并且Wdeep要进到最后一个**层a(lf)来进行优化。

4.系统实现

应用程序推荐管道的实施包括三个阶段:数据生成,模型训练,和模型,如图3所示。

4.1 数据生成

在这个阶段,用户和应用程序映射数据在一段时间内用于生成训练数据。每个例子对应一个映射。标签是app acquisition:如果安装了映射的应用程序,则为1,否则为0。

词汇表是将分类特征字符串映射到整数id的表,也在这个阶段生成。系统为所有出现次数超过最小次数的字符串功能计算ID空间。通过将特征值x映射到其累积分布函数p(x≤x),将连续实值特征归一化为[0;1],并将其划分为n_q 分位数。对于第i个分位数中的值,标准化值为(ⅈ−1)/(n_q−1) 。在数据生成过程中计算分位数边界。

4.2 模型训练

我们在实验中使用的模型结构如图4所示。在训练过程中,我们的输入层接收训练数据和词汇,并生成稀疏和密集的特征和一个标签。广域组件包括用户安装的应用程序和Impression应用程序的跨产品转换。在模型的深层,每个分类特征学习一个32维的嵌入向量。我们将所有嵌入与稠密特征串联在一起,从而产生近似1200维的稠密向量。然后将连接向量馈入3个relu层,最后馈入logistic输出单元。

广度和深度模型的训练样本超过5000亿。每次一组新的训练数据到达时,都需要对模型进行重新训练。然而,每次从头开始的再培训都会在计算上耗费大量的时间,并且会延迟从数据到达到为更新的模型服务的时间。为了应对这一挑战,我们实现了一个热启动系统,该系统使用前一个模型的嵌入和线性模型权重初始化新模型。

在将模型加载到模型服务器之前,先对模型进行一次dry运行,以确保它不会在服务实时流量时造成问题。我们根据先前的模型对模型质量进行了经验验证,作为一个健全性检查。

4.3 模型应用

一旦模型经过训练和验证,我们就将其加载到模型服务器中。对于每个请求,服务器从
应用程序检索系统和用户功能评分每个应用程序。然后,应用程序从最高的分数到最低的排名,我们按此顺序向用户显示应用程序。分数是通过在广度和深度模型上运行正向推理传递来计算的。

为了在10毫秒的时间内满足每个请求,我们使用多线程并行来优化性能,方法是并行运行较小的批,而不是在一个批处理推断步骤中对所有候选应用进行评分。

6:相关工作

将叉积特征变换的宽线性模型与、和、具有密集嵌入的深度神经网络相结合的想法的设计是受先前工作启发的,例如分解机fm[5],它为线性增加了概括通过分解两个变量之间的相互作用建立模型作为两个低维嵌入之间的点积向量。 在本文中,我们通过学习嵌入之间的高度非线性相互作用通过神经网络代替点积。

在语言模型中,使用n-gram特征联合训练递归神经网络(RNNs)和最大熵模型,已提出在输入和输出之间[4]通过学习直接权重以显着降低RNN的复杂度(例如隐藏层的大小)。 在计算机视觉方面,深度残差学习[2]已被用来解决训练深度网络的困难,以及通过跳过一层或多层的连接来提高准确性。 联合训练具有图形模型的神经网络也已被应用根据图像对人体姿势进行估计[6]。 在这项工作中,我们探索了前馈神经网络和线性模型的联合训练,稀疏之间的直接交叉特征部件和输出单元,用于通用推荐以及稀疏输入数据的排序问题。

在推荐系统文献中,通过结合深度学习来深入协作来探索学习内容信息和协作过滤(CF)评分矩阵[7]。 以前也有关于移动应用推荐系统,例如AppJoy在用户的应用使用记录中使用CF [8]。 与…不同在先前的工作中基于CF或基于内容的方法,我们联合针对用户和印象数据训练了Wide & Deep模型应用推荐系统的数据