论文学习 | (MIT CS&AI Lab) Pensieve : 基于A3C的流媒体码率自适应策略

1 引言

    近些年来,用户在线观看视频时追求越来越高的品质,这就要求我们找出更佳的流媒体传输策略。目前最高水平的(state-of-the-art)方法就是基于HTTP的视频流媒体传输方法(DASH),它允许内容提供商使用CDN、保持无状态的服务器后端。该论文的Pensieve策略就属于ABR其中一种。在论文结论中,研究者提到这种算法相比ABR算法,能提升QoE指标12%-25%。


2 DASH的概念

    在DASH系统中,视频以多个chunk的方式存放在服务器上。一个chunk是几秒钟的视频内容。每个chunk都使用多种不同比特率进行了编码。高比特率质量好,数据量大;低比特率反之。
    在视频播放过程中,视频播放器可以根据网络状况,在每个chunk放完后选下一个的比特率,这样也不会导致下载不需要的内容或者是跳过视频的某一部分。

DASH的端到端传输流程如下图所示。
在这里插入图片描述


3 ABR算法的概念和缺点和对比

3.1 概念

为了更好理解Pensieve,需要先了解ABR(Average Bitrate)、CBR和VBR。
在这里插入图片描述
    CBR(Constant Bitrate),是采用固定比特率进行编码的方式,适应流式传输。但是当我们的图像压缩数据变大时,质量就会下降。因此这种方式图像质量不稳定。
    VBR(Variable Bitrate),是采用动态比特率进行编码的方式。它的比特分配根据图像内容的复杂度进行。但是比特率就不恒定,可能给网络带来压力。
    ABR算法是是在CBR和VBR两者之间的一种权衡,即设定一段时间的平均码率,在此时间内,对简单,静态的图像分配低于平均码率的码率,对于复杂的,大量运动的图像分配高于平均码率的码流。

    目前主流的ABR算法都基于速率(网络吞吐量)或是基于buffer(播放缓冲区大小),或是两者的结合。目前最高水平的(state-of-the-art)算法MPC,可以根据未来好几个chunk来作出决策。

3.2 缺点

    目前提出的最佳的ABR算法受到了一个限制:他们使用简化/不够精准的网络分化环境来调度和分配带宽。

    论文的介绍部分还提到,使用ABR方式选择一个合适的比特率很难,这是由于:

  1. 网络吞吐量时刻在变化
  2. 不一致的冲突的视频QoE要求(高比特率,最小的rebuffering次数,流畅度度等)
  3. 码率的选择导致的一环扣一环的影响
  4. ABR决策是非常粗粒度的

3.3 与Pensieve算法的对比

    相比目前最佳的ABR算法,Pensive不依赖于预先编写的模型或是预先对环境的假设,也与微调启发算法不同。它仅仅依靠过去决策的表现,来做出新的决策。
    Pensive是一个自动学习ABR算法的系统,不需使用任何预先编写的控制规则,或是对环境明确(或者说是死板)的假设。

    Pensive算法使用了强化学习,完全依靠过去的经验来做码流的调整。

    论文还提到了两种情况下的媒体传输,将之与robustMPC进行对比。
在这里插入图片描述

    图(a)是带宽波动剧烈(fluctuate significantly)的情况,robustMPC的估计过于谨慎,平均只有2Mbps,因此无法加载HD视频。Pensieve则通过加载大量buffer来补偿带宽的波动,从而获得较大的视频码率。

    图(b)中是即用户极端的偏好高码率的情况。Pensieve学习到这种QoE,使用低码率积攒buffer,用buffer来补偿带宽,在后续时间内请求高码率。

    这两个例子突出了Pensieve自适应学习的优点。


4 Pensieve算法的实现

4.1 实验环境

   实现Pensieve首先要做的事情是实现RL。这就需要一个视频Streaming的环境。但是在搭建环境的时候,论文没有采用实际视频下载的方式记录真实网络状态获取数据集,因为这样做太费时间。
   为了加速这个过程,该工作通过模拟,获取各个chunk下载前后的状态,包括下载时长、带宽、buffer等。Pensieve算法在这种模拟环境中,可以在10分钟内经历100小时视频的训练量。
   论文后面描述的在真实环境进行的测试,说明了这种模拟环境还是非常有效的。

4.2 TCP slow-start 对传输的影响

   现实网络的传输层错综复杂,有时候chunk buffer满了就不再请求更多chunk了。这种发送请求的延迟有时会误触发TCP的拥塞控制,导致TCP进入slow-start(慢启动),降低了传输效率和网络利用率。
   但是,Pensieve在仿真器环境下,仍然学习到了一个比较好的传输策略,从图中可以看得出来。尽管仿真器不能100%模仿现实环境,但是Pensieve还是能学到一个很不错的算法。这体现了Pensieve有多牛。
在这里插入图片描述

4.3 Pensieve A3C模型

Pensieve使用了目前最高水平的A3C模型,包含了Actor和Critic两个神经网络。
在这里插入图片描述

输入参数 s t = ( x ⃗ t , τ ⃗ t , n ⃗ t , b t , c t , l t ) s_t=(\vec{x}_t,\vec{\tau}_t,\vec{n}_t,b_t,c_t,l_t) st=(x t,τ t,n t,bt,ct,lt)

参数意义
x ⃗ t \vec{x}_t x t过去 k k k个视频chunk的网络吞吐量测量
τ ⃗ t \vec{\tau}_t τ t过去 k k k个视频chunk的下载时间,代表了吞吐量测量的时间间隔
n ⃗ t \vec{n}_t n t下一个视频chunk可选的 m m m个码率
b t b_t bt当前buffer的大小
c t c_t ct视频剩余未下载chunk的数量
l t l_t lt上一个请求的chunk下载的码率

工作流程:

   收到 s t s_t st后, 需要采用一个动作 a n a_n an来为下一个视频chunk的码率作出选择。这个选择会依赖概率分布 π ( s t , a t ) \pi(s_t,a_t) πst,at π ( s t , a t ) \pi(s_t,a_t) πst,at是在 s t s_t st状态下采取动作 a t a_t at的可能性。

Actor Neural Network

   在实际中,可以找到很多不听话的{状态,动作}对,比如网络吞吐量和buffer数量是连续值。为了解决这个问题,Pensieve使用了一个神经网络来来代表策略,这个神经网络可以用 θ \theta θ来代表,里面包含了有限个数量的可调节参数。我们可以把策略表示成 π θ ( s t , a t ) \pi_{\theta}(s_t,a_t) πθ(st,at).使用神经网络的优点就是,他们直接面向源观测值,不用再对数据进行任何的处理。

   A3C模型使用Policy gradient training (策略梯度法)进行模型的训练。核心思想是让总的reward最大。累积的梯度这算可以使用下列公式计算:
在这里插入图片描述
   Policy gradient输入为神经网络的输出的策略函数 𝜋(𝑎|𝑠),通过优化此目标函数,即可确定神经网络的参数θ ,从而确定策略函数 𝜋(𝑎|𝑠;𝜃)。这里可以采用梯度上升法,向着梯度方向迭代,用于求函数的极大值。(其实就是取负数,然后梯度下降)。这里面的A是之前强化学习中解释过的价值函数。

   在实际中,代理会对比特率决策的轨迹进行采样,使用经验优势函数 A ( s t , a t ) A(s_t,a_t) A(st,at)作为一个对 A π θ ( s t , a t ) A^{\pi_{\theta}}(s_t,a_t) Aπθ(st,at)无偏置的估计。

θ \theta θ参数更新公式:在这里插入图片描述

Critic Neural Network

   cirtic网络是用来计算优势函数 A ( s t , a t ) A(s_t,a_t) A(st,at)的。我们需要估计出价值函数 v π θ ( s ) v^{\pi_{\theta}}(s) vπθ(s)。s代表从状态s起, π θ ( s ) \pi_{\theta}(s) πθs代表选的策略。要求出奖励期望值。论文使用以下公式进行计算。
在这里插入图片描述

   注意critic网络仅仅是用来帮助训练actor网络的,做比特率决策和执行ABR算法的都在actor网络里。

   最后,我们必须确保强化学习的agent能够有足够的空间来发现好的策略。一个常用的方法是,在对actor网络进行更新的时候,加上一个上熵正则化项( entropy regularization term)。所以,先前的等式2就变成了:
在这里插入图片描述
    H ( ⋅ ) H(·) H()是策略的熵(动作概率分布), β \beta β是在训练开始时赋大初值,并随着时间而慢慢减小。

平行多线程训练

   为了加速训练过程,Pensieve采用了A3C论文中提出的方法,采用了多线程,默认有16个agent。每个agent都使用各不相同的参数进行训练,然后把训练结果 { 状 态 , 动 作 , 奖 励 } \{状态,动作,奖励\} {}返回给一个中央agent(central agent),由central agent选择后生成单个ABR模型。

   那central agent怎么做选择呢?它会使用上面建立的actor-critic network计算出梯度,然后使用等式(3)(4)形成梯度下降的一步。

   随后,central agent会更新actor网络,并把新模型推送给agent。这是异步过程,各个线程之间是没有锁的。

题外话:论文为什么选择了A3C?

   RL有很多方法(DQN,REINFORCE,Q-Learning,前补充内有描述)等方法,为什么选了A3C?因为它是目前(2017)最牛的方法,解决了很多实际问题。也和别的方法做了对比。

5 加强对多个视频的支持

   视频可以以不同的比特率等级进行编码,这就会有有差异的chunk大小。比如720p的视频的chunk大小就不尽相同。解决这种多样性的方法就是,设置多样的输入和输出。为了解决这个问题,论文改进了模型,适应了可变(variable)比特率的支持。

在这里插入图片描述
   这里面有两个改变,第一个是,找到了最多码率等级数量的视频,比如13个等级覆盖了所有DASH参考的客户端。然后,把输入视频的比特率映射到最接近的那个比特率上。剩下的不受支持的码率就用0来填充。就如上图所示,视频只有 n 1 , n 2 , n 3 n_1,n_2,n_3 n1,n2,n3三种码率。
   第二个是,输出的比特率都经过了softmax,所以输出的概率肯定是视频真正支持的比特率中的比特率。使用softmax后,输出的参数仍然是一个连续值。这样,神经网络中标准的梯度反向传播仍然保持,不需要再经过任何修饰就可以保持训练。

6 实现

   为了生成ABR算法,Pensieve设置了k=8(针对于 s t s_t st里的前三个向量),也就是取过去8个值作为输入。经过一个1*4,具有128个filters的一维卷积网络。这些层的结果最终整合到一个使用128个神经元的隐藏层,并使用了softmax激活层函数,最后得出一个向量,描述出不同码率被选中的概率。
   Critic网络使用了相同的NN结构,但是它最后的输出是一个线性的,没有激活层函数。
   论文后续还描述了一些细节的问题,比如学习率的设置、熵因素等。
   一旦ABR算法被生成,它必须适应现实中的环境,所以论文给了一个独立的ABR服务器环境,使用Python的HTTP服务器来执行。

7 评估

7.1 引入

   模型建立完成后,进入了对算法的评估环节。主要考虑了三个问题:

  1. QoE指标和最牛的ABR算法对比如何?答案是提升了12.1%-24.6%。
  2. 是否具有对不同网络和视频的普适性?答案是有,都有高水平表现。
  3. Pensieve对于诸如神经网络架构或者是网络延迟参数的敏感度如何?答案是这些对QoE的影响只有3.5%

   论文采用了大量的网络trace数据(FCC提供的宽带数据集、挪威的HSDPA 3G移动蜂窝网络等等),并且和多种算法进行了对比。

7.2 QoE评价指标

这里所用的QoE评价指标,与MPC通用的评价指标保持一致:
在这里插入图片描述
各参数的意义:

参数意义
N N Nchunk数量为 N N N
R n R_n Rn n n n个chunk的比特率
q ( R n ) q(R_n) q(Rn)把比特映射成用户感知到的视频质量
T n T_n Tn代表第 n n n个chunk在 R n R_n Rn 比特率下rebuffering所花的时间
最后一个绝对值项是对于平滑度(smoothness)的罚项,如果视频质量变化这个就会有值

其中的 q ( R n ) q(R_n) q(Rn)有三种参数选择:
在这里插入图片描述
(1) Q o E l i n QoE_{lin} QoElin: q ( R n ) = R n q(R_n ) = R_n q(Rn)=Rn. 这是MPC使用的指标。
(2) Q o E l o g QoE_{log} QoElog: q ( R n ) = l o g ( R / R m i n ) q(R_n ) = log(R/R_{min} ) q(Rn)=log(R/Rmin). 这个指标可以反应出一种理念,就是高比特率有时反而有不好的观感。
(3) Q o E h d QoE_{hd} QoEhd: 这个指标更偏好HD视频。它给HD视频高分,非HD视频低分。

在这里插入图片描述
这两张图是在FCC提供的宽带网络和挪威HSDPA移动网络下的数据传输情况,从图中可以看出,Pensieve超过了别的算法不少,即使是目前最强的robustMPC。

在这里插入图片描述
上面六个图是分别在两种带宽环境下对于三种QoE的各算法的对比。纵轴是CDF (cumulative distribution function),累积分布函数,描述了平均QoE的分布区间。
在这里插入图片描述

从这些图中可以看出来:

  1. Pensieve不论在哪种情况下都做得很好,QoE的累积分布都在高处较多,而且距离offline optimal很近(说明了算法很强)。
  2. 在QoE条件变化的时候,不同于ABR很艰难地去适应各个环境,Pensieve可以自适应。但是,Pensieve并不是所有情况下最牛的。只是总的来说,综合考虑,它性能确实非常强。

7.3 实测

论文针对现实世界、综合数据集和多个视频做了不少实验。结果表明都还可以。
在这里插入图片描述

8 深挖算法

   论文对于之前提出的算法进行了一些细节上的尝试,比如改了不同的隐藏层的层数,查看他们对于QoE的影响:
在这里插入图片描述

9 总结

   本论文提出了一个自适应生成ABR算法的算法,也就是Pensieve,使用了RL A3C作为主要的模型。算法性能相比之前有了稳定、大的提升,研究也做得非常细致,从仿真环境到现实世界都有测试,测试结果也让人非常满意。论文还对模型的许多细节都进行了深入的测试,并将之展示,可见其考虑之周全,逻辑之完整,体现了对待科研的一丝不苟,值得学习。

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值