优酷智能档的三个技术挑战和解法

阅读数:1963 2019 年 8 月 12 日 11:46

优酷智能档的三个技术挑战和解法

在你追《长安十二时辰》时,机器学习和大数据也没闲着,一直在后台帮你选“档位”,是标清、高清还是蓝光?机器学习会根据你的网络偏好、信号强度等智能地做选择,让你不在感觉到视频卡顿。这背后的技术原理是什么?

为什么会产生卡顿?

理论上,和人饿了就没力气一样,产生卡顿和缓冲的直接原因是视频数据不足。当播放器进入“饥饿”状态,就需要等待足够多的视频数据来恢复播放。但在真实场景下,网络信号质量变差、视频码率峰值过高、网络带宽竞争等,都会导致视频缓冲。

在优酷,我们有多个技术小组都在针对各种播放场景进行技术优化。这其中就有“智能档”,它融合大数据分析、AI 机器学习等能力,通过动态化地播放与网络环境相匹配的最佳清晰度,来提升视频流畅度和观看体验。

智能档的技术原理

智能档的技术原理并不复杂,就是通过将不同码率、分辨率的视频文件,切分成 5-10s 的视频片段,并由算法实时动态决策适合播放的文件分辨率,通过动态的降低、升高观看视频的清晰度和码率,以适应复杂多变的外部网络环境,避免可能发生的视频缓冲。

优酷智能档的三个技术挑战和解法

难点是,如何将理论付诸实践,让用户获得丝滑顺畅的观看体验。

目前,主流的自适应播放协议以苹果公司的 HLS(2009 年起草)、MPEG-DASH 协议(2010 年起草)以及近两年推出的 CMAF 协议为主。优酷智能档在起步阶段,结合业务需求与平台特性,选择以 HLS 协议为基础协议进行自定制的扩展和平台实现。

优酷智能档的三个技术挑战和解法

作为一个有着近 20 年的成熟业界应用协议,智能档的算法层面也有着非常丰富成熟的学术积累,使用“Adaptive Streaming”作为关键字,在 Google Scholar 搜索引擎检索,约有 100 万左右的论文结果。这些研究成果,也基本奠定了优酷智能档的算法框架和理论依据,并为前期的快速迭代上线提供了非常大的助力。

随着智能档的产品化以及迭代加速,即使站在巨人的肩膀,我们也很快就遇到新挑战。

挑战一、高清和流畅的平衡点很难权衡

在学术界,高清与流畅的平衡往往是被转化为一个目标函数的优化过程,通过引入一个 QoE(Quality of Experience) 公式,将高清晰度的观看时长、卡顿次数、不同清晰度的切换频次等进行算法拟合,使用加权计算后的结果作为衡量算法表现的依据。

通过观察以下公式的计算因子,我们可以很容易地发现,计算结果其实与视频观看时长正相关:观看视频时间越长,得分越高,而卡顿、清晰度切换等负面行为的惩罚机制会被弱化。

优酷智能档的三个技术挑战和解法

而 QoE 类的计算公式带来的另一个问题是,它作为一个复合评分机制,有较多的变量因素参与到计算中,因此线上 QoE 监控数据的波动变化,除了可以给出“整体的播放体验在变化”外,几乎没有其它任何信息可以提供给技术进行进一步的问题分析和优化。

技术解法:

针对上述两个问题,我们将 QoE 公式进行了时间维度的归一化调整,并建立了一系列中间技术观测指标,用来进行线上体验的监控度量、线下算法的优化。

为了更快发现问题、更贴近用户使用场景,我们分别针对升降档的频次、清晰度的变化趋势、不同清晰度的缓冲频次、观看时长等,建立了完善的中间度量指标,来准确全面地观测智能档的真实表现。

优酷智能档的三个技术挑战和解法

挑战二、线下算法训练与线上实际效果的差距较大

目前,业界主流的算法以 MPC 极其衍生算法为主。MPC 是一个典型的工业领域的控制算法,尤其合适在复杂多变的环境中进行自我矫正,来执行特定的任务。如路径跟随控制、自适应导航算法等,在工业界取得了非常大的成功。在智能档算法中,典型的 MPC 算法通过将带宽、视频码率、缓冲时长等因素作为模型输入,以决策选择最佳播放策略。

优酷智能档的三个技术挑战和解法

在摩尔定律的加持下,计算机算力的指数级提升以及 GPU 并行计算模型的成熟等,将深度学习领域推向了新的巅峰,也带来了爆炸式的应用场景增长。

在优酷,我们也积极尝试基于深度学习、线性回归等不同方向的控制算法。其中,在深度学习算法 Pensieve 的基础上的改良算法,已经开始进入了测试阶段。

优酷智能档的三个技术挑战和解法

无论是 MPC 算法还是机器学习算法,都需要 QoE 公式作为优化的目标函数,其算法内核都需要一组超参来对输入的特征变量进行动态决策。而模型的训练优化,离不开高质量的数据积累。

数据对模型表现的重要性,对于从事机器学习相关领域研究的读者来说是不言而喻的。对于不熟悉的读者,我们可以将数据与模型的关系类比为“课本与学生”的关系,当课本中的知识错误或者脱离了实际的应用场景,那么通过学习课本而获取知识的学生,也必然在实际的环境中处处碰壁。

例如,使用 Pensieve 算法依赖的公开网络数据集训练出来的模型,在我们实际的应用中,尽管在训练阶段取得了不错的结果,但是上线后的泛化能力较差,导致播放体验差强人意。 因此,我们正在基于优酷海量用户行为数据,建立与完善一套高质量的网络模型数据集,来持续优化算法模型,提升用户播放体验。

技术解法:

针对模型算法的可解释性较差,严重依赖高质量数据训练的弊端,我们自主研发了基于规则、Buffer、MPC 等不同策略的复合模型算法,并结合在流媒体播放领域积累多年的核心技术积累,在实际应用中取得了非常好的成果,其中高清视频播放时长占比较业界算法有 5%-10% 左右提升,卡顿次数下降 10%-20% 左右。

挑战三、实际的用户体验需要更“智能”

任何算法策略,既需要数据喂养,以实现迭代优化,更要符合现实场景需求。智能档上线初期,我们常听到用户反馈说智能档“很傻”,或者觉得“莫名其妙”。通过对用户反馈场景的复现、日志分析排查等,我们更加意识到,智能档的策略绝不能仅停留在算法层面的”选择最优解“上。

例如,由于典型的智能档算法在优化目标函数时,总是倾向于避免缓冲、减少切换频次等来获取更高的 QoE 得分,而逐渐变得”功利“起来:它更倾向于使用一个较低的清晰度开始播放,在网络质量不太理想的场景下,更不愿意作出”乐观的“尝试,避免因为错误的判断而导致得分变低。 这就会让实际的播放体验变得较差,用户自然认为算法不够智能,因为“我的网速明明可以播 1080P,为什么要总是给我放高清”,或者“清晰度总是一会儿变模糊,一会儿变清晰”。

这些“不智能”的表现,主要是因为传统算法往往是在实验环境下构建,并且进行了问题的抽象和简化,使得通过 QoE 度量的用户体验,略显单薄。

从真实用户体验出发,我们将智能档的体验标准进行了更细致地描述:

  • 总是用符合我预期的清晰度播放,不论是“开始播放”还是“播放中快进”等;
  • 对视频清晰度有强烈诉求的用户,要避免频繁的降低清晰度;
  • 手机流量比较紧张的用户,要更多使用较低清晰度播放。

技术解法:

基于这些认知,通过建立用户偏好画像、网络度量模型、典型场景划分等手段,我们正在为不同诉求的用户提供个性化的智能策略。例如,得益于日益完善的网络度量模型以及智能档算法优化,偏好“高清”播放体验的用户已经能够在 92% 的观看时间内,享受到最佳画质。而流量比较紧缺的用户,又能在流畅观影的前提下,以最合适的清晰度享受最好的观看体验。

最后,作为一个程序员,我的目标就是“没有卡顿”。当然,这更是优酷智能档的技术方向,在“不卡顿”之上,为不同用户提供差异化的最佳播放体验。

评论

发布