本人微信公眾號(hào)為“推薦算法學(xué)習(xí)筆記”谁撼,定期推出經(jīng)典推薦算法文章娃胆,歡迎關(guān)注与倡。
本文介紹的是YouTube的經(jīng)典深度推薦算法論文《Deep Neural Networks for YouTube Recommendations》距帅,論文地址https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/45530.pdf
一. Youtube推薦系統(tǒng)架構(gòu)
youtube推薦系統(tǒng)架構(gòu)圖如下所示
可以看到Y(jié)ouTube的推薦系統(tǒng)分為了兩個(gè)階段
階段1:召回階段(candidate generation)抖仅,負(fù)責(zé)從海量的視頻當(dāng)中挑選出用戶可能感興趣的候選視頻交煞,一般幾十到幾百不等
階段2:精排階段(ranking)咏窿,對(duì)階段1生成的候選視頻進(jìn)行排序,最終返回topK視頻給用戶
下面分別對(duì)召回階段和精排階段進(jìn)行詳細(xì)介紹
二.召回階段
召回階段的模型如下所示
召回階段的目標(biāo)是為每個(gè)用戶生成1個(gè)user vector和為每個(gè)視頻生成1個(gè)video vector素征。然后利用公式
就可以求出用戶u對(duì)視頻v的感興趣程度集嵌。
(1)怎么生成user vector?利用用戶的歷史數(shù)據(jù)行為和上下文特征御毅,經(jīng)過多層神經(jīng)網(wǎng)絡(luò)的輸出就是user vector
(2)怎么生成video vector纸淮?采用的是類似word2vec的方法,如下圖所示
輸入是user vector, 輸出是每一個(gè)視頻用戶會(huì)點(diǎn)擊的概率亚享,然后使用negative sample的方法進(jìn)行訓(xùn)練就可以得到每個(gè)視頻的video vector
(3)我們可以將所有用戶的user vector和所有視頻的video vector存儲(chǔ)起來咽块,這樣在serving的時(shí)候就可以直接取出來直接計(jì)算用戶感興趣的候選視頻。由于視頻的數(shù)量巨大欺税,一般采用局部敏感哈希等方法來加速計(jì)算
三.精排階段
精排階段的模型如下所示
可以看到模型采用的一個(gè)非常簡(jiǎn)單的DNN侈沪。但是值得注意的是它的預(yù)測(cè)目標(biāo)是視頻的平均觀看時(shí)長(zhǎng)(點(diǎn)擊率*觀看時(shí)長(zhǎng)),為了達(dá)到這個(gè)預(yù)測(cè)目標(biāo),可以看到它采用的是weight logistics regression晚凿,serving的時(shí)候采用的exp(Wx+b)亭罪。那么它們是怎么推出來的呢?推導(dǎo)過程如下圖所示
四.Tricks
1.訓(xùn)練的時(shí)候歼秽,每個(gè)用戶的訓(xùn)練樣本數(shù)量是相同的应役,這樣是為了防止少部分高度活躍的用戶主導(dǎo)損失函數(shù)。
2.在表示search query的時(shí)候燥筷,故意丟失掉序列信息箩祥,直接使用無序的bag of tokens,這樣有助于模型的exploitation肆氓。
3.把predicting held-out watch改成predicting future watch袍祖,可以防止overfit和使訓(xùn)練效果更好。如圖所示
4. 同樣的分類特征共享同一個(gè)embedding空間谢揪。例如"用戶看過的視頻Id"和"用戶展示過的視頻Id"這兩個(gè)特征蕉陋,“用戶語言”和“視頻語言”這兩個(gè)特征,它們的embedding都取自同一個(gè)embeding空間拨扶,如圖所示
5.對(duì)于連續(xù)的特征凳鬓,使用累計(jì)概率密度的方法對(duì)其進(jìn)行轉(zhuǎn)換到[0,1),同時(shí)并將開根號(hào)患民,平方后的值也加入到訓(xùn)練缩举,如圖所示
6.增加example age特征,即(當(dāng)前最大訓(xùn)練樣本的時(shí)間-樣本展示的時(shí)間)。增加后可以準(zhǔn)確預(yù)估出用戶感興趣的視頻的時(shí)間分布蚁孔,如圖所示
五.總結(jié)
以上就是YouTube深度推薦模型的一些Tricks奶赔,如果有問題和文章有錯(cuò)誤,歡迎和我交流杠氢。
本人微信公眾號(hào)為“推薦算法學(xué)習(xí)筆記”站刑,定期推出經(jīng)典推薦算法文章,歡迎關(guān)注鼻百。