Netflix如何使用机器学习来提高流媒体质量?

有个很常见问题是:“为何须要机器学习来提升流媒体质量?”
这是一个很是重要的问题,在这篇文章中,Netflix描述了视频流所面临的一些技术挑战,以及如何经过统计模型和机器学习技术来克服这些挑战。
Netflix如今在全球拥有超过11700万名会员。超过一半的成员居住在美国之外的地方,为全球观众提供高质量的流媒体体验是一项巨大的技术挑战。其中很大一部分是在全球范围内安装和维护服务器所需的工做,以及用于将内容从这些服务器流式传输到用户设备的算法。随着Netflix迅速扩展到具备不一样观看行为的观众,在具备各类功能的网络和设备上运行,流媒体视频的“一刀切”解决方案变得愈来愈不理想。算法

举个例子:缓存

移动设备上的查看/浏览行为与智能电视上的不一样
蜂窝网络可能比固定宽带网络更不稳定
某些市场中的网络可能会遇到更高程度的拥塞
因为硬件之间的差别,不一样的设备组具备不一样的互联网链接能力和保真度。服务器

Netflix须要针对这些不一样的,常常波动的条件调整方法,以便为全部会员提供高质量的体验。在Netflix会实时观察网络和设备情况以及可以为每一个会话提供的用户体验(例如视频质量),使Netflix可以在此领域利用统计建模和机器学习。如下是咱们在设备方面面临的一些技术挑战。网络

网络质量特性和预测
网络质量是比较难以预测的。虽然网络支持的平均带宽和返回时间是众所周知的网络质量指标,但其余特性(如稳定性和可预测性)在视频流方面有很大差别。对网络质量进行更丰富的特性分析将有助于分析网络(用于定位/分析产品改进),肯定初始视频质量/或在整个回放过程当中调整视频质量(更多内容见下文)。机器学习

如下是在真实观看会话期间测量的网络吞吐量的一些示例。能够看到它们很是嘈杂而且在很大范围内波动。在最近15分钟的数据中,能够预测将来15分钟的吞吐量会是什么样的。咱们如何整合有关网络和设备的长期历史信息?咱们能够从服务器提供哪一种数据,以让设备可以以最佳方式进行调整?即便咱们没法准确预测网络丢失什么时候会发生(突发状况众多),咱们是否至少能够特定分析吞吐量的分布咱们但愿看到给定的历史数据?性能

因为Netflix正在大规模地观察这些数据,所以有可能创建更复杂的模型,将时间模式识别与各类上下文指标相结合,以更准确地预测网络质量。学习

如何判断一个网络预测的APP是否有用,其中一个重要标准就是他可以帮助咱们在播放期间调整视频质量,下文会具体讲述。优化

播放期间的视频质量自适应
电影和电视节目一般以不一样的视频质量编码来支持不一样的网络和设备功能。 自适应流媒体算法会根据当前网络和设备条件来调整在整个回放过程当中流式传输的视频质量。下图说明了视频质量自适应的设置。 咱们是否能够利用数据来肯定优化体验质量的视频质量?编码

其实能够经过多种方式测量用户体验的质量,包括等待视频播放所花费的初始时间,用户体验的总体视频质量,播放暂停以将更多视频加载到缓冲区的次数(“rebuffer”) ,以及播放期间可察觉的质量波动量。翻译

上面是视频质量适应问题的插图。 视频以不一样的质量编码(在这种状况下有3种品质:绿色高,黄色中等,红色低)。 视频的每一个质量版本被划分为固定持续时间的块(灰色框)。 决定为下载的每一个块选择哪一种质量。
这些指标能够相互折衷:咱们能够选择积极主动并传输高质量的视频,但会增长rebuffer的风险。 或者咱们能够选择预先下载更多视频,并以增长等待时间为代价来下降rebuffer风险。 用户决策的反馈信号通常是延迟的同时也会比较少。 例如,积极切换到更高质量可能不会当即产生影响,但可能逐渐耗尽缓冲区并最终致使某些状况下的rebuffer事件。 当学习最优控制算法时,这种“信用分配”问题是众所周知的挑战,而机器学习技术具备解决这些问题的巨大潜力。

预测性缓存
统计模型能够改善流媒体传输体验的另外一个方式是预测用户将播放的内容,以便在用户点击播放以前将所有或者部份内容缓存在设备上,从而使视频可以更快地启动或以更高的质量启动。 例如,一直在观看特定剧集的用户极可能会播放下一个未观看过的剧集。 经过将他们的观看历史的各个方面与最近的用户交互和其余上下文变量相结合,能够将其制定为监督学习模型,经过这个学习样本,咱们但愿最大可能性模拟用户缓存可能性以及他最后可能在哪一个内容节点上结束观看,同时注意缓存以及带宽的资源约束。 Netflix已经看到在使用预测缓存模型之后用户等待视频开始所花费的时间大幅减小。

设备异常检测
Netflix可在超过一千种不一样类型的设备上运行,从笔记本电脑到平板电脑,从智能电视到手机。新设备不断进入这个生态系统,现有设备一般会更新其固件或与Netflix应用程序中的更改进行交互。这些一般没有障碍可是在很容易引发用户体验问题 - 例如,应用程序将没法正常启动,或者播放的视频质量被降级。此外,随着时间的推移,设备质量也会逐渐增长。例如,连续的UI改版可能会逐步下降特定设备上的性能。

检测这些变化是一个极具挑战同时劳动密集型的工做。Alerting frameworks 能够帮咱们去抓取或者发现一些潜在问题,可是通常状况下这些潜在问题却很难被界定为是个特别实际须要去解决的问题。“liberal”触发器可能引起不少误报,致使团队进行大量没必要要的手动调查,可是很是严格的触发可能会错过真正的问题。可是事实上咱们能够将过往触发警报的历史,以及对应问题梳理出来。而后咱们可使用它来训练一个模型,这个模型能够用来预测在必定测量条件形成事故的可能性。

即使咱们确信在观察的状况必定是个bug存在,但肯定根本缘由一般也很困难。发生这个事故的缘由是是由于特定ISP仍是特定地区的网络质量波动?是由于内部A B test?仍是由于设备制造商发布的固件更新?若是能够经过统计建模还能够经过控制各类协变量来帮助咱们肯定根本缘由。

从Netflix成功实践来看,经过采用预测建模来作设备异常检测,咱们已经看到总体警报量大幅减小,同时保持可接受的低错误率,极大提升了咱们团队的效率。

统计建模和机器学习方法能够大幅度改善现有技术水平,但依然会有不少困难要去客服:

数据量巨大(全球超过11700万成员)
数据是高维的,而且很难为特定问题手工制做最小的信息变量集
数据中结构异常丰富,由于自己产品带来复杂状况(例如偏好,设备硬件水平)
为了在在日益多样化的网络和设备条件下传输视频,解决这些问题将是Netflix的战略核心。

本篇文章翻译自【Netflix Techblog】,想要获取更多产品干货、技术干货,记得关注网易云信博客。

相关文章
相关标签/搜索