歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~
線上“看片”時,我們經常會遇到這些事情:視訊畫面突然卡住進入緩衝狀態或者視訊畫面突然變得模糊而不忍直視。這些事情的背後很可能是網路環境突然變差了導致下載速度很慢,也可能是位元速率調整演算法沒有對當前環境做出合理的決策導致。
事實上,如何感知網路環境的變化並作出合理的位元速率調整並非易事。目前很多視訊播放的客戶端都提供了幾種位元速率檔位(標清、高清、超清、藍光等)供使用者自主選擇,在網路環境好時使用者可以自主切到高位元速率檔位,網路環境差時切到低位元速率檔位。當然,有些主流的視訊播放客戶端也提供了自適應(自動)這個選項,比如YouTube,當使用者選擇這個選項後,執行在背後的位元速率自適應演算法會根據當前的網路情況和播放緩衝區等資訊去自適應調整視訊檔位,旨在給使用者提供更好的視訊觀看體驗。事實上,位元速率自適應演算法是學術界近年來的一個研究熱點,音視訊實驗室和企鵝電競團隊也在點播位元速率自適應方法上進行了嘗試和實踐。
一、位元速率自適應技術簡介
圖1:位元速率自適應系統框架
位元速率自適應技術 (Adaptive Bitrate Streaming,ABR)是一種視訊位元速率可以根據網路狀況或客戶端播放buffer情況自動調整的視訊傳輸技術。如圖1所示,一個視訊源通過視訊轉碼器轉成不同的視訊位元速率儲存在web 伺服器,同時每個位元速率的視訊被切割成一個個小的視訊分片,每個分片通常是可單獨解碼播放的視訊內容,分片時長通常介於2秒到10秒之間。視訊播放客戶端首先獲取不同位元速率的切片索引資訊,然後根據當前的網路狀況或者客戶端的播放緩衝區情況自動選擇檔位最匹配的視訊片段下載。
目前,基於HTTP的位元速率自適應技術的實現方式從標準的型別來看主要有兩大類:如圖2所示,一類是企業方案,即提供了整體的技術解決方案,如Apple Live Streaming技術;另一類是一些國際標準組制定的技術標準,如MPEG的DASH(Dynamic Adaptive Streamingover HTTP)。
圖2: 位元速率自適應技術分類
1.1 位元速率自適應演算法的難點
視訊位元速率自適應的目的是為了提高(或者最大化)使用者線上觀看視訊的體驗質量(qualityof experience, QoE),但是使用者體驗質量的定量表達本身也是一個難點。許多研究表明視訊的質量(比如位元速率)、卡頓時間以及切換頻繁度都將影響到使用者的體驗質量。最大化使用者體驗質量可以認為:儘可能最大化視訊位元速率的同時儘量減少視訊卡頓和位元速率檔位切換。而實際上,組成使用者體驗質量的這些因素之間是互相影響甚至存在矛盾,比如使用者如果能長期收到高位元速率的視訊,視訊質量自然會更好,但這又很可能增加視訊卡頓的風險(網路如果變差,播放速度快於後續片段的下載速度)。另外,位元速率自適應調整具有累積效應,前面的位元速率決策會影響到未來的位元速率的決策。因此,一個好的位元速率自適應演算法要兼顧各項指標,快速響應環境變化做出儘可能最優的決策。
1.2 位元速率自適應演算法的分類
位元速率自適應演算法(ABR)一般通過當前的網路狀態或客戶端播放緩衝區情況來動態地調整未來視訊片段的位元速率檔位以期最大化使用者的QoE,近年來的ABR演算法主要分為三類:
- Rate-based: 基於預測的吞吐量去決策下一片段的位元速率檔位,例如FESTIVE,這類方法的主要思想是通過歷史視訊分片下載期間的網路狀況來預測未來的網路頻寬,進而驅動視訊位元速率決策,例如預測頻寬高時選擇高位元速率視訊,預測頻寬低時選擇低位元速率視訊。
- Buffer-based: 基於客戶端的播放緩衝區buffer情況決策下一片段的位元速率檔位,例如BBA、BOLA。
- Hybrid: 混合模式,同時考慮預測吞吐量和buffer資訊決策下一片段的位元速率檔位,例如MPC
傳統的位元速率自適應演算法一般是基於人為設定的固定規則的來進行視訊位元速率檔位的動態調整。其中,單獨基於buffer或者預測頻寬的方法沒有充分利用可用資訊,而結合了兩者資訊的演算法可以獲得相對較好的效果,但其非常依賴於頻寬預測資訊,在頻寬變化劇烈的場景中,準確預測頻寬是非常困難的。基於混合模式的MPC(模型預測控制)演算法雖然可以獲得不錯的結果,但其在求解最優解時計算耗時大,速度慢,在決策動作空間和優化區間步長稍大時,缺點顯現出來。
反觀位元速率自適應過程:首先,視訊播放客戶端會根據當前的網路情況、播放緩衝區大小等因素決定下一個片段的位元速率檔位,然後客戶端執行位元速率決策向CDN伺服器請求對應質量的視訊片段,進行下載,下載的過程中視訊緩衝區也同時在播放消耗。下載完當前片段後,客戶端進入了另外一種狀態(播放緩衝區大小變化、是否卡頓等)且可以據此評價上一個動作的好壞,然後再重新進行新的決策,如此迴圈往復,直到結束。以上過程可以抽象成系統控制或者策略制定的問題。而相對於人為制定策略和控制規則而言,機器學習裡的強化學習不需要人為地設定一些經驗規則或策略邏輯,直接通過與環境的不斷互動中去學習策略,在不斷試錯和經驗總結中學到好的決策和控制模型。本文在研讀業界近年來位元速率自適應演算法的基礎上,重點對基於強化學習的位元速率自適應演算法進行了探索和研究。再進一步討論之前,下面先簡單介紹強化學習的基本概念。
二、強化學習簡介
總所周知,近年來機器學習裡的深度學習在計算機視覺、語音識別和自然語言處理等流域遍地開花,取得了很多突破性的進展。而機器學習從學習訊號區分的話,可以分為:有監督學習、無監督學習和強化學習。強化學習是系統從環境學習以使得獎勵期望最大的機器學習。強化學習和有監督學習的不同在於教師訊號。強化學習的教師訊號是動作的獎勵,有監督學習的教師訊號是正確的動作。舉個例子,在貓狗分類時,對於一張圖片是哪種動物,有監督學習給的訊號是這張圖片的真正label是貓或者狗。而基於強化學習的圍棋AI中,在某種局面下,我們並沒有確切的答案告訴你,一定要落子在哪裡,而是可能會反饋給你落子在何處時的價值估計。
圖3: 強化學習基本框架
強化學習(Reinforcement learning, RL)的基本思路是通過最大化智慧體(Agent)從環境中獲得的累計獎賞值,以學習到完成目標的最優策略。強化學習側重於學習解決問題的策略,是制定策略或者系統控制的通用框架,其通過和環境的不斷互動和動作嘗試來調整和優化策略決策,一般由智慧體Agent、環境Environment、動作action、執行動作後環境反饋的觀察狀態S和立即獎懲reward組成,其學習的過程可以描述為:(1)在每個時刻,agent與環境互動得到一個環境的狀態觀察St,並利用DL(深度學習)等方法來感知觀察,以得到狀態S的抽象特徵表示;(2)基於某種策略將當前狀態對映為相應的動作,並基於期望回報來評價各動作的價值(3)環境對此動作做出反應,得到新的觀察狀態St+1並反饋上一個動作at的立即獎賞reward(rt)。通過不斷迴圈以上過程,不斷試錯和學習,以期得到實現目標的最優策略。
三、基於Actor-Critic框架的位元速率自適應演算法
近兩年,隨著深度學習的火熱和應用領域的延伸,學術界也嘗試利用機器學習的方法來解決位元速率自適應問題。其中,MIT的電腦科學和人工智慧實驗室在基於AI的位元速率自適應演算法上做了創新性的嘗試並取得了不錯的結果,受到他們思路的啟發,我們也在基於AI的位元速率自適應演算法進行了實踐探索。本文基於強化學習的位元速率自適應演算法中採用的是Actor-Critic的策略梯度方法來進行策略的學習,下圖4是基於Actor-Critic框架的位元速率自適應演算法的模型框架。
圖4:基於Actor-Critic框架的ABR演算法模型
在AC框架中,actor(演員)網路進行策略決策,學習狀態state到動作的對映關係,而critic(評論家)負責價值估計,即估計價值函式。策略決策和價值估計需要在訓練過程中迭代優化,一開始actor的策略可能隨機,critic也沒有好的打分規則。但是由於reward的存在,critic評分隨著訓練的進行會越來越準,actor的決策表現也會越來越好,最終學習到好的策略。
在模型訓練過程中, reward訊號的設計是非常重要的,在不同reward下模型學習到的策略也就會有差異。本文希望解決的問題是如何在點播系統中最大化視訊觀看使用者的體驗質量(QoE),而研究表明:視訊的質量(位元速率高低)、rebuffering(重新緩衝)以及檔位切換的平滑性都將影響到使用者體驗的質量,因此在設計reward時,可以由這些因素共同決定。
模型輸入的狀態資訊也是非常重要的點,結合reward的設計,模型狀態輸入資訊主要包括:吞吐量資訊、播放緩衝區資訊等。
如圖4所示,輸入狀態經過actor網路和critic網路後輸出的分別是策略動作(位元速率檔位)和價值估計,而在實際部署只需要策略決策時,僅保留訓練好的actor網路。在實際的模型訓練時,採用的是A3C(Asynchronous AdvantageActor-Critic)架構進行快速有效的模型訓練。
四、預研結果和分析
模型訓練和測試的吞吐量資料由寬頻網路資料和移動(3G\4G)網路資料組成,訓練集和測試集均包含了100多種網路資料。圖5和圖6展示了在該測試集上基於強化學習的模型1和模型2對比傳統方法MPC(採用表現較好的robustMPC)的結果。總平均reward代表了在100多種網路情況下,視訊播放過程中客戶端的累計獎勵值的平均。模型1和模型2相對於robustMPC分別有約6.4%和8.8%的提升。
圖5:100多種網路狀態下(6種位元速率檔位)的測試結果對比
圖6:100多種網路狀態下(6種位元速率檔位)的測試結果對比(reward組成因素分解)
圖6中對組成總平均reward的各個因素進行分解,可以看到傳統方法的robustMPC雖然在總平均位元速率獎勵上比強化學習模型1和2要高,但與此同時帶來的重新緩衝(rebuffering)的風險也更高,導致rebuffering的懲罰明顯多於其他兩種模型。而基於強化學習的ABR模型1和2能夠更好地兼顧各項因素使得累計獎勵到達更高。
圖5和圖6的結果都是基於資料庫的頻寬資訊進行測試的,為了驗證在實際場景中的應用效果,我們將強化學習的位元速率自適應演算法應用於DASH點播系統中,在真實的網路損傷環境下驗證各種演算法模型的表現:在視訊播放客戶端和視訊伺服器之間的視訊下載的網路鏈路上分別新增了限速、丟包、抖動和時延等損傷環境進行測試,結果如圖7所示。相對而言,在真實的損傷場景中,模型1和模型2的整體表現比robustMPC穩定,在損傷場景的測試集上,模型1和模型2相對於robustMPC分別有約9.2%和8.9%的提升。結果和需要注意的是,我們的模型是離線使用資料庫中有限的頻寬資料進行模擬訓練的,將其直接應用在實際環境中的表現說明了其具有不錯的泛化性。
圖7:真實系統和損傷網路環境測試集下模型的測試結果
五、線上實踐和效果
在上述預研的基礎上,我們將本文介紹的基於強化學習的位元速率自適應演算法應用於企鵝電競的點播業務(HTTP+HLS),用於決策客戶端當前應該下載的視訊片段的檔位(例標清、高清、超清等)。為了提升使用者體驗,電競團隊聯合騰訊雲團隊做了“幀對齊”的優化工作,實現點播過程的無縫切換效果。圖8是針對電競點播業務部署的點播AI流控系統,預測伺服器負責位元速率決策和下發檔位,並向訓練服推送訓練資料,訓練服負責模型訓練和模型同步。
圖8:點播AI流控系統
實際的線上資料統計對比如下:
表1:流控後臺打分演算法統計的效果對比(對比傳統演算法)
表2:流控後臺打分演算法統計的效果對比(對比非流控模式)
以上表格1和表格2結果顯示:
•AI模型的總得分比傳統MPC演算法增加約6%, 超清檔位佔比增加約5%,且卡頓和切換懲罰更小
•AI模型的總得分比非流控模式增加約18%,超清檔位佔比增加約6%~14%左右,且卡頓和切換懲罰明顯更小
注:表格2是關閉MPC傳統演算法後,AI模型演算法對比非流控模式(使用者自主選擇檔位)的統計資料。
表3:電競客戶端打分演算法統計的效果對比
以上表格3結果顯示:
• AI流控的總分比非流控模式增加約4.9分
• 清晰度:超清檔位佔比增加約8.4%
• 流暢度:
1)AI流控較非AI無緩衝率得分高約12分,無緩衝率高約8%
2)AI流控較非AI二次緩衝每小時比率的得分高約8分
上述結果表明,基於強化學習的AI演算法在點播流控的應用中,能夠更好地兼顧位元速率、卡頓和切換因素,在提供更高清晰度體驗的同時,也能更好地避免卡頓的產生,從而提供給使用者更好的視訊觀看體驗。
六、小結和展望
本文簡要介紹了基於強化學習的位元速率自適應演算法,在實踐預研驗證和分析的基礎上,將該AI演算法模型應用於實際專案。在音視訊實驗室和企鵝電競團隊等的共同努力下,在基於AI的點播流控探索和實踐上,取得了初步的成效。而如何在直播、實時通話系統中進行更好的位元速率自適應調整值得我們進一步研究和探索。
問答
相關閱讀
此文已由作者授權騰訊雲+社群釋出,原文連結:https://cloud.tencent.com/developer/article/1153315?fromSource=waitui
歡迎大家前往騰訊雲+社群或關注雲加社群微信公眾號(QcloudCommunity),第一時間獲取更多海量技術實踐乾貨哦~
海量技術實踐經驗,盡在雲加社群! https://cloud.tencent.com/developer?fromSource=waitui