更新时间:2017-08-31 来源:黑马程序员python培训学院 浏览量:
去年,在波士顿举办的第10届ACM推荐系统大会(ACM’s RecSys ‘16)上,来自Google的一个研究团队公布了YouTube推荐系统的深度学习论文:Deep Neural Networks for YouTube Recommendations
论文作者是Google的软件工程师 Jay Adams 与高级软件工程师 Paul Covington、Embre Sargin,他们向业界展示了YouTube在机器学习推荐算法上的深度神经网络使用情况。该论文涉及到一些非常技术、非常高级的细节,但它最大的意义是为我们完整描绘了YouTube推荐算法的工作原理!!该论文细致、审慎地描述了YouTube检索、筛选并推荐视频时的大量细节。
算法论文的UP主解析
YouTube工程师发布在ACM上的算法论文,目标受众显然不是我们这些UP主。但为了流量,阅读并理解该算法的内容,并让它来为我们UP主们服务就显得义不容辞了。接下来就看我们如何从UP主的角度来解析这篇算法论文。
在论文公布之前,我们上一篇分析YouTube算法的文章(详见AI科技大本营的译文:《想让视频网站乖乖帮你推内容?看看这位小哥是如何跟YouTube斗法的》),关注的主要是观看时长这一个因素,因为我们只能从自己上传的视频数据中来反推YouTube算法的工作原理,这肯定要受限于我们视频的内容和受众。我们之所以了解YouTube的算法,是因为我们解决了一下做视频路上碰到的这个问题:“为什么我们的视频就能这么成功呢?”为此,我们尽最大努力来分析已有的信息,但最初的结果并不理想。尽管我100%支持我们的结论,但我们先前的方法存在两大问题:
仅用频道指标的一部分来做反推,意味着我们在数据上存在巨大的盲点,毕竟我们无法访问竞争性指标、会话指标与点击率。对于那些基于UP主的指标,YouTube算法所给的权重非常小。它更关心的是观众以及单个视频的指标。换句话说,该算法并不关心你所上传的视频,而是关心你和其他人正在看的视频。
但在我们写最初那篇文章的时候,YouTube或Google数年来都没公布过有关该算法的任何信息。所以,我们只有自己动手。有了Google新近公布的这篇论文,我们就可以一窥它推荐机制的究竟,并找出其中的重要指标。希望这能回答一个让我们更为辛酸的问题,“为什么有些视频能取得成功?”
深度学习是个无底洞
论文简介部分最大的亮点是YouTube确实在用深度学习来驱动推荐算法。这种做法不新鲜,但此次确认证实了大家此前的猜测。作者在论文开头是这样说的:
在本论文中,我们将集中介绍深度学习对YouTube视频推荐系统的全面影响……跟Google其他领域的产品一样,YouTube同样经历了用深度学习来解决所有通用学习问题的根本性范式转变。
这就意味着,今后人工调整算法、人工权衡这些调整并将其部署上世界最大的视频分享网站的机会将越来越少。而是由算法实时来读取数据、为视频排名,然后基于这些排名来推荐视频。所以,当YouTube表示他们不知道算法为什么那样做时,有可能他们确实不知道。
两大神经网络
该论文以算法的基本架构作为开篇,下面是作者的图示:
本质上这就是两个大的过滤器,各自有着不同的输入。作者写道:
该系统由两大神经网络组成,一个用于生成候选视频,一个用来对其排名。
这两个过滤器及其输入内容,基本上决定了用户在YouTubes上能看到的每一个视频:建议你播放的下一个、推荐给你的视频列表、你所浏览的视频列表……
第一个过滤器是候选生成器。论文中解释,候选是基于用户的YouTube活动记录产生的,也就是用户的观看历史与观看时长。候选生成器还会考虑相似用户的浏览记录,这一点被称为协同过滤。相似用户是算法通过视频ID、搜索关键词及相关的用户统计信息决定出来的。
候选生成器的通过率仅为属百分之一,换言之,如果某个视频能从数百个中脱颖而出成为你的候选视频,它必定是跟你的观看记录有关,同时还有一个跟你相似的用户已经看过它。
第二个是排名过滤器。该论文对排名过滤器进行了大量的深度解析,并列j举出不少有趣的因素。作者写道,排名过滤器是这样给视频排名的:
基于描述视频和用户的丰富特征,目标期望函数会给每个视频设定分数。根据分数排名,得分最高的视频将被展示给用户。
由于观看时长是YouTube为用户设定的首要目标,我们只好假定这就是“目标期望函数”的意义。因此,考虑到各种不同的用户输入,该分数的意义就是某视频能够转化成用户观看时长的程度。但不幸的是,事情没有那么简单。根据作者透露,该算法还会考虑很多其他的因素。
我们在排名过滤器中用到了数百种特征。
本文版权归黑马程序员Python培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:黑马程序员Python培训学院
首发:http://www.itheima.com/news/python.html