摘要
YouTube所使用的推荐系统是现在最大规模的、最先进的业界的推荐系统之一。在这篇论文中,我们在较高层面上描述这个系统,并重点关注了深度学习所带来的巨大的性能提升。本论文根据典型的两阶段信息检索的二分法(two-stage information retrieval dichotomy)分为两部分:首先,我们详细描述了一种深度候选生成模型(deep candidate generation model),接着描述了一种分离的深度排名模型(deep ranking model)。通过设计、迭代、维护一个带有巨量面向用户的影响的巨型推荐系统,我们还提供了实用的经验教训和见解。
系统概述
我们的推荐系统的整体结构如图2所示。系统由两个神经网络组成:一个用于候选生成,一个用于排名。其中候选生成网络从用户的YouTube活动历史中提取事件作为输入,然后从一个大的视频库中检索出一个小数据集(上百个视频)。这些候选被认为通常与用户有很精准的相关性。这个候选生成网络仅通过协同过滤(collaborative filtering)提供广泛的个性化。用户之间的相似性可以通过粗粒度特征(例如视频观看的ID、搜索查询单词以及人口特征统计)表达。
一个推荐列表中出现的一些「最好」的推荐需要一种良好的表征,以在具有高召回率(recall)的候选集中区分相对的重要性。排名网络通过使用一个描述视频与用户的特征集合的期望目标函数来给每个视频打分,从而完成排名的任务。根据它们的得分,然后将最高分的视频展现给用户。
两阶段的推荐方法允许我们从一个很大(数百万)的语料库中进行推荐,与此同时还仍有在设备上出现的少量视频是个性化的吸引用户的内容。此外,这个设计能够和其他源生成的候选进行混合,例如在这一项早期工作[3]中描述的。
在开发过程中,我们广泛地使用了非网络的指标(准确度、召回率、ranking loss)来引导我们的系统的迭代改进。然而,为了最终测定一个算法或模型的效果,我们依靠于通过实时实验进行A/B测试。在一个实时实验中,我们能度量在点击率、观看时间与许多度量用户参与度的指标中不易察觉的变化。这是非常重要的,因为实时A/B测试结果不总是与离线实验有相关性。
图2:推荐系统架构:候选视频通过「漏斗」状的流程从大量视频中被检索出来并进行排名,然后再将其中一小部分展示给用户。
图3:深度候选生成模型架构:嵌入的稀疏特征是和稠密特征连结在一起的。在级联(concatenation)将可变大小的稀疏ID转换成适合隐藏层输入的固定宽度的向量之前,嵌入被取了平均。所有隐藏层是全连接的。在训练中,使用取样的softmax的输出之上的梯度下降对交叉熵损失进行最小化。在服务中,用一个近似最近邻(approximate nearest neighbor )查询生成数以百计的候选视频推荐。
图4:对于一个给定的视频,模型用样本年龄(example age)作为一个特征训练,能够精准表达出数据中的上传时间和依赖时间的受欢迎程度。如果没有这一特征,该模型会在训练窗口近似地预测平均似然( average likelihood)。
图5:给模型选择标签和输入上下文对离线评估来说很有挑战性,但是对实时性能有巨大的影响。如图,实心圆点?是网络的输入特征,空心圆点?是被去除的。我们发现在A/B测试上预测未来观看(5b)的表现更好。如5b所示,样本年龄表示为tmax ? tN,其中tmax是训练数据中的最大观测时间。
图6:描绘了嵌入的分类特征(包括一价特征和多价特征)