YouTube经典推荐论文。


论文背景

  RecSys’16
  谷歌学术引用次数为1201(截至2020年12月15日)

  作者:Paul Covington, Jay Adams, Emre Sargin
  Google
  Mountain View, CA

  关键词:recommender system; deep learning; scalability
  PDF

Introduction 引言

YouTube推荐系统的三大挑战:

  • Scale 大规模
  • Freshness 新鲜度
  • Noise 噪声-数据往往是隐式反馈

System Overview 系统概述

系统架构
系统架构

  系统由两部分组成:候选生成部分和排序部分。
  候选生成部分输入是用户历史活动事件,使用协同过滤从大数据集中输出小子集。
  排序部分根据目标函数对每个视频精排打分,最高分视频推荐给用户。

  优点:从大数据集中选出的小数据集依然具有个性化特征,并且候选生成部分可以添加别的数据源。

  评价指标:精确率、召回率、排序损失等
  最后通过A/B测试在线实验(A/B测试结果不总是和离线实验结果相一致)。

Candidate Generation 候选生成

  这种方法可以看作矩阵分解的非线性推广,它早期的神经网络迭代只嵌入用户过去观看记录来模拟这种因子分解行为。

Recommendation as Classification 作为分类推荐

  推荐视为极端多分类问题,在时间t时,结合用户U和上下文C,从数亿的数据库V中选择一个视频i记为特定的视频$w_t$。
$$P(w_t = i|U,C) = \frac{e^{v_iu}}{\sum_{j∈V}e^{v_ju}}$$
  其中$u∈\mathbb{R}^N$代表了用户高维嵌入(embedding),上下文数据对和$V_j∈\mathbb{R}^N$代表了每个候选视频的嵌入(embedding)。
  在这样的设定中,一个嵌入就从稀疏实体转为了稠密向量($\mathbb{R}^N$)。

  深度神经网络的任务是学习用户嵌入u,作为用户历史记录和上下文的函数,这有助于使用softmax分类器从海量视频中进行识别。

Effcient Extreme Multiclass 高效极端多分类

  为了有效地训练这样一个拥有数百万分类的模型,需要依赖于一种技术,从背景分布(“候选抽样”)中抽取负类,然后通过重要性加权对该抽样进行修正。对于每一个实例,真标签和抽样的负样本的交叉熵损失都最小。
  在严格的服务延迟为几十毫秒的情况下为百万个物品打分需要一个近似亚线性的方案。以前的YouTube系统依赖于hashing,分类采用相似方法。
  由于服务时不需要softmax输出层校准可能性(?有些不解),评分问题简化为在点积空间的最近邻搜索,在这个空间中,通用库可以使用。A/B结果对最近邻搜索算法的选择不是特别敏感。

Model Architecture 模型架构

  学习每个视频的高维嵌入到固定词汇中,并将这些嵌入输入到前馈神经网络中。用户的观看历史记录由稀疏视频id的可变长度序列表示,该序列通过嵌入映射到稠密向量表示。该网络需要固定规模的密集输入,并简单地平均在不同策略中表现最好的嵌入。通过梯度下降反向传播更新,嵌入与所有其他模型参数联合学习。特征被连接成一个宽的第一层,然后是几层全连接的线性单元(ReLU)。如下图所示。

候选生成架构
候选生成架构

Heterogeneous Signals 混合信号

  使用深度神经网络作为矩阵分解的推广的一个关键优点是任意连续和分类特征可以很容易地添加到模型中。

“Example Age” Feature “示例年龄”特征

  用户往往喜欢新鲜的内容。除了简单地推荐用户想看的新视频的一级效应,还有一个重要的二级现象,即引导和传播病毒式内容。视频受欢迎程度是会变化的,但推荐系统反映的是几周内的平均观看可能性。为了纠正这一点,在训练期间将训练示例的年龄作为一个特征输入。在服务时间,这个特征被设置为零(或者稍微负一点),以反映模型正在训练窗口的最后进行预测。

With Example Age
With Example Age

Label and Context Selection 标签和上下文选择

  替代学习问题的选择对A/B测试的性能有很大的影响,但很难用离线实验来衡量。
  训练示例是从所有YouTube视频中生成的而不是仅仅依靠推荐。否则新内容的出现将会非常困难,而且推荐器会有过度偏向。如果用户是通过推荐以外的方式发现视频,希望能够通过协同过滤快速传播这个发现给其他人。改进实时指标的另一个关键见解是,为每个用户生成固定数量的训练样例,有效平等地在损失函数中权衡我们的用户。这避免了一小部分高活跃用户主导损失。
  必须非常小心地对分类器隐瞒信息,以防止模型利用站点的结构和过度拟合代理问题。
  预测用户下一个观看的性能要比预测随机留出的观看好得多。许多协同过滤系统隐式地选择标签和上下文,方法是取出一个随机的物品,并从用户历史记录中的其他物品中预测它。这泄露了未来信息并忽视了非对称消费模式。相反,本文“回滚”用户的历史记录,通过选择一个随机的观看记录,并且只输入用户留出的有标签的观看记录之前采取的动作。

Predicting future watch
Predicting future watch

Experiments with Features and Depth 特征和深度实验

  添加特征和深度可以显著改善保持数据的精度,如图6所示。在这些实验中,一个包含100万个视频和100万个搜索令牌的词汇表中嵌入了256个浮点数,每个浮点数的最大包尺寸为50个最近的观看和50个最近的搜索。softmax层在相同的1M视频类上输出多项分布,维数为256(可以认为是单独的输出视频嵌入)。网络结构遵循一个常见的“塔”模式,其中网络的底部是最宽的,每个后续隐藏层的单位数量减半。

Ranking 排序

排序架构
排序架构

  使用与候选生成结构相似的深度神经网络,使用逻辑回归为每个视频印象分配一个独立的分数。如图所示。然后,视频列表将根据这个分数进行排序并返回给用户。最终排名目标是根据实时A/B测试结果不断调整,但通常是每个印象的预期观看时间的简单函数。通过点击率排名通常会促进欺骗性视频,用户没有完成(“点击诱饵”),而观看时间能够更好地捕捉用户粘性。

Feature Representation 特征表示

  用的类别或特征在基数上差别很大——有些是二进制的(例如用户是否登录),而其他有数百万个可能的值(例如用户的最后一次搜索查询)。根据功能是仅贡献单个值(“univalent”)还是一组值(“multivalent”),进一步划分功能。  univalent例子:被评分的视频ID,multivalent例子:用户最近观看的N个视频ID的bag。还根据特性是描述物品的属性(”impression”)还是描述用户/上下文的属性(”query”)对特性进行分类。查询特征为每个请求计算一次,而印象特征为每个物品项计算一次。

Feature Engineering 特征工程

  描述过去视频输入频率的特性对于在推荐中引入“churn”(连续的请求不返回相同的列表)也是至关重要的。如果一个用户最近被推荐了一个视频,但没有看过它,那么模型自然会在下一次加载页面时降低这种印象。

Embedding Categorical Features 嵌入分类特征

  类似于候选生成,使用嵌入将稀疏分类特征映射到适合于神经网络的稠密表示。
  同一ID空间中的分类特性也共享底层的嵌入。共享嵌入对于提高泛化性能、加快训练速度和减少内存需求具有重要意义。

Normalizing Continuous Features 归一化连续特征

  神经网络对其输入的尺度和分布非常敏感,而其他方法,如决策树的集合,对单个特征的尺度是不变的。
  对于连续特征x,其分布为f,使用公式$\tilde{x} = \int_{-\infty}^xdf$进行归一化操作到[0,1)。除了该方法,也使用了$\tilde{x}^2$和$\sqrt{\tilde{x}}$。

Modeling Expected Watch Time 预期观看时间建模

  预期观看时间使用加权逻辑回归方法。
  模型在交叉熵损失下用逻辑回归进行训练。积极的(点击)印象是由视频上观察的观看时间加权的。负面(未点击的)印象全部获得单位权重。
  逻辑回归学到的概率为$\frac{\sum{T_i}}{N-k}$,N是训练集数量,k是正例数量,$T_i$是第i个印象的观看时间。
  最终本文使用指数函数$e^x$作为最后激活函数来产生预估概率。

Experiments with Hidden Layers隐藏层实验

  这些结果表明,增加隐藏层的宽度可以改善结果,同时也可以增加它们的深度。但是,需要权衡的是推荐所需的服务器CPU时间。

Conclusions 总结

  将YouTube推荐问题划分为两个部分:候选生成部分和排序部分。
  通过捕捉不对称的协同观看行为和防止未来信息泄漏,对未来观看进行分类,可以很好地执行实时指标。从分类器中截取不同信号对于取得良好的结果也是至关重要的——否则模型会过度拟合代理问题而不能很好地转移到主页。
  使用训练样例的年龄作为输入特征,消除了对过去的固有偏见,并允许模型表示流行视频的时间依赖性行为。这提高了离线保持精度结果,并在A/B测试中显著增加了观看最近上传的视频的时间。
  排序是一个比较经典的机器学习问题,然而本文深度学习方法在观看时间预测方面优于以往的线性和基于树的方法。推荐系统尤其受益于描述用户关于物品的历史行为的特定特征。深度神经网络需要分类特征和连续特征的特殊表示,分别用嵌入和分位数规范化进行变换。层的深度显示有效地模拟了非线性交互之间的数百个特征。
  逻辑回归通过加权训练样例修正了正例,统一了负例,使之能学习预期观看时间的概率。与直接预测点击率相比,该方法在观看时间加权排序评价指标上表现得更好。