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

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】,想要獲取更多產品乾貨、技術乾貨,記得關注網易雲信博客。


網易雲信(NeteaseYunXin)是集網易18年IM以及音視頻技術打造的PaaS服務產品,來自網易核心技術架構的通信與視頻雲服務,穩定易用且功能全面,致力於提供全球領先的技術能力和場景化解決方案。開發者通過集成客戶端SDK和雲端OPEN API,即可快速實現包含IM、音視頻通話、直播、點播、互動白板、簡訊等功能。


推薦閱讀:

機器學習-線性回歸與邏輯回歸
Nature機器學習子刊被諷開歷史倒車,Jeff Dean等數百學者簽名抵制
Datalore初體驗:JetBrains的雲端機器學習開發環境
機器學習筆記029 | 核函數

TAG:Netflix | 流媒體 | 機器學習 |