[1] Zhang H, Zhou A, Lu J, et al. OnRL: improving mobile video telephony via online reinforcement learning[C]. Proceedings of the 26th Annual International Conference on Mobile Computing and Networking, 2020: 1-14.
实时视频通话与点播VoD的不同
离线学习存在的问题?
为此,作者设计了一个名为OnRL,基于在线强化学习的实时视频通话系统。OnRL将许多单独的agent直接放入单个视频通话系统中,这些agent实时做出码率决策,并不断更新模型。然后,OnRL将这些agent聚集在一起,形成一个高层次的RL模型,以帮助每个个体对看不见的网络条件做出反应。
主要要解决的三个难点
在传统的离线学习中,人们可以将收集到的许多单条网络trace串联在一起,最后送入模拟器来训练RL模型。通过这种方式,RL模型可以在不同的环境丰富其经验,并收敛到一个具有从所有用户那里学到经验的通用模型。
然而,在本文的在线学习中,有大量同时运行的视频会话,在此期间,模型需要随着每个会话的实时发展而不断更新。因此,本文最关键的挑战在于如何从串行的离线学习转变为并行的在线学习。
整个学习过程在以上两个阶段之间往复,以便在个体化经验和群集智能之间取得平衡。
S t = ( l ⃗ t , d ⃗ t , i ⃗ t , t t ) S_{t}=\left(\vec{l}_{t}, \vec{d}_{t}, \vec{i}_{t}, t_{t}\right) St=(lt,dt,it,tt)
A : { 0.1 M b p s , 0.2 M b p s , ⋯ , 2.5 M b p s } \mathcal{A}:\{0.1 M b p s, 0.2 M b p s, \cdots, 2.5 M b p s\} A:{0.1Mbps,0.2Mbps,⋯,2.5Mbps}
代表视频编码器的目标输出比特率
r t = α × ∑ n = 1 N q n − β × ∑ n = 1 N l n − η × ∑ n = 1 N d n − φ × ∑ n = 1 N − 1 ∣ q n − q n − 1 ∣ r_{t}=\alpha \times \sum_{n=1}^{N} q_{n}-\beta \times \sum_{n=1}^{N} l_{n}-\eta \times \sum_{n=1}^{N} d_{n}-\varphi \times \sum_{n=1}^{N-1}\left|q_{n}-q_{n-1}\right| rt=α×n=1∑Nqn−β×n=1∑Nln−η×n=1∑Ndn−φ×n=1∑N−1∣qn−qn−1∣
N N N 代表一个State下的RTP数据包的数量
q n q_{n} qn 是在接收方测量的吞吐量,它与视频质量直接相关
l n l_{n} ln 是传输层的数据包丢失率
d n d_{n} dn 是传输层的数据包延迟
最后一项是通过惩罚大的比特率波动来保证视频的平稳性。
如何统一各个不同量级的变量?
通过调整参数α、β、η、φ的值将这些指标归一到一个一致的范围。在OnRL的实际部署中,它们被分别设定为50、50、10、30。
采用两层全连接层,神经元个数分别为64、32。
CNN和LSTM性能不佳的原因分析
CNN擅长提取由复杂的空间信息组成的图像特征,而这些信息在OnRL的状态空间中并不存在。
LSTM对推理考虑到长期历史影响的时间序列数据更有用,但实时视频通话的性能更依赖于瞬时的网络条件。
存在的问题:如前所述,OnRL需要对每个输入实例作出反应,以适应实时的带宽变化。通常情况下,产生响应的同时也会更新网络参数。然而,这种频繁的更新将在很大程度上增加学习时间,并反过来减慢响应速度。
因此,作者设计了一个批量更新策略。特别是,学习agent缓冲了最近的
存在的问题:policy网络更新前后差异过大可能导致相邻时间内过于跳跃的码率决策,不利于QoE
对此,OnRL在进行梯度更新时采用如下损失函数,利用clip()进行裁剪
L ( θ ) = E ^ [ min ( p θ ( s , a ) p θ o l d ( s , a ) A ^ , clip ( p θ ( s , a ) p θ o l d ( s , a ) , 1 − ε , 1 + ε ) A ^ ) ] L(\theta)=\hat{\mathbb{E}}\left[\min \left(\frac{p_{\theta}(s, a)}{p_{\theta_{o l d}}(s, a)} \hat{A}, \operatorname{clip}\left(\frac{p_{\theta}(s, a)}{p_{\theta_{o l d}}(s, a)}, 1-\varepsilon, 1+\varepsilon\right) \hat{A}\right)\right] L(θ)=E^[min(pθold(s,a)pθ(s,a)A^,clip(pθold(s,a)pθ(s,a),1−ε,1+ε)A^)]
采用加权模型聚合法。
$$ \bar{W}=\sum_{k=1}^{K} \sum_{i=1}^{I} \sum_{j=1}^{J} \lambda_{k} W_{k, i, j} $$ 采用加权模型聚合法,可分为**平均聚合**和**优先聚合**两种。MMSys的比赛中也有提及类似问题 https://2021.acmmmsys.org/rtc_challenge.php
为保证低延时,当pacer queue积累了大量数据包时,它往往需要提高发送码率以加快队列的排空,此时发送码率可能会高于目标码率
源视频本身分辨率较低时,pacer可能没有足够多的视频数据去满足目标码率,此时发送码率就会低于目标码率
可以发现,当pacer队列积累了许多数据包,pacer将采用高于目标比特率 x x x 的发送比特率 p p p 。相反,当队列几乎为空时,由于没有填充物,实际发送速率通常下降到0。
存在的问题:RL的action不一定能被有效执行,action和reward有时不能严格对应,造成模型向错误方向更新。
g t = x t − p t g_{t}=x_{t}-p_{t} gt=xt−pt
S t ′ = ( l ⃗ t , d ⃗ t , i ⃗ t , t t , g t ) S_{t}^{\prime}=\left(\vec{l}_{t}, \vec{d}_{t}, \vec{i}_{t}, t_{t}, g_{t}\right) St′=(lt,dt,it,tt,gt)
通过这种方式,OnRL可以学习 g t g_{t} gt 的动态变化,然后通过自动调整其奖励操作来降低影响。
通过将偏差作为RL的额外输入,在吞吐量(0.02Mbps)和PSNR(1.68dB)略有牺牲的情况下,卡顿明显下降了55.4%,丢包率下降了10.3%,因此,得出结论,得益于学习action的执行偏差,因此,即使模型的action没有被严格执行,也能达到很高的性能。
存在的问题:典型的RL模型是采用试错法学习的,但与基于模拟的训练不同,通过失败积累经验对在线训练来说是不可接受的。而在线上运行时,任何错误的action都可能导致交互式视频的严重质量下降。特别是在会话初期,RL的不断探索与试错可能导致出现严重的网络拥塞。
因此,需要解决的问题就是如何在保持学习能力的同时降低灾难性探索对QoE的影响?
解决方案:一个确保在线学习可靠性的直接解决方案是将启发式算法和RL算法结合起来,即一旦RL的决策变得过于激进,就切换到保守的算法。
系统框架如下:
这个系统需要解决两个混合控制所带来的问题:
如何确定启用GCC的时机?
启用GCC算法时,RL的学习被中断,且对网络状况的变化变得不知情。
解决方案:对此,分别设计了一个安全状况检测器和调整了reward的设置。
类似GCC基于延迟的检测机制,基本思想是检测最近收到的延迟序列是否呈现上升趋势。如果是这样,将命令OnRL从RL切换到GCC。
定义包间间隔 Δ d ( t i ) \Delta d\left(t_{i}\right) Δd(ti)
Δ d ( t i ) = ( a i − a i − 1 ) − ( s i − s i − 1 ) \Delta d\left(t_{i}\right)=\left(a_{i}-a_{i-1}\right)-\left(s_{i}-s_{i-1}\right) Δd(ti)=(ai−ai−1)−(si−si−1)
则时间间隔T内的包间间隔可表示为
{ Δ d ( t 0 ) , Δ d ( t 1 ) , … , Δ d ( t T ) } \left\{\Delta d\left(t_{0}\right), \Delta d\left(t_{1}\right), \ldots, \Delta d\left(t_{T}\right)\right\} {Δd(t0),Δd(t1),…,Δd(tT)}
对其进行指数加权平均
D ( t i ) = ∑ i = 1 T 2 − i × Δ d ( t T − i ) D\left(t_{i}\right)=\sum_{i=1}^{T} 2^{-i} \times \Delta d\left(t_{T-i}\right) D(ti)=i=1∑T2−i×Δd(tT−i)
其中,时间越近的延迟,在 D ( t i ) D\left(t_{i}\right) D(ti) 中的权重就越大。
一旦 D ( t i ) D\left(t_{i}\right) D(ti) 超过阈值 γ ( t ) \gamma(t) γ(t) ,滤波器预测QoE下降的高风险,然后切换到GCC。由于GCC对延迟敏感,其控制策略将立即降低当前的发送比特率,从而缓解风险状况。一旦条件恢复到安全状态(即没有延迟增长的趋势),RL策略将进行控制。
阈值 γ ( t ) \gamma(t) γ(t) 的更新策略如下
γ ( t i ) = γ ( t i − 1 ) + k γ × ( ∣ D ( t i ) ∣ − γ ( t i − 1 ) ) \gamma\left(t_{i}\right)=\gamma\left(t_{i-1}\right)+k_{\gamma} \times\left(\left|D\left(t_{i}\right)\right|-\gamma\left(t_{i-1}\right)\right) γ(ti)=γ(ti−1)+kγ×(∣D(ti)∣−γ(ti−1))
每个切换事件都被配置为agent奖励函数中的一个额外惩罚。通过这种方式,它将学会适当的行动,从而在未来尽可能少地切换到GCC。
具体来说,设计了一个自适应的惩罚参数 η ′ \eta^{\prime} η′ 来取代奖励函数中原有的默认 η \eta η 。
r t = α × ∑ n = 1 N q n − β × ∑ n = 1 N l n − η ′ × ∑ n = 1 N d n − φ × ∑ n = 1 N − 1 ∣ q n − q n − 1 ∣ r_{t}=\alpha \times \sum_{n=1}^{N} q_{n}-\beta \times \sum_{n=1}^{N} l_{n}-\eta^{\prime} \times \sum_{n=1}^{N} d_{n}-\varphi \times \sum_{n=1}^{N-1}\left|q_{n}-q_{n-1}\right| rt=α×n=1∑Nqn−β×n=1∑Nln−η′×n=1∑Ndn−φ×n=1∑N−1∣qn−qn−1∣
η ′ = η × 2 ϵ , subject to ϵ = latency / 10 \eta^{\prime}=\eta \times 2^{\epsilon}, \text { subject to } \epsilon=\text { latency } / 10 η′=η×2ϵ, subject to ϵ= latency /10
该表总结了纯RL和混合两种方案在相同的1小时内运行时的性能。观察到,Robust-RL可以显著提高鲁棒性:卡顿和丢包分别降低了56.9%和63.5%。另一方面,Robust-RL在保持相同的吞吐量的同时,将PSNR提高了3.57dB。
在运行中的Taobao-Live的基础上实现了OnRL,并将其作为一个测试版应用发布给用户。Taobao-Live建立在WebRTC之上,这是一个实时视频通信框架,内置支持视频编解码器和传输层协议(即GCC)。
理想情况下,OnRL的组件应该在Taobao-Live应用程序中实现。然而,由于缺乏在移动设备上训练RL神经网络的API支持,引入了一个RL cloud server作为辅助服务器。
在每个电话会话中,发送方保持连接并与RL服务器交换信息。它从接收方收集RTCP反馈(即丢包、延迟、吞吐量等),并将其发送给RL服务器作为OnRL的输入。然后,OnRL处理输入并向发送方返回一个动作(即目标视频比特率),然后由Taobao-Live执行。同时,服务器上的OnRL模块定期更新其控制策略以实现在线学习。
此外,部署了一个后端服务器,以每天一次的频率进行学习聚合(通常在用户活动最少的清晨)。
将三个离线训练的模型(包括在模拟器中训练的Concerto和PPO模型(简称PPOs),以及在测试平台上训练的PPO模型(简称PPO t))和OnRL整合到Taobao-Live系统中。然后,在一个随机选择的用户身上运行这些模型。
左图显示OnRL实现了最好的QoE。
右图OnRL也显示出最小的延迟和丢失率,这证实了其应对不同网络的能力。
其余测试结果详见paper原文
由于缺乏RL训练的移动平台,关键的设计模块位于远程云服务器而不是移动设备中。
学习聚合方面,未来可考虑按照不同的应用场景对用户进行分组,细化聚合的方法。
评估结果表明,RL在处理波动很大的方面表现出明显的优势,但在稳定的网络条件下,有时表现得不如启发式的方法。未来可能可以考虑根据网络动态变化的程度来整合强化学习和启发式,