Netflix:如何通过机器学习提高流媒体质量?

简介: 如何通过机器学习来提升用户观看视频的体验?Netflix撰文,描述了通过网络质量预测,自适应码率选择,预测缓存,设备异常检测等方向进行的探索。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

如何通过机器学习来提升用户观看视频的体验?Netflix撰文,描述了通过网络质量预测,自适应码率选择,预测缓存,设备异常检测等方向进行的探索。LiveVideoStack对文章进行了摘译。


文 / Chaitanya Ekanadham

译 / Dumpling

审校 / Alex Chow


有一个我们通常会被问到的问题是:“为什么我们需要用机器学习来提高流媒体质量?”这的确是一个非常重要的问题,尤其是考虑到最近围绕机器学习和人工智能的大肆宣传,可能会导致很多“通过解决方案来寻找问题”的案例。在本博文中,我们描述了Netflix视频流媒体技术面临的一些技术挑战,以及如何用统计模型和机器学习技术应对这些挑战。


Netflix向全球超过1.17亿的会员提供视频流媒体服务。超过一半的会员居住在美国之外,这些地区对于Netflix的发展有很大的商机。为全球观众提供高质量的流媒体体验是一项巨大的技术挑战,其中很大一部分工程方面的工作是要在全球范围内部署和维护服务器,以及提供高效的传输算法用于将视频内容从这些服务器分发到用户设备。随着我们的服务迅速向具有多样观看行为的观众群扩展,运行在复杂多变的网络和性能差异显著的设备上时,针对流媒体视频采用“一刀切”式的解决方案就变得越来越不理想了。例如:


  • 移动设备上的观看/浏览行为与智能电视不同

  • 蜂窝网络可能比固定宽带网络更具波动性和不稳定性

  • 在某些市场区域,网络可能会遇到更高程度的拥塞

  • 不同的设备类别由于硬件差异而具有不同的互联网连接能力和稳定性


我们需要针对这些不同的、经常波动的情况调整我们的方法,为会员提供高质量的体验,同时也在新市场中拓展业务。在Netflix,我们可以观测到每个会话的网络和设备的状态,以及用户体验(例如视频画面质量)等方面的信息,基于这些统计信息,我们可以将统计建模和机器学习用于这个领域。在之前的一篇博客中(https://medium.com/netflix-techblog/how-data-science-helps-power-worldwide-delivery-of-netflix-content-bac55800f9a7),我们描述了如何在全球服务器分发的内容上使用数据科学,在这篇文章中,我们描述了在终端面临的一些技术挑战。


网络质量特征描述和预测


众所周知,网络质量是很难表征和预测的。尽管有一些常用的指标,例如平均带宽(average bandwidth)和往返时间(RTT)等可以用于描述网络质量。但是在流媒体领域,还有一些其他很重要且不一样的特性,例如 网络稳定性和可预测性等。收集更加丰富的网络质量特征对于分析网络状况(用于确定优化目标/分析产品改进幅度)、确定播放的初始视频质量、以及在播放期间动态调整视频质量,被证明是十分有用的。


下面几个例子是用户真实观看过程中测量到的网络吞吐量(throughput)数据。可以看到它们很嘈杂,在一个比较大的范围内波动。如果已知过去15分钟的数据,我们能否预测接下来的15分钟内的吞吐量?应该如何利用网络状态和设备性能的长期历史信息?服务器应该提供什么类型的统计数据,才能使设备做最优自适应调整?即使无法准确预测网络掉线的发生时间(这可能是各种各样的原因,例如,微波炉开启时或在经过隧道的车上播放时),给定历史数据,我们能否至少可以描述出所期望看到的网络吞吐分布?


我们正在大规模地观察这些播放记录,因此有机会生成更复杂的模型,将时域模式识别与各种环境指标相结合,从而能更准确地预测网络质量。


640?wx_fmt=png640?wx_fmt=png

实际观看时测量的网络吞吐示例


网络预测的一个有效应用是在播放过程中根据网络条件动态自适应视频质量,我们将在下一节中对此进行介绍。


播放期间的视频画质自适应


为了支持不同的网络条件和设备功能,Netflix的电影和综艺节目通常被编码压缩为不同的视频画质(quality)。自适应流媒体传输算法负责在整个播放期间根据当前网络状态和设备状况进行画质自适应调整,从而选择最佳的视频流(请参见:http://yuba.stanford.edu/~huangty/sigc040-huang.pdf,我们同事在这方面的一个研究案例)。下图描述了一个视频质量自适应的示例。我们是否可以利用数据驱动的方式来确定最佳的视频质量从而优化体验质量(quality of experience)?

体验质量可以通过几种方式来综合衡量:


  • 播放的启动延迟。

  • 播放过程中的整体视频画面质量(清晰度)。

  • 为了加载更多视频到缓冲区而导致的播放暂停的次数(简称“rebuffer”)。

  • 以及播放期间用户感知的视频画质变化次数。

640?wx_fmt=png

视频质量自适应问题的说明。将视频编码成不同画质级别(此处为3种画质:绿代表高,黄代表中,红代表低)。每个画质级别的视频被划分为固定时间长度的分片(由灰色小方块代表)。下载每个分片之前,都要对应该下载哪个画质级别的分片做个决策。


对于这些质量体验指标,我们需要仔细权衡取舍:可以激进的选择非常高画质级别的视频,但会增加重新缓冲的风险,或者我们可以选择预先加载更多视频,并以增加等待时间为代价降低重新缓冲的风险。对于某个决策,其反馈信号一般有延迟而且比较稀疏。例如,向更高质量的激进切换可能不会立即产生不良影响,但可能会逐渐耗尽缓冲区,并最终在某些情况下导致重新缓冲。在学习最优控制算法时,这种“信用分配”问题是一个众所周知的挑战,而机器学习技术(如强化学习方面的最新进展)有很大的潜力能够解决这些问题。


预测缓存(Predictive caching)


在另一个领域,统计模型也可以被用于改善流媒体传输的体验:预测用户即将播放的内容,从而在设备上提前缓存(或部分缓存),使视频播放能以更快的速度或更高的质量启动。例如我们可以利用这样一个事实,即观看特定连续剧(series)的用户很可能会播放下一个未观看的剧集。通过把他们的详细观看历史与最近的用户交互、上下文变量相结合,我们可以把这个过程抽象成一个有监督的学习问题,从而最大化缓存命中用户最终实际播放内容的可能性,同时也会考虑到缓存大小和可用带宽方面的资源约束。我们已经看到在使用预测缓存模型时,等待视频启动的时间大大减少了。


设备异常检测


Netflix在千余种不同类型的设备上运行,从笔记本电脑到平板电脑、智能电视、手机到流媒体播放器。新设备不断加入这个生态系统,而现有设备经常会更新固件并与Netflix应用程序的更新交叠。这些更新通常不会引起什么问题,但在规模非常大的条件下,用户体验出现问题的情况就很多了。例如,应用程序无法正常启动,或者播放体验会以某种方式受到限制或降级。另外,随着时间的推移,设备质量的变化趋势会逐渐累积。例如,用户界面连续的链式变更可能会缓慢降低特定设备的性能,而对于其中任何单独更改,问题并不会立即有显著影响。 


检测这些变化是一个很有挑战,十分依赖人工的过程。报警系统是揭示潜在问题的有用工具,但通常很难确定将某些事情鉴定为有问题的正确标准。一个宽松的触发器最终会带来太多的误报,致使我们的设备可靠性团队进行大量不必要的人工调查,而一个非常严格的触发器又可能会漏掉真正的问题。幸运的是,我们有触发警报的历史,以及对于每个问题由人工做出的实际上是否真实可处理的判断结论,那么我们就可以用它来训练一个模型,来预测给定的一组实测环境条件最终会演化为真正的问题的可能性。


即使我们确信我们正在观察一个真正的问题,确定根本原因也常常是一个挑战。由特定接入商(ISP)或特定区域网络的质量波动导致的?或是与内部一个A / B测试或已上线的更改有关?设备制造商发布了固件更新?特定设备组或组中的某个特定机型有变更?统计建模也可以帮助我们通过控制各种协变量来确定根本原因。


通过采用预测建模来确定设备可靠性问题的优先级,我们已经看到整体警报量的大幅下降,同时保持了可接受的低漏报率,我们预计这将推动Netflix设备可靠性团队大幅提高效率。 


上述问题是我们认为统计建模和机器学习方法可以解决相关技术挑战的例子,并且可以推动现有技术水平的提升,原因如下:


  • 我们拥有充足的数据(全球超过1.17亿成员)

  • 数据是高维的,并且很难为一个特定问题人工筛选出一个最小变量集合

  • 由于基础现象的复杂性(例如,聚集性的网络使用,用户偏好,设备硬件能力),数据具有丰富的内在结构 


解决这些问题是Netflix战略的核心,因为我们需要在日益多样化的网络和设备条件下对视频进行流式分发。


LiveVideoStack Meet | 上海

多媒体开发新趋势


继3月31日北京多媒体开发沙龙,LiveVideoStack走进上海,希望通过“多媒体开发新趋势”系列沙龙,为大家展现新技术在音视频领域的探索与实践,以及新兴应用场景和传统行业的最新、最佳实践。


伴随Codec的百花争艳,WebRTC1.0定版,AI、区块链技术的快速发展,我们看到了多媒体与更多新技术的融合与实践。4月21日,我们邀请到腾讯、优酷、触宝科技、苏宁PP视频云、三体云、相芯科技的6位技术大咖一同分享多媒体开发的技术实践与未来展望。


讲师与话题:

  •  吴威麒 触宝科技音频技术专家 《实时语音通信的音频后处理技术》 

  •  曾小伟 苏宁文创技术副总监 《如何使用机器学习算法优化分发链路》 

  •  沈轲轶 腾讯天天P图iOS开发组长 《iOS实时相机的GPU实践》 

  •  崔文秀 三体云产品副总裁 《实时音视频技术赋能传统行业》

  •  蔡锐涛 相芯科技图形引擎负责人  《Animoji动态表情的技术实现》 



WebRTCon 2018


经历了起跑、 热炒、失落的7年长跑后,伴随1.0版定稿,获得iOS端支持,WebRTC具备了打通主流生态系统和端的能力,2018年也将是WebRTC落地的最好时机。由LiveVideoStack音视频技术社区出品,WebRTCon 2018将于5月在上海举行,这是一次对过去几年WebRTC技术实践与应用落地的总结。扫描下图二维码了解详情。


640?wx_fmt=jpeg


点击 [阅读原文了解更多相关活动信息。

相关文章
|
15天前
|
机器学习/深度学习 传感器 数据采集
机器学习赋能制造业:预测性维护、质量控制和智能物流优化
制造业借助机器学习和深度学习提升效率,通过预测性维护避免设备故障,利用质量控制模型检测产品缺陷,及运用智能物流优化降低运输成本。示例代码包括基于LSTM的设备故障预测和随机森林分类器的质量控制模型。这些技术革新生产流程,提高效率,降低成本,增强企业竞争力。
|
1天前
|
机器学习/深度学习 算法
【机器学习】比较朴素贝叶斯算法与逻辑回归算法
【5月更文挑战第10天】【机器学习】比较朴素贝叶斯算法与逻辑回归算法
|
1天前
|
机器学习/深度学习 数据采集 自然语言处理
经典机器学习算法——Pagerank算法(二)
PageRank 算法由 Google 创始人 Larry Page 在斯坦福读大学时提出,又称 PR——佩奇排名。主要针对网页进行排名,计算网站的重要性,优化搜索引擎的搜索结果。PR 值是表示其重要性的因子
|
1天前
|
机器学习/深度学习 数据采集 算法
经典机器学习算法——Pagerank算法(一)
PageRank 算法由 Google 创始人 Larry Page 在斯坦福读大学时提出,又称 PR——佩奇排名。主要针对网页进行排名,计算网站的重要性,优化搜索引擎的搜索结果。PR 值是表示其重要性的因子
经典机器学习算法——Pagerank算法(一)
|
1天前
|
机器学习/深度学习 人工智能 算法
高性价比发文典范——101种机器学习算法组合革新骨肉瘤预后模型
随着高通量测序技术的飞速发展和多组学分析的广泛应用,科研人员在探索生物学奥秘时经常遇到一个令人又爱又恼的问题:如何从浩如烟海的数据中挖掘出潜在的疾病关联靶点?又如何构建一个全面而有效的诊断或预后模型?只有通过优雅的数据挖掘、精致的结果展示、深入的讨论分析,并且辅以充分的湿实验验证,我们才能锻造出一篇兼具深度与广度的“干湿结合”佳作。
12 0
高性价比发文典范——101种机器学习算法组合革新骨肉瘤预后模型
|
3天前
|
机器学习/深度学习 存储 人工智能
【人工智能】机器学习算法综述及常见算法详解
【人工智能】机器学习算法综述及常见算法详解
|
5天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机(SVM)算法
【5月更文挑战第6天】在数据科学和人工智能的广阔天地中,支持向量机(SVM)以其强大的分类能力与理论深度成为机器学习领域中的一个闪亮的星。本文将深入探讨SVM的核心原理、关键特性以及实际应用案例,为读者提供一个清晰的视角来理解这一高级算法,并展示如何利用SVM解决实际问题。
29 7
|
6天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机算法
【5月更文挑战第6天】 在数据科学和人工智能领域,支持向量机(SVM)是一种强大的监督学习模型,它凭借其出色的分类能力在众多机器学习任务中占据重要地位。本文旨在深入剖析支持向量机的工作原理,探讨其在高维数据处理中的优势以及面对大规模数据集时的应对策略。通过对核技巧、软间隔以及优化问题的讨论,我们将揭示SVM如何优雅地处理线性不可分问题,并保持模型的泛化性能。
|
9天前
|
机器学习/深度学习 自然语言处理 算法
机器学习算法原理与应用:深入探索与实战
【5月更文挑战第2天】本文深入探讨机器学习算法原理,包括监督学习(如线性回归、SVM、神经网络)、非监督学习(聚类、PCA)和强化学习。通过案例展示了机器学习在图像识别(CNN)、自然语言处理(RNN/LSTM)和推荐系统(协同过滤)的应用。随着技术发展,机器学习正广泛影响各领域,但也带来隐私和算法偏见问题,需关注解决。
|
11天前
|
机器学习/深度学习 运维 算法
【Python机器学习专栏】异常检测算法在Python中的实践
【4月更文挑战第30天】本文介绍了异常检测的重要性和在不同领域的应用,如欺诈检测和网络安全。文章概述了四种常见异常检测算法:基于统计、距离、密度和模型的方法。在Python实践中,使用scikit-learn库展示了如何实现这些算法,包括正态分布拟合、K-means聚类、局部异常因子(LOF)和孤立森林(Isolation Forest)。通过计算概率密度、距离、LOF值和数据点的平均路径长度来识别异常值。