视频网站的个性化海报想让你忍不住去追剧 | 揭秘背后的算法框架

发布时间:2020/07/23 00:00      浏览:128
作者:Ashok Chandrashekar, Fernando Amat, Justin Basilic
来源:36氪

几年以来,Netflix一直致力于完善它的个性化推荐系统,即在正确的时间为每一位用户推荐他们感兴趣的内容。


Netflix手头上有数千个剧集,它的用户有上亿人(注:据Netflix官方公布的最新数据,2020年第一季度Netflix全球订阅用户数为1.83亿),因此精准的个性化推荐就非常有必要了。


但是个性化推荐要面临不少挑战,比如,


系统凭借什么来笃定某位用户喜欢某些内容?


怎么判断用户会不会对以前从未看过的新类型、新剧集感兴趣呢?


如何说服这些用户去看某一部新剧呢?


对上述问题的回答将决定了Netflix的推荐系统如何改进。


对相关研发人员来说,说服用户去看他们不熟悉的剧集是非常困难的。


研发人员最初考虑的方法是:通过这部剧的图像(可能是海报、剧照等)吸引用户。这些图像在某种程度上可以给用户留下好的第一印象,毕竟优秀的视觉效果是对剧集优秀的一种“保证”,让用户忍不住想点开。


这些图像里可能有你熟悉的明星,或者是飞驰的车辆等惊险刺激的场景,让你产生看电影大片的感觉。


所以,如果我们在你的用户首页上投放含有精美图片的推荐(传播行业里有句老话:一张照片顶得上一千个文字),那么或许——仅仅是或许——你会点开它看一看。


这是Netflix与传统媒体不同的地方,它不期待所有人都喜欢它的某一个产品,而是主动提供千万种产品,然后为用户进行个性化推荐。

这是Netflix的原始首页,随着用户不断看剧,推荐系统将为用户进行越来越精准的个性化推荐|图片来自Medium


刚才我们已经提到,Netflix正在致力于完善它的精准推荐系统,希望为每一位用户找到最适合他们的剧集。


此外,Netflix强大的算法系统还能给每一个用户展示他们最感兴趣的海报。


我解释一下,比如根据算法推荐的结果,《Stranger Things》这个剧有好几种海报,可以让不同的用户都感兴趣。


那么,这种让算法决定某部剧的海报真的合理吗?


常识告诉我们,每个人的口味千差万别,但我们真的可以按照每个人的口味,给同一部剧配不同的海报,从而戳中不同用户的兴趣点?

Stranger Things为每个用户推荐时,会根据算法给他们展示不同的海报,吸引不同口味的用户的兴趣。这些图像都和主题有关,都反映了主题的某一面|图片来自Medium


让我们从下面的例子出发进行分析,看看个性化的海报推荐对用户有什么效果。


先拿影视剧的类型举个例子,下面左侧是两名不同用户看过影片的历史记录,右侧是我们根据算法系统为他们推荐的新剧集:《Good Will Hunting》。


如何更精准地吸引两名用户呢?


第一个用户显然看过很多浪漫爱情的电影,所以我们就使用一张两位主角相互亲呢的图像作为海报;另一个用户显然看过很多喜剧,所以我们就把喜剧明星罗宾·威廉姆斯(Robin Williams)的图像作为海报。

图片来自Medium


另一个例子和演员相关。
同样是推荐电影《低俗小说》,对一个经常看乌玛·瑟曼(Uma Thurman)的用户,我们就以乌玛·瑟曼的剧照作为海报;同理,对一个经常看约翰·特拉沃尔塔(John Travolta)的作品的用户而言,他则会收到带有约翰·特拉沃尔塔的海报的推荐。

图片来自Medium


当然,这种个性化海报推荐并不总是清晰、明确的,因为有些用户留下的数据并不清晰。


所以我们不会把这种方法当成金科玉律,只是在算法告诉我们某位用户有某种倾向的时候,才会用海报推荐法去推荐剧集,从而为用户带来更好的体验。


Netflix的挑战


在Netflix,我们秉持让算法和个性化改善用户体验的想法,所以在我们不仅在用户的首页标题进行个性化推荐,还为它们配备个性化的海报。


另外我们的主页面和发送的私信也都进行了个性化定制。


每一个细节的个性化对我们而言都是挑战。


再谈个性化海报推荐


对个性化海报而言,最难的地方在于我们只能给用户推荐一张海报,所以只有一次机会给用户留下印象。


传统的推荐方式则可以一次性给用户提供更多的图片,让他们进行选择。


通过这种选择,用户或许会找到自己感兴趣的“点”(比如某个明星、某些设定等)。


排除其他因素,个性化海报是基于这样的假设:用户决定是否播放一部剧,完全取决于我们为他提供的那张海报是什么。


对我们而言,亟需解决的问题如下:


(1)在什么时间发布某个有个性化海报和推荐可以对用户有最大程度的影响;


(2)在什么情况下,不管我们发布怎样的海报,用户都会选择收看这部剧。


因此,个性化的海报推荐需要和传统的推荐方式相结合,同时也要和算法相适应。


我们需要收集用户大量的数据,找到用户的倾向,在明确“用个性化海报推荐方法”更好的前提下再为他们精准投放海报。


是否要更换海报?


关于个性化海报,还有一个挑战是考虑,对同一部剧来说,如果我们在个性化推荐的时候更改了海报,对用户来说会有怎么的影响,以及多大程度的影响。


举个例子,假设一名用户收藏了某部剧但还没有观看。经过一段时间后,根据他最近追剧的内容,算法推测初他的某些倾向可能有了变化,从而修改了这部还没来得及看的剧的海报。


在这种情况下,用户是否会重新考虑要不要看这部剧?


这部剧对他来说还有兴趣吗?


用户会觉得被冒犯还是会觉得很“贴心”?

推荐系统不断完善,我们看到的推荐内容和海报都是“私人订制款”|图片来自Unsplash|摄影Charles Deluvio


显然,如果我们找到了比原来更好的海报,当然要换上新海报了。


但这种海报的变化会不会让用户感到困惑?


会不会让用户失去点开的兴趣?


毕竟,我们的假设是“用户决定是否播放一部剧,完全取决于我们为他提供的那张海报是什么。”所以在更换海报的问题上一定要谨慎。


海报之间的联系


接下来,我们还需要考虑在同一个页面上,投放的所有海报是否和谐美观,但在和谐美观的同时又要注意不能雷同。


首先,如果一个页面上的某张海报特别突出(比如突出的人像、加粗的字体),那么就可以吸引用户去看,但是容易让页面“不和谐”。


相反,如果页面上的每一个海报内容都相似,那么虽然页面会显得和谐统一,但是重点不够突出,无法吸引读者。


所以,把每一张海报单拎出来考虑显然是不够的,我们还要考虑它在页面上和其他海报放在一起时是什么效果。


除了标题和海报之外,有时候我们还要考虑一些剧集的其他内容,比如摘要、预告片和其他图片。


我们可能会为用户提供多样化的选择,比如一些剧集只放海报,另一些则推荐预告片。


这种互补、错落的推荐方式可以突出重点、吸引用户。


对每一部剧来说,除了推荐个性化的海报之外,我们还需要给每部剧精选其他内容(剧照、预告等),以免用户产生被海报“骗进来”的消极感受。


这些精选的其他内容要最大程度上涵盖口味各异的潜在用户。毕竟,一部剧真正的竞争力还是在于用户的观看量。


我们不仅在个性化推荐海报上不断完善,还在美学方面下足了功夫,争取吸引更多的人。我们聘请了艺术家和设计师,为每部剧精心挑选了涵盖一个主题不同层面的介绍,同时根据算法的推荐,有节制地重点突出某些内容。


技术层面的挑战


最后,要想实现个性化海报推荐,我们还要面临技术层面的挑战。


最大的挑战就在于我们的页面需要非常多的图像。所以个性化推荐如果想要平稳运行,我们的系统处理能力必须非常强大,峰值为处理2千万个请求/秒。如果用户的界面无法加载和渲染这些图片,那么肯定会影响他们的体验。


此外,当我们发布某部剧时,算法必须能快速响应,并且不断学习,不断适应用户的新口味——用户的兴趣和口味可能随时随地发生变化,算法系统必须跟上这种变化。

Netflix已经成为越来越多人追剧的主流平台|图片来自Unsplash|摄影CardMapr


Contextual bandits算法框架


Netflix的推荐系统是靠机器学习而不断升级的。我们会收集用户的相关数据,然后放到算法中不断更新算法系统。


但是具体选用哪一种算法呢?


传统的方法是进行A/BTest,这种离线的检测方法是说,我们将用户分成A和B两组,我们对A组用户保持老算法,对B组用户使用新算法,然后看效果:如果新的算法效果更好,我们就会全面切换成新的算法,反之则保留旧的算法。



但问题在于,每个组的用户活跃度是不一样的,因此测试的结果不一定准确。


假设B组的成员更加活跃,测试得到的结果是新算法更好,我们就对所有用户全部采用新算法。


但是新算法不一定适用于每个用户,因此就会造成新算法让某些用户无法获得更好体验的结果,即示意图中的绿色部分“Regret”。


为了最大程度地减少Regret用户的数量,我们开始采用在线机器学习法。


以前的机器学习需要收集数据、让算法更新、进行A/BTest然后再比较算法优劣,这个过程很长,而且效果并不好。


现在我们采用Contextual bandits算法框架,在这个框架下,模型可以快速辨识出用户的喜好并作出推荐。


这个算法框架是什么?


Contextual bandits算法框架是一款在线的算法框架,可以在线收集训练数据、实时学习、迅速反馈,为每位用户生成无偏差模型,而且可以立即生效。


在早期的工作中,我们用算法框架在没有具体场景的情况下挑选出最优图片。现在我们需要个性化的推荐,所以就把用户当成不同的“场景”(context),根据他们对图片不同的需要和反馈进行调整。


Contextual bandits算法框架的核心目标是缩短上图中Regret用户的数量。


这一框架可以通过注入随机的、用于训练算法的数据,从而得到一般性的公式,即使环境千变万化也能迅速适应。


我们把这个过程称之为“数据探索”。


数据探索的具体策略和剧集提供的图片、用户的数量(也称之为数据的规模)相挂钩。


在这种数据探索的过程中,我们还会记下信息日志,这些日志可以用来训练实时模型,也可以在离线测试时作出更加准确的效果评估,这个一会儿我们会更详细地说明。


当然,数据探索都是有成本的,因为在探索的过程中,总会有一部分用于测试的用户没能享受最终的、最优的体验。


这样做的结果是什么呢?


事实上,在拥有1亿多用户的情况下,这一部分没能享受最优化体验的人数(或者每位用户无法享受最优化体验的时间)是非常少的,所以分摊下来的话,这种数据探索的成本并不大,这种代价也是完全可以接受的。


如果根据结果,这种随机数据探索的代价太大了的话,Contextual bandits算法框架就不适用了。


我们现在推行的在线数据探索方案帮我们建立了一个数据库,数据库里每个小组中都有用户数量和数据、剧集、图像等。


我们根据算法提供的结果决定要不要给某位用户提供每个剧集的推荐。


此外,这种数据探索是可控的,我们可以根据用户的反馈进行调整,保证用户在同一个剧集链接中看到的图片变化的频率是有限的。


除此之外,我们还尽量仔细地标注数据的质量,以免出现“钓鱼图”(吸引用户点击但是没有什么内容的图片,类似“标题党”),引发负面反馈。


模型训练


在线上学习的设定中,我们用Contextual bandits算法框架为基础,根据每位用户的需求和倾向向他们呈现不同的海报。


对每一个用户来说,我们一般都有12张左右的海报备选。


但是每位用户看每个剧集时都有12张图像备选,我们又有这么多用户和剧集,所以可想而知,挑选的工作量是巨大的。


为了简化这种训练,我们不再为每位用户排列某个单独的剧集的海报,而是对一个用户会接触到的所有剧集的海报进行整体排列。按照后者的排列方法,我们依旧可以针对某一个剧集找到最适合用户的海报。


具体的学习方法我们采用监督学习法(supervised learning models)、汤普森采样法(Thompson Sampling)、LinUCB或贝叶斯推断法(Bayesian methods ),这些方法可以帮助我们在数据探索中作出最佳决策。


潜在的信号


在Contextual bandits算法框架中,不同的场景通常有明显的特征,可以借助这些特征来辨识不同的场景。这些特征也可以称之为“信号”。


用户在使用Netflix的过程中会呈现很多特征/信号,比如他们点击过的标题、他们选择的国家,或者他们的语言偏好设置,他们登陆Netflix的设备,他们看剧的时间和周期,等等。


我们的算法在为用户进行个性化推荐的同时,也会将上述的信号考虑在内。

用户在Netflix看剧的同时,Netflix也在分析用户的各类特征,形成“用户画像”|图片来自Unsplash|摄影Clay Banks


有一件事是需要慎重考虑的:有的时候,同一个剧集的某些海报质量和效果天生就比另一些海报要高。在我们数据探索的过程中,也会给这些海报打分。


在以前非个性化的海报推荐中,我们会把评分最高的海报无差别地呈现给所有用户,现在有了算法,我们根据用户需求把可能最吸引他们的海报呈现给他们。


在这个过程中,我们要考虑如何在“最高质量”和“最适合用户”的海报之间做选择,这时候信号就显得很重要了。


如果一位用户发出的信号越强烈,那么我们就给他推荐最适合他的(但可能不是质量最高的)海报;反之,我们则更倾向于为他推荐质量最高的海报。


图片选择


正如前文所言,图像选择就是给不同的用户、按照他们的喜好为他们呈现特别定制的海报。


一旦前文中提到的模型训练完成,我们就可以将它立马投入使用,用来检测某位用户看某部剧时如果看到候选的几张海报,分别有多大的概率会点开它。


我们根据这样的概率从高到低排顺序,然后选择概率最高的那一张呈现给那位特定的用户。


效果检测


离线检测


前文提到,Contextual bandits算法框架实际上是一种在线的机器学习法。在给用户推荐完海报后,我们会使用离线检测技术去检测它的效果,这种技术被称之为“Replay技术”。


这种方法可以让我们对算法无偏差地进行离线衡量(如下图所示)。


换句话说,我们可以通过这种离线衡量法,直观地看到如果在过去特定的场合中我们使用另一种算法会是什么结果。

图片来自Medium


这是离线检测的一个简单案例:


我们为每一位用户分配一张初始海报(横排第一行)。系统记录了这五位用户是否播放了这部剧,播放了则标绿,没有播放则标红(横排第二行)。


离线检测则计算出新算法的推荐结果,并在这张图表里用黑色框圈出推荐算法和新算法结果相一致的结果(即用户1、用户2和用户4),然后计算这个集合中用户的点击率,也就是2/3。


Replay技术可以让我们直观地看到,如果我们推给用户的图片是根据新的算法,那么用户会如何反馈(即是否会观看这部剧)如前文所言,我们的目的在于通过展示合适的图片最大程度地吸引用户观看视频。


下图显示了Contextual bandits算法如何帮只我们提高用户的点击率。

这张统计图显示了不同算法下观众的播放剧集的比例。其中蓝色和粉色为Contextual Bandit算法框架下的观众播放比例,可以看到它最大程度地吸引了观众点击剧集|图片来自Medium


这个例子展示了我们如何对海报进行打分。第一张海报的“喜剧值”为5.7;“浪漫值”为7.2。第二张海报的“喜剧值”为6.3;“浪漫值”为6.5。对喜欢浪漫故事的用户来说我们会倾向于为他推荐第一张海报;对喜欢喜剧故事的人来说我们会推荐第二张|图片来自Medium


在线检测


通过离线检测,我们检测出了效果最佳但是并没有被采用的算法,对后者而言,我们会再进行一次在线A/BTest,观察它在contextual bandits算法框架中的实际表现,根据结果及时调整算法。


正如我们期待的那样,这种测试大大提升了我们的核心指标,即用户对剧集的点击率。


同时,线上检测也让我们观察到了一些有趣的结果,比如对不了解某部剧的用户来说,这种点击率的提升是非常显著的。


这也很容易理解:毕竟在不了解一部剧的前提下,个性化推荐才可能发挥更大的作用。


结论


通过前面介绍的Contextual bandits算法框架,我们实现了个性化推荐的第一步:为用户提供更吸引他们的剧集和海报。

在这里,我们不仅解决了“推荐什么”的问题,更是解决了“如何推荐”的问题。


这一步的意义是巨大的,因为我们可以为用户推荐符合他们口味的内容,以及用最吸引他们的方式介绍新的剧集。


当然,这仅仅是个性化推荐的一次尝试,我们的个性化推荐系统还有很多可以完善的地方,比如我们以后可以设计出新的算法,帮助我们快速准确地实现新剧集、新图像的冷启动处理,或者让用户体验的其他方面更加个性化,包括添加个性化的图片、引用文字和界面等等。


在个性化推荐的道路上,这仅仅是一个起点。

© 2011~2015 3 北京勺海市场调查有限责任公司 | 京ICP备12031756号 | 京公网安备11010802012285号

电话:北京总部010-58696306,上海OFFICE:021-52285671    总部地址:中国北京朝阳区东三环中路建外SOHO18号楼1506室   技术支持:混沌鸿蒙