日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

YouTube深度学习推荐系统的十大工程问题

發(fā)布時(shí)間:2024/7/5 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 YouTube深度学习推荐系统的十大工程问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文 | 王喆

源 |?https://zhuanlan.zhihu.com/p/52504407


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

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

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

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

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

這個(gè)問題原文的回答是這樣的

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

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

也歡迎有相關(guān)經(jīng)驗(yàn)的同學(xué)在評(píng)論中給出簡(jiǎn)明的回答。

2、在candidate generation model的serving過程中,YouTube為什么不直接采用訓(xùn)練時(shí)的model進(jìn)行預(yù)測(cè),而是采用了一種最近鄰搜索的方法?

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

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

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

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

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

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

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

文章也驗(yàn)證了,example age這個(gè)feature能夠很好的把視頻的freshness的程度對(duì)popularity的影響引入模型中。

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

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

原文的解答是這樣的,

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.

理由很簡(jiǎn)單,這是為了減少高度活躍用戶對(duì)于loss的過度影響。

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

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

但RNN到底適不適合next watch這一場(chǎng)景,其實(shí)還有待商榷,@嚴(yán)林 大神在上篇文章的評(píng)論中已經(jīng)提到,youtube已經(jīng)上線了以RNN為基礎(chǔ)的推薦模型, 參考論文如下:

https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46488.pdf

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

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

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

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

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

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

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

8、在進(jìn)行video embedding的時(shí)候,為什么要直接把大量長(zhǎng)尾的video直接用0向量代替?

這又是一次工程和算法的trade-off,把大量長(zhǎng)尾的video截?cái)嗟?#xff0c;主要還是為了節(jié)省online serving中寶貴的內(nèi)存資源。當(dāng)然從模型角度講,低頻video的embedding的準(zhǔn)確性不佳是另一個(gè)“截?cái)嗟粢膊荒敲纯上А钡睦碛伞?/p>

當(dāng)然,之前很多同學(xué)在評(píng)論中也提到簡(jiǎn)單用0向量代替并不是一個(gè)非常好的選擇,那么有什么其他方法,大家可以思考一下。

9、針對(duì)某些特征,比如#previous impressions,為什么要進(jìn)行開方和平方處理后,當(dāng)作三個(gè)特征輸入模型?

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

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

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

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

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

  • Example age這個(gè)feature的定義到底是什么?

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

  • 后臺(tái)回復(fù)關(guān)鍵詞【入群

    加入賣萌屋NLP/IR/Rec與求職討論群

    有頂會(huì)審稿人、大廠研究員、知乎大V和妹紙

    等你來撩哦~

    總結(jié)

    以上是生活随笔為你收集整理的YouTube深度学习推荐系统的十大工程问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。