//
编者按:在视频流量爆发式增长的当下,面对多用户多场景的网络挑战,如何降低卡顿、提升用户体验是流媒体传输研究的关键。LiveVideoStackCon 2023上海站邀请到了清华大学博士黄天驰,为大家分享自适应流媒体智能传输优化研究进展。
文/黄天驰
编辑/LiveVideoStack
大家好,我今天分享的主题是自适应流媒体智能传输优化研究。
让我简单介绍一下我自己:我叫黄天驰,刚从清华大学获得博士学位,我的导师是孙立峰教授。我的研究方向是智能流媒体传输。我一共发表了17篇一作论文,其中有8篇是CCF-A类论文。我还有一些荣誉,比如获得过NOSSDAV 2019最佳学生论文奖。我的研究成果也被应用在一些一线企业,比如快手和华为。
首先介绍一下自适应流媒体的研究背景。根据2023年全球互联网现象报告,视频流量已经占互联网流量的65%,较2021年进一步提升24%。总体来说,目前视频流量呈爆发式增长。其中,由于真实网络情况变化频繁以及日渐丰富的视频内容,超过40.24%的流量采用自适应视频流(Adaptive Streaming)传输,在客户端上利用自适应码率算法(ABR)调节视频块。
这里简单介绍一下这个技术的架构图,以点播模式为例。
一段视频将通过指定的码率阶梯预编码为不同码率,代表高清,低情,原画等画面品质的视频块,每个视频块时长在4秒左右。随后这些视频块将通过CDN进行分发,用户将在用户端通过码率自适应算法,也就是ABR来观看这段视频。
ABR到底在决策什么呢?从端侧来讲,码率自适应算法将结合当前播放器的缓冲大小与可用带宽,共同决策下一个视频块的码率。
那么ABR的目标是什么呢?其目标旨在获取更高的用户体验(我们这里叫做quality of experience, QoE),一般指的是高视频码率,低卡顿(或者叫重缓冲)时长,同时码率避免频繁切换。
现有的算法普遍被称为启发式ABR算法。传统的启发式算法主要有基于带宽预测的,基于缓冲的以及基于建模的ABR算法。其本质上都是在完成一个建模,或者几个指标上卡阈值,设超参以达到线上的效果。当然,这也造成了一定的缺点。这些方案过度依赖精确的网络预测、精准的网络建模与精心的调参,导致其可能在一种网络情况下好,但是在其他的网络下表现不佳。
因此,学术界开始研究智能ABR算法,利用深度学习、无需手工设计,直接从数据中预测或泛化策略的特性去帮助或生成ABR策略。
智能ABR算法主要分为两种方法,一种是基于深度学习预测未来带宽,然后辅助建模决策码率;另一种则是基于深度强化学习,从零训练一个神经网络,在不依赖先验建模以及知识的情况下做出决策。不可否认的是,智能ABR算法大幅度提升了ABR算法性能。
以Pensieve算法为例,解释其原理如下:ABR智能体可以看作是一个神经网络,接收过去的视频带宽、播放器码率选择和当前缓冲等作为输入。输出部分是对下一个视频块的码率档位进行决策。最后,通过对码率、卡顿和平滑度进行线性加权,得到回报,目标是提高回报分值。Pensieve采用了现代的“深度”强化学习建模方法,通过经验自动学习智能ABR算法。
以该算法在实验室环境下的性能为例,与启发式算法相比,它至少能在用户体验上提升18%。但是,要将它部署到真实系统需要花费很大的精力,需要由右图中的三个组件组成,服务端,用户端,数据分析端。具体流程如下。首先,在服务端完成智能ABR算法的训练。然后,把训练完的神经网络模型下发至用户端,用户端则基于模型根据不同网络做决策,接着把决策数据信息上报到数据分析端,在数据分析段完成数据的整合归纳,再把数据交由服务端完成下一轮的迭代更新。
因此,智能ABR算法也需要依托闭环的训练与部署系统,有效利用信息持续优化性能。我研究的内容就是智能自适应流媒体技术大规模实际部署面临的系统级优化。
接着讲下优化所面临的几个挑战。首先是服务端上的训练问题。通过真实场景的测量显示,每个时间段下的网络情况都不一样,如图所示,4点和10点的累积概率分布差别很大,然而考虑到智能ABR算法需要8个小时才能训练收敛,所以如果4点开始训练,那么12点结束的话网络已经跟4点的不一样了,算法的性能可能并非最好。因此,如何更高效地训练智能ABR算法呢?这是该系统能够运行起来的基础。
其次,在用户端执行上面临执行开销高和模型参数多的挑战。我们在部署后发现,智能ABR算法的性能虽然比较好,但是它的执行时长是启发式算法BBA的将近7倍之多。同时,智能ABR算法的模型参数量也会比较大,如果需要做模型下发的话,它相当于下载一个2Mbps码率的视频块。随着智能ABR算法的发展,其甚至相当于下载18Mbps码率的视频块。因此降低智能ABR算法执行开销,使其部署在用户端,是部署的关键。
第三,在真实网络场景中,我们面临着解决网络异质性和传输部署局限性的挑战。每个用户所处的网络环境通常是独特的,例如地铁里的网络分布和家里的分布是完全不同的。然而,由于传输部署的限制,我们无法为每个用户都从零开始训练个性化的智能ABR算法来保证用户体验。那么,智能ABR算法如何快速适应各种不同的网络和偏好特性呢?
最后,在需求优化方面,如何评价QoE并制定面向更精确的QoE的训练方案?
首先我们先介绍在服务端训练的优化,即智能ABR算法训练效率的优化,这里我们主要采用了模仿学习来完成了训练效率的提升。
前述提到,同一天不同时间的网络分布差距较大,而总体网络分布会影响智能ABR算法性能,同时现有强化学习方案训练ABR算法的时长较长。如右图所示,现有的强化学习方案训练至少需要3小时才能收敛,有的甚至需要10个多小时,在这期间,网络的大盘分布已经变了,训练出的ABR策略可能无法满足当前的网络分布,如中间的图所示。
因此,为了回答当今网络需要什么样的ABR算法,我们首先认为需要快速高效训练提供视频服务。然而带来的挑战是现有强化学习方案依赖大量试错,采集过多无效的样本,训练效率低下。
强化学习练得慢,其慢的原因是因为盲目探索,浪费了太多时间采集样本。而模仿学习的核心思想是:在线下模拟器中找到当前状态下的最优解也就是专家策略,然后模仿专家策略样本。请注意,这里并不是像传统的监督学习一样采集大量的专家样本之后整合成训练集监督学习。如左图所示,监督学习后的模型在做决策时会遇到累计错误问题。神经网络或多或少会判断错误,这对传统的图像识别来说就是多了一个错例而已,但是对于码率决策来说,做出错误决策后就会进入下一个状态。而如果状态不在专家训练集中,神经网络将会懵了,不断地选错,不停卡顿。所以如右图所示,我们希望它能够学习专家轨迹的一定范围内的可行解,通过探索了解专家轨迹周围的那些状态大概长什么样,一旦线上决策错了还能修回来。
根据以上模仿学习的方法论,我们实现了一个ABR算法叫Comyco。它通过以下三点完成训练:首先,通过虚拟播放器推算线下最优解,也就是我们所说的专家策略。其次,在训练期间,边主动探索环境,边学习专家策略。同时,在训练期间,使用经验池反复训练策略,加快收敛。
左图展示了Comyco神经网络结构,其输入包括网络信息、视频播放和视频内容特征,输出为下一个视频块的档位的概率,神经网络使用了一维卷积提取视频内容和网络特征,并使用全连接提取了视频播放相关信息。
右图则表明了模仿学习的损失函数,其本质为缩小当前策略以及专家策略的距离。专家策略可以由右下部分的公式迭代得到,其形式上为动态规划问题。
从实验结果来看,Comyco有两方面提升:
一方面是速度,所需样本数量减少1700倍,训练时间降低16倍。具体的数据表现如图中左侧所示。Comyco像火箭一样一下子就“窜”上去了,而Pensieve的训练就平稳得多。
另一方面是性能,Comyco在大幅度提升训练速度的同时,其用户体验,也就是QoE提升7.5%-16.79%,这里也有一部分原因是Comyco这个工作是“质量感知”的,也就是会选择视频质量更好的视频块。对这部分有兴趣的观众可以去看下Comyco的原论文。
在聊完服务端的高效训练后,接下来介绍在用户端如何进行执行效率优化。
在之前的讨论中,我们提到智能ABR算法具有良好的性能。但是,现在我们从另一个角度来看,关注它在真实部署中的执行效率如何。这张图展示了一些常用ABR算法的模型大小和执行时长的关系。图中的绿色表示算法性能较好,红色表示较差,橙色表示适中。从图中可以看出,智能ABR算法的总体开销相对较大,总体执行开销是启发式算法的近7倍。现有的智能ABR算法主要集中在图的右上角,而传统的启发式算法则普遍位于左下角。那么,如何改善智能ABR算法的执行效率呢?
首先我们看看传统的算法是怎么做的。这里介绍一个工业界里也经常使用的BBA算法(Buffer-based Approach):它使用了两个阈值去维护了当前的缓冲区大小,随后构建了缓冲区与档位的映射表,这样每个时刻就能根据当前的缓冲区大小选择适当的码率档位了。显而易见,这两个阈值怎么设置是非常重要的。右边的图告诉我们这两个参数配置决定了最终的性能:在不同的配置下算法的表现是完全不同的。但是选最优的参数还是很困难的,一方面,依赖经验设计,寻找最优参数困难;另一方面,真实网络时变,最优参数变化频繁。
因此,我们融合了深度学习和启发式方案。一方面,能够利用深度强化学习增强启发式算法,设置最优参数;另一方面,深度神经网络模型也能够利用启发式算法的独有领域知识大规模削减模型大小,从而降低开销。
故我们开发了一个智能ABR算法叫stick,它使用神经网络为BBA算法推荐参数。随后BBA算法重建映射表,根据当前缓冲选择档位。这里我们使用了强化学习从0开始训练。论文中我们使用的DDPG算法,因为该方案是连续空间控制。不过在这里我们推荐SAC算法,因为这是目前强化学习任务的SOTA算法之一。
正如前面提到的,由于网络时变的性质,最优参数在不同时刻可能会发生变化。但是,具体什么时候这些参数会变化呢?为了解答这个问题,我们进行了一系列测试,在各种不同的网络条件下观察了最优参数的变化幅度。令人惊喜的是,我们的研究发现,在各种网络条件下,只有30% - 40% 的情况下需要进行BBA算法参数的调整,而其他情况下则可以保持上一次的参数设置。这个结果非常合理,因为BBA算法具有强大的阈值映射能力,能够有效地抵御较大的网络扰动。
这意味着,在绝大多数情况下,我们可以继续使用之前的参数设置,而不需要频繁地进行调整。这种鲁棒性和稳定性是BBA算法的优势所在,使其能够在不同的网络条件下保持良好的性能表现。在实际部署中,我们可以根据需要只在少数情况下进行参数调整,而不必频繁地干预算法的运行。因此,我们在Stick算法前,再前置一个Trigger的模块,它是一个非常轻量的神经网络,用于决策是否开启Stick调整参数。这里采用了上一部分提到的模仿学习训练方式,它的核心思想是通过学习最优策略来完成任务。
根据以上描述,我们提出的ABR算法的整体系统架构如下:
Trigger模块:在做出决策之前,通过Trigger模块进行判定,来确定是否开启Stick功能。如果不开启,系统会直接沿用上一次的决策结果;如果开启,则进入下一步。
Stick模块:在开启Stick功能后,根据当前的状态使用Stick模块来确定启发式算法的参数。Stick模块会根据当前的网络状况等因素,决定启发式算法相应的参数设置。
启发式算法BBA:根据Stick模块提供的参数设置,系统会选择适当的启发式算法来进行决策。启发式算法根据当前的网络条件,动态调整视频码率档位,提供更好的用户体验。
最后实验结果来看,Stick的QoE性能提升9.5%-25.86%。除开性能的提升,请关注一下模型参数量的减少:其参数量较现有智能ABR算法降低了88%。同时,Trigger显著降低了Stick的39%-60%的执行开销。因此,我们可以认为,提出的方案在结合了启发式算法后的确优化了智能ABR算法的执行效率。
这里还有一个梦幻联动,该工作在LiveVideoStackCon 2021上海站中被宋利老师称为媒体技术的SOTA进展之一。
在解决了智能ABR算法的训练速度和执行效率之后,我们将视角转到快速自适应用户独特的场景上。
在先前讨论中,我们着眼于算法在总体网络环境下的性能,例如整体性能提升的场景。然而,在真实场景中,用户之间的异质性非常明显。如左上图所示,每个用户在观看视频时的平均带宽和往返时延(RTT)都是复杂多样的。用户可能在家中观看视频,也可能在上班时挤公交车时观看,甚至在办公室偷偷观看。这些不同的用户场景对网络条件有着显著影响。如果我们考虑每个网络场景的异质性,已有的ABR算法,包括智能ABR算法,也会变得不稳定。这是因为深度学习算法通常假设数据是独立同分布的,也就是在相对固定的网络分布下进行训练。然而,真实网络的分布与训练数据之间的差异非常大。
综上,我们面临一个问题:如何为每个网络场景的用户提供高清流畅的视频服务?如何应对不同网络条件下用户观看视频所面临的挑战?这是一个需要解决的难题,需要我们研发出适应不同网络场景的ABR算法,以确保每个用户都能享受到高质量的视频体验。
实现这个目标非常困难,因为我们无法在离线模拟环境中考虑到所有用户的网络场景。当用户面临完全陌生的网络环境时,我们将面临更大的困难。为了解决这个问题,我们进行了理论分析,并得出结论:要为每个用户提供最佳的码率转换算法,我们需要考虑该用户所处的所有时刻的网络环境,甚至包括过去和未来的带宽变化。然而,这种全面考虑的方法在实践中是不现实的。因为在用户开始播放之前,他们无法感知到所处网络的整体情况。因此,我们需要采取一个折衷的解决方案:边播放边感知网络,快速更新策略以适应当前的网络状态。这意味着我们需要在实时播放过程中不断监测用户所处的网络环境,并根据实时的带宽变化和其他网络指标来调整码率转换策略。我们需要快速响应当前网络状态的变化,以确保用户在不同网络条件下都能获得最佳的视频体验。
通过边播放边感知网络的方式,我们可以更好地适应不断变化的网络环境,提供适合当前情况的最佳码率转换算法。这种折衷的解决方案将帮助我们更好地满足用户的需求,并提供高质量的视频服务。举一个例子来解释这个概念。假设机器人探索宇宙,来到一个未知的星球,第一件事情是要学会如何在星球上行走。由于之前没有探索过这个星球,机器人只能小心翼翼地尝试前进和后退,以收集有关星球特征的数据。然后,机器人可以快速更新其前进策略,并迅速适应这个星球。例子中的星球就是用户所在的网络环境,机器人就是ABR算法。
总之,我们需要 “学会学习”。在这个思想下,我们提出了基于元强化学习的快速自适应智能ABR算法:它由两阶段组成。首先是离线阶段,它在线下模拟训练时尽可能考虑多一点的场景,并且目标的不是提升性能,而是学会几步内感知网络环境并提升性能的元策略。这样到了在线阶段就能基于离线模型快速迭代,适应当前网络场景,并提供更好的服务。
于是我们提出了A²BR算法,这里简单展开说一下技术手段。
在离线阶段,我们的挑战是要让系统学会感知当前网络状态,并快速更新策略。为了解决这个挑战,我们结合两种方法:最大熵强化学习和模型无关元学习。最大熵强化学习可以增加探索的能力,使其更多探索未知网络环境;而模型无关元学习可以帮助系统快速学习并适应新环境。
在在线阶段,挑战是要实现“安全”的探索,并更新策略,以便系统可以更好地适应新环境。为了解决这个挑战,我们结合了启发式算法来设计回退策略,以避免不必要的选择。我们还采用了无梯度掩码和无额外执行开销的实现方式,以提高系统的效率和性能。
我们在不同类型的异质性定义下测试了A²BR的有效性,分别是用户网络快速适应、网络类别快速适应和QoE指标快速适应。在1000个用户中,平均QoE性能提升了12%。值得注意的是,在一些弱网场景下,A²BR在经过了20轮迭代学习后性能提升明显,其QoE最高提升了200%,做到了个性化网络场景的提升。
聊完了算法层面的优化,现在我们将视角转向另外一个特别重要的点,也就是QoE,在很多情况下被称为需求优化。接下来介绍一下基于人类反馈的智能ABR算法。
QoE建模事实上具有重要的意义,因为它直接决定了ABR算法优化的方向。目前关于QoE建模的工作其实主要分为两类。一类是线性加权的形式。比如我们之前一直提到的质量,卡顿与平滑的线性相加,其中我们用几个参数平衡这些指标的关系。这类QoE建模在ABR领域优化中是最经常使用的,因为它们通常比较容易解释,类似白盒。还有一类工作则是采用机器学习的方法,包括传统机器学习,也包括基于深度学习的工作。这些工作将质量,卡顿,等等其他的指标作为“信号”输入,随后使用神经网络,决策树等等模型做类似黑盒优化。当然,这两类工作都有共同的特性,即使用MOS分作为正确的标签进行模型训练。最终使用训练完成的模型评价ABR算法的性能。我们的问题是:这类方案是否有问题呢?
回顾问题的源头是以平均用户评分(Mean Opinion Score,MOS)作为标签的设定。为了确定该MOS方案的有效性,我们应该满足以下条件:首先,用户对每个视频会话的意见评分应保持一致;其次,对于同一用户,他们应该对相似的视频会话分配相似的评分。
首先,我们对视频级别的意见一致性进行了分析。我们从公开的SQoE IV数据集中随机选择了五个视频,统计了这五个视频的评分范围。如左图所示,可以观察到对于相同的视频,MOS的范围很大。例如,视频1的评分范围在75到100之间,而视频2和视频4的评分范围则在0到100之间。
其次,我们也对用户级别进行了分析。我们随机选择了16个用户,并绘制了他们的评分范围。可以观察到用户之间的评分范围差异也很大,例如用户0的评分范围从0到100不等,而用户F的评分范围则在90到100之间。
综上,我们可以得出结论,在用户和视频级别上都存在显著的不一致性。这意味着QoE模型需要考虑到上述的异质性,更准确地反映用户对不同视频会话的评价。
为了解决上面的问题,我们提出了基于人类反馈(Reinforcement Learning with Human Feedback, RLHF)的智能ABR算法:Jade。详细而言,Jade把整个训练分成两部分。首先,提出基于排名的QoE模型,这与之前直接使用MOS作为标签来训练一个QoE模型完全不同。这里我们训练了线性QoE模型和基于深度神经网络的QoE模型。其次,基于训练完的给予排名的QoE模型作为奖励信号,使用改进的强化学习方案训练智能ABR算法。
首先介绍QoE模型。与过去将所有评分整合为平均意见分数(MOS)的方法不同,我们的方法是创建一个“排名函数”来映射每个视频会话的MOS,而这个函数是通过同一用户提供的MOS样本对来学习的。
以左图为例,对于某个特定用户i,我们将会话信息表示为o1和o2,而MOS则表示为y1和y2。我们希望学习一个模型,其输出能够很好地维持任何配对视频会话的相对关系。例如,在这里,y1大于y2,我们希望模型的输出也能确保r1大于r2。
我们定义了一个失函数。这个损失函数主要由两部分组成,其中pairwise loss主要用来描述相对关系,而align loss则保证归一化关系。保护MOS的绝对分值不被扭曲或修改。
我们使用这个训练框架来训练两个模型,一个是完全端到端的基于深度神经网络(DNN-based)的模型,另一个是线性模型,但其参数是通过深度学习训练得来的(即反向传播)。
我们对两个QoE模型进行了测试,并在公开的数据集上测试了相关算法。我们着重关注一致性(identity rate),该评估指标也源自于大模型(Large Language Model, LLM)的进展。结果显示,基于深度神经网络(DNN-based)的模型可以取得最高的一致性。然而,当我们分析模型输出与一些关键指标(如视频质量指标VMAF和重新缓冲率)之间的关系时,我们发现DNN模型实际上存在一些过拟合的现象。例如,当VMAF等于0时,随着重新缓冲率的提升,DNN-based QoE模型的平分也会增加——这实际上是不合理的。相比之下,线性模型符合领域知识。因此,仅依赖DNN或线性模型对于训练ABR算法来说是不够的。
既然两个QoE模型互有优劣,我们应该设计一个方案同时发挥这两个模型的长处,规避它们的短处。至此,我们提出了"平滑训练"(smoothing training),该方法借鉴了以往强化学习(RL)的回报重塑(reward shaping)思想。在训练的初期,当不确定性较大时,我们会更多地使用线性模型的输出。这样做的目的在于确保ABR算法在训练探索过程中不会学习到错误的知识。随着训练的进行,我们将更多地使用基于深度神经网络(DNN-based)的QoE模型,保证在一些关键的轨迹上输出更加准确的用户体验质量模型。
根据实验结果,我们可以得出两个重要的发现。首先,我们成功地获得了更准确的QoE评价体系,其最终的一致性评价甚至超过了原先的基于MOS的评价体系。这意味着我们的新评价体系能够更准确地反映用户的真实体验,并提供更一致的评价结果。
其次,基于新的评价体系,我们构建了新的训练方案,并训练出了智能ABR算法。该算法在实验中表现出了出色的性能,并更贴近人类的体验。这意味着新的训练方案能够更好地指导算法的学习过程,使其能够根据用户的QoE需求做出更优的决策。
综上,我们的研究取得了令人满意的结果。通过引入更准确的QoE评价体系和新的训练方案,我们成功提升了智能ABR算法的性能,使其更好地符合人类的体验要求。
最后做下总结。今天主要分享的是基于机器学习的自适应流媒体技术大规模实际部署面临的系统级优化难题,我从四个方面介绍了针对该问题的探索:
①在服务端方面,提出基于模仿学习的智能ABR算法;
②在用户端侧,提出结合启发式算法与深度学习,提升性能并改善执行开销;
③在用户级别,运用元强化学习,让算法快速自适应用户场景以提升用户体验;
④重新反思QoE,从整体角度通过基于强化学习与人类反馈技术更好地对齐用户评分。
以上是分享内引用到的学术论文。
我的分享就到这里,谢谢!