Advertisement

Wide & Deep Learning for Recommender Systems

阅读量:

ABSTRACT

基于特征乘积(cross-product)的方法能够有效建模特征之间的交互作用,并且其记忆能力具有可解释性。另一方面,在泛化能力方面,则需要投入更多资源进行特征工程优化。然而,在用户-物品关系较为稀疏且维度较高的情况下,深度神经网络(DNN)可能会导致过拟合现象的发生,并推荐一些与当前场景无关的商品内容。为此,文中提出了一种名为Wide&Deep的学习框架,在该框架下同时训练wide模块和deep模块,并将两者的优势结合起来以平衡记忆能力和泛化性能。作者在Google Play应用商店上进行了实证研究,并发现采用W&D模型相比单独采用wide或deep模型能够显著提升应用下载量(acquisition)。

INTRODUCTION

记忆性即为物品或特征间共现关系,并可通过历史数据识别其存在。 泛化性即为物品间关系的传递或转移,并可用于探索历史数据中未曾或极少出现的特征组合。 基于记忆性的商品通常与用户有过互动的历史商品相关联,在此基础上可进一步利用泛化性的特点来拓展商品间的关联网络以提高商品推荐结果的质量与准确性。文中主要针对Google Play平台上应用进行个性化推荐研究与实现。

广义线性模型比如LR因为简单、可解释、可扩展,在工业级的推荐和排序问题中广泛使用。一般使用ont-hot编码的二元稀疏 特征来进行训练。记忆性可以通过特征之间的cross-product来完成。比如AND(user_installed_app=netflix, impres- sion_app=pandora”) 只有在用户安装了netflix且看到了pandora app之后该特征的特征值为1。这也解释了一个特征对的共现关系和label之间的关系。泛化性可以通过更粗粒度的特征组合来实现。比如AND(user_installed_category=video, impression_category=music),但是这种需要人工特征工程。One limitation of cross-product trans- formations is that they do not generalize to query-item fea- ture pairs that have not appeared in the training data.

基于Embedding的技术框架中包含FM和DNN等模型,在学习query与item特征之间的低维embedding表示时能够推广到未曾见过的query-item特征组合,并降低了特征工程的需求。然而,在面对高维稀疏数据时,提取低维嵌入变得具有挑战性。当遇到大多数query-item对之间没有交互时(即这些pair之间不存在明确的关系或互动),密集型嵌入虽然能够预测出所有可能的pair都会产生非零值(即即使这些pair之间实际并没有明显的关联),但这会导致模型过度泛化并产生不相关的推荐结果。

在这里插入图片描述

RECOMMENDER SYSTEM OVERVIEW

在这里插入图片描述

第一步是搜索过程,在此期间系统会定位并呈现最相关的物品列表。
第二步是对结果进行排序处理,在这个过程中, 系统的得分为 P(Y|X),即在给定特征向量 x 的情况下, 用户行为 y 发生的概率。
用户的属性信息如国籍, 语言以及人口统计数据; 环境因素包括设备类型以及时间维度的数据如当前小时与一周的工作日分布情况; 展示效果方面涉及应用生存期数据及其使用频率统计信息。 本文专注于排序模型的研究与优化。

WIDE & DEEP LEARNING

The Wide Component
这部分是一个广义线性模型

y=Wx +b

特征包含原始特征和转换特征,后者最重要的是cross-product 特征:

在这里插入图片描述

d代表特征的数量,在机器学习模型中用于表示数据集的属性数量;c_{ki}具有布尔类型,在特定条件下赋值为1或0。

在分析二维特征时,在各组成部分均为1的情况下(即所有条件均满足时),该组合特征才会等于1。例如,“AND(gender=female, language=en)”这一特定特征仅在“gender=female”和“language=en”两个条件均成立的情况下才会取值为1。这种设计不仅揭示了两个维度之间的交互作用,并且增强了模型的非线性能力。

The Deep Component

亦即DNN,在处理高维稀疏离散特征时一般会将其转换为嵌入向量(embedding vector),其维度从O(10)扩展至O(100)
嵌入向量通常作为隐层的输入使用。每个隐层的计算如下:

在这里插入图片描述
Joint Training of Wide & Deep Model

这两个部分各自计算出对应的log odds值,并以加权总和的形式作为最终的预测结果;接着将这些预测结果传递给LR损失函数进行联合优化。

这里为什么说是log odds

作者阐述了joint training 和ensemble的区别。

在实验时,wide部分使用L1正则的FTRL 算法来优化,AdaGrad 作为deep部分。

对LR来说,最后的预测是

在这里插入图片描述

SYSTEM IMPLEMENTATION

包含三部分:data generation, model training, and model serving

在这里插入图片描述
数据生成

在当前阶段,在同一时间段内展示的用户及应用数据用于生成训练集。每个样本代表一次曝光(impression)。标签是app acquisition(获取应用),具体来说就是如果该应用被下载,则标记设为1;否则标记设为0。

在这一阶段,还会创建词典(vocabularies),用于将字符型离散特征转换为整型ID对应的词汇表。(这些词汇表主要用于表示不同类型的字符及其对应的唯一标识符) 系统将计算所有出现频率超过一定阈值的字符型特征所占据的ID空间。(这些高频率的特征通常会被重点关注) (必须是字符串类型特征吗?

连续特征被标准化至[0,1]区间;通过将变量x映射至其累积分布函数F(x)=P(X≤x),然后将结果划分为n_q个桶;对于第i个桶中的数据点,则其标准化后值计算为\frac{i-1}{n_q -1};同时,在此过程中也会生成相应的分位点数值

这个连续特征的处理不是很明白怎么做的

Model Training

模型结构如下:

在这里插入图片描述

wide部分是用户安装的app和展现的app的交叉。

有个问题,交叉出来的结果是一个one-hot的向量?

deep模块中,
将每个离散特征映射为一个32维向量,
将所有离散特征的嵌入向量与连续特征进行拼接,
生成一个约1200维的密集向量。
随后接入三个ReLU层,
最终经过逻辑回归模型输出结果。

基于规模宏大的5,000亿样本集进行W&D模型的训练工作,在每一次引入新的数据批次时都需要重新执行这一过程。由于从零开始的重新训练将会带来巨大的成本开销,并且存在从现有数据积累到最终完成模型更新所需的时间差值(即 delay),因此作者开发并实现了暖启动机制(Warm-Start),通过该机制将模型初始化为先前的训练结果。

在加载模型至model server之前,请您进行一次dry run操作以确保线上流量问题已解决。We assess the model quality by comparing it with the previous version as part of a sanity testing procedure. (健康性检查)

Model Serving

app按照分数从高到低展现给用户。

为了提高响应速度, 作者采用多线程技术对batch进行预测, 而非逐个按顺序处理所有候选应用

EXPERIMENT RESULTS

App Acquisitions

线上3周的A/B实验

在对照组中占1%的用户展示了基于LR算法的推荐结果,在实验组中占1%的用户则呈现了基于W&D模型进行推荐的结果;其特性与对照组一致。

在这里插入图片描述

W&D 在线上的效果比线下更显著,作者推测的原因是

A potential reason for this limitation is that the impressions and labels within offline datasets remain static, whereas the online system has the capability to create innovative recommendation strategies by integrating both generalization and memorization techniques, and continuously improve through feedback from newly encountered user interactions.

Serving Performance
在这里插入图片描述

该方法借鉴了广度与深度结合的思想,在传统的线性模型框架中加入了泛化的机制。具体而言,在FM的基础上将其特征间的交互作用分解为嵌入向量间的点积运算。然而,在本文中我们采用了深度神经网络(DNN)来建模嵌入间非线性关系,并避免直接使用点积这一操作以提升模型的能力

全部评论 (0)

还没有任何评论哟~