中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

YouTube 深度學習推薦系統(tǒng)的十大工程問題

2019-01-17    來源:raincent

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

作者:王喆 ?

因為這篇文章主要介紹了 YouTube 深度學習系統(tǒng)論文中的十個工程問題,為了方便進行問題定位,我們還是簡單介紹一下背景知識,簡單回顧一下 Deep Neural Networks for YouTube Recommendations中介紹的 YouTube 深度學習推薦系統(tǒng)的框架。

 

 

YouTube 推薦系統(tǒng)架構(gòu)

簡單講,YouTube 的同學們構(gòu)建了兩級推薦結(jié)構(gòu)從百萬級別的視頻候選集中進行視頻推薦,第一級 candidate generation model 負責“初篩”,從百萬量級的視頻庫中篩選出幾百個候選視頻,第二級 ranking model 負責“精排”,引入更多的 feature 對幾百個候選視頻進行排序。

不管是 candidate generation model 還是 ranking model 在架構(gòu)上都是 DNN 的基本結(jié)構(gòu),不同的是輸入特征和優(yōu)化目標不同。但正如我在上一篇文章中講的,如果你僅讀懂了 YouTube 的模型架構(gòu),至多獲得了 30% 的價值,剩下 70% 的價值就在于下面的十大工程問題。廢話不多說,我們進入問題的解答。

1、文中把推薦問題轉(zhuǎn)換成多分類問題,在預測 next watch 的場景下,每一個備選 video 都會是一個分類,因此總共的分類有數(shù)百萬之巨,這在使用 softmax 訓練時無疑是低效的,這個問題 YouTube 是如何解決的?

這個問題原文的回答是這樣的

We rely on a technique to sample negative classes from the background distribution (“candidate sampling”) and then correct for this sampling via importance weighting.

簡單說就是進行了負采樣(negative sampling)并用 importance weighting 的方法對采樣進行 calibration。文中同樣介紹了一種替代方法,hierarchical softmax,但并沒有取得更好的效果。當然關(guān)于采樣的具體技術(shù)細節(jié)以及優(yōu)劣可能再開一篇文章都講不完,感興趣的同學可以參考tensorflow 中的介紹以及NLP 領(lǐng)域的經(jīng)典論文

也歡迎有相關(guān)經(jīng)驗的同學在評論中給出簡明的回答。

2、在 candidate generation model 的 serving 過程中,YouTube 為什么不直接采用訓練時的 model 進行預測,而是采用了一種最近鄰搜索的方法?

這個問題的答案是一個經(jīng)典的工程和學術(shù)做 trade-off 的結(jié)果,在 model serving 過程中對幾百萬個候選集逐一跑一遍模型的時間開銷顯然太大了,因此在通過 candidate generation model 得到 user 和 video 的 embedding 之后,通過最近鄰搜索的方法的效率高很多。我們甚至不用把任何 model inference 的過程搬上服務器,只需要把 user embedding 和 video embedding 存到 redis 或者內(nèi)存中就好了。

但這里我估計又要求助場外觀眾了,在原文中并沒有介紹得到 user embedding 和 video embedding 的具體過程,只是在架構(gòu)圖中從 softmax 朝 model serving module 那畫了個箭頭(如下圖紅圈內(nèi)的部分),到底這個 user vector 和 video vector 是怎么生成的?有經(jīng)驗的同學可以在評論中介紹一下。

 

 

Candidate Generation Model, video vector 是如何生成的?

3、Youtube 的用戶對新視頻有偏好,那么在模型構(gòu)建的過程中如何引入這個 feature?

為了擬合用戶對 fresh content 的 bias,模型引入了“Example Age”這個 feature,文中其實并沒有精確的定義什么是 example age。按照文章的說法猜測的話,會直接把 sample log 距離當前的時間作為 example age。比如 24 小時前的日志,這個 example age 就是 24。在做模型 serving 的時候,不管使用那個 video,會直接把這個 feature 設成 0。大家可以仔細想一下這個做法的細節(jié)和動機,非常有意思。

當然我最初的理解是訓練中會把 Days since Upload 作為這個 example age,比如雖然是 24 小時前的 log,但是這個 video 已經(jīng)上傳了 90 小時了,那這個 feature value 就是 90。那么在做 inference 的時候,這個 feature 就不會是 0,而是當前時間每個 video 的上傳時間了。

我不能 100% 確定文章中描述的是那種做法,大概率是第一種。還請大家踴躍討論。

文章也驗證了,example age 這個 feature 能夠很好的把視頻的 freshness 的程度對 popularity 的影響引入模型中。

 

 

從上圖中我們也可以看到,在引入“Example Age”這個 feature 后,模型的預測效力更接近經(jīng)驗分布;而不引入 Example Age 的藍線,模型在所有時間節(jié)點上的預測趨近于平均,這顯然是不符合客觀實際的。

4、在對訓練集的預處理過程中,YouTube 沒有采用原始的用戶日志,而是對每個用戶提取等數(shù)量的訓練樣本,這是為什么?

原文的解答是這樣的,

Another key insight that improved live metrics was to generate a xed number of training examples per user, e ectively weighting our users equally in the loss function. This prevented a small cohort of highly active users from dominating the loss.

理由很簡單,這是為了減少高度活躍用戶對于 loss 的過度影響。

5、YouTube 為什么不采取類似 RNN 的 Sequence model,而是完全摒棄了用戶觀看歷史的時序特征,把用戶最近的瀏覽歷史等同看待,這不會損失有效信息嗎?

這個原因應該是 YouTube 工程師的“經(jīng)驗之談”,如果過多考慮時序的影響,用戶的推薦結(jié)果將過多受最近觀看或搜索的一個視頻的影響。YouTube 給出一個例子,如果用戶剛搜索過“tayer swift”,你就把用戶主頁的推薦結(jié)果大部分變成 tayer swift 有關(guān)的視頻,這其實是非常差的體驗。為了綜合考慮之前多次搜索和觀看的信息,YouTube 丟掉了時序信息,講用戶近期的歷史紀錄等同看待。

但 RNN 到底適不適合 next watch 這一場景,其實還有待商榷,@嚴林 大神在上篇文章的評論中已經(jīng)提到,youtube 已經(jīng)上線了以 RNN 為基礎的推薦模型, 參考論文如下: https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46488.pdf

看來時隔兩年,YouTube 對于時序信息以及 RNN 模型有了更多的掌握和利用。

6、在處理測試集的時候,YouTube 為什么不采用經(jīng)典的隨機留一法(random holdout),而是一定要把用戶最近的一次觀看行為作為測試集?

這個問題比較好回答,只留最后一次觀看行為做測試集主要是為了避免引入 future information,產(chǎn)生與事實不符的數(shù)據(jù)穿越。

7、在確定優(yōu)化目標的時候,YouTube 為什么不采用經(jīng)典的 CTR,或者播放率(Play Rate),而是采用了每次曝光預期播放時間(expected watch time per impression)作為優(yōu)化目標?

這個問題從模型角度出發(fā),是因為 watch time 更能反應用戶的真實興趣,從商業(yè)模型角度出發(fā),因為 watch time 越長,YouTube 獲得的廣告收益越多。而且增加用戶的 watch time 也更符合一個視頻網(wǎng)站的長期利益和用戶粘性。

這個問題看似很小,實則非常重要,objective 的設定應該是一個算法模型的根本性問題,而且是算法模型部門跟其他部門接口性的工作,從這個角度說,YouTube 的推薦模型符合其根本的商業(yè)模型,非常好的經(jīng)驗。

我之前在領(lǐng)導一個算法小組的時候,是要花大量時間與 Business 部門溝通 Objective 的設定問題的,這是路線方針的問題,方向錯了是要讓組員們很多努力打水漂的,一定要慎之又慎。

8、在進行 video embedding 的時候,為什么要直接把大量長尾的 video 直接用 0 向量代替?

這又是一次工程和算法的 trade-off,把大量長尾的 video 截斷掉,主要還是為了節(jié)省 online serving 中寶貴的內(nèi)存資源。當然從模型角度講,低頻 video 的 embedding 的準確性不佳是另一個“截斷掉也不那么可惜”的理由。

當然,之前很多同學在評論中也提到簡單用 0 向量代替并不是一個非常好的選擇,那么有什么其他方法,大家可以思考一下。

9、針對某些特征,比如 #previous impressions,為什么要進行開方和平方處理后,當作三個特征輸入模型?

這是很簡單有效的工程經(jīng)驗,引入了特征的非線性。從 YouTube 這篇文章的效果反饋來看,提升了其模型的離線準確度。

10、為什么 ranking model 不采用經(jīng)典的 logistic regression 當作輸出層,而是采用了 weighted logistic regression?

因為在第 7 問中,我們已經(jīng)知道模型采用了 expected watch time per impression 作為優(yōu)化目標,所以如果簡單使用 LR 就無法引入正樣本的 watch time 信息。因此采用 weighted LR,將 watch time 作為正樣本的 weight,在線上 serving 中使用 e(Wx+b) 做預測可以直接得到 expected watch time 的近似,完美。

十個問題全部答完,希望對大家有幫助。其實在上一篇文章拋出這十個問題的時候,已經(jīng)有諸位大神做出了很好的回答,感謝 @做最閑的咸魚 @嚴林 @吳海波。最后增加一個思考環(huán)節(jié),大家可以討論一下下面的問題:

1. 本論文中,用于 candidate generation 網(wǎng)絡 serving 部分的 user embedding vector 和 video embedding vector 是怎么生成的?

2. Example age 這個 feature 的定義到底是什么?

3. 除了用 0 向量 embedding 替代長尾內(nèi)容,有沒有其他好的方法?

標簽: Google 服務器 搜索 網(wǎng)絡

版權(quán)申明:本站文章部分自網(wǎng)絡,如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:李開復接:中國做AI最大優(yōu)勢是數(shù)據(jù),未來15年40%的工作被取代

下一篇:如何開始一個數(shù)據(jù)科學項目?