Deep Neural Networks for youtube Recommendations 精讀筆記

背景

youtube視頻推薦碰到的挑戰(zhàn):

  1. 大數(shù)據(jù)量酱床,涉及到海量的用戶和視頻缠劝,需要高效的分布式學(xué)習(xí)算法和線上服務(wù)系統(tǒng);
  2. 新鮮度驹沿,包括新上傳的視頻和利用用戶最新的交互記錄,平衡新舊視頻的推薦蹈胡;
  3. 噪聲渊季,用戶的行為記錄很少,并且受到外部影響罚渐,不易預(yù)測却汉,用戶滿意度不好定義,上傳內(nèi)容包含很多非結(jié)構(gòu)化數(shù)據(jù)荷并。

模型涉及 10億參數(shù)合砂,千億樣本。
之前的方法有矩陣分解璧坟、協(xié)同過濾

系統(tǒng)概述

整體流程

論文構(gòu)建的推薦系統(tǒng)分為兩個(gè)部分:候選集生成和排序既穆,即常說的召回和排序兩個(gè)步驟赎懦,召回從百萬級(jí)的視頻中快速精確的找到數(shù)百的視頻雀鹃,排序?qū)@數(shù)百個(gè)視頻進(jìn)行精排序,最后將排名靠前的呈現(xiàn)為用戶励两。
這樣設(shè)計(jì)的好處是使得推薦系統(tǒng)可以應(yīng)用于大數(shù)據(jù)量的情況黎茎,并且保證個(gè)性化和用戶滿意的推薦的結(jié)果,此外当悔,還可以融合之前方法得到的候選集傅瞻。

候選集生成

候選集生成模型

文章以每個(gè)視頻為一個(gè)類別,問題看成是大規(guī)模的多分類問題盲憎,分為線上和線下兩個(gè)部分嗅骄。

線下訓(xùn)練

訓(xùn)練目標(biāo)

在線下訓(xùn)練時(shí)計(jì)算了在給定用戶U和上下文C的情況下,用戶選擇觀看第i個(gè)視頻的概率饼疙,用softmax函數(shù)表示如下:



其中vi表示第i個(gè)視頻的embedding溺森,u表示用戶和上下文的embedding,對(duì)二者做內(nèi)積窑眯,然后計(jì)算softmax得到看第i個(gè)視頻的概率屏积。從圖中的可以看到,用戶和上下文的向量是模型最后一層的輸出磅甩,視頻的向量是后面接的softmax層的連接權(quán)重炊林,在訓(xùn)練時(shí)二者都可以得到更新,類似于word2vec的設(shè)置卷要。


label設(shè)計(jì)

既然是多分類模型渣聚,就必然需要區(qū)分正類和負(fù)類独榴。文中以是否看完某個(gè)視頻作為區(qū)分標(biāo)準(zhǔn),看完了為正奕枝,否則為負(fù)括眠,雖然youtube有其他反映用戶滿意度的反饋信號(hào),如點(diǎn)贊倍权、調(diào)查等掷豺,但是這些信號(hào)很少,正樣本會(huì)很少薄声,不利于模型的訓(xùn)練当船,尤其是長尾視頻。

損失函數(shù)

文章采用的損失函數(shù)是交叉熵默辨,但是對(duì)百萬量級(jí)的來說德频,計(jì)算成本過高。文章采用了負(fù)采樣的方式降低計(jì)算量缩幸,采樣了數(shù)千的負(fù)樣本壹置,速度加快了100倍以上。
負(fù)采樣和分層softmax是常見的加快訓(xùn)練速度的方法表谊,文章為什么沒有采用分層的softmax呢钞护,理論上是因?yàn)榉謱拥膕oftmax每層節(jié)點(diǎn)之間通常是不相關(guān)的,分類更困難爆办,實(shí)際上的實(shí)驗(yàn)也確實(shí)沒有達(dá)到負(fù)采樣的效果难咕。

輸入特征

模型的輸入特征是用戶和上下文信息,主要包括用戶看過的視頻embedding累加求平均距辆、搜索過的詞做uni-gram和bi-gram的embedding累加求平均余佃、人口統(tǒng)計(jì)信息和example age等,其中前兩者利用了用戶的歷史信息跨算,在實(shí)際實(shí)驗(yàn)中取的窗口大小為50爆土,embedding維度為256,取平均也是因?yàn)楸惹蠛椭畈稀⑶笞畲笾档鹊膶?shí)驗(yàn)效果更好步势;人口統(tǒng)計(jì)信息是為了新用戶的冷啟動(dòng),example age表示到樣本出現(xiàn)到現(xiàn)在的時(shí)間挫望,線上時(shí)值為0立润,它可以更好的擬合用戶對(duì)新視頻的偏好,用戶其實(shí)是偏好于新的視頻媳板,即使于用戶之前的觀看興趣不太相符桑腮,而且推薦系統(tǒng)往往有推薦歷史數(shù)據(jù)的偏好,加入這個(gè)特征可以很好的進(jìn)行修復(fù)這一點(diǎn)蛉幸。


example age特征的作用

數(shù)據(jù)處理上破讨,神經(jīng)網(wǎng)絡(luò)對(duì)數(shù)據(jù)的范圍和分布比較敏感丛晦,更適合處理連續(xù)特征。稀疏的id特征經(jīng)過embedding變成稠密的連續(xù)值提陶,簡單的連續(xù)特征也被標(biāo)準(zhǔn)化到[0,1]烫沙。

樣本構(gòu)造

在構(gòu)造訓(xùn)練樣本時(shí),并非只選用推薦視頻的播放情況隙笆,那樣會(huì)讓推薦系統(tǒng)偏向之前推薦過的視頻锌蓄,過于exploitation而缺少了exploration。文章選取了所有的播放記錄撑柔,甚至嵌入在別的網(wǎng)站上的播放記錄瘸爽,這樣做的好處是便于新視頻的推薦,能利用上用戶最新的動(dòng)作铅忿。
為了不讓少量觀看次數(shù)多的用戶主導(dǎo)了損失函數(shù)剪决,每個(gè)用戶都構(gòu)造了相同數(shù)量的訓(xùn)練樣本,達(dá)到統(tǒng)一權(quán)重的目的檀训。
在預(yù)測的目標(biāo)上柑潦,文章并沒有從用戶的一系列觀看時(shí)間節(jié)點(diǎn)中隨便選一個(gè),用之前和之后的觀看記錄特征進(jìn)行預(yù)測峻凫,而是預(yù)測用戶的下一個(gè)觀看的視頻渗鬼,防止信息泄露。


模型結(jié)構(gòu)

模型是一個(gè)多層的塔式NN結(jié)構(gòu)蔚晨,文章依次增加隱層的寬度和深度乍钻,直到效果不能提升肛循、不能收斂铭腕、超出算力,在構(gòu)造時(shí)多糠,每一層的隱藏層節(jié)點(diǎn)依次減半累舷,實(shí)驗(yàn)效果如下圖,可以看到隨著深度的增加和特征的增加夹孔,效果逐漸變好被盈。



線上預(yù)測

在進(jìn)行線上預(yù)測時(shí),因?yàn)闀r(shí)間和性能的限制搭伤,通過網(wǎng)絡(luò)計(jì)算得到用戶和上下文的向量后只怎,不能對(duì)每個(gè)視頻都計(jì)算softmax得分。
文章在訓(xùn)練時(shí)通過內(nèi)積限制兩個(gè)embedding在相同空間怜俐,對(duì)訓(xùn)練時(shí)得到的視頻向量身堡,選擇了點(diǎn)積空間中的最近鄰的近似評(píng)價(jià)方式,經(jīng)過實(shí)驗(yàn)驗(yàn)證拍鲤,實(shí)驗(yàn)效果對(duì)最近鄰算法的選擇并不敏感贴谎。
Note:
雖然跑一遍就可以得到每個(gè)視頻的softmax得分汞扎,這樣的時(shí)間復(fù)雜度還是過高,softmax逐個(gè)進(jìn)行向量內(nèi)積運(yùn)算加排序擅这,復(fù)雜度應(yīng)該是nlogn級(jí)別的澈魄。但使用LSH這種ANN(Approximate Nearest Neighbo)的方法,建立索引后的復(fù)雜度甚至可以低到 logN甚至常數(shù)級(jí)別的仲翎。NN只是對(duì)argtop_k u'vj的近似痹扇,NN近似讓人感覺u,v屬于同一個(gè)space,但是u和v應(yīng)該不是同一個(gè)空間溯香,有點(diǎn)像rowspace和nullspace的關(guān)系帘营。|u-v|^2=|u|^2+|v|^2-2u'v,可見u'v和NN還差了一項(xiàng)|v|^2逐哈,假設(shè)|v|^2是正態(tài)分布芬迄,可以按|v|^2分成3組做ANN近鄰搜索,|v|^2<u-sigma昂秃,>u-sigma and between禀梳,這樣近似更精確。文章說k~幾百肠骆,所以ANN非乘阃荆快,k相對(duì)大(2k)的時(shí)候蚀腿,很有可能還是u'V算起來更快嘴瓤。

新的視頻可以不走這樣的召回,通過其他方式分發(fā)給用戶莉钙,然后根據(jù)用戶的embedding去反推廓脆。〈庞瘢或者用雙端模型停忿,引入物品側(cè)的特征,像用戶端一樣也訓(xùn)練一個(gè)nn結(jié)構(gòu)蚊伞,新的視頻只要有特征就可以過nn結(jié)構(gòu)embedding了

排序

排序部分模型架構(gòu)整體上候選集生成部分類似席赂,主要區(qū)別在于訓(xùn)練和預(yù)測的目標(biāo)、設(shè)計(jì)的特征时迫。


label和訓(xùn)練目標(biāo)

文章在排序部分使用了期望的觀看時(shí)長作為預(yù)測目標(biāo)颅停,沒有采用點(diǎn)擊率,因?yàn)辄c(diǎn)擊率可能會(huì)把一些標(biāo)題黨等騙點(diǎn)擊的視頻推薦給用戶掠拳。ranking模型通過加權(quán)的LR給每個(gè)視頻都賦予了一個(gè)得分癞揉,根據(jù)得分的高低排序依次展示給用戶。
在實(shí)際建模中,因?yàn)橛玫搅薒R烧董,所以依然要設(shè)置正例和負(fù)例毁靶,文章將點(diǎn)擊的視頻當(dāng)作正例,沒有點(diǎn)擊的視頻當(dāng)作負(fù)例逊移,為了預(yù)測期望的觀看時(shí)長预吆,對(duì)正例賦予觀看時(shí)長的權(quán)重,負(fù)例的權(quán)重均設(shè)成單位權(quán)重胳泉。
在線下訓(xùn)練時(shí)拐叉,依然采用了交叉熵作為損失函數(shù),線上就直接通過參數(shù)點(diǎn)成計(jì)算扇商,然后求以e為底凤瘦,目標(biāo)值為冪的值,剛好表示了期望時(shí)長案铺。


原文的描述

特征工程

排序階段相對(duì)于候選集生成階段需要處理的視頻數(shù)量大幅降低蔬芥,可以使用更多的特征。主要包含的特征如結(jié)構(gòu)圖所示控汉,其中要展示的video和看過的video時(shí)共享embedding的笔诵,用戶的語言和視頻的語言也是共享embedding的,其他的還包括視頻的來源姑子、視頻在候選集生成階段的得分乎婿、上次觀看這個(gè)視頻的時(shí)間、看過這個(gè)視頻的次數(shù)等街佑。
值得注意的有以下幾點(diǎn):

  1. 用戶部分特征計(jì)算一次就可以谢翎,但是視頻因?yàn)榘芏鄠€(gè),特征就需要計(jì)算幾百次沐旨。
  2. 用戶之前對(duì)該視頻和該視頻相關(guān)的頻道森逮、主題等的交互特征非常重要并且泛化性能很好,比如看過多少次希俩、上次什么時(shí)候看的吊宋。
  3. 用戶看過多少次這個(gè)特征可以防止總是給用戶推薦這個(gè)視頻。
  4. embedding的維度可以設(shè)置成id數(shù)目的對(duì)數(shù)個(gè)颜武,很少出現(xiàn)的視頻的embedding可以設(shè)置成全0,節(jié)省計(jì)算資源拖吼。
  5. 同類id共享embedding可以提升泛化性能鳞上,加速訓(xùn)練和節(jié)省計(jì)算資源。
  6. 過多使用序列信息可能會(huì)導(dǎo)致用戶總是看到某一種視頻吊档,文章拋棄了序列性這一點(diǎn)篙议,將歷史信息打亂作為特征(當(dāng)時(shí)應(yīng)該是沒有很好的掌握序列信息的使用方法,現(xiàn)在經(jīng)過attention的使用已經(jīng)克服了這樣的缺陷)。
  7. 文中使用的標(biāo)準(zhǔn)化方法是采用了累積分布鬼贱,并做了平方和開跟的非線性變化移怯,增加模型的表達(dá)能力,在實(shí)驗(yàn)中也驗(yàn)證了做非線性變換的好處这难。


模型結(jié)構(gòu)的實(shí)驗(yàn)

文章評(píng)價(jià)loss用的是正例被分錯(cuò)的觀看時(shí)長占整體


其他內(nèi)容

線下的指標(biāo)往往和線上的情況不符舟误,可以通過對(duì)點(diǎn)擊率、觀看時(shí)長等評(píng)價(jià)方式進(jìn)行修改去近似判斷用戶是否滿意姻乓。
預(yù)測目標(biāo)是非常關(guān)鍵的嵌溢,指明了大方向

參考資料:
https://research.google.com/pubs/archive/45530.pdf
https://zhuanlan.zhihu.com/p/52169807
https://zhuanlan.zhihu.com/p/52504407

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蹋岩,隨后出現(xiàn)的幾起案子赖草,更是在濱河造成了極大的恐慌,老刑警劉巖剪个,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秧骑,死亡現(xiàn)場離奇詭異,居然都是意外死亡扣囊,警方通過查閱死者的電腦和手機(jī)腿堤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來如暖,“玉大人笆檀,你說我怎么就攤上這事『兄粒” “怎么了酗洒?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長枷遂。 經(jīng)常有香客問我樱衷,道長,這世上最難降的妖魔是什么酒唉? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任矩桂,我火速辦了婚禮,結(jié)果婚禮上痪伦,老公的妹妹穿的比我還像新娘侄榴。我一直安慰自己,他們只是感情好网沾,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布癞蚕。 她就那樣靜靜地躺著,像睡著了一般辉哥。 火紅的嫁衣襯著肌膚如雪桦山。 梳的紋絲不亂的頭發(fā)上攒射,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音恒水,去河邊找鬼会放。 笑死,一個(gè)胖子當(dāng)著我的面吹牛钉凌,可吹牛的內(nèi)容都是我干的咧最。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼甩骏,長吁一口氣:“原來是場噩夢啊……” “哼窗市!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起饮笛,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤咨察,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后福青,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體摄狱,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年无午,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了媒役。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宪迟,死狀恐怖酣衷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情次泽,我是刑警寧澤穿仪,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站意荤,受9級(jí)特大地震影響啊片,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜玖像,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一紫谷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧捐寥,春花似錦笤昨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至睡互,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背就珠。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國打工寇壳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人妻怎。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓壳炎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親逼侦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匿辩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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