摘要

该文首先从youtube推荐任务所面临的实际难题入手,提出了一种切合视频推荐需求的二阶网络推荐算法,具有很强的工程性意义。

1. 简介

YouTube的视频推荐任务目前面临以下三个问题:

  • 规模(scale):推荐算法应当可以适应youtube视频库中海量的视频内容
  • 新鲜度(Freshness):由于youtube网络中每天都会有大量的视频被上传,因此推荐系统应当对新上传的视频给与足够的响应。
  • 噪声(Noise):由于YouTube的稀缺性和各种不可观测的外部因素,用户在YouTube上的历史行为本来就很难预测。另外,庞大的视频数量不可避免地会增加噪声。

为解决以上问题,youtube提出一种基于深度学习的二阶推荐算法,该算法的网络框架如下:

整体框架由两个子网络串联而成,即召回网络(candidatey generation)以及排序网络(Ranking)。其中,召回网络的输入信息为用户历史文本(user history and context )以及视频源(video corpus),输出为一个召回列表;排序网络的输入信息为其他视频来源(other candidate sources),视频特征(video features)以及信息为用户历史文本(user history and context ),输出为用户感兴趣的视频列表(最终推荐结果)。下面将简明扼要地对两个子网络进行介绍。

2. 召回网络(candidatey generation)

召回网络的目的是从海量的视频中粗略地搜集一部分用户可能会感兴趣的视频,相当于“粗筛选”。召回网络的网络结构如下图。网络结构不算复杂,输入层embedding,中间层包含三个relu层,输出层则根据“训练阶段”以及“服务阶段”输出不同的内容。本小节将从网络的输入,输出以及小技巧三个面方面对召回网络进行简要的陈述。

2.1 网络输入信息

  • video watchs :用户观看视频的记录
  • search tokens: 用户的搜索记录
  • geographic :地理位置信息
  • example age:样本时效,即样本从产生时刻到目前时刻的时间
  • gender:性别

前三个特征都比较直观,在这里不过多地赘述。对于example age特征,首先引用原文:

We consistently observe that users prefer fresh content, though not at the expense of relevance. In addition to the first-order efect of simply recommending new videos that users want to watch, there is a critical secondary phenomenon of bootstrapping and propagating viral content [11].

从原文中推理,引入example age特征主要有两点原因:

  • youbute的研究人员发现,youtube用户对新上传的视频有一种偏好。
  • 引导,传播viral content(viral content指通过网络传播从而得到高流行度的视频,可以理解成一上传就引爆网络的视频,如极乐净土等),因流行度极高,这类视频容易对社会造成一定影响,因此youtube的工程师希望算法能捕捉到这一类视频的特性。

机器学习算法一般通过训练数据来对用户的未来行为进行预测,根据实验,工程师们发现网络预测结果中流行度关于时间的分布较为平坦。因此,为了拟合"用户偏好"以及挖掘“viral content”,网络在embedding层中引入了example age特征。另外,example age的平方项(非线性变换)能增加时间的表征能力。总的来说,笔者认为这一特征的作用类似于一个时间戳,目的是为了让网络去学习的过程中去拟合流行度与时间的关系。对有无引入新特征的效果对比如下图:

2.2 输出信息

网络的输出信息在服务阶段以及训练阶段是不同的,这也是工程师们结合实际业务做出的调整之一。由于开发者把召回任务当作了一个分类任务,因此网络在训练阶段输出的应当是一个分类预测概率(class probabilities)公式为:

具体分类是几类,论文并没有具体说明,单根据原文可推断类别数应该是百万级的。

We pose recommendation as extreme multiclass classification where the prediction problem becomes accurately classifying a specific video watch w t w_t wt at time t t t among millions of videos i i i (classes) from a corpus V based on a user U and context C.

在服务阶段,网络在softmax层提取出视频向量(video vector, v j v_j vj),在relu层提取用户特征向量(user vector, u u u),然后利用最近邻算法(nearest neighbour)来选出用户可能感兴趣的 N N N个视频。这种做法采用了类似于word2vec的思路,即通过网络训练来获取更具表征性的特征(word2vec中训练参数 w w w即为词向量)。

为什么要在服务阶段采用这种做法而不直接使用与训练阶段一样的输出策略呢?

因为在服务阶段,如果算法对每次响应都运行一遍整个模型,模型产生的大量参数数开销,何况youtube中一秒可能会有多次请求,为了降低开销,通过利用最近邻算法对提前计算好的embedding 特征进行搜索,效率会高很多。

2.3 小技巧

为了解决百万级分类任务带来的sofmax计算开销以及提升预测精度,开发者对训练样本,测试样本的预处理过程中也用了一些小技巧,包括:

  • 采用了负采样来对数据进行抽样,加快模型的收敛速度。
  • 在测试集的选取中,采用用户最近一次的行为作为测试集

为什么要使用用户最近一次行为作为测试集?而不是随机选取一次行为?
论文的原文:

Natural consumption patterns of videos typically lead to very asymmetric co-watch probabilities. Episodic series are usually watched sequentially and users often discover artists in a genre beginning with the most broadly popular before focusing on smaller niches. We therefore found much better performance predicting the user’s next watch, rather than predicting a randomly held-out watch (Figure 5).

这是工程师在做A/B测试时遇到的一个问题,随机抽取一次行为作为测试集在A/B测试中比在离线测试的效果要差。主要原因在于,用户一般会首先关注最受欢迎的视频分类,然后才会逐步关注更细致的领域,这其中就蕴含根据“过去”,预测未来的意味。例如,我可能会对创造101这个节目感兴趣,然后才会对101里面的某一个小团体感兴趣,然后才是个人。算法应当能根据我的历史信息(喜欢101,喜欢里面的某个小团队)来预测我接下来会点开小团体里面哪一个歌手的视频。

实验发现,如果选取用户最近一次行为作为测试集,可以有效避免未来信息的泄露,使模型更专注于用“过去”信息,预测未来信息。

2.4 召回网络的实验效果

论文中主要探讨了网络层数对性能的影响。

实验结果如下图:

可见,输入全部特征的时候,性能最好,而深度对模型的提升并不算特别明显。
PS:这里的MAP指的是Mean Average Precision

3 排序网络

在通过召回过程之后,网络已经搜集了一部分用户可能会兴趣的的视频。排序网络将会在这一个视频集中做进一步筛选,得到最终的推荐结果。排序网络结构与召回网络的结构几乎一样,如下图。网络对输入特征做embedding,再经过三个relu层做非线性拟合,最后根据服务阶段和训练阶段输出不同内容。本小节将对网络的输入特征,输出结果,以及实验结果来介绍排序网络。

3.1 输入特征

要对视频列表进行更细致得筛选,必然需要引入细粒度的特征。输入排序网络的特征有:

  • impression video ID :曝光视频ID
  • watched video ID : 观看视频ID
  • user language :用户语言
  • video language :视频语言
  • time since last watch 用户观看同类视频的间隔时间
  • previous impressions 最近曝光记录

前四个特征都都很直观,不作赘述。 time since last watch与previous impressions这两个特征结合起来可以很好地表述用户的历史行为。

We observe that the most important signals are those that describe a user’s previous interaction with the item itself and other similar items, matching others’ experience in ranking ads

time since last watch拟合了用户“如果频繁地观看同一类视频,那么接下来也很有可能会观看同类视频”的行为。previous impressions特征抑制了无效的曝光,强调有效曝光。另外,输入层对 time since last watch作开方,平方等处理,也是为了增强该特征的非线性表达。

3.2网络输出


排序会对候选列表中的视频进行评分,那么这个评分的标准是什么呢?youtube的推荐目的在于尽可能地延长用户的观看视频,因此,期望观看时间 (expected watch time) 就成了视频的评分标准。为了让网络预测一个视频的期望看视频,工程师们对网络的输出进行了建模。

在训练阶段,模型使用了带权重的逻辑回归。

However, the positive (clicked) impressions are weighted by theobserved watch time on the video. Negative (unclicked) impressions all receive unit weight.

对于正样本(用户观看过的视频),使用用户观看时长作为权重,对于负样本(用户未点击过的视频)则使用单位权重。用户观看时长,可使用odds来表示,具体的推导过程如下:

因此,odds可以作为期望观看时长的近似表征,这一点是建立在“用户点开视频的概率一般很小”上的,这也是开发者们根据实际情况观察得到的。在使用odds来表征期望观看时长之后,在服务阶段可直接输出 e ( w ∗ x + b ) e^{(w*x+b)} e(wx+b)来作为评分。

3.3实验结果

论文同样对排序网络的层数对网络性能影响进行了实验。实验策略是如果负样本的预测观看时长比正样本的预测观看时长 要长,则认为这次正样本曝光为错误预测观看时长(mispredicted watch time)。Weighted, per-user loss则是所有用户的错误预测观看时长之和。实验结果如下图:

可见层数越多,loss越低。

4 总结

这篇文章是一篇很经典的文章,论文中提出的算法,以及对特征的处理技巧都是根据youtube实际场景来做调整的,是一篇学术性,工程性兼备的论文值得深入研究。

ps:总结以下根据实际场景做出的设计有:
召回:

  • 引入example age,拟合流行度与时间的关系
  • 负采样,降低sofrmax的计算开销
  • 选择用户最近一次行为作为测试集合,避免泄露未来信息
  • 在服务阶段,召回网络对用户向量还有视频向量使用最近邻算法来排序,以降低计算开销

排序:

  • 对“期望用户观看时长”建模。
  • 引入-time since last watch以及 previous impressions 两个特征, 更好地表征用户的历史行为。

(推荐系统)Youtube:Deep Neural Networks for YouTube Recommendations相关推荐

  1. 关于'Deep Neural Networks for YouTube Recommendations'的一些思考和实现

    七月 上海 | 高性能计算之GPU CUDA培训 6月27-29日三天密集式学习  快速带你入门阅读全文> 正文共6326个字,6张图,预计阅读时间30分钟. @blog : http://sh ...

  2. Deep Neural Networks for YouTube Recommendations 双语译文+理解

    目录 Deep Neural Networks for YouTube Recommendations Abstract 摘要 INTRODUCTION 1 引言 2 SYSTEM OVERVIEW ...

  3. 《Deep Neural Networks for YouTube Recommendation》译读

    <Deep Neural Networks for YouTube Recommendation>译读 摘要 youtube 代表了目前规模最大.最复杂的工业推荐系统之一.在这篇文章里,我 ...

  4. 3.Deep Neural Networks for YouTube Recommendations论文精细解读

    一.总述 今天分享的是Deep Neural Networks for Y ouTube Recommendations这篇论文的一些核心,这篇论文被称为推荐系统工程实践领域的一篇神文,每一个细节都值 ...

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

    文章目录 前言 一.背景介绍 二.整体架构 三.召回层 四.排序层 前言 今天要学习的是一篇关于推荐系统的经典的论文,它是由google在2016年发表的,应用场景是youtube上的视频推荐,然后这 ...

  6. 推荐算法论文:Deep Neural Networks for YouTube Recommendations

    吹牛逼 按照经典的信息检索方式讲推荐系统划分为两部分 深度候选生成模型 深度排序模型 1. 介绍 youtube推荐系统面临的三个问题 规模:当前的推荐算法可以很好的解决数据量较小的问题,但是针对Yo ...

  7. [深度学习论文笔记][Adversarial Examples] Deep Neural Networks are Easily Fooled: High Confidence Predictions

    Nguyen, Anh, Jason Yosinski, and Jeff Clune. "Deep neural networks are easily fooled: High conf ...

  8. 机器学习入门课程笔记(二)——deeplearning.ai: Improving Deep Neural Networks

    欢迎前往我的个人博客网站:mathscode.top获取更多学习资源. 所有文本内容会在知乎: MathsCode同步 所有开放资源会在Github: MathsCode开放下载 有问题欢迎大家评论或 ...

  9. 越线人群计数--Crossing-line Crowd Counting with Two-phase Deep Neural Networks

    Crossing-line Crowd Counting with Two-phase Deep Neural Networks ECCV2016 人群计数有两种做法:1) region-of-int ...

最新文章

  1. 使用Hexo和Github搭建博客站
  2. Linux安装jdk学习
  3. SVN中update to revision与revert to revision的区别
  4. 虚拟机CentOS7设置远程连接
  5. python程序入门设计_程序设计入门—Python
  6. C语言查看文件fp指针位置
  7. 深度学习 《梯度消失和梯度爆炸》
  8. 【Maven】IDEA 创建Spring Boot项目出现 maven-wrapper
  9. JavaScript学习(二十六)—事件处理程序的添加与删除
  10. 【干货】深度学习实验流程及PyTorch提供的解决方案
  11. 2清空所有表_mysql数据库学习(第十二篇) - 数据高级操作(2)
  12. java cell设置绝对位置_java操作excel在开始位置添加一列
  13. 刘明计算机学院,西南大学计算机与信息科学学院研究生导师简介-刘明
  14. php和vue实现智商在线测试题
  15. java 获得文本框文本_Java获取和删除Word文本框中的表格
  16. DVWA-SQL Injection级别通关详解
  17. spring boot和spring cloud版本对应关系
  18. java计算机毕业设计vue平顶山香山寺网站源码+数据库+系统+lw文档
  19. 没有伪装和欺骗才能活在当下
  20. 【Pytorch】SGDR

热门文章

  1. OpenCV 表计识别中倾斜的仪表转正透视变换投影变换
  2. 联合国国际能源署MI IC1 罗马会议报道
  3. 企业订货系统平台软件源码|移讯云手机下单管理
  4. 整理总结:《量化炼金术:中低频量化交易策略研发》
  5. EWSTM8系列教程02_新建基础软件工程
  6. 老路用得上的商学课-41-60学习(读书)笔记
  7. python计算机视觉-- 基于OpenCV的图像分割和图像融合系统
  8. 从零快速编写一个油猴脚本
  9. [BZOJ2428] [HAOI2006]均分数据 模拟退火
  10. LikeLib:深耕链圈的公链技术标杆者