Youtube DNN的靈魂拷問

Youtube DNN解析

上圖左上角是線上召回服務(wù)的方法卸耘。模型訓(xùn)練好后,Item Embedding就是一個(gè)Embedding table择葡,將其存儲(chǔ)到redis等數(shù)據(jù)庫中肴茄。線上召回時(shí),用戶Embedding通過調(diào)用模型計(jì)算(最后一個(gè)ReLU的輸出)偏形,實(shí)時(shí)返回用戶Embedding静袖;而Item Embedding則直接在數(shù)據(jù)庫中調(diào)取(模型訓(xùn)練完后是個(gè)靜態(tài)的embedding table)俊扭。

Embedding放到redis队橙,只是存儲(chǔ)方法。線上相似度檢索并不是直接從幾百萬Embedding中計(jì)算相似度萨惑,一般都是基于ANN檢索(近似最鄰近檢索)捐康,比如使用Facebook的向量檢索工具Faiss,離線構(gòu)建索引庸蔼,然后計(jì)算每個(gè)用戶最鄰居的K個(gè)Item解总,最后再把每個(gè)用戶最鄰近的K個(gè)Item存儲(chǔ)到redis中,線上直接查找K個(gè)結(jié)果就可以姐仅。

表示學(xué)習(xí)

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

簡(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

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)嗟簦饕€是為了節(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茬暇?

impression video ID embedding: 當(dāng)前要計(jì)算的video的embedding

watched video IDs average embedding: 用戶觀看過的最后N個(gè)視頻embedding的average pooling

language embedding: 用戶語言的embedding和當(dāng)前視頻語言的embedding

time since last watch: 自上次觀看同channel視頻的時(shí)間

#previous impressions: 該視頻已經(jīng)被曝光給該用戶的次數(shù)

因?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的近似巧骚,完美赊颠。

11、Example age這個(gè)feature的定義到底是什么网缝?

是為了體現(xiàn)新穎性巨税,上線時(shí)置0

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

我們知道,user embedding的shape就是[bs,emb_size]扼仲,其中bs是一個(gè)batch中user的個(gè)數(shù)(其實(shí)user embedding就是[1,emb_size])远寸。而embedding table的shape是[emb_size,N]抄淑,N就是上面說到的11,及多分類的類別總數(shù)驰后。這個(gè)embedding table就是Item Embedding的table肆资,它的每一列都是一個(gè)Item embedding。于是我們有[bs,emb_size] * [emb_size, N]灶芝,得到[bs,N],參與到交叉熵的計(jì)算中郑原。獲取embedding的方式,和word2vec中embedding table的生成是一樣的夜涕。

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

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

也歡迎有相關(guān)經(jīng)驗(yàn)的同學(xué)在評(píng)論中給出更好的回答,本文參考了王喆等多位大佬的文章丧诺。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末入桂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子锅必,更是在濱河造成了極大的恐慌事格,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搞隐,死亡現(xiàn)場(chǎng)離奇詭異驹愚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)劣纲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門逢捺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人癞季,你說我怎么就攤上這事劫瞳。” “怎么了绷柒?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵志于,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我废睦,道長(zhǎng)伺绽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮奈应,結(jié)果婚禮上澜掩,老公的妹妹穿的比我還像新娘。我一直安慰自己杖挣,他們只是感情好肩榕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著惩妇,像睡著了一般株汉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上屿附,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天郎逃,我揣著相機(jī)與錄音,去河邊找鬼挺份。 笑死,一個(gè)胖子當(dāng)著我的面吹牛贮懈,可吹牛的內(nèi)容都是我干的匀泊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼朵你,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼各聘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起抡医,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤躲因,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后忌傻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體大脉,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年水孩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了镰矿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡俘种,死狀恐怖秤标,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宙刘,我是刑警寧澤苍姜,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站悬包,受9級(jí)特大地震影響衙猪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一屈嗤、第九天 我趴在偏房一處隱蔽的房頂上張望潘拨。 院中可真熱鬧,春花似錦饶号、人聲如沸铁追。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽琅束。三九已至,卻和暖如春算谈,著一層夾襖步出監(jiān)牢的瞬間涩禀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工然眼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留艾船,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓高每,卻偏偏與公主長(zhǎng)得像屿岂,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鲸匿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容