YouTube 的视频推荐是如何实现的?

最近,谷歌研究人员发表了一篇论文,并在RecSys 2019(丹麦哥本哈根)的论坛上公布,论文中对他们的视频平台Youtube用户视频推荐方式进行了阐述。在这篇文章中,笔者将试着总结我阅读这篇论文后的发现。

解决的问题

当用户在Youtube上观看视频时,一个用户可能会喜欢的推荐视频列表会以一定的顺序显示出来。该论文的研究目标主要有两个:

·需要优化不同的目标;确切的目标功能没有定义,但是目标被划分为参与目标(点击、耗费时长)和满意度目标(喜欢、不喜欢)。

·减少系统隐含的选择偏差,因为用户更有可能点击第一个推荐,尽管位置较低的视频可能产生更高的参与度和满意度。

注:如何有效、高效地学习减少这种偏差是一个悬而未决的问题。

采用的方法

图1:模型的完整架构

这个论文中所描述的模型主要针对两个目标。该团队使用了一个广度和深度(Wide & Deep)模型架构,它结合了广度线性模型(记忆)和深度神经网络(归纳)的力量。Wide & Deep模型将为每个定义的目标(包括参与度和满意度)生成预测。目标分为二分类问题(即是否喜欢某个视频)和回归问题(即对某个视频的评价)。这个模型的顶部会添加一个单独的排名模型。这只是输出向量的一个加权组合,输出向量即不同的预测目标。这些权重是手动调整的,以实现不同目标的最佳性能。为了提高性能,该团队提出了一些先进的方法,如成对的或基于列表的方法,但是由于计算时间的增加,这些方法并没有被应用到生产中。

图2:用MMoE替换shared-bottom层

在Wide & Deep模型的Deep部分,采用了MMoE模型(Multi-gate Mixture of Experts)。将当前视频的特性(内容、标题、主题、上传时间等)和正在观看的用户(时间、用户档案等)作为输入。MMoE模型背后的概念是基于在不同目标上有效地共享权重。shared-bottom层被分成多个Expert,这些Expert都被用来预测不同的目标。每个目标都有一个gate函数。该gate函数是一个具有原始共享层和不同Expert层输入的softmax函数。这个softmax函数将确定哪些Expert层对于不同的目标是重要的。如图3所示,不同的Expert会对于不同的目标更加重要。如果与 shared-bottom架构相比,不同的目标具有较低的相关性,则MMoE模型训练受到的影响更小。

图3:YouTube上的多任务专家应用

该模型的Wide部分是减少系统中推荐视频位置引入的选择偏差。这个Wide部分被称为“浅塔”(shallow tower),它可以只是一个简单的线性模型,使用简单的功能,如视频点击位置和用来观看视频的设备。浅塔的输出与MMoE模型的输出相结合,MMoE模型是Wide & Deep模型体系结构的关键组成部分。这样一来,模型就会更关注视频的位置。在训练中,会设置10%的丢失率被用来防止位置特征在模型中变得太重要。如果您不使用Wide & Deep的架构,并将位置作为一个单一的特性来添加,那么模型可能根本不会关注该特性。

结果如何

该论文的结果表明,用MMoE替换shared-bottom层可以提高模型的参与度(观看推荐视频的时长)和满意度(调查反馈)。增加MMoE中的Expert层数量和乘法的数量进一步提高了模型的性能。但由于计算上的限制,这个数字不能在现场设置中增加。

进一步的结果表明,通过减少由于使用浅塔而导致的选择偏差,参与度度量得到了改善。与只在MMoE模型中添加输入特性相比,这是一个较为显著的改进。

值得一提

  ·虽然谷歌有一个很好的计算基础设施,但他们仍然需要注意训练和服务成本。

  ·通过使用Wide & Deep模型,您可以在设计一个网络时预先定义对您很重要的一些特性。

  ·当您需要一个具有多个目标的模型时,MMoE模型是有效的。

  ·即使拥有一个强大而复杂的模型架构,人们仍然是手动调整最后一层的权重,根据不同的客观预测来确定实际的排名。

原文作者:Tim Elfrink

Image placeholder
NetworkRanger
未设置
  23人点赞

没有讨论,发表一下自己的看法吧

推荐文章
Fish Redux中的Dispatch是怎么实现的?

前言开源地址:https://github.com/alibaba/fish-redux我们在使用fish-redux构建应用的时候,界面代码(view)和事件的处理逻辑(reducer,effe

揭秘|每秒千万级的实时数据处理是怎么实现的?

01背景闲鱼目前实际生产部署环境越来越复杂,横向依赖各种服务盘宗错节,纵向依赖的运行环境也越来越复杂。当服务出现问题的时候,能否及时在海量的数据中定位到问题根因,成为考验闲鱼服务能力的一个严峻挑战。线

Go语言高级编程_5.7 layout 常见大型 Web 项目分层

5.7layout常见大型Web项目分层 流行的Web框架大多数是MVC框架,MVC这个概念最早由TrygveReenskaug在1978年提出,为了能够对GUI类型的应用进行方便扩展,将程序划分为:

css如何实现文字颜色渐变?3种实现方法

基础样式:.gradient-text{ text-align:left; text-indent:30px; line-height:50px; font-size:40px; font-

PHP 内核:foreach 是如何工作的?

foreach是如何工作的? 首先声明,我知道foreach是什么,也知道怎么去用它。但这个问题关心的是,内核中foreach是如何运行的,我不想回答关于“如何使用foreach循环数组”的任何问题。

Kafka 优秀的架构设计!它的高性能是如何保证的?

应大部分的小伙伴的要求,今天这篇咱们用大白话带你认识Kafka。Kafka 基础消息系统的作用大部分小伙伴应该都清楚,这里用机油装箱举个例子:所以消息系统就是如上图我们所说的仓库,能在中间过程作为缓存

全球“黑客大赛”冠军霸气讲述:我是如何让50个文件一起骗过AI安防系统的?

大数据文摘出品来源:medium编译:邢畅、张睿毅、钱天培你有没有想过当黑客呢?破解手机密码,黑入公司系统,甚至…控制全球电脑。打住打住!违法犯罪的念头显然不能有。再退一步讲,咱也不一定有这本事。尤其

“12306”是如何支撑百万QPS的?

12306抢票,极限并发带来的思考每到节假日期间,一二线城市返乡、外出游玩的人们几乎都面临着一个问题:抢火车票!虽然现在大多数情况下都能订到票,但是放票瞬间即无票的场景,相信大家都深有体会。尤其是春节

同义词搜索是如何做到的?

前面几个章节我们使用到了Lucene的中文分词器HanLPAnalyzer,它并不是Lucene自带的中文分词器。Lucene确实自带了一些中文分词器,但是效果比较弱,在生产实践中多用第三方中文分词器

盗版12306骗3000万人下载,暴利高仿App是如何花式捞钱的?

眼看着春运一天一天临近,我按捺不住激动的心情,准备加入抢票大军。可是,当我在应用商城搜索12306时,却发现一大批“12306”。这些App下载量从几万到几千万(未标“官方版”的累计下载量超一千万),

“What‘’s your problem?”李彦宏被泼冷水后问道

本文综合自网络7月3日上午,2019年百度AI开发者大会举行,百度CEO李彦宏演讲开场。在演讲过程中,有个观众突然冲上演讲台,向李彦宏头部倒了一瓶水。李彦宏先是一愣,后来用英语问道:What’syou

nginx 如何实现 if 嵌套

nginx不支持if嵌套,也不允许在if中使用逻辑判断,会报如下错误: nginx:[emerg]"if"directiveisnotallowed 当业务需要多个条件判断时,可以借助中间变量来实

如何实现Laravel的容器

PHP反射 今天我要给大家讲解的是PHP当中使用非常普遍的高级操作:反射。反射在当今几乎所有的PHP框架或者工具中都占用非常重要的角色,就比如Laravel的容器,容器对于Laravel架构来说极其重

MySQL 每秒 570000 的写入,如何实现?

来源:吴炳锡yq.aliyun.com/articles/278034一、需求一个朋友接到一个需求,从大数据平台收到一个数据写入在20亿+,需要快速地加载到MySQL中,供第二天业务展示使用。二、实现

搞个大事情,阿里如何实现上亿级数据的精准计数?

背景关系型数据库在执行计数任务时,其执行效率会随着数据量级的增长而降低;当数据量达到亿级别时,计数任务的执行效率已经低到令人不忍直视。在闲鱼团队的关系系统中,我们采用了这样一种方式来实现亿级别数据的毫

腾讯林晓斌:数据库的高易用性如何实现?

腾讯云基于QQ、微信、腾讯游戏等海量业务的技术锤炼,从基础架构到精细化运营,从平台实力到生态能力建设,腾讯云将之整合并面向市场,使之能够为企业和创业者提供集云计算、云数据、云运营于一体的云端服务体验。

RTSP网络摄像头/海康大华硬盘录像机网页无插件直播方案EasyNVR如何实现RTMP/FLV/HLS/RTSP直播流分发

背景需求对于摄像机直播,客户反馈的最多就是实现web直播、摆脱插件,可以自定义集成等问题。我们熟悉的EasyNVR已经完美的解决了这些问题。然而对于web播放也存在一些问题,通常我们web播放RTMP

基于JWT规范实现的认证微服务

本文由公众号EAWorld翻译发表,转载需注明出处。作者:MarceloFonseca译者:白小白 原题:Buildinganauthenticationmicro-servicewithJWTsta

css底层什么技术实现的

css底层什么技术实现的css底层是由浏览器进行解析渲染实现的。具体是通过css解析器解析css语法,生成css规则树,再结合dom树进行渲染绘制到屏幕上的。(相关课程推荐:css视频教程)CSS的渲

利用 samba 实现 Ubuntu18.04 与 Windows10 的文件共享

在Ubuntu18.04上安装samba服务 打开终端,使用下面指令安装samba服务。 $sudoaptinstallsamba $sudoaptinstallsmbclient 在Ubuntu1

互联网是如何把“原始人”逼成“机器人”

【导读】互联网快速发展的这十多年,我们见证了企业软件架构的多次迭代和演变。初期阶段都使用JSP+Servlet,工程师感觉代码直接写在jsp页面上不优雅,也不方便调试。后续发展为JSP+Javabea

“加班文化”到底是如何流行起来的

        说起互联网行业,大家最先想到的都是弹性工作制度,薪资诱人,夜宵福利,晚上报销打车费这些标签,但是作为一个扎根互联网行业的资深战士。我只想告诉大家,这些福利,都是在为互联网行业的陋习:“

资源混淆是如何影响到Kotlin协程的

导言随着kotlin的使用,协程也慢慢在我们工程中被开始被使用起来,但在我们工程中却遇到了一个问题,经过资源混淆处理之后的apk包,协程却不如期工作。那么两者到底有什么关联呢,资源混淆又是如何影响到协

阿里毕玄:从生物系学生,到技术团队 leader,他是如何完成自我蜕变的

©MSuzanneD.Williams编者按:新的技术层数不穷,困扰程序员的不仅有学不完的新技术,还有每个人在职业生涯中必然会面对的成长路线问题。这就像一个产品有了清晰的roadmap,下一步走的才会

YOLO目标检测从V1到V3结构详解

本文主要内容是对YOLO系列进行综述目标检测评价指标IoU(Intersection-over-Union)指标IoU简称交并比,顾名思义数学中交集与并集的比例。假设有两个集合A与B,IoU即等于A与