1.基于Q-Learning的SVC编码HTTP流媒体自适应方法,包括以下步骤:
1)将SVC编码的流媒体交互情境构建Q-Learning模型,需要构建状态集(States)、行为集(Actions)、回报函数(Reward function),以及选择探索策略;构建强化学习Q-Learning模型的步骤如下:(1.1)状态集(States)构建:选用带宽和缓存填充状态构建环境状态,客户端需要对带宽和缓存填充状态进行离散;
(1.1.1)带宽的离散过程如下:定义带宽的最大值为BWmax,每个片段分割成M层,当处于第i层时,所需的最低带宽为thri,i≤0≤M,将带宽离散成{0~thr0,thr0~thr1,...,thrM-1~thrM},共M+1个状态;
(1.1.2)缓存填充状态离散如下:定义缓存存储片段范围为0~Smax,缓存填充状态bs(bufferState)由Smax个元素组成[s1,s2,s3...ssmax],其中sk表示缓存存储位置的第k个片段存储的基础层和增强层总数;
状态构建为:s={bs,bw},这两个元素的离散情况及方式如下表1所示:表1 环境状态定义
元素 范围 离散方式
bs [s1,s2,s3...ssmax] sk∈(1,2,..M),k∈(1,2...Smax)bw 0~BWmax {0~thr0,thr0~thr1,...thrM-1~thrM}(1.2)行为集构建(Actions):行为集定义为a=(index,layer),分别是缓存位置下标(index)和缓存位置所需下载等级(layer);不同的状态一般具有不同的可选行为集;行为集元素的离散情况及方式如下表2所示:表2 行为集定义
元素 范围 离散方式
index 0~Smax {1,2...Smax}
layer 0~M {0,1,2...M}
(1.2.1)决策行为从当前状态的可选行为集中进行选择,确定行为后,通过行为进行下载下一片段层;行为集添加如下所示,设当前缓存填充状态bs=[s1,s2,...sk]时,当前状态的可选行为集根据当前缓存填充状态从左往右进行添加,如果sk的状态不为0,则添加行为a=(k,sk),如果sk为0,则添加a=(k,0),并终止进行查找新的行为;如果bs填充已满,则进入睡眠状态,等待缓存中视频片段被取出后,需要重新填充时,再进行决策;
(1.3)回报函数(Reward function):回报函数包含三个因素rfreeze,raction和rswitch,其定义如下:(1.3.1)定义行为回报值为rfreeze,如果选择的行为造成了视频暂停播放,则对其进行惩罚,令rfreeze=-10000,否则令rfreeze=0;
(1.3.2)定义行为回报值为raction,raction=100*(10-index)+layer,其中index表示了是缓存中的片段位置,layer则表示了当前下载层质量等级同时也代表了当前视频片段的质量,如果选择的行为尽量趋于缓存下标较前的位置时能够获得更高的回报值;
(1.3.3)定义片段的质量切换为rswitch,其定义公式rswitch=-10*abs(leftlayer-layer)+(-10)*abs(rightlayer-layer),计算填入的位置片段质量layer与左边的片段层级(leftlayer)质量差以及填入的位置片段质量layer与右边的层级(rightlayer)质量差;
(1.3.4)定义线性总体回报值为r,r=rfreeze+raction+rswitch;
(1.4)探索策略;
选用Softmax作为探索策略,根据当前状态的可选行为的Q值进行Boltzmann概率分布计算,其不同动作的概率分布公式如下:其中π(a|s)是s状态下选择行为a的概率,计算s状态下的可选行集e的指数倍数累加和,并通过τ参数确定a行为在所有行为中的权重,保证了不同的行为具有不同的被选中的概率;
2)构建离线训练Q-Learning算法;
(2.1.1)确定输入参数:学习速率α,折扣因子γ,回报函数r,当前带宽bw,当前缓存区填充状态(bs);
(2.1.2)确定输出参数:收敛的Q表
(2.1.3)确定随机初始化Q表;
(2.1.4)查看Q表是否收敛,如果Q表收敛则结束,如果Q表尚未收敛则进行新的探索;
(2.1.5)播放视频进行新的一轮探索;
(2.1.6)根据当前的带宽和缓存填充状态确定当前状态s;
(2.1.7)使用探索策略(softmax)从s状态选择行为a;
(2.1.8)执行行为a,计算回报值r,并进入下一状态
(2.1.9)通过公式Q(s,a)=(1-α)Q(s,a)+α(r+γ.max(s`,a`))更新Q表;
(2.1.10)把状态置为s:=s`;
(2.1.11)视频是否播放结束,如果播放结束则进入步骤(2.1.4),如果尚未播放结束,则进入步骤(2.1.5);
3)模型线上应用;
根据当前缓存填充状态(bs)和当前带宽(bw),在Q表中查询当前状态,并通过查询在该状态下的所有可执行行为确定那个行为的Q值最大,则执行该行为;当决策出行为(a)时,则下载行为(a)对应的片段层。