愛(ài)鋒貝
標(biāo)題:
Task3:召回模型 YoutubeDNN, DSSM
[打印本頁(yè)]
作者:
科技閻羅
時(shí)間:
2022-6-30 21:03
標(biāo)題:
Task3:召回模型 YoutubeDNN, DSSM
(, 下載次數(shù): 9)
上傳
點(diǎn)擊文件名下載附件
召回系統(tǒng)決定了最終呈現(xiàn)給用戶的推薦大致范圍,后續(xù)的操作都是在物料庫(kù)中取出的資料的基礎(chǔ)上繼續(xù)排序。當(dāng)然,每個(gè)部分都很重要。本文中涉及到的YoutubeDNN和DSSM模型都是召回模型中的經(jīng)典案例。其中YoutubeDNN更是經(jīng)典中的經(jīng)典,其論文對(duì)初學(xué)者非常友好,詳細(xì)地講述了整個(gè)漏斗模型的流程,以及在工業(yè)上線時(shí)的注意事項(xiàng)及其原因。而DSSM簡(jiǎn)單雙塔結(jié)構(gòu),在我看來(lái)更易于工業(yè)實(shí)踐和理解,其模型更加輕量級(jí),而且線上線下模型分離,穩(wěn)定性高的同時(shí)支持自動(dòng)化構(gòu)建。
YoutubeDNN模型
YoutubeDNN模型有著非常經(jīng)典的漏斗結(jié)構(gòu):
(, 下載次數(shù): 12)
上傳
點(diǎn)擊文件名下載附件
首先召回,然后精排
召回系統(tǒng)設(shè)計(jì)
它的輸入主要是用戶側(cè)的特征,包括用戶觀看的歷史video序列, 用戶搜索的歷史tokens, 然后就是用戶的人文特征,比如地理位置, 性別,年齡這些。 這些特征處理上,和之前那些模型的也比較類似,
用戶歷史序列,歷史搜索tokens這種序列性的特征: 一般長(zhǎng)這樣[item_id5, item_id2, item_id3, ...], 這種id特征是高維稀疏,首先會(huì)通過(guò)一個(gè)embedding層,轉(zhuǎn)成低維稠密的embedding特征,即歷史序列里面的每個(gè)id都會(huì)對(duì)應(yīng)一個(gè)embedding向量, 這樣歷史序列就變成了多個(gè)embedding向量的形式, 這些向量一般會(huì)進(jìn)行融合,常見(jiàn)的是average pooling,即每一維求平均得到一個(gè)最終向量來(lái)表示用戶的歷史興趣或搜索興趣。
這里值的一提的是這里的embedding向量得到的方式, 論文中作者這里說(shuō)是通過(guò)word2vec方法計(jì)算的, 關(guān)于word2vec,這里就不過(guò)多解釋,也就是每個(gè)item事先通過(guò)w2v方式算好了的embedding,直接作為了輸入,然后進(jìn)行pooling融合。
除了這種算好embedding方式之外,還可以過(guò)embedding層,跟上面的DNN一起訓(xùn)練,這些都是常規(guī)操作,之前整理的精排模型里面大都是用這種方式。
論文里面使用了用戶最近的50次觀看歷史,用戶最近50次搜索歷史token, embedding維度是256維, 采用的average pooling。 當(dāng)然,這里還可以把item的類別信息也隱射到embedding, 與前面的concat起來(lái)。
用戶人文特征, 這種特征處理方式就是離散型的依然是labelEncoder,然后embedding轉(zhuǎn)成低維稠密, 而連續(xù)型特征,一般是先歸一化操作,然后直接輸入,當(dāng)然有的也通過(guò)分桶,轉(zhuǎn)成離散特征,這里不過(guò)多整理,特征工程做的事情了。 當(dāng)然,這里還有一波操作值得注意,就是連續(xù)型特征除了用了x
x
本身,還用了x^2
x
2,logx
l
o
g
x這種, 可以加入更多非線性,增加模型表達(dá)能力。
這些特征對(duì)新用戶的推薦會(huì)比較有幫助,常見(jiàn)的用戶的地理位置, 設(shè)備, 性別,年齡等。
這里一個(gè)比較特色的特征是example age,這個(gè)特征后面需要單獨(dú)整理。
這些特征處理好了之后,拼接起來(lái),就成了一個(gè)非常長(zhǎng)的向量,然后就是過(guò)DNN,這里用了一個(gè)三層的DNN, 得到了輸出, 這個(gè)輸出也是向量。
在整套系統(tǒng)的設(shè)計(jì)過(guò)程有有一些非常精妙的設(shè)計(jì):
召回模型中加入Example Age特征
這個(gè)特征很有意思,其代表目前時(shí)間(也就是推送時(shí)間)與資源發(fā)布時(shí)間的差值,不僅加入了對(duì)新舊資源的考量,而且,最有意思的地方是,在上線時(shí)這個(gè)特征被設(shè)置為0或者一個(gè)適當(dāng)?shù)呢?fù)數(shù)。這樣設(shè)計(jì)引導(dǎo)網(wǎng)絡(luò),相當(dāng)于讓它預(yù)測(cè)“幾分鐘后這個(gè)用戶播放時(shí)間最長(zhǎng)的視頻”,最終測(cè)試效果也表示,通過(guò)把這一個(gè)特征設(shè)置為0或者適當(dāng)?shù)呢?fù)數(shù)可以提高模型的預(yù)測(cè)性能。
(, 下載次數(shù): 10)
上傳
點(diǎn)擊文件名下載附件
訓(xùn)練集預(yù)處理過(guò)程中,沒(méi)有采用原始的用戶日志,而是對(duì)每個(gè)用戶提取等數(shù)量的訓(xùn)練樣本
這是為了達(dá)到樣本均衡減少高度活躍用戶對(duì)于loss的過(guò)度影響。
完全摒棄了用戶觀看歷史的時(shí)序特征,把用戶最近的瀏覽歷史等同看待
這個(gè)原因應(yīng)該是YouTube工程師的“經(jīng)驗(yàn)之談”,如果過(guò)多考慮時(shí)序的影響,用戶的推薦結(jié)果將過(guò)多受最近觀看或搜索的一個(gè)視頻的影響。YouTube給出一個(gè)例子,如果用戶剛搜索過(guò)“tayer swift”,你就把用戶主頁(yè)的推薦結(jié)果大部分變成tayer swift有關(guān)的視頻,這其實(shí)是非常差的體驗(yàn)。為了綜合考慮之前多次搜索和觀看的信息,YouTube丟掉了時(shí)序信息,講用戶近期的歷史紀(jì)錄等同看待。
國(guó)內(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ù)量上看可能是從千萬(wàn)級(jí)別篩選出百級(jí)別。
第二步是精排模型,主要作用是對(duì)上面找到的百級(jí)別的視頻子集進(jìn)一步精篩,從數(shù)量上看可能是從百級(jí)別篩選出幾十級(jí)別。然后根據(jù)得分高低排序,生成一個(gè)排序列表作為用戶的候選播放列表從而完成視頻推薦任務(wù)。
2.1 DSSM模型的原理
DSSM(Deep Structured Semantic Models)也叫深度語(yǔ)義匹配模型,最早是微軟發(fā)表的一篇應(yīng)用于NLP領(lǐng)域中計(jì)算語(yǔ)義相似度任務(wù)的文章。
DSSM深度語(yǔ)義匹配模型原理很簡(jiǎn)單:獲取搜索引擎中的用戶搜索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í)通過(guò)計(jì)算兩個(gè)語(yǔ)義向量的cos距離來(lái)表示語(yǔ)義相似度,最終獲得語(yǔ)義相似模型。這個(gè)模型既可以獲得語(yǔ)句的低維語(yǔ)義向量表達(dá)sentence embedding,還可以預(yù)測(cè)兩句話的語(yǔ)義相似度。
2.2 DSSM深度語(yǔ)義匹配模型整體結(jié)構(gòu)
DSSM模型總的來(lái)說(shuō)可以分成三層結(jié)構(gòu),分別是輸入層、表示層和匹配層。結(jié)構(gòu)如下圖所示:
(, 下載次數(shù): 9)
上傳
點(diǎn)擊文件名下載附件
2.2.1 輸入層
輸入層主要的作用就是把文本映射到低維向量空間轉(zhuǎn)化成向量提供給深度學(xué)習(xí)網(wǎng)絡(luò)。NLP領(lǐng)域里中英文有比較大的差異,在輸入層處理方式不同。
(1) 英文場(chǎng)景
使用Word Hashing方法存在的問(wèn)題是可能造成沖突。因?yàn)閮蓚€(gè)不同的詞可能有相同的n-gram向量表示。下圖是在不同的英語(yǔ)詞典中分別使用2-gram和3-gram進(jìn)行Word Hashing時(shí)的向量空間以及詞語(yǔ)碰撞統(tǒng)計(jì):
(, 下載次數(shù): 10)
上傳
點(diǎn)擊文件名下載附件
可以看出在50W詞的詞典中如果使用2-gram,也就是兩個(gè)字母的粒度來(lái)切分詞,向量空間壓縮到1600維,產(chǎn)生沖突的詞有1192個(gè)(這里的沖突是指兩個(gè)詞的向量表示完全相同,因?yàn)閱卧~儲(chǔ)量實(shí)在有限,本來(lái)想找?guī)讉€(gè)例子說(shuō)明下,結(jié)果沒(méi)找到)。如果使用3-gram向量空間壓縮到3W維,產(chǎn)生沖突的詞只有22個(gè)。綜合下來(lái)論文中使用3-gram切分詞。
(2) 中文場(chǎng)景
中文輸入層和英文有很大差別,首先要面臨的是分詞問(wèn)題。如果要分詞推薦jieba或者北大pkuseg,不過(guò)現(xiàn)在很多模型已經(jīng)不進(jìn)行分詞了,比如BERT中文的預(yù)訓(xùn)練模型就直接使用單字作為最小粒度了。
2.2.2 表示層
DSSM模型表示層使用的是BOW(bag of words)詞袋模型,沒(méi)有考慮詞序的信息。不考慮詞序其實(shí)存在明顯的問(wèn)題,因?yàn)橐痪湓捒赡茉~相同,但是語(yǔ)義則相差十萬(wàn)八千里,比如“我愛(ài)女朋友”和“女朋友愛(ài)我”可能差距蠻大的(這個(gè)小伙伴們自己體會(huì))。
下圖是DSSM表示層的結(jié)構(gòu):
(, 下載次數(shù): 9)
上傳
點(diǎn)擊文件名下載附件
最下面的Term Vector到Word Hashing將詞映射到3W維的向量空間中。然后分別經(jīng)過(guò)兩層300維度的隱藏層,最后統(tǒng)一輸出128維度的向量。
2.2.3 匹配層
現(xiàn)在我們把query和doc統(tǒng)一轉(zhuǎn)換成了兩個(gè)128維的語(yǔ)義向量,接下來(lái)如何計(jì)算它們的語(yǔ)義相似度呢?通過(guò)cos函數(shù)計(jì)算這兩個(gè)向量的余弦相似度就可以了,公式如下:
(, 下載次數(shù): 11)
上傳
點(diǎn)擊文件名下載附件
2.3 DSSM模型的優(yōu)缺點(diǎn)
先說(shuō)說(shuō)DSSM模型的優(yōu)點(diǎn):
解決了LSA、LDA、Autoencoder等方法存在的字典爆炸問(wèn)題,從而降低了計(jì)算復(fù)雜度。因?yàn)橛⑽闹性~的數(shù)量要遠(yuǎn)遠(yuǎn)高于字母n-gram的數(shù)量;
中文方面使用字作為最細(xì)切分粒度,可以復(fù)用每個(gè)字表達(dá)的語(yǔ)義,減少分詞的依賴,從而提高模型的泛化能力;
字母的n-gram可以更好的處理新詞,具有較強(qiáng)的魯棒性;
使用有監(jiān)督的方法,優(yōu)化語(yǔ)義embedding的映射問(wèn)題;
省去了人工特征工程;
采用有監(jiān)督訓(xùn)練,精度較高。傳統(tǒng)的輸入層使用embedding的方式(比如Word2vec的詞向量)或者主題模型的方式(比如LDA的主題向量)做詞映射,再把各個(gè)詞的向量拼接或者累加起來(lái)。由于Word2vec和LDA都是無(wú)監(jiān)督訓(xùn)練,會(huì)給模型引入誤差。
再說(shuō)說(shuō)DSSM模型的缺點(diǎn):
Word Hashing可能造成詞語(yǔ)沖突;
采用詞袋模型,損失了上下文語(yǔ)序信息。這也是后面會(huì)有CNN-DSSM、LSTM-DSSM等DSSM模型變種的原因;
搜索引擎的排序由多種因素決定,用戶點(diǎn)擊時(shí)doc排名越靠前越容易被點(diǎn)擊,僅用點(diǎn)擊來(lái)判斷正負(fù)樣本,產(chǎn)生的噪聲較大,模型難以收斂;
效果不可控。因?yàn)槭嵌说蕉四P停锰幨鞘∪チ巳斯ぬ卣鞴こ?,但是也帶?lái)了端到端模型效果不可控的問(wèn)題。
-----------------------------
歡迎光臨 愛(ài)鋒貝 (http://7gfy2te7.cn/)
Powered by Discuz! X3.4