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 如何使用机器学习来提升流媒体质量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何使用 Javascript/node
- 下一篇: MCtalk对话学霸君:在线教育“1对多