愛鋒貝

 找回密碼
 立即注冊

只需一步,快速開始

扫一扫,极速登录

查看: 883|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

Task3:召回模型 YoutubeDNN, DSSM

[復(fù)制鏈接]

1466

主題

1535

帖子

6017

積分

Rank: 8Rank: 8

跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2022-6-30 21:03:39 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式

一鍵注冊,加入手機(jī)圈

您需要 登錄 才可以下載或查看,沒有帳號?立即注冊   

x


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

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



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

  它的輸入主要是用戶側(cè)的特征,包括用戶觀看的歷史video序列, 用戶搜索的歷史tokens, 然后就是用戶的人文特征,比如地理位置, 性別,年齡這些。 這些特征處理上,和之前那些模型的也比較類似,

  • 用戶歷史序列,歷史搜索tokens這種序列性的特征: 一般長這樣[item_id5, item_id2, item_id3, ...], 這種id特征是高維稀疏,首先會通過一個(gè)embedding層,轉(zhuǎn)成低維稠密的embedding特征,即歷史序列里面的每個(gè)id都會對應(yīng)一個(gè)embedding向量, 這樣歷史序列就變成了多個(gè)embedding向量的形式, 這些向量一般會進(jìn)行融合,常見的是average pooling,即每一維求平均得到一個(gè)最終向量來表示用戶的歷史興趣或搜索興趣。
    這里值的一提的是這里的embedding向量得到的方式, 論文中作者這里說是通過word2vec方法計(jì)算的, 關(guān)于word2vec,這里就不過多解釋,也就是每個(gè)item事先通過w2v方式算好了的embedding,直接作為了輸入,然后進(jìn)行pooling融合。
    除了這種算好embedding方式之外,還可以過embedding層,跟上面的DNN一起訓(xùn)練,這些都是常規(guī)操作,之前整理的精排模型里面大都是用這種方式。
    論文里面使用了用戶最近的50次觀看歷史,用戶最近50次搜索歷史token, embedding維度是256維, 采用的average pooling。 當(dāng)然,這里還可以把item的類別信息也隱射到embedding, 與前面的concat起來。
  • 用戶人文特征, 這種特征處理方式就是離散型的依然是labelEncoder,然后embedding轉(zhuǎn)成低維稠密, 而連續(xù)型特征,一般是先歸一化操作,然后直接輸入,當(dāng)然有的也通過分桶,轉(zhuǎn)成離散特征,這里不過多整理,特征工程做的事情了。 當(dāng)然,這里還有一波操作值得注意,就是連續(xù)型特征除了用了xx本身,還用了x^2x2,logxlogx這種, 可以加入更多非線性,增加模型表達(dá)能力。
    這些特征對新用戶的推薦會比較有幫助,常見的用戶的地理位置, 設(shè)備, 性別,年齡等。
  • 這里一個(gè)比較特色的特征是example age,這個(gè)特征后面需要單獨(dú)整理。
  這些特征處理好了之后,拼接起來,就成了一個(gè)非常長的向量,然后就是過DNN,這里用了一個(gè)三層的DNN, 得到了輸出, 這個(gè)輸出也是向量。
  在整套系統(tǒng)的設(shè)計(jì)過程有有一些非常精妙的設(shè)計(jì):
召回模型中加入Example Age特征

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



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

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

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

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

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



2.2.1 輸入層

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



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

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



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

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



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

  先說說DSSM模型的優(yōu)點(diǎn):

  • 解決了LSA、LDA、Autoencoder等方法存在的字典爆炸問題,從而降低了計(jì)算復(fù)雜度。因?yàn)橛⑽闹性~的數(shù)量要遠(yuǎn)遠(yuǎn)高于字母n-gram的數(shù)量;
  • 中文方面使用字作為最細(xì)切分粒度,可以復(fù)用每個(gè)字表達(dá)的語義,減少分詞的依賴,從而提高模型的泛化能力;
  • 字母的n-gram可以更好的處理新詞,具有較強(qiáng)的魯棒性;
  • 使用有監(jiān)督的方法,優(yōu)化語義embedding的映射問題;
  • 省去了人工特征工程;
  • 采用有監(jiān)督訓(xùn)練,精度較高。傳統(tǒng)的輸入層使用embedding的方式(比如Word2vec的詞向量)或者主題模型的方式(比如LDA的主題向量)做詞映射,再把各個(gè)詞的向量拼接或者累加起來。由于Word2vec和LDA都是無監(jiān)督訓(xùn)練,會給模型引入誤差。
  再說說DSSM模型的缺點(diǎn):

  • Word Hashing可能造成詞語沖突;
  • 采用詞袋模型,損失了上下文語序信息。這也是后面會有CNN-DSSM、LSTM-DSSM等DSSM模型變種的原因;
  • 搜索引擎的排序由多種因素決定,用戶點(diǎn)擊時(shí)doc排名越靠前越容易被點(diǎn)擊,僅用點(diǎn)擊來判斷正負(fù)樣本,產(chǎn)生的噪聲較大,模型難以收斂;
  • 效果不可控。因?yàn)槭嵌说蕉四P?,好處是省去了人工特征工程,但是也帶來了端到端模型效果不可控的問題。

-----------------------------
精選高品質(zhì)二手iPhone,上愛鋒貝APP
您需要登錄后才可以回帖 登錄 | 立即注冊   

本版積分規(guī)則

QQ|Archiver|手機(jī)版|小黑屋|愛鋒貝 ( 粵ICP備16041312號-5 )

GMT+8, 2025-1-19 11:32

Powered by Discuz! X3.4

© 2001-2013 Discuz Team. 技術(shù)支持 by 巔峰設(shè)計(jì).

快速回復(fù) 返回頂部 返回列表