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

AI科技大本營發表於2019-03-04

為什麼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使用三個主要的觀看因素來推薦視訊,它們是使用者的觀看歷史、搜尋記錄以及相關的使用者統計資訊。

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

  3. 排名過濾器主要是基於使用者輸入的因素,其他因素還包括視訊的”新鮮程度“和點選率。

  4. 推薦演算法的設計初衷是持續增加使用者在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

原文連結:

Reverse Engineering The YouTube Algorithm: Part II

相關文章