丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能開(kāi)發(fā)者 正文
發(fā)私信給汪思穎
發(fā)送

0

YouTube 深度學(xué)習(xí)推薦系統(tǒng)的十大工程問(wèn)題

本文作者: 汪思穎 2018-12-26 15:14
導(dǎo)語(yǔ):如果你僅讀懂了 YouTube 的模型架構(gòu),至多獲得了 30% 的價(jià)值,剩下 70% 的價(jià)值就在于文中的十大工程問(wèn)題。

雷鋒網(wǎng) AI 科技評(píng)論按,本文作者王喆,本文首發(fā)于知乎專欄王喆的機(jī)器學(xué)習(xí)筆記,雷鋒網(wǎng) AI 科技評(píng)論獲得作者授權(quán)轉(zhuǎn)載。

這篇文章主要介紹了 YouTube 深度學(xué)習(xí)系統(tǒng)論文中的十個(gè)工程問(wèn)題,為了方便進(jìn)行問(wèn)題定位,我們還是簡(jiǎn)單介紹一下背景知識(shí),簡(jiǎn)單回顧一下 Deep Neural Networks for YouTube Recommendations 中介紹的 YouTube 深度學(xué)習(xí)推薦系統(tǒng)的框架。(更詳細(xì)的信息,請(qǐng)參見(jiàn)重讀 Youtube 深度學(xué)習(xí)推薦系統(tǒng)論文,字字珠璣,驚為神文

YouTube 深度學(xué)習(xí)推薦系統(tǒng)的十大工程問(wèn)題

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

簡(jiǎn)單講,YouTube 的同學(xué)們構(gòu)建了兩級(jí)推薦結(jié)構(gòu)從百萬(wàn)級(jí)別的視頻候選集中進(jìn)行視頻推薦,第一級(jí) candidate generation model 負(fù)責(zé)“初篩”,從百萬(wàn)量級(jí)的視頻庫(kù)中篩選出幾百個(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à)值就在于下面的十大工程問(wèn)題。廢話不多說(shuō),我們進(jìn)入問(wèn)題的解答。

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

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

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)單說(shuō)就是進(jìn)行了負(fù)采樣(negative sampling)并用 importance weighting 的方法對(duì)采樣進(jìn)行 calibration。文中同樣介紹了一種替代方法,hierarchical softmax,但并沒(méi)有取得更好的效果。當(dāng)然關(guān)于采樣的具體技術(shù)細(xì)節(jié)以及優(yōu)劣可能再開(kāi)一篇文章都講不完,感興趣的同學(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 過(guò)程中,YouTube 為什么不直接采用訓(xùn)練時(shí)的 model 進(jìn)行預(yù)測(cè),而是采用了一種最近鄰搜索的方法?

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

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

YouTube 深度學(xué)習(xí)推薦系統(tǒng)的十大工程問(wèn)題

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

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

為了擬合用戶對(duì) fresh content 的 bias,模型引入了“Example Age”這個(gè) feature,文中其實(shí)并沒(méi)有精確的定義什么是 example age。按照文章的說(shuō)法猜測(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 作為 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 的影響引入模型中。

YouTube 深度學(xué)習(xí)推薦系統(tǒng)的十大工程問(wèn)題

從上圖中我們也可以看到,在引入“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ù)處理過(guò)程中,YouTube 沒(méi)有采用原始的用戶日志,而是對(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 的過(guò)度影響。

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

這個(gè)原因應(yīng)該是 YouTube 工程師的“經(jīng)驗(yàn)之談”,如果過(guò)多考慮時(shí)序的影響,用戶的推薦結(jié)果將過(guò)多受最近觀看或搜索的一個(gè)視頻的影響。YouTube 給出一個(gè)例子,如果用戶剛搜索過(guò)“tayer swift”,你就把用戶主頁(yè)的推薦結(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

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

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

這個(gè)問(wèn)題比較好回答,只留最后一次觀看行為做測(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è)問(wèn)題從模型角度出發(fā),是因?yàn)?watch time 更能反映用戶的真實(shí)興趣,從商業(yè)模型角度出發(fā),因?yàn)?watch time 越長(zhǎng),YouTube 獲得的廣告收益越多。而且增加用戶的 watch time 也更符合一個(gè)視頻網(wǎng)站的長(zhǎng)期利益和用戶粘性。

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

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

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

這又是一次工程和算法的 trade-off,把大量長(zhǎng)尾的 video 截?cái)嗟簦饕€是為了節(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)行開(kāi)方和平方處理后,當(dāng)作三個(gè)特征輸入模型?

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

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

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

十個(gè)問(wèn)題全部答完,希望對(duì)大家有幫助。其實(shí)在上一篇文章拋出這十個(gè)問(wèn)題的時(shí)候,已經(jīng)有諸位大神做出了很好的回答,感謝

@做最閑的咸魚(yú)

@嚴(yán)林

@吳海波

最后增加一個(gè)思考環(huán)節(jié),大家可以討論一下下面的問(wèn)題:

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

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

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

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。

YouTube 深度學(xué)習(xí)推薦系統(tǒng)的十大工程問(wèn)題

分享:
相關(guān)文章

編輯

關(guān)注AI學(xué)術(shù),例如論文
當(dāng)月熱門(mén)文章
最新文章
請(qǐng)?zhí)顚?xiě)申請(qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)