陳梓晗,葉 進,肖慶宇
(廣西大學計算機與電子信息學院,南寧 530004)
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,視頻流媒體已成為當前網(wǎng)絡(luò)傳輸流量的主要組成部分,在網(wǎng)絡(luò)應(yīng)用中占據(jù)核心地位。根據(jù)第44 次中國互聯(lián)網(wǎng)統(tǒng)計報告顯示[1],目前中國視頻類流量占因特網(wǎng)流量的80%,視頻類APP 應(yīng)用產(chǎn)生了近30%的移動應(yīng)用流量。思科公司的報告指出[2]:全世界網(wǎng)絡(luò)流量的67%是視頻流量,預計到2021 年將達到80%。視頻流媒體的碼率自適應(yīng)(Adaptive Bitrate,ABR)算法的目標是讓客戶端所播放的視頻塊碼率盡可能匹配當前網(wǎng)絡(luò)帶寬,從而最大化帶寬的利用率,提升用戶體驗質(zhì)量(Quality of Experience,QoE)。
依據(jù)工作原理的不同,碼率自適應(yīng)算法可以分為三類:第一類是基于吞吐量[3-4]帶寬預測[5-6]的方法,依據(jù)網(wǎng)絡(luò)吞吐量預測帶寬;使得請求視頻塊的碼率接近可用網(wǎng)絡(luò)帶寬;第二類是基于緩存[7-9]的方法,將緩存分為若干區(qū)間,并對每個緩存區(qū)間采用不同的碼率選擇策略[9-10];第三類方法是綜合利用帶寬預測[11-13]以及緩存信息[14-15]。而且隨著人工智能技術(shù)的發(fā)展,此類策略應(yīng)用機器學習[16-17]方法實現(xiàn)更精確化的碼率控制和QoE 提升。下文具體分析各類方法的工作原理和特性。
基于吞吐量預測的方法核心是根據(jù)預測的網(wǎng)絡(luò)吞吐率來選擇碼率。其中,客戶端依據(jù)近段時間內(nèi)的網(wǎng)絡(luò)吞吐率來預測網(wǎng)絡(luò)帶寬,以此選擇最佳碼率,但受鏈路狀態(tài)[3]、帶寬波動[4]、網(wǎng)絡(luò)環(huán)境異構(gòu)性[5]等因素的影響,選擇最佳碼率變得較困難,如在時變無線信道上吞吐量預測常常是不準確的,難以選擇最優(yōu)的碼率。
不同于依據(jù)預測未來吞吐率來選擇碼率,文獻[7]依據(jù)觀察客戶端視頻緩沖區(qū)變化來確定最優(yōu)碼率,在視頻塊緩沖區(qū)長度較大時選擇高碼率,以提升視頻質(zhì)量;否則,選擇低碼率以避免視頻卡頓。文獻[8]提出的ABR 算法在視頻開始播放階段基于歷史吞吐率選擇碼率,在網(wǎng)絡(luò)帶寬平穩(wěn)后根據(jù)當前的緩沖區(qū)占用情況選擇視頻碼率。但總體而言,基于緩沖區(qū)占用的ABR 算法由于客戶端緩沖區(qū)的閾值界定難以選擇,存在實際部署的問題。而基于帶寬和緩存混合控制方法[11-12]能充分利用網(wǎng)絡(luò)帶寬和緩沖區(qū)的狀態(tài)[13-14]選擇碼率。文獻[15]將碼率的選擇建模為一個模型預測控制問題,依據(jù)吞吐量和緩沖區(qū)占用信息通過控制理論模型進行判斷推理。然而,該方法的性能過度依賴于系統(tǒng)模型,對吞吐量預測誤差和優(yōu)化周期長度非常敏感。
隨著人工智能技術(shù)飛速發(fā)展和不斷應(yīng)用,文獻[16-17]提出基于強化學習框架的碼率自適應(yīng)方法。其中Pensieve[16]借助于強化學習算法訓練模型,不依賴于環(huán)境的假設(shè),而是根據(jù)客戶端采集數(shù)據(jù)為視頻塊選擇碼率,通過觀察過去決策的結(jié)果來學習碼率的選擇策略。
現(xiàn)有研究的主流方法是構(gòu)建統(tǒng)一的QoE 模型,并設(shè)計啟發(fā)式的碼率自適應(yīng)算法,考慮不同類型視頻的特點。實際上,短視頻、長視頻和直播視頻各自側(cè)重不同的傳輸特性,具有不用的QoE 需求。如果對不同類型視頻采用統(tǒng)一的QoE 優(yōu)化函數(shù),則難以適應(yīng)各種類型的個性化需求。例如,在網(wǎng)絡(luò)帶寬波動較大時,基于吞吐率的ABR 算法也會頻繁切換碼率,雖然對長視頻的影響不大,但會嚴重影響直播視頻的觀看體驗。在Pensieve 方案[16]中,使用用戶體驗質(zhì)量的相關(guān)指標作為激勵(reward)函數(shù)反饋給碼率決策系統(tǒng),雖然兼顧了各個方面的性能需求,提高了網(wǎng)絡(luò)適應(yīng)性,但也并沒有根據(jù)視頻類型去制定更有針對性的reward 函數(shù),難以為各類視頻提供滿意的用戶體驗質(zhì)量。
本文將視頻分為長視頻、短視頻與直播視頻三類,針對不同視頻類型,通過強化學習方法得到更好的用戶體驗質(zhì)量。使用不同類型視頻的數(shù)據(jù)集訓練強化學習模型,得到不同視頻類型對應(yīng)的reward函數(shù)參數(shù),基于Asynchronous Advatage Actor-Critic(A3C)[18]強化學習模型實現(xiàn)視頻類型區(qū)分的碼率自適應(yīng)算法C-ABR。
流媒體碼率自適應(yīng)算法的目標是提高用戶體驗質(zhì)量。不同類型視頻由于各自的特點和傳輸需求,對用戶體驗質(zhì)量產(chǎn)生不同的影響。為解決該問題,本文提出視頻類型敏感的C-ABR 算法。
C-ABR 算法是基于DASH 視頻流框架的碼率自適應(yīng)算法。整體上包含網(wǎng)絡(luò)參數(shù)處理模塊、模型訓練模塊和碼率選擇模塊3 個部分。C-ABR 算法的部署如圖1 所示。首先網(wǎng)絡(luò)參數(shù)處理模塊采集網(wǎng)絡(luò)狀態(tài)和視頻類型參數(shù),提交給A3C 模型訓練模塊,然后訓練模塊通過訓練輸出ABR 碼率選擇的映射表,最終客戶端依據(jù)映射表和當前網(wǎng)絡(luò)參數(shù)選擇碼率。
圖1 C-ABR 算法部署過程Fig.1 Deployment process of C-ABR algorithm
在系統(tǒng)部署的過程中,本文選擇A3C 算法作為強化學習模型。與DQN[19]等其他強化學習算法相比,A3C算法不需要使用經(jīng)驗池來存儲歷史樣本,節(jié)約了存儲空間。同時,A3C 算法采用異步訓練的模式,提升了訓練速度。
定義激勵(reward)函數(shù)綜合考慮碼率、碼率切換和卡頓時間對用戶體驗質(zhì)量的影響。在強化學習過程中,reward 函數(shù)是影響決策的重要因素,強化學習的每一步行動都會計算當前步數(shù)的reward 函數(shù)值,reward 函數(shù)值越大就表明當前步數(shù)對整個過程的貢獻越大。具體計算公式如式(1)所示:
其中:Rk是第k個視頻塊碼率;q(Rk)是指第k個視頻塊reward 函數(shù)中的碼率得分,碼率代表視頻塊的播放清晰度,碼率越高,表示播放的視頻塊越清晰,進而reward 得分越高為碼率切換懲罰,是指在播放中對清晰度切換事件,在播放過程中,碼率切換越多,懲罰越大;γ×Tn為卡頓懲罰,Tn是指在播放過程出現(xiàn)卡頓事件的時長,卡頓時間越長,reward 函數(shù)值越低。
本文為不同視頻類型設(shè)計相應(yīng)的reward 函數(shù)。首先將碼率、碼率切換與卡頓時間3 項指標全部歸一化。每個視頻塊的碼率轉(zhuǎn)化為其中Rmax是指視頻最高碼率,視頻切換轉(zhuǎn)化為是視頻最低碼率。另外根據(jù)統(tǒng)計,通常視頻塊遭遇卡頓不會超過2 s,所以卡頓歸一化為最終得到歸一化reward 函數(shù)如式(2)所示:
然后將λ1、λ2、λ3全設(shè)定為1,使用Pensieve 算法測試在3 類視頻中各項指標(碼率、碼率切換、卡頓時間)的影響程度。測試數(shù)據(jù)集包含各類視頻500 組樣本,得到不同類視頻各項指標項的平均值。計算各項指標平均值的絕對值,得到各項指標對3 項指標絕對值之和的比值,如圖2 所示。
圖2 不同視頻類型下各指標的影響Fig.2 Influence of each index under different video types
最后將長視頻類型下α、β、γ參數(shù)分別設(shè)置為5、1、1。同時,依據(jù)圖2 所示指標項的影響程度,按各指標項之間的比例關(guān)系分別設(shè)置短視頻和直播視頻的α、β、γ參數(shù),如表1 所示。
表1 視頻類型與α、β、γ 的映射關(guān)系Table 1 Mappin relation between video types and α,β,γ
本文使用A3C 強化學習模型來選擇碼率。如圖3所示,將不同視頻類型的數(shù)據(jù)集分別輸入A3C 訓練模型。輸入數(shù)據(jù)為{Xt,Tt,Nt,et,v,bt},其中:Xt為上個視頻塊的下載吞吐率;Tt為上個視頻塊下載的時間;Nt為下個視頻塊的大??;et為上個視頻塊的重傳時間;v為上個視頻的視頻類型;bt為當前的緩沖池大小。
圖3 A3C 強化學習模型Fig.3 Reinforcement learning model of A3C
A3C 強化模型框架包含2 個部分:Actor 行動模塊和Critic 評判模塊。其中,Actor 行動模塊是執(zhí)行機構(gòu),輸入外部的狀態(tài)S‘t,然后輸出動作a,在模型中表現(xiàn)為下個視頻塊的選擇碼率。而Critic 評判模塊則根據(jù)歷史信息及反饋reward 函數(shù)值進行自我調(diào)整,然后影響整個Actor 行動模塊。A3C 模型在Actor-Critic 框架中還引入了異步訓練的模式,可以同時啟用多個訓練環(huán)境進行訓練,提升模型訓練速度,并使樣本分布更加均勻。
實驗配置:CPU 為Intel i7 7700HQ,RAM 為8 GB,GPU 為Nvidia GTX 1060,GPU加速庫為CUDA 10,實驗系統(tǒng)為Ubuntu 16.04,開發(fā)環(huán)境為Pytorch,開發(fā)工具為Pycharm,開發(fā)語言為Python。
為便于對本文的碼率自適應(yīng)算法進行比較,本文使用L3VTP 仿真器從真實環(huán)境中獲取視頻吞吐量數(shù)據(jù)來進行算法測試。仿真器的輸入包含視頻數(shù)據(jù)集和網(wǎng)絡(luò)數(shù)據(jù)集,用來仿真模擬真實環(huán)境中網(wǎng)絡(luò)的動態(tài)變化。本文視頻數(shù)據(jù)集來自于真實環(huán)境采集,分別從真實環(huán)境中獲取了短視頻、長視頻和直播視頻進行仿真測試。其中各類視頻的樣本數(shù)量約為2 000,模型訓練過程中迭代次數(shù)設(shè)置為20 000,表2所示為視頻樣本范圍。
表2 視頻樣本參數(shù)范圍Table 2 Video sample parameter range
首先使用不同的強化學習模型來比較訓練結(jié)果。從短視頻、長視頻、直播視頻數(shù)據(jù)集各取10 組數(shù)據(jù)分別進行測試,并取其平均結(jié)果。分別用DQN、DDQN[20]、A3C 3種不同的強化學習模型訓練,并統(tǒng)計不同模型的QoE 得分,測試結(jié)果如表3所示。
表3 不同強化學習模型的QoE 得分Table 3 QoE score of different reinforcement learning models
從測試結(jié)果可以看出,A3C 模型在測試中的QoE 得分總體高于DQN、DDQN 模型。其中,對于長視頻,3 種強化學習方法模型最后的得分是比較接近;在直播視頻得分對比中可以看出,A3C 模型效果明顯優(yōu)于DQN 與DDQN 模型;而在短視頻中,A3C模型的優(yōu)勢最為明顯。
然后測試本文C-ABR 算法的性能。對比測試C-ABR、Pensieve 與MPC 3 種算法的性能,結(jié)果如圖4所示
圖4 不同算法在3 類視頻中的結(jié)果Fig.4 Results of different algorithms in three kinds of videos
3 種算法的碼率得分情況如圖4(a)所示,Pensieve和C-ABR 算法相比MPC 算法優(yōu)勢明顯,原因在于:這2 種算法都是基于強化學習的方法,能夠在有限的帶寬資源下,主動選擇高碼率來提升用戶體驗質(zhì)量,使得碼率得分提升。MPC 缺乏準確的網(wǎng)絡(luò)動態(tài)模型,它依賴于簡單的和次優(yōu)的啟發(fā)式方法,導致保守的碼率選擇。而在C-ABR 與Pensieve 的對比中可以看出,短視頻與直播視頻C-ABR 算法的得分更高。
切換懲罰與卡頓懲罰得分如圖4(b)和圖4(c)所示。由于C-ABR 在訓練過程中對視頻進行了分類,在短視頻中C-ABR 將卡頓懲罰系數(shù)提高,因此在短視頻的卡頓懲罰對比中,C-ABR 的卡頓懲罰是最低的。而在直播視頻中,C-ABR 將切換頻次懲罰系數(shù)提高,使得直播的切換頻次懲罰明顯低于其他算法。
QoE 整體得分如圖4(d)所示:在長視頻中,C-ABR與Pensieve 得分相差無幾,在短視頻的對比中,C-ABR比MPC 提升了50.4%,比Pensieve 提升了17.2%;在直播視頻的對比中,C-ABR 比MPC 和Pensieve 分別提升了42.1%和22.7%。
本文提出一種區(qū)分視頻類型特征的碼率選擇算法C-ABR。該算法為不同類型視頻設(shè)計了QoE優(yōu)化函數(shù),并使用A3C 深度強化學習算法選擇視頻碼率。C-ABR可廣泛部署在視頻傳輸框架中,不需要改動現(xiàn)有硬件,有效提升用戶體驗質(zhì)量。實驗結(jié)果表明,與Pensive 算法相比,C-ABR 算法提高了14.7%的用戶體驗質(zhì)量分數(shù)。下一步將考慮使用用戶對不同視頻源的主觀觀看體驗作為選取碼率的依據(jù),制作精準的用戶畫像,并通過設(shè)置優(yōu)先級調(diào)節(jié)網(wǎng)絡(luò)帶寬分配來提升用戶體驗。