预计阅读时间10分钟,下一期将带来RS中经典的GBDT+LR论文。
图片
文外闲聊
图片
前段时间和一个老哥聊天,说起Youtubdnn,才知道模型设计只是paper中的一小部分,整篇paper介绍了完整的rs前前后后的过程,被喷为菜鸡(哭了),这两天对paper又复刷了一遍,才发现还有不少有趣的case,话不多说,进入正文!
图片
背景介绍
图片
图片
Youtube是世界上最大的创作、分享和发布视频内容的平台,也是最复杂的推荐系统之一。在本论文中将介绍Youtube使用深度学习去建立推荐系统,同时分享了对大规模推荐从设计、迭代以及维护的实际经验。
图片
前文介绍
图片
在本文中我们将重点关注Youtube视频平台的深度学习推荐系统,推荐Youtube视频极具挑战性,主要有以下三个方面:
- 规模数:现有许多在小规模数据得到良好应用的推荐算法不能应用在Youtube大规模数据上。高度专业化的分布式推荐算法和高效的推荐系统对于处理Youtube庞大的用户群和内容库至关重要。
- 新鲜度:Youtube拥有足够动态的语料库,每时每刻都在上传大量视频,推荐系统应该具有足够的响应能力,能够对新上传的内容和用户最新的行为及时建模,可以从探索和利用的角度来理解新内容和已有视频之间的平衡。
- 噪音性:由于稀疏性和各种不可观测的外部因素,Youtube上的历史用户所有行为是难以预测的,我们很难获取用户的真实满意度,因此选择对有噪声的隐式反馈信号进行建模。此外,我们的算法需要对训练数据的特定特征保持稳健性。
通过与其它的Google产品结合,Youtube经历了根本性转变,深度学习作为几乎所有学习问题的通用解决方案。我们的整个系统建立在Google Brain上,也就是现如今已开源的Tensorflow框架。在Tensorflow框架上我们的模型在数千亿个例子上进行训练,学习大约10亿个模型参数。
图片
系统综述
图片
图片
Fig.1 Recommendation system architecture demonstrating the “funnel” where candidate videos are retrieved and ranked before presenting only a few to the user.
图1 推荐系统架构为“漏斗”,召回候选集并对其进行排序,然后仅向用户展示一些视频.
我们的系统架构如图1所示,该系统由两个神经网络组成:一个用于召回候选集,一个用于排序候选集。推荐的两阶段方法允许我们从非常大的视频库(数百万)中进行推荐,同时仍然可以确定页面上出现的少量视频是个性化的,并以此来吸引用户。
召回网络从用户的Youtube活动历史中获取事件作为输入,并从大型物料库中检索一小部分(数百个)视频,这些候选视频通常与用户高度相关,并通过协同过滤来提供广泛的个性化。用户之间的相似性则用粗粒度特征如搜索序列、人口统计等来实现。
排序网络通过使用视频和用户的丰富的特征集,根据期望的目标函数为每个视频预测分数来完成任务,根据视频的预测得分进行排序,最终呈现到用户页面上。
在开发过程中,我们广泛使用离线指标(准确率、召回率、排序损失函数等)来指导我们系统的迭代改进。然而,对于算法或模型有效性的最终确定,我们依赖现场进行的A/B实验。在现场实验中,我们可以观察点击率、观看时长和许多其它衡量用户参与度的指标的微小变化。这一点很重要,因为在线的A/B实验结果并不总是和离线实验结果相同
图片
召回任务
图片
在召回过程中,庞大的Youtube视频库被筛选出数百个用户可能感兴趣的视频。我们的神经网络是对用户历史视频序列来模拟因子分解行为。从这个角度看,我们的方法可以看作是因子分解技术的非线性推广。
我们将推荐提出为高效极端多分类,则预测问题转变为预测用户观看时间的多分类,这对于使用softmax进行区分视频是有用的。尽管Youtube平台上存在明确的反馈机制(点/踩赞,产品调查等),但我们使用视频的隐式反馈来训练模型,用户观看一个视频就是一个正面的示例,这种选择能够获取更多的隐式反馈,允许我们在显示反馈及其稀疏的情况下产生更深层的推荐。
为了有效地训练这样一个数百万个类的模型,我们依靠(“候选采样”)技术对负样本进行采样,然后通过重要性加权来对该采样进行校正。由于极端多分类中使用softmax直接进行分类变得非常困难、且性能被降低。因此我们提出了一种基于点积空间的最近邻搜索方案,经过A/B实验确定结果对最近邻搜索的方案并不敏感。
图片
Fig.2 At serving, an approximate nearest neighbor lookup is performed to generate hundreds of candidate video recommendations.
图2 在服务时,执行近似最近邻查找以生成数百个候选视频推荐.
图片
Fig.3 Features beyond video embeddings im-prove holdout Mean Average Precision and layers of depth add expressiveness.
图3 视频Embeeding之外的特征改进了平均精度和深度层增加了信息学习能力.
受自然语言模型影响,我们将用户稀疏的观看历史通过神经网路映射到embedding向量中进行表示,该网络需要固定embedding向量的输出大小。其网络架构如图2所示。
需要注意的是,数据示例是从所有YouTube视频(甚至是嵌入在其他网站上的视频)获取的,而不仅仅是我们设计的推荐视频。否则,新视频将很难出现,推荐视频将过度偏向于利用。如果用户通过我们推荐以外的方式发现视频,我们希望能够通过协作过滤将这一算法快速传播给其他人。改进实时指标的另一个关键思路是为每个用户生成固定数量的训练示例,从而在损失函数中有效地对我们的用户进行同等加权。这阻止了一小批高度活跃的用户损失。
图片
排序任务
图片
图片
Fig.3 Deep ranking network architecture depicting embedded categorical features with shared embeddings and powers of normalized continuous features.
图3 深度排序网络构架使用embedding类别特征和归一化连续特征.
在排序期间,我们可以使用视频和用户更多的信息来进行计算,因为不同于召回任务在数百万中生成召回候选集,排序任务只关注几百个视频并进行预测分数,同时排序对于合并分数不可比较的不同候选来源也至关重。我们使用与候选网络架构相似的深度神经网络,最后使用加权逻辑回归为每个视频预测分数,然后通过分数来排序视频列表并返回给用户。我们的业务目标是根据A/B测试的结果来调整,但是一般业务目标都是视频播放时长。因为过度依赖于点击率,会导致震惊党、标题党获得较高排名,因为他们能够达到欺骗用户点击的目的,所以我们根据播放时长来作为业务目标,从而保证优质视频的排序。
我们使用的神经网络将自动学习非线性特征,但是也需要我们自己去构建一些特征。主要挑战在于如何构建代表用户行为的时间序列以及这些行为如何与正在评分的视频相关。我们观察到最重要的特征来源于用户与视频本身之间的互动。例如,用户最后一次在这个频道上观看视频是什么时候?用户在这个频道上观看了多少视频?这些描述过去的统计特征极其强大。描述过去视频展示频率的功能也是及其重要的,如果给用户推荐一个视频但是用户最近没有观看他,那么模型在该用户上将降低下一次展示的该视频频率。对于服务二次印象以及观看历史,是本文范围之外的工程壮举,但对业务却是相当重要。
我们的目标是预测用户的预期观看时间,给出的训练示例有正面的(视频被点击),要么是负面的(视频未被点击)。正面示例的标签用用户观看时间来标注,为了预测预期的观看时间,我们采用了加权逻辑回归技术,如图3所示,这是为此目的专门开发的。该模型在交叉熵损失下使用逻辑回归进行训练。当然,正面示例是视频上观察到的观看时间来加权的,负面示例是由数量加权的。我们使用指数函数作为最终激活函数来产生这些概率,这些概率精确地估计了预期的观看时间。
图片
Tab.1 Effects of wider and deeper hidden ReLU layers on watch time-weighted pairwise loss computed on next-day holdout data.
表1 更宽更深的ReLU隐藏层对视频的时间加权损失,对次日视频数据的影响.
我们对于隐藏层进行了处理,最终结果表明增加ReLU隐藏层宽度会改善结果,增加其深度也是如此。然而,需要权衡推理所需的运行时间。我们最终采用了塔形结构网络设计,1024->512->256,该策略为我们提供了最佳结果,同时能够满足规定的推理运行时间。对于1024->512->256,我们尝试只输入归一化的连续特征,这增加了0.2%损失分数。同样的,我们对相同隐藏层配置的网络使用正负权重相等的逻辑回归技术,不出所料,这使视频的预期时间损失增加了4.1%。
图片
总结文章
图片
图片
论文总结优点:
- 利用深度学习模型召回候选集能够利用更多有效的信息
- 利用深度学习模型排序候选集超越已有的业务机器学习模型
- 通过对逻辑回归修正的情况下,播放时长指标优于点击率指标
本人总结优点: - 工业上大量使用深度学习来进行召回和排序
- 使用最近邻搜索加速搜索召回物料,能够满足百万级别
- 使用的播放时长指标更追求内容本身的优质性,适合内容流业务
–点击阅读查看论文–