Netflix如何使用机器学习来提升流媒体质量?
有個很常見問題是:“為什么需要機器學(xué)習(xí)來提高流媒體質(zhì)量?”
這是一個非常重要的問題,在這篇文章中,Netflix描述了視頻流所面臨的一些技術(shù)挑戰(zhàn),以及如何通過統(tǒng)計模型和機器學(xué)習(xí)技術(shù)來克服這些挑戰(zhàn)。
Netflix現(xiàn)在在全球擁有超過11700萬名會員。超過一半的成員居住在美國以外的地方,為全球觀眾提供高質(zhì)量的流媒體體驗是一項巨大的技術(shù)挑戰(zhàn)。其中很大一部分是在全球范圍內(nèi)安裝和維護服務(wù)器所需的工作,以及用于將內(nèi)容從這些服務(wù)器流式傳輸?shù)接脩粼O(shè)備的算法。隨著Netflix迅速擴展到具有不同觀看行為的觀眾,在具有各種功能的網(wǎng)絡(luò)和設(shè)備上運行,流媒體視頻的“一刀切”解決方案變得越來越不理想。
舉個例子:
移動設(shè)備上的查看/瀏覽行為與智能電視上的不同
蜂窩網(wǎng)絡(luò)可能比固定寬帶網(wǎng)絡(luò)更不穩(wěn)定
某些市場中的網(wǎng)絡(luò)可能會遇到更高程度的擁塞
由于硬件之間的差異,不同的設(shè)備組具有不同的互聯(lián)網(wǎng)連接能力和保真度。
Netflix需要針對這些不同的,經(jīng)常波動的條件調(diào)整方法,以便為所有會員提供高質(zhì)量的體驗。在Netflix會實時觀察網(wǎng)絡(luò)和設(shè)備狀況以及能夠為每個會話提供的用戶體驗(例如視頻質(zhì)量),使Netflix能夠在此領(lǐng)域利用統(tǒng)計建模和機器學(xué)習(xí)。以下是我們在設(shè)備方面面臨的一些技術(shù)挑戰(zhàn)。
網(wǎng)絡(luò)質(zhì)量特性和預(yù)測
網(wǎng)絡(luò)質(zhì)量是比較難以預(yù)測的。雖然網(wǎng)絡(luò)支持的平均帶寬和返回時間是眾所周知的網(wǎng)絡(luò)質(zhì)量指標,但其他特性(如穩(wěn)定性和可預(yù)測性)在視頻流方面有很大差異。對網(wǎng)絡(luò)質(zhì)量進行更豐富的特性分析將有助于分析網(wǎng)絡(luò)(用于定位/分析產(chǎn)品改進),確定初始視頻質(zhì)量/或在整個回放過程中調(diào)整視頻質(zhì)量(更多內(nèi)容見下文)。
以下是在真實觀看會話期間測量的網(wǎng)絡(luò)吞吐量的一些示例。可以看到它們非常嘈雜并且在很大范圍內(nèi)波動。在最近15分鐘的數(shù)據(jù)中,可以預(yù)測未來15分鐘的吞吐量會是什么樣的。我們?nèi)绾握嫌嘘P(guān)網(wǎng)絡(luò)和設(shè)備的長期歷史信息?我們可以從服務(wù)器提供哪種數(shù)據(jù),以讓設(shè)備能夠以最佳方式進行調(diào)整?即使我們無法準確預(yù)測網(wǎng)絡(luò)丟失何時會發(fā)生(突發(fā)情況眾多),我們是否至少可以特定分析吞吐量的分布我們希望看到給定的歷史數(shù)據(jù)?
由于Netflix正在大規(guī)模地觀察這些數(shù)據(jù),因此有可能建立更復(fù)雜的模型,將時間模式識別與各種上下文指標相結(jié)合,以更準確地預(yù)測網(wǎng)絡(luò)質(zhì)量。
如何判斷一個網(wǎng)絡(luò)預(yù)測的APP是否有用,其中一個重要標準就是他能夠幫助我們在播放期間調(diào)整視頻質(zhì)量,下文會具體講述。
播放期間的視頻質(zhì)量自適應(yīng)
電影和電視節(jié)目通常以不同的視頻質(zhì)量編碼來支持不同的網(wǎng)絡(luò)和設(shè)備功能。 自適應(yīng)流媒體算法會根據(jù)當前網(wǎng)絡(luò)和設(shè)備條件來調(diào)整在整個回放過程中流式傳輸?shù)囊曨l質(zhì)量。下圖說明了視頻質(zhì)量自適應(yīng)的設(shè)置。 我們是否可以利用數(shù)據(jù)來確定優(yōu)化體驗質(zhì)量的視頻質(zhì)量?
其實可以通過多種方式測量用戶體驗的質(zhì)量,包括等待視頻播放所花費的初始時間,用戶體驗的整體視頻質(zhì)量,播放暫停以將更多視頻加載到緩沖區(qū)的次數(shù)(“rebuffer”) ,以及播放期間可察覺的質(zhì)量波動量。
上面是視頻質(zhì)量適應(yīng)問題的插圖。 視頻以不同的質(zhì)量編碼(在這種情況下有3種品質(zhì):綠色高,黃色中等,紅色低)。 視頻的每個質(zhì)量版本被劃分為固定持續(xù)時間的塊(灰色框)。 決定為下載的每個塊選擇哪種質(zhì)量。
這些指標可以相互折衷:我們可以選擇積極主動并傳輸高質(zhì)量的視頻,但會增加rebuffer的風(fēng)險。 或者我們可以選擇預(yù)先下載更多視頻,并以增加等待時間為代價來降低rebuffer風(fēng)險。 用戶決策的反饋信號一般是延遲的同時也會比較少。 例如,積極切換到更高質(zhì)量可能不會立即產(chǎn)生影響,但可能逐漸耗盡緩沖區(qū)并最終導(dǎo)致某些情況下的rebuffer事件。 當學(xué)習(xí)最優(yōu)控制算法時,這種“信用分配”問題是眾所周知的挑戰(zhàn),而機器學(xué)習(xí)技術(shù)具有解決這些問題的巨大潛力。
預(yù)測性緩存
統(tǒng)計模型可以改善流媒體傳輸體驗的另一個方式是預(yù)測用戶將播放的內(nèi)容,以便在用戶點擊播放之前將全部或者部分內(nèi)容緩存在設(shè)備上,從而使視頻能夠更快地啟動或以更高的質(zhì)量啟動。 例如,一直在觀看特定劇集的用戶很可能會播放下一個未觀看過的劇集。 通過將他們的觀看歷史的各個方面與最近的用戶交互和其他上下文變量相結(jié)合,可以將其制定為監(jiān)督學(xué)習(xí)模型,通過這個學(xué)習(xí)樣本,我們希望最大可能性模擬用戶緩存可能性以及他最后可能在哪個內(nèi)容節(jié)點上結(jié)束觀看,同時注意緩存以及帶寬的資源約束。 Netflix已經(jīng)看到在使用預(yù)測緩存模型以后用戶等待視頻開始所花費的時間大幅減少。
設(shè)備異常檢測
Netflix可在超過一千種不同類型的設(shè)備上運行,從筆記本電腦到平板電腦,從智能電視到手機。新設(shè)備不斷進入這個生態(tài)系統(tǒng),現(xiàn)有設(shè)備通常會更新其固件或與Netflix應(yīng)用程序中的更改進行交互。這些通常沒有障礙但是在很容易引起用戶體驗問題 - 例如,應(yīng)用程序?qū)o法正常啟動,或者播放的視頻質(zhì)量被降級。此外,隨著時間的推移,設(shè)備質(zhì)量也會逐漸增加。例如,連續(xù)的UI改版可能會逐步降低特定設(shè)備上的性能。
檢測這些變化是一個極具挑戰(zhàn)同時勞動密集型的工作。Alerting frameworks 可以幫我們?nèi)プト』蛘甙l(fā)現(xiàn)一些潛在問題,但是一般情況下這些潛在問題卻很難被界定為是個特別實際需要去解決的問題。“l(fā)iberal”觸發(fā)器可能引發(fā)很多誤報,導(dǎo)致團隊進行大量不必要的手動調(diào)查,但是非常嚴格的觸發(fā)可能會錯過真正的問題。但是事實上我們可以將過往觸發(fā)警報的歷史,以及對應(yīng)問題梳理出來。然后我們可以使用它來訓(xùn)練一個模型,這個模型可以用來預(yù)測在一定測量條件造成事故的可能性。
即便我們確信在觀察的情況一定是個bug存在,但確定根本原因通常也很困難。發(fā)生這個事故的原因是是因為特定ISP還是特定地區(qū)的網(wǎng)絡(luò)質(zhì)量波動?是因為內(nèi)部A B test?還是因為設(shè)備制造商發(fā)布的固件更新?如果可以通過統(tǒng)計建模還可以通過控制各種協(xié)變量來幫助我們確定根本原因。
從Netflix成功實踐來看,通過采用預(yù)測建模來做設(shè)備異常檢測,我們已經(jīng)看到整體警報量大幅減少,同時保持可接受的低錯誤率,極大提高了我們團隊的效率。
統(tǒng)計建模和機器學(xué)習(xí)方法可以大幅度改善現(xiàn)有技術(shù)水平,但依然會有很多困難要去客服:
數(shù)據(jù)量巨大(全球超過11700萬成員)
數(shù)據(jù)是高維的,并且很難為特定問題手工制作最小的信息變量集
數(shù)據(jù)中結(jié)構(gòu)異常豐富,因為本身產(chǎn)品帶來復(fù)雜情況(例如偏好,設(shè)備硬件水平)
為了在在日益多樣化的網(wǎng)絡(luò)和設(shè)備條件下傳輸視頻,解決這些問題將是Netflix的戰(zhàn)略核心。
本篇文章翻譯自【Netflix Techblog】,想要獲取更多產(chǎn)品干貨、技術(shù)干貨,記得關(guān)注網(wǎng)易云信博客。
總結(jié)
以上是生活随笔為你收集整理的Netflix如何使用机器学习来提升流媒体质量?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: http-helloworld
- 下一篇: group_concat默认长度限制