YouTube DNN论文精读

Abstract

YouTube DNN是目前工业界规模最大最复杂的推荐系统之一。在《Deep Neural Networks for YouTube Recommendation》这篇论文中首先从整体的角度上介绍了以YouTube推荐系统的架构,然后集中介绍了一下深度学习给YouTube的推荐系统带来的提升。

YouTube推荐系统的架构采用了检索的两段式结构分为:

  • 候选集生成模型

  • 排序模型

在这篇论文中还给出了模型设计、迭代和维护的细节。以及我们在大规模推荐系统中的经验和见解。

1. Introduction

YouTube 是全世界最大规模的视频创作、分享、观看平台。YouTube的推荐系统需要在这么一个每天有大量视频新增的平台上给亿级别的用户提供个性化的视频内容。

在《Deep Neural Networks for YouTube Recommendation》这论文中,我们主要介绍深度学习对YouTube推荐系统带来的巨大影响。图1是YouTube这个应用的首页情况。

在这里插入图片描述

图1    YouTube DNN首页

在YouTube的视频推荐中主要面临以下三个问题:

  • Scale(大规模): 许多已经存在的算法在小数据上可能能够很好的work,但是一旦迁移到我们这样的大规模数据集上就没有办法很好的完成工作。如何提供可靠的分布式算法训练和高效的实时服务,对于处理YouTube庞大的用户和语料库来说至关重要。

  • Freshness(新颖性): YouTube的视频语料库是动态变化的,可能每秒钟有几个小时时长的视频上传。推荐系统应该在视频积累尽可能少的用户行为下,能够对新上传的内容作出较快的响应。系统可以通过exploration和exploitation来平衡新内容和已经被用户验证过的内容。

  • Noise(噪声): 在推荐系统中,用户行为具有稀疏性和不可预测的特性。我们很难能够捕获到用户兴趣的真实表达。在对用户行为建模的时候,我们更多的利用的是隐式反馈的数据。
    此外视频内容里面如果没有定义好的实体的话很难被结构化,因此我们的系统需要对非结构的化的视频内容具有一定的健壮性。

在谷歌的产品矩阵中,YouTube完成了一个经典的转变,使得深度学习成为解决问题的一种通用的手段。此外,我们在Google Brain上完成了深度模型的实现。Google Brain开源成了TensorFlow。

TensorFlow提供了一个适合的深度学习框架来试验各种深度模型。我们的模型在上亿个样本当中大约学习了一亿的参数。

和矩阵分解相反推荐系统中使用深度神经网络方法的研究比较少。

整体来看这篇论文的组织结构如下:

在第2节中,我们对推荐系统的整体结构做了一个简要的概述。在第3节中,描述了推荐系统中候选集生成的具体细节,包括如何训练神经网络以及实时推荐服务的部署。

在第4小节中介绍了排序模型的细节,包括如何使用weighted logisticregression对播放时长进行建模(而不是点击率),并且在实验结果中显示,提高隐藏层深度对排序模型效果的提升有帮助。

最后,在第5小节中,我们给出了在推荐系统上的实践经验和结论。

2. System Overview

在图2中,展示了YouTube推荐系统的整体结构。整个系统由两个神经网络组成,一个用于生成候选集,另外一个针对每一个用户生成的候选集结果进行精排序。

在这里插入图片描述

图2    YouTube 推荐系统架构

YouTube的候选集生成网络以YouTube的用户行为历史作为输入,为用户从大规模的视频语料库中挑选出一小部分用户感兴趣的视频子集(百级别的)。生成的这些候选集视频基本上和用户的兴趣具有较高的相关性。候选集生成网络基于协同过滤的方式为用户提供粗粒度的个性化。不同用户之间的区分性通过一些粗粒度的特征来表示:例如用户观看视频的id,用户的查询记录,以及人口统计信息。

系统给出召回候选集列表之后需要通过精排来区分视频之间相对的重要程度。排序网络通过使用丰富的用户特征和行为数据设计优化目标来完成精排工作。最后,我们通过排序模型给出的得分对这些视频进行排序,得分较高的视频会被推荐给这些用户。

候选集生成和排序两个阶段能够让我们从大规模的语料库中给用户推荐感兴趣的视频。同时确保呈现给用户的一小部分视频具有较高的准确性。此外,这种方法还可以混合不同候选集的视频。

在实际的开发和迭代中,我们采用离线的评估指标(例如:precision, recall, ranking loss等等),
来评估模型的迭代效果。最后,我们通过线上的AB测试来评估模型是否有效。

在线上实验中,我们可以通过统计点击率、观影时长等许多其他衡量用户参与的指标来衡量推荐系统的细微变化。AB测试在模型的上线和迭代中是非常重要的。因为线上的AB测试结果跟离线结果并不是总是相关的。

3. Candidate Generation

在候选集的生成阶段,需要从大规模的候选视频中筛选出成百上千与用户相关的视频。在文章[23]中,描述了一个基于矩阵分解的推荐方法。在我们早期的迭代中模拟了这种因子分解的方式采用浅层的神经网络对用户行为做嵌入。

所以如果从因式分解的角度来看,我们的方法可以看成是一种因式分解技术的通用推广。

3.1 Recommendation as classification

我们可以将候选集生成的过程看成是一个极端的多分类问题。那么推荐问题就转化成了一个预测分类准确性的问题。

给定一个用户 U U U, 这个用户对应的上下文为 V V V,需要预测这个用户光看某个视频的准确性。对应具体的数学描述形式如下:

P ( w t = i ∣ U , C ) = e v i u ∑ j ∈ V e v j u P(w_t=i|U,C) = \frac{e^{v_iu}}{\sum_{j \in V}e^{v_ju}} P(wt=iU,C)=jVevjueviu

其中 u ∈ R N u \in R^N uRN表示用户和场景的高维嵌入, v j ∈ R N v_j \in R^N vjRN表示侯选库中的每个视频。
在候选集生成阶段,嵌入阶段只是将稀疏的实体转化成为 R N R^N RN中的稠密向量。

深度学习的任务根据用户行为的观影历史和上下文信息来学习用户的嵌入表示,然后通过一个线性多分类器来预测用户感兴趣的视频分类。虽然在YouTube DNN中存在显式反馈的机制,但是我们仍然使用用户的隐式反馈的播放信息来训练模型。在构建样本数据的时候,我们把用户观看的视频作为正样本。采用隐式反馈数据来建模的原因在于:通过隐式反馈我们能够拿到更多的用户数据来完成显式反馈稀疏情况下的深度推荐。

深度神经网络的任务是根据用户的历史和上下文来学习用户的嵌入,使得使用softmax分类器来区分视频是有用的。虽然在YouTube DNN中存在显式反馈的机制,但是我们仍然使用用户的隐式播放来训练模型。当用户看完了一个视频,当成是一个正样本。我们做这样选择的原因是采用隐式反馈具有更大的数据量级来完成显式反馈稀疏的情况之下的深度推荐。

  • 多分类问题的高效性

在softmax的线性分类阶段由于候选视频过多,在线性分类阶段对每个视频都计算logit值的话需要进行大规模的计算。为了提高大规模分类任务的训练效率,我们通过采用从背景分布中采样负样本,然后通过重要性采样来纠正这些样本。

对于每一个样本需要计算最小化的交叉熵损失。在真实的训练中,每一个样本数据我们采用了几千个负样本的情况下。对比传统线性多分类问题训练速度提高了超过100倍。在训练加速方面,另外一个可供选择的方法是分层softmax,但是使用分层softmax的时候,我们没有达到和采样的方式同等的分类准确度。在遍历树结构做分层softmax的时候,通常涉及到区分两个不相关的类集合,增加了分类难度降低了模型性能。

另外的可供选择的加速方法是采用分层的softmax,但是在softmax中我们无法达到相当的准确度。在遍历分层softmax的时候,遍历每个节点的时候通常涉及到区分通常不相关的分类集合,这增加了分类的难度,从而降低了分类的性能。

在serving阶段,候选集生成模型需要挑选出用户最可能感兴趣的top N个视频然后展现给用户。在线上服务中,系统需要对百万规模的物品在几十毫秒的严格服务延时下对成百万规模的物品进行评分。这样的性能要求需要一个次线性的计算方案。YouTube之前的推荐系统主要采用哈希的方式来完成这项工作。由于在线上的serving阶段,我们不需要在输出层通过softmax对logit的值进行校准,因此,评分计算问题可以简化为内积空间中的近邻检索问题。在论文[12]中给出了一个通用的近邻检索框架。我们AB测试的结果显示,模型的线上效果对近邻检索不敏感。

在serving阶段,我们需要计算最可能的N个分类,来挑选出最可能的top N个视频展现给用户。在数十毫秒的严格服务延时下对成百万规模的物品进行评分需要一个次线性的近似得分计算方案。YouTube以前的系统依赖于哈希并且在文章[24]中提供了一个相似度计算的方法。由于在服务阶段我们只需要一个相对的排序,不需要在来自softmax输出层的校准似然性,评分问题可以简化为内积空间中的近邻检索问题。在论文[12]中给出了一个通用的向量检索库。我们AB测试的结果对线上使用的近邻检索方法并不是很敏感。

3.2 Model Architecture

从Continue Bag of Words模型当中得到的启发。我们在一个固定的词汇表中学习到每一个视频的嵌入表示,然后将这些嵌入表示放入到一个前馈神经网络当中去。用户的观影历史是一个由稀疏的视频ID表述的变长的观影序列,在这个观影序列中,每一个视频基于嵌入表示映射到一个稠密的向量表示。神经网络需要固定长度的向量输入,在这里我们采用简单的加权求平均胜过了其他的几种方式(sum,component-wise max等等)。此外,这些视频的嵌入表示和其他参数一起通过这场的梯度下降去更新参数。在神经网络的第一层,所有的特征被拼接到一起,接下来跟着几层以Rectified Linear Units(ReLU)为激活函数的全连接层。
图3展示了一个包含了其他非观影视频特征的基本的神经网络结构。

在这里插入图片描述

图3    深度神经网络结构

3.3 Heterogeneous Signals

使用DNN作为一种通用的矩阵分解方式有一个比较重要的优点,任意的连续特征和类别特征都能够很容易地加入到模型当中去。用户的搜索历史采用和用户的播放历史相同的嵌入方式。每一个观影历史都被标记成unigrams或者是bigrams,并且每一个token都被进行了嵌入。

在进行平均之后,一个用户的搜索历史表示成为总的稠密向量。人口统计学特征对于提供先验信息来说非常重要,这样的话推荐系统能够给新用户推荐合理的召回结果。用户的地理位置特征和设备信息被嵌入到稠密的向量空间并且拼接到一起。一些简单的二进制特征和连续特征,例如用户逇性别、用户的登录状态以及用户的年龄在网络中直接被归一化[0,1]之间的连续值。

  • Example Age Feature

在YouTube上每秒有很多个小时的视频上传,从产品角度来讲新视频的推荐是十分重要的。
我们观察到即使是相关性低了一点儿相关性用户也更乐于看新视频。此外,除了给用户推荐感兴趣的新视频这个直接目的之外,我们还希望能够引导和传播流行的内容。

机器学习系统通常对过去建立了一个隐含的偏差,因为这些训练好的模型都是用来预测未来的行为。视频的热度分布是极其不稳定的,但是在我们的最近几周的训练数据上学习出来的推荐策略,在语料库上的多项分布反应的是最近几周的平均可能观看概率。为了纠正这种情况,我们将训练样本的点击时间作为特征加入到训练过程中。在serving阶段,我们将这个特征的值设置为0(或者是轻微的负值)来反应预测的时间是在模型训练窗口的尾部。

图4中我们展示了这种方法在某个视频上的效果。图中分别给出了BaseLine Model、With Example Age以及Empirical Distribution三条曲线描述三种不同情况下的视频热度。

在这里插入图片描述

图4    不同情况下的视频热度

其中Empirical Distribution曲线表示视频热度的经验分布,BaseLine Model表示基线模型拟合的热度分布,With Example Age表示使用了样本年龄特征训练出的模型拟合的热度分布。

根据图4中的结果,我们发现在使用了Example Age之后我们能够明显的预测视频的热度随着时间的分布情况。

3.4 Label and Context Selection

在解决推荐问题的时候,我们通常是采用解决一个代理问题的方式来进行的(surrogate problem)。在解决代理问题基础上将对应的结果转移到一个特定的场景。在推荐系统里面一个典型的例子就是假设准确的预测用户评分能够带来更好的用户推荐。我们发现代理问题的选择对于线上的AB测试效果来说是极为重要的,但是我们通常难以通过离线的实验进行评估。

在模型训练阶段,我们的训练样本来自于YouTube的整个产品,而不仅仅是我们的产品的所有观看行为(即使这些视频嵌入在其他站点上)。否则的话推荐系统很难推荐出新的内容,系统会更多地偏向于利用。如果用户能够推荐之外的其他渠道发现我们视频,我们希望能够基于协同过滤的方式将这些视频快速地推荐给其他用户。

提升评估指标的另外一个方式就是给用户生成固定长度的训练样本。通过针对每个用户采用固定的长度的训练样本,能够使得每个用户在损失函数中具有相同的权重,这种方式防止活跃度高的用户对模型的损失影响较高。

此外,我们需要非常谨慎地向分类器隐瞒信息,来防止模型利用站点结构过拟合代理问题。
我们来考虑这样的一个实际例子: 用户刚刚查询了“泰勒·斯威夫特”,由于我们的问题是预测用户可能观看的下一个视频,那么推荐系统最有可能给用户推荐“泰勒·斯威夫特”对应的搜索页的结果。如果把搜索页面的结果作为主页的推荐结果,毫无疑问表现是极为差劲的。这个时候,我们需要丢弃查询结果的序列信息,通过无序的查询token集合来表示用户的查询历史,使得分类器没有办法直接知道标签的来源。

视频的消费模式天然地会导致不对等的共同观看概率。用户如果发现某个比较小众的出品人通常是从流行的出品人那里作为入口开始的。因此,我们发现如图5所示的预测用户的下一个观影历史比预测随机预留的观影历史性能要好。许多协同过滤方法通过随机地保留一个项目(图5中a),然后从其他观影历史预测这个留出项来选择标签和上下文。这种方法泄露了未来信息并且忽略了推荐中过去和未来的非对称的消费模式。

在这里插入图片描述

图5    holdout的选取

相比之下,我们通过随机地选择一个用户观影回溯用户行为历史,并且只把这次观影之前的用户行为作为输入。

3.5 Experiments with Features and Depth

根据图5中的结果显示,添加特征和神经网络的深度能够明显地提高模型的精度。我们采用1百万的视频表和1百万的查询token进行实验。在模型中将这些视频id和token id嵌入到256维的向量空间中。

在这里插入图片描述

图6    不同模型结构下的效果

在挑选用户行为的时候,模型针对每个用户最大选用了最近50个观影历史和50个搜索的Token。在输出层可以在相同的一百万视频上得到一个256维的多项分布,这个可以看成是独立输出的视频向量。模型的训练阶段在所有用户数据上进行多轮的迭代,直到模型收敛。
DNN的网络结构遵循常见的“塔”型结构,其中网络的底部最宽,每个隐藏层神经单元数量减半。网络的最顶层也就是嵌入层实现了一个常见的因式分解的方案,可以理解为继承了原来基于因式分解的推荐系统方案。随着网络的宽度和深度不断增加,模型效果的提升逐渐减小以至于收敛。

  • Depth 0: 一个线性层简单地将拼接后的结果转换成一个256维的向量来适应softmax层维度。

  • Depth 1: 256 ReLU

  • Depth 2: 512 ReLU -> 256 ReLU

  • Depth 3: 1024 ReLU -> 512 ReLU -> 256 ReLU

  • Depth 4: 2048 ReLU -> 1024 ReLU -> 512 ReLU -> 256 ReLU

4. RANKING

排序阶段的目的是采用用户感兴趣的数据来校准特定用户界面的视频候选集的顺序。例如: 用户通常有较高的可能性观看某个给定的视频,但是在主页缩略图场景下用户对这个视频的点击意愿并不是很强烈。在排序阶段,我们只需要对少量的视频进行打分而不是对百万级别的视频进行打分,所以可以使用更多细粒度特征描述用户和视频之间的关系。此外,排序阶段还能够融合不具备可比性的不同召回源。

在排序阶段我们采用候选集生成阶段相同的网络结构通过logistic regression对每一个曝光的视频进行独立地打分,然后系统根据按照打分的结果对视频列表进行排序后推荐给用户。

我们最终的排序目标是根据线上的效果不断调整的,基本上是每个曝光预期观影时长的函数。如果单纯地基于点击率做排序目标,通常会使得用户更多地点击那些具有欺骗性(标题党和封面党)的视频,但是一个用户对视频的播放时长更能表示一个用户的参与度。

4.1 Feature Representation

我们的特征和传统的分类特征和连续特征有比较大的区别。我们使用的分类特征基数差异很大,有些是二进制特征(例如,用户是否登录)而另外一些特征有数百万个可能的值(例如,用户的最后一个查询结果。)这些特征根据其取值的个数分为一阶特征和多阶特征。在YouTube DNN中最明显的一阶特征就是这个视频是否被点击,而对应的多阶特征就是用户最后观看的 N N N 个视频ID。我们还可以根据特征描绘的是物品属性、用户属性还是场景属性来进行分类将这些特征划分为物品特征、用户特征。

在给每一个候选视频预测得分的时候,每一次请求都需要重新计算一次查询特征。

  • Feature Engineering

在排序模型里面我们使用了上百个特征,这些特征大致分为分类特征和连续特征。虽然,深度学习可以减轻一部分人工的特征工程的负担;但是,原始数据的特性并不容易直接地输入的前馈神经网络当中去。

我们仍然需要做大量的工程转化操作将用户和视频相关的数据转化成有效的特征。这里的主要困难在于如何表示用户行为的时序性,以及用户历史行为和候选视频之间的相关性。

和在广告排序中的经验相似,我们观察到那些最重要的信息描述了用户过去的行为和候选视频之间的相关程度。例如:考虑用户历史观影里的类别,这个用户过去一段时间里面观看了多少和这个视频相同的类别,以及用户上一次观看这个类别的时间。这些描述用户相似行为的连续特征是非常强大的,因为这些特征能够很好地在不同物品之间归纳出有效的信息。此外,我们发现从候选集生成阶段将特征传递到排序阶段也非常重要,例如:我们通过哪个召回源召回了这个候选集,对应的召回源给这个视频的打分是多少。

那些描述了用户曝光历史的特征对推荐系统召回结果的变化也是至关重要的(连续的请求不会返回相同的请求列表)。如果一个用户最近被推荐了某个视频,但是没有被观看,那么这个模型自然会在下一次加载页面的时候降低同一类型的视频推荐。如何使用最新的曝光和观影历史对推荐系统而言是一个至关重要的问题,但是这已经超出了这篇文章我们需要讨论的范围了。

  • Embedding Categorical Features

在排序阶段对稀疏特征的处理和候选集生成阶段一致。我们将这些稀疏特征映射到一个稠密向量中。在特征的ID空间中(也就是词汇表中)每一个ID学习到一个对应维度的向量。向量的维度随着特征值维数的增加而增大,大致和维度值的对数成正比。这些特征id在训练过程中一次性导入成一个简单的look-up table。

对于维度非常大的ID特征(例如,视频的ID或者查询token)会按照频次对这些特征进行排序。在排序的基础上截取前面的top N个标识。对于超出特征表的部分,将这些特征的嵌入都设置为0。与候选集生成网络相同,多阶特征在被送入到神经网络之前进行加权求平均(average pooling)。

此外,同一个ID空间中的分类特征在底层是可以共享的。例如: 一个视频ID的嵌入可以在全局被使用(例如:作为曝光的视频ID,用户最后一次观影的视频ID,强行插入的视频ID等等)。尽管特征的嵌入是共享的,但是每一个特征都是独立的输入到网络当中去,因此,网络中每个特征都能够学习到独立的特征表示。共享嵌入,对于提高模型的泛化能力,加快训练速度和降低内存开销都非常重要。对于排序模型和候选集生成模型来说绝大部分参数都在集中在这些高维度的嵌入向量当中。例如:具有100万阶的ID特征嵌入到32维的向量空间中所产生的模型参数是一个具有2048个神经元的全连接网络参数的7倍。

  • Normalizing Continuous Features

神经网络对数据的缩放和分布十分敏感,然而其他的(例如决策树等)算法对于特征的缩放效果是不变的。我们发现对于连续特征适当地进行归一化对于模型的收敛来说是非常重要的事情。在排序模型中,我们将原本具有连续分布 f f f 的特征 x x x转化为 x ~ = ∫ − ∞ x d f \widetilde{x} = \int_{-\infty}^{x} df x =xdf。除了在模型中输入原始的 x ~ \widetilde{x} x 的值之外,我们还使用了 x ~ 2 \widetilde{x}^2 x 2 x ~ \sqrt{\widetilde{x}} x ,作为输入使得网络具有更强的表征能力能够建立关于这个特征次线性和亚线性的函数。我们发现在模型中传入连续特征的平方值有助于提高离线的评估指标。

4.2 Modeling Expected Watch Time

在排序阶段,对于给定的训练样本我们的目标是预测用户可能的观影时长,而不是正样本(曝光点击了的视频)和负样本(曝光未点击的视频)。在训练样本中,正例用用户观看的时间来标注。在模型训练中使用weighted logistic regression来有效地预测用户时长。

在这里插入图片描述

图7    排序模型的结构

如图6所示,模型训练的过程采用Logistic regression结合交叉熵作为损失函数。在正负样本挑选的时候,模型选用曝光并且点击视频的播放时长进行加权作为正样本。负样本使用曝光未点击的视频,并且具有相同的单位权重。根据上面正负样本的设计,在模型训练阶段得到的 o d d odd odd ∑ T i N − k \frac{\sum T_i}{N - k} NkTi ,其中 N N N是训练的样本个数, k k k是正样本曝光, T i T_i Ti 是第 i i i 个曝光的播放时长。假设正样例曝光很小,近似等于 E [ T ] ( 1 + P ) E[T](1+P) E[T](1+P)。其中 E [ T ] E[T] E[T] 表示预期的播放时长,其中 P P P 表示点击率的概率。因此如果当点击概率非常小的时候,乘积的结果接近播放时长。在推断过程中,我们使用指数函数 e x e^x ex 做最终的激活函数来生成这些odds,来逼近预估的播放时长。

在这里插入图片描述

4.3 Experiments with Hidden Layers

表1展示了我们在下一天留出的测试数据上,使用不同隐藏层结构的实验效果。在计算每一个configuration(每个用户的加权损失的)的时候,我们假设正样本(点击了的视频)和负样本(没有点击的视频)给用户曝光的时候展示在同一个页面里面。在此基础上通过我们的模型对两个曝光的视频进行打分。如果负样本的预测得分高于正样本的预测得分,就认为正样本预期的观看时间被预测错误。Weight, per-user loss是所有预测错误的视频的总体播放时长作为分子所有曝光视频的播放时长作为分母。结果表明增加隐藏层的宽度和深度会改善召回的结果。最后我们权衡了推断的CPU耗时和性能,采用1024->512->256的ReLU激活函数网络作为模型结构。在保持效果的基础上,同时使得我们的CPU耗时保持在预算内。

在1024->512->256的网络结构里面,我们尝试只用归一化的特征而不用他们的平方的时候,增加了0.2%的损失。在相同的参数配置下,我们还训练了一个正负样本具有相同权重的模型,这个比使用播放时长加权的损失提升了4.1%。

5 CONCLUSIONS

我们在描述深度神经网络推荐YouTube视频的时候将问题划分成为了两个部分:候选集生成以及排序。

我们的深度协同模型能够有效地使用很多信号并且通过深度网络捕获特征之间的交互,效果要优于我们之前在YouTube中使用的矩阵分解方法。关于如何选择推荐的代理问题与其说是一项科学不如说是艺术。我们发现通过通过捕获不对称的协同观看行为,可以防止对未来信息的泄露从而得到较好的离线评估效果。站点信息的隐藏对于得到好的分类效果也是有益的,否则代理问题会过渡拟合并且没有办法很好地转移的APP的主页。

我们证明使用样本的年龄作为输入特征消除了模型用过去的行为预测未来的偏见,并且使得模型能够表示视频随着时间的热度变化。这个特征的引入不仅在流出的测试数据上取得了很好的离线效果,并且在线上的A/B测试中显著地增加了最近上传视频的播放时间。

排序问题是一个更为经典的机器学习问题,我们的深度学习方法在对播放时长的预测上优于之前的线性学习方法和基于树模型的算法。在推荐系统里面哪些描述了用户过去行为的特征对效果的提升尤其重要。深度神经网络需要对分类特征和连续特征进行特殊表示。我们分别使用嵌入和quantile normalization来表示这些特征。模型的深度有效地拟合了数百个特征之间的交互。

在排序模型中Logistic regression采用正样本的播放数时长进行加权,并且对负样本采取相同的单位权重,这使得我们能够学习到趋于播放时长的 o d d s odds odds。这种方法在时间加权的排序评估指标上优于直接优化点击率的方式。

6. ACKNOWLEDGMENTS

作者感谢JimMcFadden和Pranav Khaitan的指导和帮助。Sujeet Bansal、Shripad Thite和Radek Vingralek完成了模型训练的关键组件和线上serving的基本部署。Chris Berg和Trevor Walker贡献了有意思的讨论和详细的反馈。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值