Youtube推荐系统论文-《Deep Neural Networks for YouTube Recommendations》-简单总结

文章目录

前言

一、背景介绍

二、整体架构

三、召回层

四、排序层


前言

今天要学习的是一篇关于推荐系统的经典的论文,它是由google在2016年发表的,应用场景是youtube上的视频推荐,然后这个应该是当时大厂把深度学习应用到推荐系统这个方向上的非常早期的工作,虽然现在来看它的模型非常简单,但是其中涉及到了非常多的工程细节,是值得我们去学习和借鉴的。

一、背景介绍

众所周知YouTube是一个全球最大的视频分享网站,它里面有百万量级的原创视频内容。对于一个用户,我们需要给他推荐符合用户偏好的视频,也就是个性化的推荐服务,并且YouTube它其实有百分之70%的视频是来自推荐的结果,因此一个好的推荐系统对于Youtube来说尤为重要。

YouTube推荐系统的三大难点

  1. 数据规模:YouTube 的用户和视频量级都是十亿级别的,需要分布式学习算法和高效的部署。

  2. 新颖性:推荐系统需要及时对新上传的视频和用户的新行为作出响应。

  3. 数据噪音:由于稀疏和外部因素影响,用户的历史行为很难预测。大部分 YouTube 视频只有隐式反馈(即用户对视频的观看行为),缺少显式反馈(即用户对视频的评分)。此外,视频的元信息不够有结构性。我们的算法需要对训练数据的这些因素稳健(robust)。

二、整体架构

Youtube推荐系统的candidate generationranking分别用两个神经网络来完成。

Candidate generation model(召回层):将用户在youtube上的行为历史作为输入,从中筛选出一个较小的候选视频集。选出来的视频一般都是与用户高度相关的。这里一般使用一些粗粒度的特征,如观看视频的ID,搜索历史,用户侧统计特征等。

Ranking model(排序层):会为上一步选出来的候选视频集中的每个视频进行打分,打分最高的视频就会被展示给用户,排在第一的就是系统认为用户最感兴趣的视频。与candidate generation model不同,ranking model会用到用户和视频更加精细的特征。

模型迭代时会用许多离线指标,如precision, recall等等,但最终评价模型的标准则采用了线上a/b test实验,因为离线和在线值表不总是相符,而且离线指标无法反映用户行为的变化,

 三、召回层

3.1问题建模

把推荐看成一个多分类问题,即预测某个用户U某个时刻 t和背景C 下观看第 i个视频的概率,公式建模如下:

u是用户在上下文中的高维embedding    v_{j}是每个候选视频的embedding

v_{i}是第i个视频的embedding

[注]:这里的正样本v_{i}是指点击观看完的视频,v_{j}是 负样本是指未点击观看的视频。

3.2负采样机制

为了解决分母操作造成计算量过大,其解决方法采用了负采样机制(sample negative classes )提升训练速度,并使用重要性加权(importance weighting)的方式校正这个采样。对于每个样本,对真实标签和采样得到的负类,最小化其交叉熵损失函数。相比经典 Softmax,这有几百倍的速度提升。

3.3召回层模型架构

 在做NLP任务时,如何将文本或者文本中的一字一句,表示成结构化的,计算机能够理解的形式是第一步。经常采用方法的就是word2vec,就是将所有的word表示成低维稠密的embedding向量,最后将词的embedding向量喂给神经网络进行学习。

Youtube的召回模型也受此启发,采用了word embedding的技巧来计算每一个视频的embedding,然后将视频的embedding,用户搜索视频的embedding分别计算average,再加入用户的属性、视频质量等特征,采用两个完全相连的ReLU层和softmax函数来预测用户下一个看的视频是什么。

使用DNN的原因之一,在DNN中连续性变量和类别型变量都很容易输入到模型中,包括一些人口统计特征(Demographic features),对最终的效果起着十分重要的作用。用户的地域,设备等都可以作为embedding向量输入到DNN中去。简单的二值化特征(如性别)和数值型特征(如年龄)可以直接输入到DNN中,数值型需要经过归一化到[0,1]再输入到模型中。

样本选择和上下文选择

1)使用更广的数据源:不仅仅使用推荐场景的数据进行训练,其他场景比如搜索等的数据也要用到。其中用到的数据主要是隐式数据,即用户点击观看过的视频数据。

2)每个用户生成固定数量训练样本:如果为每个用户固定样本数量上限,平等的对待每个用户,避免loss被少数active用户domanate,能明显提升线上效果。

3)抛弃序列信息:在实现时尝试去掉序列信息,对过去观看视频/历史搜索queryembedding向量进行简单平均加权。避免推荐的视频更像搜索页的展示,这样的搜索结果不是推荐模型的期望行为。

4)预测时去掉用户未来行为的学习:下图中的w_{t_{N}}表示当前需要预测的样本;原来的做法是它前后的用户行为都可以用来产生特征作为模型输入,如图(𝑎)所示;作者的做法只使用更早时间的用户行为来产生特征,如图(b)所示。

 模型输入特征

1)用户的观看历史:使用用户最近的50次观看历史。视频数量为1Million。观看历史中的视频向量(256维),被直接平均后输入到模型中。

2)用户的搜索历史:使用用户最近的50次搜索历史。每个query被分解为unigrambigram,然后所有这些token对应的向量(256维)被直接平均后输入到模型中,token数量为1Million

3)用户的人口统计特征:对新用户的推荐会比较有帮助。

4)用户的地理位置和设备特征:用户的地理位置、登录状态。

5)特征“Example Age”:视频有明显的生命周期,例如刚上传时比之后更受欢迎,所以视频流行程度随时间的分布是高度非稳态的。因为模型是基于历史数据训练获得的,所以它对每个视频的预测会倾向于拟合此视频在训练数据中的平均观看情况(下图的蓝色曲线

3.4Experiments with Features and Depth

 层数越多,效果越好;特征越多,效果越好

 四、排序层

召回阶段已经给出了候选集,在排序阶段,其目的是对给定的小规模候选集进行精细化的排序。通常,排序阶段还涉及对多个不同召回源的视频进行有效集成,这给排序阶段增加了难度。

4.1建模期望观看时长

把训练数据分为正负样本来训练权重,其中负样本的权重都为1,正样本的权重为点击后的视频观看时长 T_{i}。所以模型的损失函数是如下的加权交叉熵损失:

 其中T_{i}为观看时长,

线上使用时,只要基于𝑝𝑖p_i排序候选视频即可,也即选取值𝑒𝑊𝑇𝑋𝑖+𝑏e^(W^T X_i+b)最大的那些视频。

为什么优化这样的加权Loss,就是在优化平均观看时长呢?

假设训练数据共包含N个样本,其中共有k个正样本,显然在youtube这个场景下kN。按上面的权重选取方式,模型学到的几率如下:

 从式子右边看:

 从式子左边看:

 所以有:

4.2模型输入特征

作者对数据做了很多特征工程,主要有以下几个方面特征

1)用户历史行为:用户历史行为与代评分视频的关联,例如与待评分视频所在频道的交互历史、用户观看了该频道的多少视频,用户哪一类主题的视频观看最多等;

2)上次观看时间:自上次观看同个频道视频的时间,原理有点像注意力机制;

3)历史曝光次数:如果一个视频之前展示过,但是用户没有观看,说明用户很可能就是对该视频不感兴趣,所以下次如果再展示,很可能用户还是不会去看该视频;

4)检索模型的信息:把检索模型的信息以特征形式传入排序模型,对模型排序有帮助;

5)类别特征的处理:使用嵌入向量进行表示。嵌入向量的维度建议选择与词汇量大小的对数成比例。如果类别取值特别多,长尾的值可以表示为全0的向量;

6)连续特征的归一化:作者发现对连续向量的归一化能影响训练的收敛性;

对于连续变量𝑥x,假设它的取值分布为𝑓f,通过以下公式把x归一化为𝑥∈0,1:x ̃∈[0,1):

𝑥就是𝑥在整体取值中的百分比排序位置x ̃就是x在整体取值中的百分比排序位置

4.3隐层实验

作者定义了一个加权逐对损失weighted,per-uer loss:给定一个用户,每次选定同页面展示的一对样本作为比较对象,一个为正(展示后点击),一个为负(展示后没被点击),权重来自正样本的观看时间。对正负样本进行排序,如果排序错误,就认为正样本的观看时长被损失掉了。

 weighted,per-uer loss就是误识别观看时长占总时长的比例。

作者对网络结构中隐层的宽度和深度方面都做了测试,从上图结果看增加隐层网络宽度和深度都能提升模型效果。而对于1024->512->256这个网络,测试的不包含归一化后根号和方式的版本,loss增加了0.2%。而如果把weighted LR替换成LR,效果下降达到4.1%之多。


总结

几个值得关注的地方:

1合理选择训练数据,避免不恰当的信息泄露;

2)推荐系统对于特征的处理很重要,了解对连续特征按连续分布归一化的方法;

3)使用Example age 特征去拟合用户对新鲜视频的偏好;

4)排序模型训练使用基于观看时长加权的交叉熵损失,这样产生的排序可以近似认为是基于期望观看时长进行的排序;

参考文献

1、[Covington et al., 2016] Paul Covington, Jay Adams, Emre Sargin. Deep Neural Networks for YouTube Recommendations. RecSys: 191-198, 2016.

2、https://zhuanlan.zhihu.com/p/52169807

3、https://zhuanlan.zhihu.com/p/61827629

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值