A/B 测试之外:Netflix 通过实验和数据科学改善流媒体播放体验

阅读数:771 2017 年 7 月 3 日

话题:测试语言 & 开发架构

The Crown(王冠,一部 Netflix 自制剧集)赢得了金球奖。The White Helmets(白头盔,一部有关叙利亚空袭后救援的纪录片)赢得了奥斯卡奖。对于 Netflix 会员来说,这是个激动人心的时刻,在流媒体技术的帮助下,可以通过智能电视或手机,舒适地坐在家里,或者在通勤路上随时观看这些广受好评的内容。

自从2016 年 1 月开始涉足全球市场以来,Netflix 的服务已经在全球超过 130 个国家和地区成功落地,成为一个真正意义上的全球互联网电视网络,几乎在世界每个角落都能看到它的身影。我们的会员数量已经超过1 亿并且依然还在快速增长中,其中大约有一半会员住在美国以外的地方。考虑到全球超过 95% 的人口都在美国以外,可以预见,就在不远的将来,Netflix 还会发展出更多海外会员。随着服务覆盖全球,我们将有机会在世界每个角落观察、学习,并改善我们的服务。

互联网电视服务的好坏,关键在于流媒体播放的质量体验 (QoE)。我们的目标是确保每个会员都可以舒适地,以照片级的画质通过 Netflix 欣赏自己喜欢的电影或剧集,在享受影音盛宴的同时不因卡顿或错误而产生不悦的感觉。单单通过互联网进行视频流播这本身就是个艰巨的任务,以我们的规模来说,要实现这一点更是难上加难(Netflix 已经占据了北美地区峰值时段内超过 1/3 的互联网流量)。要为全球不同口味,使用不同网络基础架构和不同设备,并且对通过互联网消费内容的方式有着不同预期的会员提供这样的服务,则更是难于上青天。

如何确保位于圣保罗、孟买、曼谷的会员,能够获得与位于旧金山、伦敦,或巴黎的会员一样优质的 Netflix 流媒体体验?Netflix 的工程师和科学家在不断地努力着,确保我们可以尽一切可能提供最佳 QoE。为此,Netflix 培养了一种实验文化,以及数据驱动的决策过程,借此在生产环境中对新的想法进行验证,并从会员中收集数据和反馈。本文将介绍 Netflix 为了改善 QoE 所进行的实验,包括进行过的实验类型,数据科学在这其中扮演的角色,以及 Netflix 文化是如何通过持续不断的实验推动我们创新发展的。本文不准备深入介绍实验背后的统计结果,但会谈谈我们在这方面所面临的统计学方面的挑战。

为了改善 QoE,我们还通过数据构建了机器学习和其他统计模型,虽然本文不准备深入介绍这些模型,但有关这些模型的概况可参阅这篇博客文章,另外这篇文章介绍了我们的一个建模项目。另外要注意,虽然本文关注的重点是 QoE,但实际上 Netflix 的很多工作都会通过实验来改进服务,包括用户界面设计、个性化推荐、原始内容推广、营销,甚至视频原画的选择

对于实验的渴求

在介绍我们进行的各种实验之前,有必要首先理解这样一个问题:为什么说结构化的实验方法对创新来说并不是“锦上添花”,而是“雪中送炭”。

促进科学方法

实验和经验观察是科学方法 (Scientific Method)最重要的组成部分,工程师和科学家可以借此形成假设,通过实验收集数据,得出结论或形成新的假设,进而实现创新。科学方法重在迭代式的学习过程,需要反复不断地进行推论和归纳(见下图,由著名统计学家George Box提供)。

迭代式学习过程

推论是指从一种想法或理论发展成为假设,再到使用实际观察结果 / 数据对假设进行验证的过程;归纳则是指从具体的观察结果 / 数据中产生新的假设或想法的过程。在通过科学方法收集数据并对假设进行验证,反复不断地进行推论和归纳地过程中,实验扮演了重要的角色。

确定因果关系

实验是一种基于数据的方法,可以确保我们能够理解对服务进行改动所产生的影响。在我们的实际情况中,我们希望理解理解与流播有关的新算法,或对原有算法进行的改动所能产生的影响。通常来说,我们更希望能回答两个问题:1) 具体的改动(“治疗”)会对 QoE 指标产生怎样的影响?以及 2) 这些改动会对会员的行为产生什么影响:会员们更喜欢新的,还是原来的体验?

一般来说,我们可以通过实验了解改动和影响之间的因果关系,例如,借此我们可以较为自信地认为,我们所遇到的结果是由我们进行的某个改动引起的。在 A/B 测试这样受控的实验中,适当的随机化可以保证验证过程中的控制组和“治疗组”唯一的不同仅仅在于所获得的体验或“治疗”,两个组的其他因素(可能会影响,或不会影响实验结果)均完全相同。这也使得 A/B 测试成为一种通过实验判断体验“A”和体验“B”哪个更好的主流方法。

另外要注意,实验的作用在于确定因果关系,而非用于确定所观察到数据之间的联系。在这方面,可以认为实验是比大部分基于所观察到的数据采用的机器学习方法更胜一筹的做法。我们在机器学习模型和算法的研究和开发方面也进行了大量投入,通过谨慎地从观察到地数据中总结出一定的模式,可以让我们获得更强大的预测能力,同时也可以对假设进行反复确认,但通过实验得到因果关系的做法往往更强大。

数据驱动的决断

最后同样重要的是,实验是一种通过数据引导决策的强大方法。根据实验中得到的数据做决策,这使得我们可以避免 HiPPO(Highest Paid Person’s Opinion,最高薪资者的意见,可简单理解为一种在工作中对待权威的心态,即“领导说了算”)问题,同时可确保不会单凭直觉做决策。通过与人的决断相结合,实验本身就成了一种强大的工具,保证最佳创意最终能够胜出。在这里,企业文化扮演了重要的角色,下文还将进一步讨论。

流播服务的质量体验

QoE 的决定因素有很多,在继续介绍 Netflix 改善 QoE 所做的不同类型实验之前,我将简要介绍三关键性的影响因素。

对于我们流播提供的每部电影或剧集,都需要通过编码过程以不同的视频质量级别(码率)创建文件,随后缓存至我们的服务器,并分发至全世界。当会员开始播放时,客户端运行的自适应流播算法会根据网络和其他因素选择流播的最佳码率,同时服务器端的算法决定了如何以最佳方式将数据包发送给客户端。

继续深入看看这些组件吧,首先从会员设备上运行的算法开始。

自适应流播 (Adaptive Streaming)

会员观看流播内容所用设备上运行的代码是保证优秀 QoE 的关键。Netflix 的服务可从数千种设备上访问,从手机到平板,再到游戏机、电脑,以及智能电视,不一而足。大部分设备都可支持由 Netflix 开发的自适应流播算法,该算法可决定播放全程的不同时段该选择怎样的视频码率。这些有关码率的决策决定了屏幕上播放的视频质量,同时也直接影响着设备本地的缓冲多久会耗尽。当缓冲耗尽后,播放会被打断,需要“重新缓冲”。

我们对播放体验极为重视。我们希望会员能以极高质量立即开始播放,同时我们也希望能彻底避免播放中断等情况。但实际上,网络质量或“最后一公里”问题让这一目标几乎无法实现。但我们可以设计一种能快速检测网络吞吐率变化的算法,并实时做出适当的调整,以便尽可能提供最优秀的流播体验。

我们要为全球数百万会员提供服务,考虑到网络、网络环境,以及设备本身各种各样的问题和局限,这就很有必要通过科学方法优化现有算法或开发新的算法,适应这五花八门的情况。负责自适应流播算法的工程师通过实验开发并持续完善着算法和配置,力争为 Netflix 提供的每次流播服务实现最佳观赏体验。

内容交付

Netflix 的内容交付网络 (CDN) 名为Open Connect,该网络提供了流播过程中所需的视频和音频文件。从较高层面来看,Open Connect 可供我们将内容放置在距离会员尽可能近的位置,借此实现最大化交付效率和 QoE。Open Connect 团队与各大互联网服务供应商 (ISP) 合作,将提供 Netflix 内容的服务器放置在 ISP 网络内部,实现了 Netflix 流量的“本地化”。Open Connect 还与 ISP 在网络互联位置,例如全球的互联网交换中心建立了对端关系。有关 Open Connect 工作原理的详细信息,请参阅这篇博客文章

Open Connect 的工程师会对提供 Netflix 内容的服务器软硬件进行优化,这样即可针对视频流播这种用途的具体特点对服务器配置、软件,以及算法进行调优。例如,缓存算法可根据不同服务器所服务的会员有可能观看哪些内容,来决定要将哪些内容放置在遍布全球的哪些服务器上。这些工程师还开发了网络传输算法,可以决定数据包如何从服务器跨越互联网到达会员设备。有关这一领域的详细介绍可参阅这篇博客文章。

与客户端的自适应流播类似,通过实验我们还可以对 Open Connect 自身进行快速迭代和创新,借此针对内容的交付开发新的架构和算法。考虑到整个系统的本质,这方面还有更多复杂的问题有待解决,某些情况下甚至无法进行受控的随机化实验,因此我们需要调整实验方法,获得所需的因果关系。下文还将进一步介绍这个问题。

编码

对于内容质量的感觉也是流播服务中很重要的因素,并会对屏幕上最终看到的内容有直接影响。可感知的质量取决于编码过程,在这一过程中,需要将电影或剧集相应的原始“源”文件压缩为更小的文件,或使用不同码率进行“编码”。Netflix 在编码算法方面进行了大量创新,我们的编码团队通过一些重大的改进,可以在特定网络带宽下提供更出色的感知质量,或使用更低码率实现相同的质量级别。最近这些工程师正在忙着针对低带宽流播实现更高效的编码

编码方面的变化对我们的实验造成了另一个挑战,因为这些变化通常只针对特定电影或剧集。例如,编码方面的同一个变化可能会对动画类内容和动作片产生不同的影响。此外我们还必须确保编码方面的变化能够与客户端应用,以及设备在流播 Netflix 内容时使用的解码器兼容。

在推出新的编码算法前,这也意味着需要对 Netflix 的所有内容重新编码,编码团队通过实验验证了这些变化,以及会对 QoE 产生的影响。针对此类目的设计实验的过程很困难,因为需要考虑内容之间的影响,并且需要用足够多样化的内容和设备进行验证。

通过实验改善 QoE

接着一起来看看为了改善 QoE,Netflix 不同部门所执行过的实验类型。总的来说,为了改善 QoE,以及理解 QoE 对会员行为的影响,我们进行了三种类型的实验。

系统实验

系统实验目的在于确定新算法,对原有算法的改动,或者配置参数的变化是否能对 QoE 指标产生预期影响。例如,我们有针对视频质量、重缓冲操作、播放延迟(点击播放以及实际开始播放之间的时间延迟)、播放错误等情况的指标,这些实验的假设通常都是为了改善上述一个或多个指标。

系统实验通常以随机化 A/B 测试的方式进行。每次系统测试可能持续数小时或数天,这主要取决于相关变动的具体类型,同时还需要考虑使用量和流量在每天或每周时段内的不同模式。上亿的会员规模使得我们可以相对快速地获得数百万个“样本”,进而可以快速迭代或按顺序运行多个系统实验,借此对整个系统进行优化。

从实验者的角度来说,这种快节奏的系统实验也让我们可以更方便地探索新的实验方法论。例如,我们可以测试新的控制组和治疗组分配策略,借此快速获得宝贵的经验。我们还采用了响应面分析法 (Response Surface Methodology)技术为实验数据构建统计模型,这样可以减少实现目标所需的迭代次数。

这方面的实验为我们造成了很多挑战,但同时也激励着我们的研究工作。下面举几个例子。

大部分 QoE 指标并未呈现高斯分布,因此我们所用的假设验证方法必须能够考虑到这种分布情况。也正是因此,我们的分析中会大量使用无母数统计 (Nonparametric statistical) 方法来体现统计显著性 (Statistical significance)。针对非常大量的数据集应用无母数的方法速度非常慢,因此这也是一个我们依然在积极探索的领域。

此外在这些实验中,我们通常会度量多个 QoE 指标,其中一些是相互关联的,甚至横跨了多个“治疗”措施,因此还需要考虑多重验证的问题。

类实验和因果推断

我们的大部分系统实验都是受控的随机化 A/B 测试。然而在某些情况下无法实现随机化,此时我们会转为使用其他方法,例如类实验 (Quasi-experiment) 和因果推断。

例如我们会通过类实验测试对 Open Connect 算法的改动。假设某个互联网交换中心有两台完全相同的服务器(或缓存)集群,其中一个集群为 ISP1 的用户提供服务,另一个集群为 ISP2 的用户提供服务。如果我们需要对将内容加入缓存的新算法进行测试,理想情况下需要将一个缓存集群作为控制组,另一个作为“治疗组”,借此进行 A/B 测试。然而由于到达这些群集的流量无法做到随机化(对端关系很难修改),因此 A/B 测试是不可行的。

这种情况下,我们会进行类实验,并通过因果推断技术确定这些变动的影响。这方面存在很多挑战,例如寻找一个匹配的控制集群,确定治疗和控制组之间相应的功能关系,以及对网络因素的考虑等。

消费者科学实验

系统实验和类实验可能会导致消费者科学实验

为了理解各种改动对 Netflix 会员行为所造成的影响而设计的实验,我们将其称之为消费者科学实验。通常在进行过几轮系统实验或类实验,确定了新的算法或配置方面的变化会对 QoE 指标产生预期影响后,就会进行此类实验。借此我们可以研究 QoE 指标的变化对会员行为的影响:1) 如果视频质量更高或重缓冲次数更少,或点击按钮后可以更快速播放,会员是否会观看更多 Netflix 内容;以及 2) 免费试用期结束后接下来的几个月里,会员是否会继续订阅我们的服务。

我们还可以通过研究会员行为针对不同 QoE 指标进行权衡:会员是否更喜欢牺牲视频质量换来更快速的播放(降低播放延迟),还是更喜欢哪怕等待更久一些但获得更高质量视频?

消费者科学实验通常至少需要进行一个月,这样才可以在新会员免费试用期结束后了解会员的保有数量。这些实验中存在一个很有趣的挑战:如何对有关 QoE 体验有不同感觉的会员进行有效的划分。例如,某个改动以牺牲视频质量为代价大幅降低了播放延迟,这种改动可能更受网络环境欠佳地区会员的欢迎,但已经普及高速网络连接地区的会员通常并不喜欢这样的体验。考虑到 QoE 方面的改动可能无法被会员轻易察觉,并且因为 QoE 变化导致的会员行为变化可能需要一段时间后才会显现,这个问题就显得更棘手了。

侧重实验的企业文化

最后我还想谈谈企业文化在试验中扮演的重要角色。Netflix 企业文化的核心概念在于“自由和责任”,当然也离不开满腔热情,勇于创新的出色员工(当然我们的企业文化不仅仅如此,详情可参阅Netflix 企业文化文稿)。有了一大群胸怀绝佳创意的高素质人才后,更重要的地方在于必须建立一种框架,让新的想法可以生根发芽并得到验证,这一过程中,必须使用数据,而非意见来做决策。实验,为我们提供了这样的一个框架。

培育重视实验的企业文化需要在一开始由高层提出承诺。Netflix 会以各种方式在尽可能多的各种业务领域中进行实验,努力将严谨的科学心态融入日常决策工作中。

在通过实验决定会员最终会使用到的产品和服务过程中,为了确保应用严谨的统计学结论,数据科学在这其中扮演了重要的角色。数据科学还帮助我们验证新的想法,并持续完善着 Netflix 内部各种实验的执行,例如对我们做实验的方法进行实验。数据科学家已经深入参与到我们的实验设计、执行、分析、决策过程,同时他们也在努力完善我们的实验方法论。

除了科学本身,为了执行实验并进行分析,基础架构同样重要,我们的工程团队也在致力于不断完善我们的实验平台。该平台可以让实验的不同步骤实现自动化,并能在实验的不同阶段自动生成分析报表和可视化结果。

Netflix 正在引领着网络电视领域的革命,我们正在革新全球人们观看电影和电视剧的方式。我们的数据科学家和工程师正在努力解决这个快节奏演进,并且极为有趣的大规模环境所遇到的各类问题。我们正在为全球数百万不同文化背景的人们提供着一流的影音娱乐体验,这一点更是让人深受鼓舞,满是成就感。我们还在招人,如果你有意于此,欢迎加入我们共同迈向更精彩的旅程!

作者Nirmal Govind阅读英文原文A/B Testing and Beyond: Improving the Netflix Streaming Experience with Experimentation and Data Science


感谢郭蕾对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。