在线查看qq空间网站,做游戏网站要多少钱,网站中的滑动栏怎么做,服务支持型网站1.介绍
本文主要解决的三个挑战#xff1a;
大规模的推荐场景#xff0c;能够支持分布式训练和提供有效率的服务。不断更新的新物料。稀疏的用户行为#xff0c;包含大量的噪声。
2.推荐系统
文章包含推荐系统的两阶段模型#xff1a;召回和排序。 召回网络根据用户的历…1.介绍
本文主要解决的三个挑战
大规模的推荐场景能够支持分布式训练和提供有效率的服务。不断更新的新物料。稀疏的用户行为包含大量的噪声。
2.推荐系统
文章包含推荐系统的两阶段模型召回和排序。 召回网络根据用户的历史行为从视频库中检索几百个候选视频这些视频被认为有很高的准确率与用户相关。候选集的生成是根据粗粒度的个性化—协同过滤生成的。用户之间的相似性是以粗粒度特征表示的例如视频观看ID搜索query和统计特征。
3.召回
在候选生成期间庞大的YouTube语料库被缩小到可能与用户相关的数百个视频。前身是一种矩阵分解的召回方法。我们早期的神经网络模型通过学习用户历史观看的嵌入模仿了这种因子分解行为。从这个角度来看我们的方法可以看作是因子分解技术的非线性推广。
3.1 推荐到分类
我们将推荐视为极端多类分类问题其中预测问题变为准确地将特定视频分类问题。 基于用户 U 和上下文 C 在时间 t t t指定视频 w t w_t wt为视频 i i i的概率 P ( w t i ∣ U , C ) e v i u ∑ j ∈ V e v j u P(w_ti|U,C)\frac{e^{v_iu}}{\sum_{j\in V}e^{v_ju}} P(wti∣U,C)∑j∈Vevjueviu V V V指语料库其中 u ∈ R N u∈R^N u∈RN 表示用户向量上下文对以及候选视频 v j ∈ R N v_j∈R^N vj∈RN 的高维向量。 深度神经网络的任务是学习用户嵌入通过一个将用户历史和上下文映射为用户嵌入的函数和 softmax 分类器。 虽然YouTube上存在显式反馈机制点赞/取消赞产品调查但我们使用观看的隐含反馈来训练模型其中用户完成视频是一个正样本。这个选择是基于可用的用户历史的数量级更多这能够产生位于长尾的视频推荐而显式反馈对长尾视频的数据是极其稀疏的。 为了有效地训练这样一个数百万个类别的模型我们依赖于一种从背景分布随机负采样的方法并通过重要性加权对其进行校正。对于每个示例最小化真实标签和负采样交叉熵损失。 实际上每次取几千个负例速度是传统softmax速度的100倍以上。流行的替代方法是层次Softmax但我们未能实现可比的准确性。在层次Softmax中遍历树中的每个节点涉及到区分通常无关的分类从而使分类问题变得更加困难降低了性能。
在服务时我们需要计算最可能的N个类视频以便选择顶部N个显示给用户。在严格的几十毫秒的服务延迟条件下为数百万项评分需要近似评分方案其类的数量呈线性。YouTube先前的系统依赖于哈希这里的分类器也使用类似的方法。由于不需要在服务时间内使用softmax输出似然因此评分问题减少到了在点积空间中的最近邻搜索其中可以使用通用目的库。我们发现在A / B测试结果对最近邻居搜索算法的选择不太敏感。
3.2 模型结构
受连续词袋语言模型的启发我们为固定词汇中的每个视频学习高维度嵌入并将这些嵌入馈送到前馈神经网络中。用户的观看历史通过稀疏视频ID的可变长度序列表示并通过嵌入映射到稠密矢量表示。网络要求固定的密集型输入只需简单地平均嵌入就表现得最好这是几种策略求和、逐元素最大值等中的一种。重要的是嵌入是通过正常的梯度下降反向传播更新与其他所有模型参数一起联合学习的。特征连接到宽的第一层后面跟着几个完全连接的Rectified Linear Unit (ReLU)层。结构如下
3.3 特征
使用深度神经网络作为矩阵分解的一般化实现方式的一个关键优势是可以添加任意连续和分类特征到模型中。搜索历史与观看历史类似每个query都分为单个单词和双字并且每个标记都被嵌入。通过求平均值用户的标记化、嵌入的查询就代表了摘要的密集搜索历史。人口统计数据很重要因为它为新的用户提供先验使推荐行为合理。用户的地理位置和设备被嵌入并连接起来。简单的二进制和连续特征如用户的性别、登录状态和年龄直接作为实值输入到网络中并归一化到[0, 1]。
特殊特征样本年龄 Example Age
每秒上传到YouTube的视频很多。对于YouTube作为产品来说推荐这种最近上传的新鲜内容是非常重要的。我们一致认为用户喜欢新鲜内容但并不牺牲相关性为代价。除了仅仅推荐用户想要观看的新视频的第一个效应外还有一个至关重要的次要现象即启动和传播病毒内容。 机器学习系统经常对过去表现出内在偏差因为他们是根据历史序列来预测未来。视频流行度的分布是非稳定的但是推荐者产生的语料库的多项式分布会反映几周内训练窗口内的平均观看可能性。为了纠正这一点我们在训练期间将训练例子的年龄作为特征输入。在服务时间这个特性设置为零或者稍微负以反映模型正在训练窗口的尽头进行预测。 图4展示了这种方法在一个随意选择的视频上的有效性。 这里并没有说明“样本年龄”这个特征怎么计算的。
3.4 label和上下文选择
要强调的是推荐往往涉及解决一个代理问题并将结果转移到特定上下文中。一个经典的例子假设预测分数越准确电影推荐更有效。我们发现这个代理学习问题的选择对A / B测试中的性能有很大影响但在离线实验中很难衡量。 训练样例是根据所有的YouTube观看生成的嵌入其他网站的观看而不是我们生成的推荐结果。否则新内容很难出现并且有些推荐人更活跃的数据倾向于过度利用。如果用户通过我们推荐以外的方式发现视频我们希望通过协同过滤将这一发现快速传播给其他人。 另外一个提高线上指标的关键trick是为每个用户生成固定数量的训练样本有效地在损失函数中平等对待我们的用户。这防止了一小批高度活跃的用户主导损失。 有点违反直觉的是必须小心地保留信息以防止模型利用网站的结构过度拟合代理问题。例如考虑用户刚刚搜索了tay-lor-swift预测用户下一个观看的视频给定该信息的分类器将预测最有可能观看的视频是出现在相应的搜索结果页面上的“泰勒·斯威夫特”。无限制地再现用户的上次搜索页面作为主页推荐的表现非常糟糕。 通过丢弃序列信息并使用无序的搜索query来表示搜索分类器不再直接知道之前的label。
视频的自然消费模式通常会导致非常不对称的共同观看概率。观看序列包括 通常按顺序观看用户发现艺术家开始于最受欢迎的流派然后专注于较为小众的。两种采样的性能对比预测用户的下一次观看 VS 预测一个随机抽取的观看。如下图 许多协同过滤系统隐式地随机选择item然后通过用户历史的其他item预测它。这会泄露未来的信息并且忽略了非对称的消费模式。作为对比我们回滚用户的消费历史随机选择item但只输入用户之前的序列。
3.5 特征和模型深度实验
增加特征和深度显著提高了预测的精度如图6所示。在这些实验中使用了100万个视频和100万个搜索令牌的词汇表每个dnn超参为256在最大袋大小为50个最近观看和50个最近搜索的情况下。softmax层输出的是一个100万个视频类别的多元分布其维度为256可以认为是一个单独的输出视频嵌入。这些模型一直训练到YouTube的所有用户收敛对应于对数据进行的几个时期。网络结构遵循一个常见的“塔”模式其中网络的底部最宽每一层隐藏层都将单元数量减半类似于图3。深度为零的网络实际上是一种线性分解方案其表现类似于之前的系统。添加宽度features和深度dnn层数直到边际收益递减以及难以收敛。
4.排序
排序的主要作用是利用印象数据来专门化并校准针对特定用户界面的候选预测。例如用户可能通常以高概率观看某个视频但由于缩略图图片的选择不太可能点击特定的主页印象。在排序过程中我们可以访问更多描述视频和用户与视频关系的特性因为只有几百个视频正在评分而不是在候选生成中得分的数百万个视频。排序对于将分数不能直接比较的不同候选源进行集成也至关重要。我们使用与候选生成类似的架构的深度神经网络使用逻辑回归图7为每个视频印象分配一个独立的分数。然后按此分数对视频列表进行排序并将其返回给用户。我们的最终排序目标是根据实时A/B测试结果不断调整的但通常是每个印象预期观看时间的一个简单函数。通过点击率进行排序往往会推广欺骗性的视频用户没有完成“点击诱饵”而观看时间更好地捕捉到了参与度。
4.1 特征表示
我们的特征按照传统的分类学和连续/顺序特征的分类方式进行了分离。我们使用的类别特征在基数上差异很大——有些是二进制的例如用户是否登录而另一些则有数百万种可能的值例如用户的最后一条搜索查询。特征进一步根据它们仅贡献单个值还是多个值进行分割。单类别特征的一个例子是被评分的印象的视频ID而相应的多类别特征可能是用户最近观看的N个视频ID的集合。我们还根据特征是描述item的属性还是描述用户/上下文的属性来分类特征。Query特征每请求计算一次而印象特征为每个被打分的项目计算。
特征工程
我们通常在我们的排序模型中使用数百个特征均匀地分为类别和连续特征。尽管深度学习承诺通过手工减轻工程特征的负担但是我们原始数据的本质并不容易直接输入前馈神经网络。我们仍然投入了大量的工程资源将用户和视频数据转换为有用的特征。主要挑战在于表示用户操作的时间序列以及这些操作如何与正在排序的视频印象相关。 我们发现最重要的信号是那些描述用户之前与项目本身的交互以及其他相似项目的信号这与其他人在广告排序方面的经验相吻合。例如考虑用户过去与上传被打分视频的频道的历史-用户观看了这个频道多少视频用户上次观看该主题的视频是什么时候这些描述过去用户在相关项目上的连续动作的特征特别强大因为它们很好地适用于不同的项目。我们还发现以特征形式表示召回来源向排序传递信息至关重要例如哪些来源召回了这个视频分数是多少 描述过去视频曝光频率的特征对于引入推荐中的“滚动”连续请求不会返回相同的列表也至关重要。如果用户最近被推荐了一个视频但他们没有观看那么模型自然会在下一页加载时降低这个印象的得分。提供最新的曝光和观看历史是一项工程壮举超出了本文的范围但对于产生响应式推荐至关重要。
类别特征embedding
与候选生成类似我们使用嵌入将稀疏分类特征映射到适合神经网络的密集表示。每个唯一的ID空间“词汇表”都有一个单独的学习嵌入其维数大致随唯一值的数量的对数增加。这些词汇表是在训练前遍历数据一次构建而成的简单的查找表。非常大的基数ID空间例如视频ID或搜索查询词只包括根据点击印象中频率最高的前N个。不在词汇表中的值只是映射到零嵌入。 重要的是同一个ID空间中的分类特征共享底层嵌入。例如存在一个全局的视频ID嵌入许多不同的特征都在使用视频印象的视频ID用户最后观看的视频ID建议的种子视频ID等。虽然共享嵌入每个特征都单独输入网络以便上层可以为每个特征学习专门化的表示。共享嵌入对于提高泛化能力、加速训练和减少内存需求非常重要。绝大多数模型参数都是在这些高基数的嵌入空间中——例如一个百万ID嵌入32维空间中的参数比全连接层2048单位宽的参数多7倍(321000000 / (20482048)7.63)。
标准化连续特征
神经网络对输入的比例和分布极为敏感而决策树等替代方法则不受单个特征比例的影响。在收敛过程中适当归一化连续特征是至关重要的。具有分布f的连续特征 x x x被转化为 x ~ \tilde{x} x~通过缩放值使得该特征在[0,1)范围内均匀分布 x ~ ∫ − ∞ x d f \tilde{x} \int_{-\infty}^x df x~∫−∞xdf。这个积分在训练开始前通过一次遍历数据计算特征值的四分位数来进行线性插值。 除了原始归一化的特征 x ~ \tilde{x} x~外我们还输入 x ~ 2 \tilde{x}^2 x~2和 x ~ \sqrt{\tilde{x}} x~ 使网络能够轻松形成超线性和次线性函数从而增强表达能力。输入连续特征的幂被发现可以提高离线精度。
4.2 建模预测观看时长
我们的目标是根据训练示例预测期望观看时间这些示例点击与未点击。正样本用用户观看视频的时间进行标注。为了预测期望观看时间采用了加权逻辑回归技术。 模型使用逻辑回归进行训练并且损失函数为交叉熵图7。然而正点击样本由观察到的观看时间进行加权。负未点击样本采用单位权重。这样逻辑回归学习到的概率是 T i N − k \frac{T_i}{N-k} N−kTi。 其中 N N N是训练样本的数量 k k k是正样本的数量 T i T_i Ti是第 i i i个印象的观看时间。假设正样本的比例很小在我们的情况下这是真的那么学到的概率近似为 E [ T ] ( 1 P ) E[T](1P) E[T](1P)其中 P P P是点击概率 E [ T ] E[T] E[T]是印象的期望观看时间。由于 P P P很小这个乘积接近 E [ T ] E[T] E[T]。在推理时我们使用指数函数 e x e^x ex作为最终激活函数来生成紧密估计期望观看时间。
4.3 隐藏层实验
表1显示了隐藏层实验中在第二天数据上使用不同隐藏层配置获得的结果。对于每个配置“加权单用户损失”得到的值是由考虑单个页面上展示给用户的正点击和负未点击印象。 首先用我们的模型对这两个印象预测分值。如果负曝光获得的分数高于正曝光则我们认为正曝光的观看时间被错误预测。单用户的损失就是这样一个比例抽出对中的总的错误预测观看时间/总观看时间。 结论 结果显示增加隐藏层的宽度可以改善结果增加其深度也是如此。然而权衡是推理所需的服务器CPU时间。1024宽ReLU后跟512宽ReLU后跟256宽ReLU的配置为我们提供了最好的结果同时使我们能够保持在服务CPU预算内。 对于1024→512→256模型我们尝试只输入不带幂的规范化连续特征这会增加0.2%的损失。 在相同隐藏层配置下我们也训练了一个正负样本权重相同的模型。观看时间加权损失增加了4.1%。
5. 总结
我们已经描述了用于推荐YouTube视频的深度神经网络架构分为两个不同的问题召回和排序。我们的深度协同过滤模型能够有效地吸收多种信号并通过捕获非对称的协同观看行为和防止未来信息泄漏在现场指标上表现良好超越了YouTube以前使用的矩阵分解方法。从分类器中保留区分性信号也是取得良好结果的关键否则模型会过度拟合代理问题并且无法很好地转移到首页。 我们证明了将训练样本的年龄作为输入特征可以消除对过去的内在偏见并允许模型代表流行视频的时间依赖性。这提高了离线保留精度结果并在A/B测试中大大增加了最近上传视频的观看时间。 排序是一个更经典的机器学习问题但我们的深度学习方法在观看时间预测方面超过了之前的线性和基于树的方法。特别是推荐系统受益于描述过去用户与项目行为的专业功能。我们分别用嵌入和四分位数标准化来转化分类和连续特征。深度层有效地模拟了数百个特征之间的非线性交互。 通过用观看时间为正样本加权用负样本单位加权修改逻辑回归从而使我们能够学习紧密模拟期望观看时间的可能性。这种方法在预测点击率直接相比更能适应加权观看时间的排名评估指标。