强化学习笔记(3)-基于模型的深度强化学习

作者 Noven Kan 日期 2018-12-28
强化学习笔记(3)-基于模型的深度强化学习

首先我们来看一下视频传输的码率自适应算法,通常叫ABR算法。讲算法之前要先了解一下视频传输的协议,目前最常用的协议是DASH协议。这个协议的框架是这样的,左边播放视频的播放器我们叫做客户端,右边是网络上存储视频的网络存储服务器,我们叫做服务器端。在服务器端,所有需要通过DASH协议传输的视频都要通过DASH封装,在时间上切分成固定时长的视频包,这一段视频就叫做chunk,而每一个chunk会被封装成不同码率,可以看做比特率,代表着不同视频质量的版本。对于普通的视频来说,设定了多少种清晰度,一个chunk就有多少个版本,这些版本内的所有视频帧的码率都是相同的;而对于在空间上又分了块的360度视频来说,设定了多少种清晰度,那么每一个tile就有多少种质量版本,每个chunk需要对每一个tile选择一种版本组合而成,当然,在一个chunk的时间段内,属于同一个tile的那部分视频的分辨率都是相同的。这是服务器端的情况,客户端的话,有buffer,用来缓存即将播放的视频chunk。在DASH协议中,当客户端需要播放视频的时候,会先发送一个请求到服务器端,告诉服务器端我需要点播哪一个视频和需要下载的质量版本,然后服务器端会给按照相应的请求将对应版本的chunk下载到客户端的缓存里面。以上是DASH协议的主要内容。ABR算法的主要作用就是根据视频的播放环境,动态的帮助客户端为每一个chunk选择最合适的视频版本,来达到在有限的带宽下最大化用户观看体验的效果。

另外需要说明的是,无论是DASH还是ABR算法,都是工作在应用层。而中间客户端和服务器端的通信,一般是基于传输层的TCP协议的。我说这些是为了解释带宽和吞吐量的区别,带宽是指通信信道在一定时间内能够传输文件包的最大数目,是针对传输层而言的。而在应用层,只能获取到当前吞吐量的信息,吞吐量是指用户在一定时间内传输的文件大小。举个例子,一条高速公路有六个车道,这六个车道就是它的带宽,通过的车的数目就是它的吞吐量;如果高速公路的车流量很大,就会发生拥塞,同样的,如果一条公用信道内有非常多的用户要进行通信传输,也会发生拥堵,这种现象叫做带宽瓶颈,这个时候要避免就要考虑到用户之间的公平性的问题了。在应用层,ABR算法只能靠吞吐量的信息去判断当前的用户传输状况,不能了解传输层的信息,所以可欣师姐最近投的论文,目的是要使得一个基站内的所有用户总体体验最大。她就得先从传输层使用WWMSE算法公平地分配每个用户的传输速率,相当于为每个用户分配车道,然后应用层得到传输速率的信息,使用ABR算法进行决策优化。

还有一个就是我们这次把视频的内容信息考虑进来了,表现就是视频的复杂度。从这三个不同复杂度的视频可以看出,码率的提升和视频质量的提升并不是一个线性的关系,而是呈现一个log函数的关系,这些给我们的一个启示就是,当遇到复杂度低的chunk时,只需选择较低的码率版本,因为再往上效果提升就不明显了。这样的话,就能以较低的带宽消耗获得较高的观看体验,剩余的可用带宽用作下一个chunk的下载,对以后网络状况不好的情况作一个补偿。

具体怎么做的呢?目前的解决方案是这样的,先拟合不同复杂度的视频码率和质量的曲线,横坐标可以看做码率,纵坐标是SSIM,这些曲线的弯曲程度越大代表复杂度越高。我们选取5种典型的复杂度分为五种等级,用D来表示。在计算视频的质量的时候,会将当前的码率和当前视频的复杂度一起考虑,Dm是一个指标,用来表示当年的视频复杂度是5种复杂度等级中的哪一种。这样就能较为简单的去把视频复杂度的信息考虑进来。

但是这样的方式还有很大的改进空间,比如我们这里只拟合了整个视频的复杂度,并没有对具体的不同的视频内容进行拟合,这是一个比较庞大的工作。而且在计算视频质量时,也只是对当前视频的总的复杂度进行考虑,没有细化到每一个chunk的复杂度,甚至每一个tile内的视频内容。即使是普通的视频,也可以进行分tile编码,这样的话,对于ROI区域用高码率版本,对其他区域就可以选择低码率版本。同时,也可以在视频编码的时候就对ROI区域的量化间隔小一点,对其他区域的量化间隔设置大一点。我觉得从视频内容的角度去优化甚至联合编码都是可以挖掘的。

但这是不是我今天要将的主要内容。我这些天的主要思考的点是在优化算法上面,因为看了一些Modelbased的强化学习的方法,有一些想法觉得可以应用在ABR算法上面。

首先我们考虑一下用强化学习来构造ABR算法时所面临的环境。在强化学习里面,agent需要在与环境的不断交互过程中不断地进行决策。也就是说需要通过样本对环境的动态进行学习。而在ABR算法面临的环境里面,唯一的环境动态就是吞吐量的变化,其余的环境模型信息都可以基于吞吐量的变化计算出来。所以说一旦吞吐量的信息能够准确的知道,那么环境的动态变化就是已知的,我们就可以通过动态规划的方式获得全局最优的解。这种情况和控制领域的问题非常相似,控制理论里的一些成熟的算法也都可以应用到这里来。如果从控制理论的角度去思考这个问题,那么就更适合用modelbased RL的方式去动态决策。关于基于模型的强化学习我会在第三节讲,下面我们先看一下基于控制理论的算法在ABR算法中的应用,以及比较一下这种方法和强化学习方法有哪些不同和相同的点。