首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Netflix:用机器学习提升流媒体质量

来源:Medium

编译:Bing

编者按:看视频常常卡顿?想收看感人画质怎奈网络不给力?Netflix的工程师们就用当下大热的机器学习技术改善这一问题,让用户有着更好的观影体验。以下是论智对Netflix技术博客的编译。

经常会有人问我们:“为什么我们需要用机器学习来提升流媒体的质量?”这是个非常重要的问题,尤其是在人人都在谈论机器学习和AI的今天。在这篇文章中,我们会讲述Netflix在处理流媒体视频中遇到的问题,以及统计模型和机器学习技术是如何帮助克服这些挑战的。

Netflix为全世界1.17亿用户提供流媒体服务,其中一半以上的用户在美国境外,所以这是推广Netflix的重要机遇。为全球观众提供高质量流媒体服务是一个严峻的技术挑战,其中很大一部分是在全球范围内安装和维护世界范围的服务器以及从服务器传输流媒体到用户设备的算法。由于我们的用户有不同的观影行为,网络环境和设备也不尽相同,传统针对流媒体视频的“一刀切”解决方案变得越来越不理想。例如:

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

蜂窝网络没有固定宽带网络稳定

一些市场中的网络可能会更拥堵

硬件差异也会导致不同的设备网络连接能力的不同

我们要针对不同的情况调整我们的方法,为现有用户提供高质量体验,并逐步拓展新市场。在Netflix,我们观察了网络和设备状况以及在每个回话我们能为用户提供的体验(例如视频质量)方面,从而能让我们在此空间中利用统计建模和机器学习。

网络质量特点和预测

网络质量较难描述和预测。虽然网络支持的平均带宽和往返时间是衡量网络质量的指标,但在视频流方面,其他的特征会大有不同,例如稳定性和可预测性上就有很大的不同。网络质量的特点越丰富,在分析网络、确定初始视频质量和调整回放视频质量时是有用的。

以下是在实际观看绘画期间测量的网络吞吐量示例,可以看到,它们非常嘈杂,并且波动的范围很大。如果给出最近15分钟的数据,我们能否预测接下来15分钟的吞吐量呢?我们该如何整合有关网络和设备的长期历史信息?我们能从服务器中提取什么样的数据,才能让设备达到最佳适应?即使我们无法准确预测什么时候网络会丢失(这可能有多种多样的原因,例如开启了微波炉,或者过隧道),我们能否根据历史数据描绘出吞吐量的分布情况?

由于我们能大规模地观察这些数据,因此就有机会建立更复杂的模型,将事态模式识别与各种上下文指示符相结合,以更准确地预测网络质量。

实际观看会话时网络吞吐量

网络预测的一个有用的应用是改善回放视频的质量,接下来就是对这一过程的细节讲解。

在回放时提高视频质量

电影和电视剧经常被编成不同的视频质量,以支持不同的网络情况和设备。自适应流媒体算法根据当前网络和设备条件调整应该在回放时播放哪种视频质量。下图说明了食品质量调整的设置。我们能否利用数据来确定视频质量?用户体验质量可以通过多种方法评估,包括在开始时等待视频播放的时间、用户观看视频的总体体验、暂停以进行缓冲的次数以及回访期间可感觉到的质量变化。

视频质量调整问题说明。视频被编码成三种不同质量:绿色表示高级,黄色表示中级,红色表示低级。每种版本都以固定时间段分开

这些评估标准不能兼得:我们可以冒险提供质量非常高的视频,但是要面临经常缓冲的风险。或者我们可以提前下载更多视频,减少缓冲的风险,但是要增加等待时间。在一定决策下,反馈信号会有延迟并且稀疏。例如,转换成高质量视频也许不会立刻产生影响,但可能会逐渐耗尽缓冲区,最终在某些情况下导致拒绝事件(rebuffer event)。在学习最优控制算法时,这种“信用分配”问题是一个常见的挑战,机器学习技术很有可能解决这些问题。

预测性缓存(predictive caching)

统计模型能改善流媒体质量的另一个领域是预测用户即将播放什么,从而提前将视频的一部分缓存到设备上,这样视频就会打开得更快,质量也更高。例如,某用户一直在看特定的剧集,那么他很有可能会播放接下来的一集,通过将他们的播放历史和与其他用户的互动一集上下文变量结合起来,可以将其看作是一个监督学习问题,其中我们想将模型缓存用户实际最后播放的视频的可能性最大化,同时遵守缓存大小和可用带宽等资源使用情况的要求。部署预测缓存模型后,等待视频开始的时间大大减少了。

设备异常检测

Netflix支持数千种不同类型的设备,从笔记本电脑到平板电脑、智能电视、手机再到流媒体播放器。新的设备正不断地进入这个生态系统,同时现有设备还会对其硬件进行更新,从而改变Netflix的交互方式。通常这没什么问题,但是如此大规模的用户覆盖也会影响用户体验。例如,有时应用程序无法正常启动,或者回放会以某种方式被禁止或者降级。

检测这些变化比较困难,同时是一个手动强化的过程。警报框架对解决潜在问题非常有用,但是它通常很难有一个定义真正问题的正确标准。一个“自由”的触发器会引来太多误报,会让设备团队进行大量不必要的手动调查,而一个非常严格的触发器可能会漏掉阵中的问题。幸运的是,我们曾由人类决定这个问题是否真实可行,然后触发报警器。我们可以用它来训练一个可以预测某种情况是否是真正问题的可能性。

即使我们确信正在观察一个有问题的问题,但要找出根本原因还是很难的。这是因为特定ISP或特定区域的网络质量波动?还是因为内部A/B实验或已推出的更改?以及是设备制造商发布的固件更新?甚至是特定设备群组或群组中的模型改变?统计模型也可以通过控制各种协变量来确定根本原因。

通过部署预测性模型来对设备可靠性排序,我们已经看到整体警报量大幅减少,同时保持在可接受的漏报率,这一技术将推动Netflix设备可靠性团队大幅提高工作效率。

以上问题就是我们认为统计建模和机器学习方法可以有效改进现有技术难题的示例:

我们有足够数据(全球1.17亿用户)

数据是高维的,并且很难为特定问题手工制作最小信息变量集合

由于复杂的潜在现象(如集体网络使用、用户偏好、设备硬件能力),数据中存在复杂的固有结构。

原文地址:medium.com/netflix-techblog/using-machine-learning-to-improve-streaming-quality-at-netflix-9651263ef09f

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180406A08WAB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券