《Wide & Deep Learning for Recommender Systems》翻译

发布于 2022-08-06  339 次阅读


摘要

具有非线性特征变换的广义线性模型被广泛用于具有稀疏输入的大规模回归和分类问题。 通过一组叉积特征变换来记忆特征的相互作用是有效的且可解释的,而泛化能力则需要做更多的人工特征工程工作。 在特征工程较少的情况下,深度神经网络可以通过为稀疏特征学习的低维密集嵌入,更好地泛化到未见过的特征组合。 然而,当用户与项目之间的交互矩阵是稀疏的且高秩的时候,带有embedding的深度神经网络会过度泛化,并推荐不太相关的项目。 在本文中,我们提出了Wide & Deep模型——联合训练的广度线性模型和深度神经网络,为推荐系统同时提供和泛化的能力。 我们在Google Play上部署并评估了该系统,Google Play是一个拥有超过10亿活跃用户和超过100万个应用程序的商业移动应用商店。 在线实验结果显示,与仅有的Wide模型和仅有的Deep模型相比,Wide & Deep模型大大增加了应用的获取量。 我们还开源了Wide & Deep在TensorFlow中的实现。

引言

推荐系统可以被看作是一个搜索排名系统,其中输入的查询是一组用户和上下文信息,而输出是一个排名的项目列表。 给定一个query,推荐任务是在数据库中找到相关的项目,然后根据特定的指标(如点击率或购买量)对这些项目进行排名。

类似于普通的搜索排名问题,推荐系统中的一个难题是要同时实现记忆能力和泛化能力。 记忆能力可以被不那么精确的定义为学习项目或特征之间的共现频率与利用历史数据中的相关性。另一方面,泛化能力是基于相关传递性,并探索过去从未或很少出现的新特征组合。 基于记忆的推荐通常更具话题性,并且与用户已经执行过操作的项目直接相关。 与记忆性相比,泛化能力倾向于提高推荐项目的多样性。 在本文中,我们专注于Google Play商店的应用推荐问题,但该方法应该适用于通用推荐系统。

对于工业环境中大规模的在线推荐和排名系统,广义线性模型(如逻辑回归)由于其简单性、可扩展性和可解释性而被被广泛使用。

这些模型通常在onehot编码后的二进制的稀疏特征上进行训练。例如,如果用户安装了Netflix则二进制特征 "user_installed_app=netflix"的值为1, 使用稀疏特征的交叉乘积变换可以有效地实现记忆能力,例如AND(user_installed_app=netflix,impres-sion_app=pandora"),表示如果用户安装了Netflix,且浏览过Pandora,其值为1。通过使用粒度较小的特征,例如AND(user_installed_category=video,impression_category=music)(用户安装过的类别与浏览过的类别),可以增加泛化能力,但通常需要手动进行特征工程设计。 交叉乘积法的一个局限性是,它们不能推广到训练数据中没有出现的查询-项目特征对。

基于embedding的模型,如因子分解机或深度神经网络,可以通过为每个查询和项目特征学习一个低维密集embedding向量来概括以前未见过的查询-项目特征对,而减少特征工程的负担。 然而,当基础查询-项目矩阵稀疏且高秩时,如具有特定偏好的用户或具有狭隘吸引力的小众项目,则很难为查询和项目学习有效的低维表示。在这种情况下,大多数查询-项目对之间应该没有交互,但密集的embedding会导致对所有查询-项目对的非零预测,因此可能会过度泛化并做出不太相关的推荐。 另一方面,具有交叉产品特征变换的线性模型可以用更少的参数记住这些 "例外规则"。

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

image-20220806140145794

该论文的主要贡献包括:

  • 用于联合训练带有embedding的前馈神经网络和带有特征转换的线性模型的 Wide & Deep 学习框架,用于具有稀疏输入的通用推荐系统。
  • 在Google Play(一个拥有超过10亿活跃用户和超过100万个应用程序的移动应用程序商店)上对Wide &Deep推荐系统的实施和评估。
  • 我们已经将Wide &Deep通过TensorFlow中的高级API实现并开源了

虽然想法很简单,但我们展示了Wide & Deep框架显著提高了移动应用商店的应用获取率,同时满足了训练和服务速度的要求。

推荐系统概述

图2显示了应用推荐系统的整体架构。当用户访问应用商店时,会产生一个查询,其中可以包括各种用户和背景特征。推荐系统返回一个应用程序的列表(也被称为印象),用户可以在上面执行特定的操作,如点击或购买。 这些用户行为,连同查询和印象,都记录在日志中,作为模型学习的训练数据。

image-20220806141728671

由于数据库中有超过一百万个应用程序,要在服务延迟要求(通常为O(10)毫秒)内对每个查询的每个应用程序进行详尽的评分是不可能的。 因此,收到查询后的第一步是召回。 检索系统使用各种策略,通常是机器学习的模型和人类定义的规则的组合,返回与查询最匹配的项目短列表。 在减少了候选项目库之后,排序系统对所有项目按其分数进行排序。 分数通常是,即在给定特征的情况下(包括用户特征(如国家、语言、人口统计学)、环境特征(如设备、每天的小时、每周的一天)和印象特征(如应用年龄、应用的历史统计)),用户行动的概率。在本文中,我们专注于使用Wide & Deep学习框架的排序模型。

WIDE & DEEP 模型

Wide模块

如图1所示,Wide部分是一个广义的线性模型,其形式为

是预测值,是特征向量,是模型参数,是偏置。 最重要的转换之一是交叉积转换,其定义为

其中是一个布尔变量,如果第个特征是第个变换的一部分,则为1,否则为0。对于二元特征,当且仅当组成特征(“性别=女性”和“语言=en”)全部为1时,叉积转换(例如,“AND(性别=女性,语言=en)”)为1,否则为0。这捕获了二元特征之间的相互作用,并向广义线性模型添加了非线性。

Deep模块

Deep部分是一个前馈神经网络,如图1所示。 对于分类特征,原始的输入是特征字符串(例如,"语言=en")。 这些稀疏的高维分类特征首先被转换成低维密集的实值向量,通常被称为Embedding向量。 Embedding的维度通常在O(10)到O(100)的范围内。 Embedding向量是随机初始化的,然后在模型训练过程中训练其值以最小化最终损失函数。 然后,这些低维密集嵌入向量被送入前向通道的神经网络的隐藏层。 具体来说,每个隐藏层执行以下计算。

其中是层数,是激活函数,通常是整流线性单元(ReLUs)。分别是第层的激活、偏置和模型权重。

Wide & Deep模型的联合训练

Wide组件和Deep组件使用其输出对数几率的加权和作为预测值进行组合,然后将其送入一个共同的逻辑损失函数进行联合训练。请注意,联合训练和集成训练之间是有区别的。在集成训练中,各个模型在不了解对方的情况下被单独训练,它们的预测只在推理时而不是训练时被合并。 相反,联合训练通过在训练时考虑Wide和Deep部分以及它们之和的权重来同时优化所有参数。这对模型大小也有影响:对于集成训练来说,由于训练是不连续的,每个单独的模型大小通常需要更大(例如,有更多的特征和转换)以达到合理的精度,从而使集成模型发挥作用。 相比之下,在联合训练中,比起全尺寸的Wide模型,Wide部分只需要用少量的交叉积特征转换来完善Deep部分的缺点。

Wide和Deep模型的联合训练是通过使用小批量的随机优化将梯度从输出端同时反向传播到模型的Wide和Deep部分来完成的。在实验中,我们使用了具有L1正则化的Follow-the-regularized-leader(FTRL)算法作为模型Wide部分的优化器,而AdaGrad则用做Deep部分的优化器。

组合模型如图1所示。对于逻辑回归问题,模型的预测结果是:

其中,是二元分类标签,是sigmoid函数,是原始特征的交叉乘积变换,是偏置项。是wide模型权重向量,是应用在最终激活函数上的权重。

系统实现

App推荐过程流的实现包括三个阶段:数据生成、模型训练和模型服务,如图3所示。

image-20220806160357280

数据生成

在这个阶段,使用一段时间内的用户和应用展示数据来生成训练数据。每个示例对应一次展示。标签是应用程序获取:如果安装了展示过的应用程序,则为 1,否则为 0。

词汇表是将分类特征字符串映射到整数ID的表格,也是在这个阶段生成的。系统为所有出现次数超过最低限度的字符串特征计算ID空间。 连续实值特征被归一化为[0,1],方法是将特征值映射到其累积分布函数,并分成个量级。对于处于第个分位数的数值,其归一化值为。在数据生成过程中计算出分位数边界。

模型训练

我们在实验中使用的模型结构如图4所示。 在训练过程中,输入层接受训练数据和词汇表,并生成稀疏和密集的特征向量以及一个标签。 wide部分包括用户安装的应用程序和展示过的应用程序的交叉积转换。 对于模型的Deep部分,我们为每个分类特征学习一个32维的Embedding向量。 我们将所有的Embedding与密集特征连接起来,形成一个大约1200维的密集向量。 然后,连接的向量被送入3个ReLU层,最后是逻辑回归的输出单元。

image-20220806162358038

Wide & Deep模型是在超过5000亿个样本上训练出来的。 每当一组新的训练数据到来时,模型就需要重新训练。 然而,每次从头开始训练的计算成本很高,而且会延迟从数据到达到提供更新模型的时间。为了解决这一挑战,我们实现了一个热启动系统,用前一个模型的Embedding和线性模型的权重初始化一个新模型。

在将模型加载到模型服务器之前,要对模型进行模拟运行,以确保它在为实时流量服务时不会出现问题。 我们根据经验对模型的质量与之前的模型进行验证,作为一种合理性检查。

模型服务

一旦模型得到训练和验证,我们就将其加载到模型服务器中。 对于每个请求,服务器从app召回系统中接收一组候选应用,并接收用户特征对每个应用进行评分。 然后,这些应用从最高分到最低分进行排序,我们按照这个顺序向用户展示这些应用。 分数是通过对Wide & Deep模型进行前向推理来计算的。

为了在10毫秒内为每个请求提供服务,我们使用多线程并行方式优化了性能,即并行运行较小的批次,而不是在单一批次推理步骤中为所有候选应用程序评分。

实验结果

为了评估Wide & Deep模型在真实世界推荐系统中的有效性,我们进行了生产环境的实验,并在几个方面对系统进行了评估:app的安装率和服务性能。

app的安装率

我们在A/B测试框架中进行了为期3周的实时在线实验。 在对照组中,1%的用户被随机选择,并被展示了由上一版本的排名模型产生的推荐,该模型是一个高度优化的仅包含wide部分的逻辑回归模型,具有丰富的交叉特征转换。在实验组中,1%的用户被展示了由Wide & Deep模型产生的推荐,用相同的特征集训练。 如表1所示,Wide & Deep模型在应用商店的主要登陆页面上的应用获取率比对照组提高了3.9%(统计学上有意义)。 该结果还与另一个1%的小组进行了比较,该小组只使用模型的deep部分,具有相同的特征和神经网络结构,Wide & Deep模式在仅有deep模型的基础上有+1%的收益(统计学上有意义)。

image-20220806163546987

除了在线实验外,我们还展示了在离线情况下的接收器操作特征曲线下的面积(AUC)。 虽然Wide & Deep的离线AUC仅是略高一些,但对在线流量的影响更显著。 一个可能的原因是,离线数据集的印象和标签是固定的,而在线系统可以通过融合泛化和记忆能力来产生新的探索性建议,并从新的用户反馈中学习。

服务性能

高吞吐量和低延迟的服务对于我们的商业移动应用商店所面临的高流量水平来说是一个挑战。 在流量高峰期,我们的推荐服务器每秒钟为超过1000万个应用程序评分。在单线程的情况下,对所有候选人进行单批评分需要31毫秒。 我们实施了多线程,并将每个批次拆分成更小的规模,这大大降低了客户端的延迟,达到14毫秒(包括服务开销),如表2所示。

image-20220806164013203

相关工作

将宽线性模型与交叉积特征转换和深度神经网络与密集embedding相结合的想法受到以前工作的启发,如因式分解机,它通过将两个变量之间的相互作用分解为两个低维嵌入向量之间的点乘来增加线性模型的泛化。 在本文中,我们通过神经网络来学习embedding之间的高度非线性互动,而不是点乘,从而扩大了模型的容量。

在语言模型中,已经提出用n-gram特征联合训练递归神经网络工程(RNNs)和最大熵模型,通过学习输入和输出之间的直接权重,显著降低RNN的复杂性(例如,隐藏层的大小)。 在计算机视觉中,深度残差学习[2]被用来降低训练更深层次模型的难度,并通过跳过一个或多个层的捷径连接来提高精确度。 神经网络与图形模型的联合训练也被应用于图像中的人类姿态估计。 在这项工作中,我们探索了前馈神经网络和线性模型的联合训练,在稀疏的特征和输出单元之间有直接的连接,用于具有稀疏输入数据的通用推荐和排名问题。

在推荐系统的文献中,通过对内容信息的深度学习和对评级矩阵的协同过滤(CF)的耦合,已经对协同深度学习进行了探索。 以前也有关于移动应用推荐系统的工作,如AppJoy,它在用户的应用使用记录上使用了CF。 与之前工作中基于CF或内容的方法不同,我们在用户和app展示数据上联合训练Wide和Deep模型,用于应用推荐系统。

结论

记忆能力和泛化能力对推荐系统来说都很重要。 Wide & Deep模型可以通过交叉积变换有效地记忆稀疏的特征互动,而深度神经网络可以通过低维embedding对以前未见过的特征互动进行泛化。 我们提出了Wide & Deep模型,以结合这两类模型的优势。 我们在Google Play(一个大规模的商业应用商店)的推荐系统上对该框架进行了生产和评估。 在线实验结果显示,与仅有的wide和deep模型相比,使用Wide & Deep模型在应用获取方面有明显的改善。

引用

[1] J. Duchi, E. Hazan, and Y. Singer. Adaptivesubgradient methods for online learning and stochasticoptimization.Journal of Machine Learning Research,12:2121–2159, July 2011.

[2] K. He, X. Zhang, S. Ren, and J. Sun. Deep residuallearning for image recognition.Proc. IEEE Conferenceon Computer Vision and Pattern Recognition, 2016.

[3] H. B. McMahan. Follow-the-regularized-leader andmirror descent: Equivalence theorems and l1regularization. InProc. AISTATS, 2011.

[4] T. Mikolov, A. Deoras, D. Povey, L. Burget, and J. H.Cernocky. Strategies for training large scale neuralnetwork language models. InIEEE Automatic SpeechRecognition & Understanding Workshop, 2011.

[5] S. Rendle. Factorization machines with libFM.ACMTrans. Intell. Syst. Technol., 3(3):57:1–57:22, May 2012.

[6] J. J. Tompson, A. Jain, Y. LeCun, and C. Bregler. Jointtraining of a convolutional network and a graphicalmodel for human pose estimation. In Z. Ghahramani,M. Welling, C. Cortes, N. D. Lawrence, and K. Q.Weinberger, editors,NIPS, pages 1799–1807. 2014.

[7] H. Wang, N. Wang, and D.-Y. Yeung. Collaborativedeep learning for recommender systems. InProc. KDD,pages 1235–1244, 2015.[8] B. Yan and G. Chen. AppJoy: Personalized mobileapplication discovery. InMobiSys, pages 113–126, 2011.

 

 


面向ACG编程