愛鋒貝

標(biāo)題: Task3:召回模型 YoutubeDNN, DSSM [打印本頁]

作者: 科技閻羅    時間: 2022-6-30 21:03
標(biāo)題: Task3:召回模型 YoutubeDNN, DSSM
(, 下載次數(shù): 11)

  召回系統(tǒng)決定了最終呈現(xiàn)給用戶的推薦大致范圍,后續(xù)的操作都是在物料庫中取出的資料的基礎(chǔ)上繼續(xù)排序。當(dāng)然,每個部分都很重要。本文中涉及到的YoutubeDNN和DSSM模型都是召回模型中的經(jīng)典案例。其中YoutubeDNN更是經(jīng)典中的經(jīng)典,其論文對初學(xué)者非常友好,詳細地講述了整個漏斗模型的流程,以及在工業(yè)上線時的注意事項及其原因。而DSSM簡單雙塔結(jié)構(gòu),在我看來更易于工業(yè)實踐和理解,其模型更加輕量級,而且線上線下模型分離,穩(wěn)定性高的同時支持自動化構(gòu)建。
YoutubeDNN模型

  YoutubeDNN模型有著非常經(jīng)典的漏斗結(jié)構(gòu):

(, 下載次數(shù): 14)

  首先召回,然后精排
召回系統(tǒng)設(shè)計

  它的輸入主要是用戶側(cè)的特征,包括用戶觀看的歷史video序列, 用戶搜索的歷史tokens, 然后就是用戶的人文特征,比如地理位置, 性別,年齡這些。 這些特征處理上,和之前那些模型的也比較類似,
  這些特征處理好了之后,拼接起來,就成了一個非常長的向量,然后就是過DNN,這里用了一個三層的DNN, 得到了輸出, 這個輸出也是向量。
  在整套系統(tǒng)的設(shè)計過程有有一些非常精妙的設(shè)計:
召回模型中加入Example Age特征

  這個特征很有意思,其代表目前時間(也就是推送時間)與資源發(fā)布時間的差值,不僅加入了對新舊資源的考量,而且,最有意思的地方是,在上線時這個特征被設(shè)置為0或者一個適當(dāng)?shù)呢?fù)數(shù)。這樣設(shè)計引導(dǎo)網(wǎng)絡(luò),相當(dāng)于讓它預(yù)測“幾分鐘后這個用戶播放時間最長的視頻”,最終測試效果也表示,通過把這一個特征設(shè)置為0或者適當(dāng)?shù)呢?fù)數(shù)可以提高模型的預(yù)測性能。

(, 下載次數(shù): 12)

訓(xùn)練集預(yù)處理過程中,沒有采用原始的用戶日志,而是對每個用戶提取等數(shù)量的訓(xùn)練樣本

  這是為了達到樣本均衡減少高度活躍用戶對于loss的過度影響。
完全摒棄了用戶觀看歷史的時序特征,把用戶最近的瀏覽歷史等同看待

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

  廣告推送有兩種建模方案:
  一種是自然興趣建模,根據(jù)用戶操作終端行為獲得user-item關(guān)聯(lián),給不同的數(shù)據(jù)源打標(biāo)獲得item-tag關(guān)聯(lián),最后將上面兩種關(guān)聯(lián)進行join操作得到user-tag的關(guān)聯(lián)實現(xiàn)給用戶打上興趣標(biāo)簽,這里相當(dāng)于是從標(biāo)簽維度為廣告主推薦人群。
  另一種就是商業(yè)興趣建模,在自然興趣建模的基礎(chǔ)上,從廣告維度為廣告主推薦人群,那么就需要目前大火的DSSM雙塔模型了。
  拿Youtube視頻推薦系統(tǒng)舉例,一般推薦系統(tǒng)中有兩個流程。
  第一步是召回模型,主要是進行初篩操作,從海量視頻資源池中初步選擇一部分用戶可能感興趣的視頻數(shù)據(jù)子集,從數(shù)量上看可能是從千萬級別篩選出百級別。
  第二步是精排模型,主要作用是對上面找到的百級別的視頻子集進一步精篩,從數(shù)量上看可能是從百級別篩選出幾十級別。然后根據(jù)得分高低排序,生成一個排序列表作為用戶的候選播放列表從而完成視頻推薦任務(wù)。
2.1 DSSM模型的原理

  DSSM(Deep Structured Semantic Models)也叫深度語義匹配模型,最早是微軟發(fā)表的一篇應(yīng)用于NLP領(lǐng)域中計算語義相似度任務(wù)的文章。
  DSSM深度語義匹配模型原理很簡單:獲取搜索引擎中的用戶搜索query和doc的海量曝光和點擊日志數(shù)據(jù),訓(xùn)練階段分別用復(fù)雜的深度學(xué)習(xí)網(wǎng)絡(luò)構(gòu)建query側(cè)特征的query embedding和doc側(cè)特征的doc embedding,線上infer時通過計算兩個語義向量的cos距離來表示語義相似度,最終獲得語義相似模型。這個模型既可以獲得語句的低維語義向量表達sentence embedding,還可以預(yù)測兩句話的語義相似度。
2.2 DSSM深度語義匹配模型整體結(jié)構(gòu)

  DSSM模型總的來說可以分成三層結(jié)構(gòu),分別是輸入層、表示層和匹配層。結(jié)構(gòu)如下圖所示:

(, 下載次數(shù): 11)

2.2.1 輸入層

  輸入層主要的作用就是把文本映射到低維向量空間轉(zhuǎn)化成向量提供給深度學(xué)習(xí)網(wǎng)絡(luò)。NLP領(lǐng)域里中英文有比較大的差異,在輸入層處理方式不同。
  (1) 英文場景
  使用Word Hashing方法存在的問題是可能造成沖突。因為兩個不同的詞可能有相同的n-gram向量表示。下圖是在不同的英語詞典中分別使用2-gram和3-gram進行Word Hashing時的向量空間以及詞語碰撞統(tǒng)計:

(, 下載次數(shù): 12)

  可以看出在50W詞的詞典中如果使用2-gram,也就是兩個字母的粒度來切分詞,向量空間壓縮到1600維,產(chǎn)生沖突的詞有1192個(這里的沖突是指兩個詞的向量表示完全相同,因為單詞儲量實在有限,本來想找?guī)讉€例子說明下,結(jié)果沒找到)。如果使用3-gram向量空間壓縮到3W維,產(chǎn)生沖突的詞只有22個。綜合下來論文中使用3-gram切分詞。
  (2) 中文場景
  中文輸入層和英文有很大差別,首先要面臨的是分詞問題。如果要分詞推薦jieba或者北大pkuseg,不過現(xiàn)在很多模型已經(jīng)不進行分詞了,比如BERT中文的預(yù)訓(xùn)練模型就直接使用單字作為最小粒度了。
2.2.2 表示層

  DSSM模型表示層使用的是BOW(bag of words)詞袋模型,沒有考慮詞序的信息。不考慮詞序其實存在明顯的問題,因為一句話可能詞相同,但是語義則相差十萬八千里,比如“我愛女朋友”和“女朋友愛我”可能差距蠻大的(這個小伙伴們自己體會)。
  下圖是DSSM表示層的結(jié)構(gòu):

(, 下載次數(shù): 10)

  最下面的Term Vector到Word Hashing將詞映射到3W維的向量空間中。然后分別經(jīng)過兩層300維度的隱藏層,最后統(tǒng)一輸出128維度的向量。
2.2.3 匹配層

  現(xiàn)在我們把query和doc統(tǒng)一轉(zhuǎn)換成了兩個128維的語義向量,接下來如何計算它們的語義相似度呢?通過cos函數(shù)計算這兩個向量的余弦相似度就可以了,公式如下:

(, 下載次數(shù): 14)

2.3 DSSM模型的優(yōu)缺點

  先說說DSSM模型的優(yōu)點:
  再說說DSSM模型的缺點:

-----------------------------




歡迎光臨 愛鋒貝 (http://m.7gfy2te7.cn/) Powered by Discuz! X3.4