原来YouTube推荐系统的内幕是这样……

simplehap 2017-09-01

原来YouTube推荐系统的内幕是这样……

为什么YouTube平台上会源源不断产生优质视频和优质广告,真的只是偶然吗?为什么用户一上youTube就黏住了,这背后到底下了多大的功夫研究人性的细节?如此海量的数据,如何精准地推送给每一个恰当的人?

这篇文章是继我们上一篇《可怕!YouTube算法如何让小孩沉迷到不可自拔……》后,作者(Adrienne LaFrance)的又一篇力作。上一篇文章中,作者通过自己的直观分析和数据调研对YouTube的推荐系统进行了猜想,而这一篇是YouTub推出关于自家推荐系统的论文后,作者对其的验证、补足和进一步解析。这篇文章的信息密度大,但读起来并不会索然无味,而且读完会真正收获到非常有用的信息。

以下,enjoy!

翻译 | AI科技大本营(rgznai100)

参与 | 聂震坤

2016年9月18日,在波士顿举办的第10届ACM推荐系统大会(ACM’s RecSys ‘16)上,来自Google的一个研究团队公布了YouTube推荐系统的深度学习论文:Deep Neural Networks for YouTube Recommendations

论文地址:

https://research.google.com/pubs/pub45530.html

论文作者是Google的软件工程师 Jay Adams 与高级软件工程师 Paul Covington、Embre Sargin,他们向业界展示了YouTube在机器学习推荐算法上的深度神经网络使用情况。该论文涉及到一些非常技术、非常高级的细节,但它最大的意义是为我们完整描绘了YouTube推荐算法的工作原理!!该论文细致、审慎地描述了YouTube检索、筛选并推荐视频时的大量细节。

算法论文的UP主解析

YouTube工程师发布在ACM上的算法论文,目标受众显然不是我们这些UP主。但为了流量,阅读并理解该算法的内容,并让它来为我们UP主们服务就显得义不容辞了。接下来就看我们如何从UP主的角度来解析这篇算法论文。

在论文公布之前,我们上一篇分析YouTube算法的文章(详见AI科技大本营的译文:《想让视频网站乖乖帮你推内容?看看这位小哥是如何跟YouTube斗法的》),关注的主要是观看时长这一个因素,因为我们只能从自己上传的视频数据中来反推YouTube算法的工作原理,这肯定要受限于我们视频的内容和受众。我们之所以了解YouTube的算法,是因为我们解决了一下做视频路上碰到的这个问题:“为什么我们的视频就能这么成功呢?”为此,我们尽最大努力来分析已有的信息,但最初的结果并不理想。尽管我100%支持我们的结论,但我们先前的方法存在两大问题:

  1. 仅用频道指标的一部分来做反推,意味着我们在数据上存在巨大的盲点,毕竟我们无法访问竞争性指标、会话指标与点击率。

  2. 对于那些基于UP主的指标,YouTube算法所给的权重非常小。它更关心的是观众以及单个视频的指标。换句话说,该算法并不关心你所上传的视频,而是关心你和其他人正在看的视频。

但在我们写最初那篇文章的时候,YouTube或Google数年来都没公布过有关该算法的任何信息。所以,我们只有自己动手。有了Google新近公布的这篇论文,我们就可以一窥它推荐机制的究竟,并找出其中的重要指标。希望这能回答一个让我们更为辛酸的问题,“为什么有些视频能取得成功?”

深度学习是个无底洞

论文简介部分最大的亮点是YouTube确实在用深度学习来驱动推荐算法。这种做法不新鲜,但此次确认证实了大家此前的猜测。作者在论文开头是这样说的:

在本论文中,我们将集中介绍深度学习对YouTube视频推荐系统的全面影响……跟Google其他领域的产品一样,YouTube同样经历了用深度学习来解决所有通用学习问题的根本性范式转变。

这就意味着,今后人工调整算法、人工权衡这些调整并将其部署上世界最大的视频分享网站的机会将越来越少。而是由算法实时来读取数据、为视频排名,然后基于这些排名来推荐视频。所以,当YouTube表示他们不知道算法为什么那样做时,有可能他们确实不知道。

两大神经网络

该论文以算法的基本架构作为开篇,下面是作者的图示:

原来YouTube推荐系统的内幕是这样……

本质上这就是两个大的过滤器,各自有着不同的输入。作者写道:

该系统由两大神经网络组成,一个用于生成候选视频,一个用来对其排名。

这两个过滤器及其输入内容,基本上决定了用户在YouTubes上能看到的每一个视频:建议你播放的下一个、推荐给你的视频列表、你所浏览的视频列表……

第一个过滤器是候选生成器。论文中解释,候选是基于用户的YouTube活动记录产生的,也就是用户的观看历史与观看时长。候选生成器还会考虑相似用户的浏览记录,这一点被称为协同过滤。相似用户是算法通过视频ID、搜索关键词及相关的用户统计信息决定出来的。

候选生成器的通过率仅为属百分之一,换言之,如果某个视频能从数百个中脱颖而出成为你的候选视频,它必定是跟你的观看记录有关,同时还有一个跟你相似的用户已经看过它。

第二个是排名过滤器。该论文对排名过滤器进行了大量的深度解析,并列j举出不少有趣的因素。作者写道,排名过滤器是这样给视频排名的:

基于描述视频和用户的丰富特征,目标期望函数会给每个视频设定分数。根据分数排名,得分最高的视频将被展示给用户。

由于观看时长是YouTube为用户设定的首要目标,我们只好假定这就是“目标期望函数”的意义。因此,考虑到各种不同的用户输入,该分数的意义就是某视频能够转化成用户观看时长的程度。但不幸的是,事情没有那么简单。根据作者透露,该算法还会考虑很多其他的因素。

我们在排名过滤器中用到了数百种特征。

如何对视频进行排名这一块的数学原理非常复杂。论文既没有详述排名过滤器所用的数百项因素,又没有提及他们是如何加权的。但它列举了其中的三大主要因素:浏览记录、搜索记录、观看人数,以及包括新鲜程度在内的其他视频元素。

每一秒钟都有大量的视频上传到YouTube。向用户推荐这些最新上传的新鲜内容,对YouTube来说极其重要。我们长期观察的结果是,用户喜欢新鲜的内容,即便有些内容跟他的关联程度并不大。

论文中提到的比较有趣的一点,是算法并不总会受用户所看的上一个视频的影响,除非你的观看记录极其有限。

我们会优先使用用户的随机观看和关键词搜索记录,然后才会考虑上一个观看视频的数据。

在论文后面讨论视频封面图和标题的时候,他们提到了点击率的问题:

举例来说,用户有很大的几率来观看系统推荐的视频,但不太可能基于封面图的选择而去点击其主页……我们最终的排名会根据实时A/B测试的结果不断调整,它大体上就是一个用于预测用户观看时长的简单函数。

在这里提出点击率的问题其实并未出乎预料。为了能生成更多观看时间,一个视频必须先让人看到才成,其中最好的办法就是做出一个很赞的缩略图并相出一个很赞的标题。这让很多UP主都认为点击率对于视频在算法中的排名极其重要。

但YouTube知道点击率是可以人为刷上去的,所以他们也给出了应对之策。他们在论文中是这么承认的:

通过点击率进行排名往往会变相鼓励诱导性的视频内容,用户即便点进去也很少看完视频,因而观看时长能更反映出视频的好坏。

起码这一机制还算鼓舞人心(译注:对比一下国内某些网站的内容生产机制),作者接下来写到:

如果用户并未观看最近推荐的视频,页面下一次加载时模型就会自动降低该视频的排名。

这就说明,如果用户没有点击特定的视频,该算法就不再将其推荐给相似的用户。频道推荐的情况也一样,论文中的证据如下:

我们观察到的最为重要的信号是用来描述用户此前跟某个视频及其他相似视频的交互的……举例来说,考虑一下用户跟某个频道已经被算法打分过的视频的交互记录:该频道有多少视频被该用户看过?该用户观看同类话题的上一个视频是在什么时间?此类描述用户过往活动的数据特别强大……

此外,该论文还指出,算法在训练时考虑了YouTube视频所有的观看方式,包括那些推荐算法触及不到的地方:

训练数据生成自所有观看方式的YouTube视频(包括内嵌在其他网页中的那些),而非仅用我们自己所生成推荐视频。否则,新内容将很难登上推荐榜单,而推荐系统又将过于依赖过往视频的数据。如果用户通过内容查找到的视频不同于我们的推荐,我们就需要能迅速通过推荐系统把该发现传播给其他用户。

最终,这一切又回到了算法所用的观看时间。正如我们在论文开头所看到的,该算法在设计之初就是一个“目标期望函数”,作者总结“我们的目标就是为了预测用户的观看时长”,“我们最终的排名会根据实时A/B测试的结果不断调整,它大体上就是一个用于预测用户观看时长的简单函数。”

这也再一次说明了视频观看时间之于算法的重要性,该算法的目的就是为了YouTube网站上能有更多、更长的视频以及更多、更长的用户观看时间。

一个简单的回顾

讲了这么多,让我们简单回顾一下:

  1. YouTube使用三个主要的观看因素来推荐视频,它们是用户的观看历史、搜索记录以及相关的用户统计信息。

  1. 推荐视频是通过候选生成器与排名过滤器的筛选出来的,这两大过滤器决定了YouTube如何读取、筛选视频,如何生成推荐列表。

  1. 排名过滤器主要是基于用户输入的因素,其他因素还包括视频的”新鲜程度“和点击率。

  1. 推荐算法的设计初衷是持续增加用户在YouTube网站的观看时长,其方法是持续把视频A/B测试的实时结果不断反馈给神经网络,从而使YouTube能不断为用户推荐它大体上就是一个用于预测用户观看时长的简单函数。

如果你还不明白,咱们就再举一个例子

我们用一个实例来说明这个推荐系统具体是如何运作的:

比如说,小明很喜欢YouTube,他有YouTube账号相关的一切。每天浏览YouTube时,他都会在浏览器登录。一旦登录,YouTube便给小明此次浏览的内容创建三个token:浏览记录、搜索记录以及关于他的统计信息。小明可能压根就不知道这三种数据的存在。

然后轮到候选生成器上场了。YouTube拿这三个token的值跟观看记录类似于小明的用户进行对比,由此筛选出小明可能会喜欢的数百个视频,过滤掉YouTube视频库中数以百万计的其他内容。

接下来,基于视频和小明的相关性,这些视频被排名算法排序。排序时该算法会考虑这样一些问题:小明有多大的可能会打开这个视频?这个视频有没有可能让小明在YouTube上打发更多时间?这个视频的新鲜程度如何?小明最近在YouTube上的活动程度如何?还有数百个其他的问题。

经过YouTube算法的读取、筛选和推荐后,排名最高的视频将被推荐给小明。之后小明看与不看的选择数据都会反馈给神经网络,以供算法后续使用。视频被点开,并吸引小明在YouTube上打发更多时间的目标,则一直持续下去。那些小明没有点开的推荐视频,等他下次登录网站时则有可能通不过候选生成器。

总结

Deep Neural Networks for YouTube Recommendations这篇论文读起来很棒,它第一次让人从源头直击YouTube推荐算法的内幕!!我们希望能接触到更多的论文,以便在为这个平台制作内容的时候能做出更好的选择。这也是愿意花时间来写这些内容的根本原因。毕竟,更适合该平台的内容就意味着更多的浏览量、更高的收入,从而让我们能有更多的资源来为数以十亿计的用户制作出品质更高、更有吸引力的内容。

作者 | Matt Gielen

原文链接:

http://www.tubefilter.com/2017/02/16/youtube-algorithm-reverse-engineering-part-ii/

相关推荐

PHP100 / 0评论 2019-03-28

互联网那些事 / 0评论 2016-12-24