Netflix如何使用機器學習來提高流媒體質量?

有個很常見問題是:「爲何須要機器學習來提升流媒體質量?」
這是一個很是重要的問題,在這篇文章中,Netflix描述了視頻流所面臨的一些技術挑戰,以及如何經過統計模型和機器學習技術來克服這些挑戰。
Netflix如今在全球擁有超過11700萬名會員。超過一半的成員居住在美國之外的地方,爲全球觀衆提供高質量的流媒體體驗是一項巨大的技術挑戰。其中很大一部分是在全球範圍內安裝和維護服務器所需的工做,以及用於將內容從這些服務器流式傳輸到用戶設備的算法。隨着Netflix迅速擴展到具備不一樣觀看行爲的觀衆,在具備各類功能的網絡和設備上運行,流媒體視頻的「一刀切」解決方案變得愈來愈不理想。算法

舉個例子:緩存

移動設備上的查看/瀏覽行爲與智能電視上的不一樣
蜂窩網絡可能比固定寬帶網絡更不穩定
某些市場中的網絡可能會遇到更高程度的擁塞
因爲硬件之間的差別,不一樣的設備組具備不一樣的互聯網鏈接能力和保真度。服務器

Netflix須要針對這些不一樣的,常常波動的條件調整方法,以便爲全部會員提供高質量的體驗。在Netflix會實時觀察網絡和設備情況以及可以爲每一個會話提供的用戶體驗(例如視頻質量),使Netflix可以在此領域利用統計建模和機器學習。如下是咱們在設備方面面臨的一些技術挑戰。網絡

網絡質量特性和預測
網絡質量是比較難以預測的。雖然網絡支持的平均帶寬和返回時間是衆所周知的網絡質量指標,但其餘特性(如穩定性和可預測性)在視頻流方面有很大差別。對網絡質量進行更豐富的特性分析將有助於分析網絡(用於定位/分析產品改進),肯定初始視頻質量/或在整個回放過程當中調整視頻質量(更多內容見下文)。機器學習

如下是在真實觀看會話期間測量的網絡吞吐量的一些示例。能夠看到它們很是嘈雜而且在很大範圍內波動。在最近15分鐘的數據中,能夠預測將來15分鐘的吞吐量會是什麼樣的。咱們如何整合有關網絡和設備的長期歷史信息?咱們能夠從服務器提供哪一種數據,以讓設備可以以最佳方式進行調整?即便咱們沒法準確預測網絡丟失什麼時候會發生(突發狀況衆多),咱們是否至少能夠特定分析吞吐量的分佈咱們但願看到給定的歷史數據?性能

因爲Netflix正在大規模地觀察這些數據,所以有可能創建更復雜的模型,將時間模式識別與各類上下文指標相結合,以更準確地預測網絡質量。學習

如何判斷一個網絡預測的APP是否有用,其中一個重要標準就是他可以幫助咱們在播放期間調整視頻質量,下文會具體講述。優化

播放期間的視頻質量自適應
電影和電視節目一般以不一樣的視頻質量編碼來支持不一樣的網絡和設備功能。 自適應流媒體算法會根據當前網絡和設備條件來調整在整個回放過程當中流式傳輸的視頻質量。下圖說明了視頻質量自適應的設置。 咱們是否能夠利用數據來肯定優化體驗質量的視頻質量?編碼

其實能夠經過多種方式測量用戶體驗的質量,包括等待視頻播放所花費的初始時間,用戶體驗的總體視頻質量,播放暫停以將更多視頻加載到緩衝區的次數(「rebuffer」) ,以及播放期間可察覺的質量波動量。翻譯

上面是視頻質量適應問題的插圖。 視頻以不一樣的質量編碼(在這種狀況下有3種品質:綠色高,黃色中等,紅色低)。 視頻的每一個質量版本被劃分爲固定持續時間的塊(灰色框)。 決定爲下載的每一個塊選擇哪一種質量。
這些指標能夠相互折衷:咱們能夠選擇積極主動並傳輸高質量的視頻,但會增長rebuffer的風險。 或者咱們能夠選擇預先下載更多視頻,並以增長等待時間爲代價來下降rebuffer風險。 用戶決策的反饋信號通常是延遲的同時也會比較少。 例如,積極切換到更高質量可能不會當即產生影響,但可能逐漸耗盡緩衝區並最終致使某些狀況下的rebuffer事件。 當學習最優控制算法時,這種「信用分配」問題是衆所周知的挑戰,而機器學習技術具備解決這些問題的巨大潛力。

預測性緩存
統計模型能夠改善流媒體傳輸體驗的另外一個方式是預測用戶將播放的內容,以便在用戶點擊播放以前將所有或者部份內容緩存在設備上,從而使視頻可以更快地啓動或以更高的質量啓動。 例如,一直在觀看特定劇集的用戶極可能會播放下一個未觀看過的劇集。 經過將他們的觀看歷史的各個方面與最近的用戶交互和其餘上下文變量相結合,能夠將其制定爲監督學習模型,經過這個學習樣本,咱們但願最大可能性模擬用戶緩存可能性以及他最後可能在哪一個內容節點上結束觀看,同時注意緩存以及帶寬的資源約束。 Netflix已經看到在使用預測緩存模型之後用戶等待視頻開始所花費的時間大幅減小。

設備異常檢測
Netflix可在超過一千種不一樣類型的設備上運行,從筆記本電腦到平板電腦,從智能電視到手機。新設備不斷進入這個生態系統,現有設備一般會更新其固件或與Netflix應用程序中的更改進行交互。這些一般沒有障礙可是在很容易引發用戶體驗問題 - 例如,應用程序將沒法正常啓動,或者播放的視頻質量被降級。此外,隨着時間的推移,設備質量也會逐漸增長。例如,連續的UI改版可能會逐步下降特定設備上的性能。

檢測這些變化是一個極具挑戰同時勞動密集型的工做。Alerting frameworks 能夠幫咱們去抓取或者發現一些潛在問題,可是通常狀況下這些潛在問題卻很難被界定爲是個特別實際須要去解決的問題。「liberal」觸發器可能引起不少誤報,致使團隊進行大量沒必要要的手動調查,可是很是嚴格的觸發可能會錯過真正的問題。可是事實上咱們能夠將過往觸發警報的歷史,以及對應問題梳理出來。而後咱們可使用它來訓練一個模型,這個模型能夠用來預測在必定測量條件形成事故的可能性。

即使咱們確信在觀察的狀況必定是個bug存在,但肯定根本緣由一般也很困難。發生這個事故的緣由是是由於特定ISP仍是特定地區的網絡質量波動?是由於內部A B test?仍是由於設備製造商發佈的固件更新?若是能夠經過統計建模還能夠經過控制各類協變量來幫助咱們肯定根本緣由。

從Netflix成功實踐來看,經過採用預測建模來作設備異常檢測,咱們已經看到總體警報量大幅減小,同時保持可接受的低錯誤率,極大提升了咱們團隊的效率。

統計建模和機器學習方法能夠大幅度改善現有技術水平,但依然會有不少困難要去客服:

數據量巨大(全球超過11700萬成員)
數據是高維的,而且很難爲特定問題手工製做最小的信息變量集
數據中結構異常豐富,由於自己產品帶來複雜狀況(例如偏好,設備硬件水平)
爲了在在日益多樣化的網絡和設備條件下傳輸視頻,解決這些問題將是Netflix的戰略核心。

本篇文章翻譯自【Netflix Techblog】,想要獲取更多產品乾貨、技術乾貨,記得關注網易雲信博客。

相關文章
相關標籤/搜索