原來YouTube推薦系統的內幕是這樣……

原來YouTube推薦系統的內幕是這樣……

為什麼YouTube平臺上會源源不斷產生優質視頻和優質廣告,真的只是偶然嗎?為什麼用戶一上youTube就黏住了,這背後到底下了多大的功夫研究人性的細節?如此海量的數據,如何精準地推送給每一個恰當的人?

這篇文章是繼我們上一篇《可怕!YouTube算法如何讓小孩沉迷到不可自拔……》後,作者(Adrienne LaFrance)的又一篇力作。上一篇文章中,作者通過自己的直觀分析和數據調研對YouTube的推薦系統進行了猜想,而這一篇是YouTub推出關於自家推薦系統的論文後,作者對其的驗證、補足和進一步解析。這篇文章的信息密度大,但讀起來並不會索然無味,而且讀完會真正收穫到非常有用的信息。

以下,enjoy!

翻譯 | AI科技大本營(rgznai100)

參與 | 聶震坤

2016年9月18日,在波士頓舉辦的第10屆ACM推薦系統大會(ACM’s RecSys ‘16)上,來自Google的一個研究團隊公佈了YouTube推薦系統的深度學習論文:Deep Neural Networks for YouTube Recommendations

論文地址:

https://research.google.com/pubs/pub45530.html

論文作者是Google的軟件工程師 Jay Adams 與高級軟件工程師 Paul Covington、Embre Sargin,他們向業界展示了YouTube在機器學習推薦算法上的深度神經網絡使用情況。該論文涉及到一些非常技術、非常高級的細節,但它最大的意義是為我們完整描繪了YouTube推薦算法的工作原理!!該論文細緻、審慎地描述了YouTube檢索、篩選並推薦視頻時的大量細節。

算法論文的UP主解析

YouTube工程師發佈在ACM上的算法論文,目標受眾顯然不是我們這些UP主。但為了流量,閱讀並理解該算法的內容,並讓它來為我們UP主們服務就顯得義不容辭了。接下來就看我們如何從UP主的角度來解析這篇算法論文。

在論文公佈之前,我們上一篇分析YouTube算法的文章(詳見AI科技大本營的譯文:《想讓視頻網站乖乖幫你推內容?看看這位小哥是如何跟YouTube鬥法的》),關注的主要是觀看時長這一個因素,因為我們只能從自己上傳的視頻數據中來反推YouTube算法的工作原理,這肯定要受限於我們視頻的內容和受眾。我們之所以瞭解YouTube的算法,是因為我們解決了一下做視頻路上碰到的這個問題:“為什麼我們的視頻就能這麼成功呢?”為此,我們盡最大努力來分析已有的信息,但最初的結果並不理想。儘管我100%支持我們的結論,但我們先前的方法存在兩大問題:

  1. 僅用頻道指標的一部分來做反推,意味著我們在數據上存在巨大的盲點,畢竟我們無法訪問競爭性指標、會話指標與點擊率。

  2. 對於那些基於UP主的指標,YouTube算法所給的權重非常小。它更關心的是觀眾以及單個視頻的指標。換句話說,該算法並不關心你所上傳的視頻,而是關心你和其他人正在看的視頻。

但在我們寫最初那篇文章的時候,YouTube或Google數年來都沒公佈過有關該算法的任何信息。所以,我們只有自己動手。有了Google新近公佈的這篇論文,我們就可以一窺它推薦機制的究竟,並找出其中的重要指標。希望這能回答一個讓我們更為辛酸的問題,“為什麼有些視頻能取得成功?”

深度學習是個無底洞

論文簡介部分最大的亮點是YouTube確實在用深度學習來驅動推薦算法。這種做法不新鮮,但此次確認證實了大家此前的猜測。作者在論文開頭是這樣說的:

在本論文中,我們將集中介紹深度學習對YouTube視頻推薦系統的全面影響……跟Google其他領域的產品一樣,YouTube同樣經歷了用深度學習來解決所有通用學習問題的根本性範式轉變。

這就意味著,今後人工調整算法、人工權衡這些調整並將其部署上世界最大的視頻分享網站的機會將越來越少。而是由算法實時來讀取數據、為視頻排名,然後基於這些排名來推薦視頻。所以,當YouTube表示他們不知道算法為什麼那樣做時,有可能他們確實不知道。

兩大神經網絡

該論文以算法的基本架構作為開篇,下面是作者的圖示:

原來YouTube推薦系統的內幕是這樣……

本質上這就是兩個大的過濾器,各自有著不同的輸入。作者寫道:

該系統由兩大神經網絡組成,一個用於生成候選視頻,一個用來對其排名。

這兩個過濾器及其輸入內容,基本上決定了用戶在YouTubes上能看到的每一個視頻:建議你播放的下一個、推薦給你的視頻列表、你所瀏覽的視頻列表……

第一個過濾器是候選生成器。論文中解釋,候選是基於用戶的YouTube活動記錄產生的,也就是用戶的觀看歷史與觀看時長。候選生成器還會考慮相似用戶的瀏覽記錄,這一點被稱為協同過濾。相似用戶是算法通過視頻ID、搜索關鍵詞及相關的用戶統計信息決定出來的。

候選生成器的通過率僅為屬百分之一,換言之,如果某個視頻能從數百個中脫穎而出成為你的候選視頻,它必定是跟你的觀看記錄有關,同時還有一個跟你相似的用戶已經看過它。

第二個是排名過濾器。該論文對排名過濾器進行了大量的深度解析,並列j舉出不少有趣的因素。作者寫道,排名過濾器是這樣給視頻排名的:

基於描述視頻和用戶的豐富特徵,目標期望函數會給每個視頻設定分數。根據分數排名,得分最高的視頻將被展示給用戶。

由於觀看時長是YouTube為用戶設定的首要目標,我們只好假定這就是“目標期望函數”的意義。因此,考慮到各種不同的用戶輸入,該分數的意義就是某視頻能夠轉化成用戶觀看時長的程度。但不幸的是,事情沒有那麼簡單。根據作者透露,該算法還會考慮很多其他的因素。

我們在排名過濾器中用到了數百種特徵。

如何對視頻進行排名這一塊的數學原理非常複雜。論文既沒有詳述排名過濾器所用的數百項因素,又沒有提及他們是如何加權的。但它列舉了其中的三大主要因素:瀏覽記錄、搜索記錄、觀看人數,以及包括新鮮程度在內的其他視頻元素。

每一秒鐘都有大量的視頻上傳到YouTube。向用戶推薦這些最新上傳的新鮮內容,對YouTube來說極其重要。我們長期觀察的結果是,用戶喜歡新鮮的內容,即便有些內容跟他的關聯程度並不大。

論文中提到的比較有趣的一點,是算法並不總會受用戶所看的上一個視頻的影響,除非你的觀看記錄極其有限。

我們會優先使用用戶的隨機觀看和關鍵詞搜索記錄,然後才會考慮上一個觀看視頻的數據。

在論文後面討論視頻封面圖和標題的時候,他們提到了點擊率的問題:

舉例來說,用戶有很大的機率來觀看系統推薦的視頻,但不太可能基於封面圖的選擇而去點擊其主頁……我們最終的排名會根據實時A/B測試的結果不斷調整,它大體上就是一個用於預測用戶觀看時長的簡單函數。

在這裡提出點擊率的問題其實並未出乎預料。為了能生成更多觀看時間,一個視頻必須先讓人看到才成,其中最好的辦法就是做出一個很讚的縮略圖並相出一個很讚的標題。這讓很多UP主都認為點擊率對於視頻在算法中的排名極其重要。

但YouTube知道點擊率是可以人為刷上去的,所以他們也給出了應對之策。他們在論文中是這麼承認的:

通過點擊率進行排名往往會變相鼓勵誘導性的視頻內容,用戶即便點進去也很少看完視頻,因而觀看時長能更反映出視頻的好壞。

起碼這一機制還算鼓舞人心(譯註:對比一下國內某些網站的內容生產機制),作者接下來寫到:

如果用戶並未觀看最近推薦的視頻,頁面下一次加載時模型就會自動降低該視頻的排名。

這就說明,如果用戶沒有點擊特定的視頻,該算法就不再將其推薦給相似的用戶。頻道推薦的情況也一樣,論文中的證據如下:

我們觀察到的最為重要的信號是用來描述用戶此前跟某個視頻及其他相似視頻的交互的……舉例來說,考慮一下用戶跟某個頻道已經被算法打分過的視頻的交互記錄:該頻道有多少視頻被該用戶看過?該用戶觀看同類話題的上一個視頻是在什麼時間?此類描述用戶過往活動的數據特別強大……

此外,該論文還指出,算法在訓練時考慮了YouTube視頻所有的觀看方式,包括那些推薦算法觸及不到的地方:

訓練數據生成自所有觀看方式的YouTube視頻(包括內嵌在其他網頁中的那些),而非僅用我們自己所生成推薦視頻。否則,新內容將很難登上推薦榜單,而推薦系統又將過於依賴過往視頻的數據。如果用戶通過內容查找到的視頻不同於我們的推薦,我們就需要能迅速通過推薦系統把該發現傳播給其他用戶。

最終,這一切又回到了算法所用的觀看時間。正如我們在論文開頭所看到的,該算法在設計之初就是一個“目標期望函數”,作者總結“我們的目標就是為了預測用戶的觀看時長”,“我們最終的排名會根據實時A/B測試的結果不斷調整,它大體上就是一個用於預測用戶觀看時長的簡單函數。”

這也再一次說明了視頻觀看時間之於算法的重要性,該算法的目的就是為了YouTube網站上能有更多、更長的視頻以及更多、更長的用戶觀看時間。

一個簡單的回顧

講了這麼多,讓我們簡單回顧一下:

  1. YouTube使用三個主要的觀看因素來推薦視頻,它們是用戶的觀看歷史、搜索記錄以及相關的用戶統計信息。

  1. 推薦視頻是通過候選生成器與排名過濾器的篩選出來的,這兩大過濾器決定了YouTube如何讀取、篩選視頻,如何生成推薦列表。

  1. 排名過濾器主要是基於用戶輸入的因素,其他因素還包括視頻的”新鮮程度“和點擊率。

  1. 推薦算法的設計初衷是持續增加用戶在YouTube網站的觀看時長,其方法是持續把視頻A/B測試的實時結果不斷反饋給神經網絡,從而使YouTube能不斷為用戶推薦它大體上就是一個用於預測用戶觀看時長的簡單函數。

如果你還不明白,咱們就再舉一個例子

我們用一個實例來說明這個推薦系統具體是如何運作的:

比如說,小明很喜歡YouTube,他有YouTube賬號相關的一切。每天瀏覽YouTube時,他都會在瀏覽器登錄。一旦登錄,YouTube便給小明此次瀏覽的內容創建三個token:瀏覽記錄、搜索記錄以及關於他的統計信息。小明可能壓根就不知道這三種數據的存在。

然後輪到候選生成器上場了。YouTube拿這三個token的值跟觀看記錄類似於小明的用戶進行對比,由此篩選出小明可能會喜歡的數百個視頻,過濾掉YouTube視頻庫中數以百萬計的其他內容。

接下來,基於視頻和小明的相關性,這些視頻被排名算法排序。排序時該算法會考慮這樣一些問題:小明有多大的可能會打開這個視頻?這個視頻有沒有可能讓小明在YouTube上打發更多時間?這個視頻的新鮮程度如何?小明最近在YouTube上的活動程度如何?還有數百個其他的問題。

經過YouTube算法的讀取、篩選和推薦後,排名最高的視頻將被推薦給小明。之後小明看與不看的選擇數據都會反饋給神經網絡,以供算法後續使用。視頻被點開,並吸引小明在YouTube上打發更多時間的目標,則一直持續下去。那些小明沒有點開的推薦視頻,等他下次登錄網站時則有可能通不過候選生成器。

總結

Deep Neural Networks for YouTube Recommendations這篇論文讀起來很棒,它第一次讓人從源頭直擊YouTube推薦算法的內幕!!我們希望能接觸到更多的論文,以便在為這個平臺製作內容的時候能做出更好的選擇。這也是願意花時間來寫這些內容的根本原因。畢竟,更適合該平臺的內容就意味著更多的瀏覽量、更高的收入,從而讓我們能有更多的資源來為數以十億計的用戶製作出品質更高、更有吸引力的內容。

作者 | Matt Gielen

原文鏈接:

http://www.tubefilter.com/2017/02/16/youtube-algorithm-reverse-engineering-part-ii/

相關推薦

推薦中...